{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/6742","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/6742/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/6742/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/6742/events","html_url":"https://github.com/JuliaLang/julia/issues/6742","id":32766447,"number":6742,"title":"Do not rely on unversioned .so files","user":{"login":"nalimilan","id":1120448,"avatar_url":"https://avatars.githubusercontent.com/u/1120448?v=3","gravatar_id":"","url":"https://api.github.com/users/nalimilan","html_url":"https://github.com/nalimilan","followers_url":"https://api.github.com/users/nalimilan/followers","following_url":"https://api.github.com/users/nalimilan/following{/other_user}","gists_url":"https://api.github.com/users/nalimilan/gists{/gist_id}","starred_url":"https://api.github.com/users/nalimilan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nalimilan/subscriptions","organizations_url":"https://api.github.com/users/nalimilan/orgs","repos_url":"https://api.github.com/users/nalimilan/repos","events_url":"https://api.github.com/users/nalimilan/events{/privacy}","received_events_url":"https://api.github.com/users/nalimilan/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/JuliaLang/julia/labels/build","name":"build","color":"444444"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":32,"created_at":"2014-05-04T11:06:24Z","updated_at":"2015-12-10T14:47:14Z","closed_at":null,"body":"Since Julia does not link to external libraries at compile time, it should not try to access unversioned .so files, which may not be present on the user system as they are typically only provided by -devel packages.\r\n\r\nThis problem is visible at least for openlibm and openspecfun with Julia from the Fedora RPM package, when the -devel packages are not installed:\r\n```julia\r\njulia> svd([1:10 1:10])\r\nERROR: error compiling ctranspose: error compiling transpose!: could not load module libopenlibm: /lib64/libopenlibm.so: cannot open shared object file: No such file or directory\r\njulia> airy(1, 1+1im)\r\nERROR: error compiling airy: error compiling airy: could not load module libopenspecfun: /lib64/libopenspecfun.so: cannot open shared object file: No such file or directory\r\n```\r\n\r\nI'm not sure how best to fix this. The versioned file names could be saved somewhere at build time (just like a linker would do), in order to call them instead of the unversioned file."},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/163645682","html_url":"https://github.com/JuliaLang/julia/issues/6742#issuecomment-163645682","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/6742","id":163645682,"user":{"login":"nalimilan","id":1120448,"avatar_url":"https://avatars.githubusercontent.com/u/1120448?v=3","gravatar_id":"","url":"https://api.github.com/users/nalimilan","html_url":"https://github.com/nalimilan","followers_url":"https://api.github.com/users/nalimilan/followers","following_url":"https://api.github.com/users/nalimilan/following{/other_user}","gists_url":"https://api.github.com/users/nalimilan/gists{/gist_id}","starred_url":"https://api.github.com/users/nalimilan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nalimilan/subscriptions","organizations_url":"https://api.github.com/users/nalimilan/orgs","repos_url":"https://api.github.com/users/nalimilan/repos","events_url":"https://api.github.com/users/nalimilan/events{/privacy}","received_events_url":"https://api.github.com/users/nalimilan/received_events","type":"User","site_admin":false},"created_at":"2015-12-10T14:47:14Z","updated_at":"2015-12-10T14:47:14Z","body":"Solution 2. is what I'm currently doing in Fedora. It indeed works well, with two drawbacks:\r\n- the dependencies are not automatically versioned when building the package (as you noted)\r\n- a change in SONAME requires manual intervention from the packager\r\n\r\nTo generate dependencies, RPM needs an executable taking file names via stdin and writing requirements to stdout: http://www.rpm.org/wiki/PackagerDocs/DependencyGenerator But that executable could be a very simple shell script, or even a call to `cat` when passed a file with a list of SONAMES."}}