{"action":"created","issue":{"url":"https://api.github.com/repos/premake/premake-core/issues/528","repository_url":"https://api.github.com/repos/premake/premake-core","labels_url":"https://api.github.com/repos/premake/premake-core/issues/528/labels{/name}","comments_url":"https://api.github.com/repos/premake/premake-core/issues/528/comments","events_url":"https://api.github.com/repos/premake/premake-core/issues/528/events","html_url":"https://github.com/premake/premake-core/issues/528","id":164211699,"number":528,"title":"libssl versioning","user":{"login":"TurkeyMan","id":1146706,"avatar_url":"https://avatars.githubusercontent.com/u/1146706?v=3","gravatar_id":"","url":"https://api.github.com/users/TurkeyMan","html_url":"https://github.com/TurkeyMan","followers_url":"https://api.github.com/users/TurkeyMan/followers","following_url":"https://api.github.com/users/TurkeyMan/following{/other_user}","gists_url":"https://api.github.com/users/TurkeyMan/gists{/gist_id}","starred_url":"https://api.github.com/users/TurkeyMan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TurkeyMan/subscriptions","organizations_url":"https://api.github.com/users/TurkeyMan/orgs","repos_url":"https://api.github.com/users/TurkeyMan/repos","events_url":"https://api.github.com/users/TurkeyMan/events{/privacy}","received_events_url":"https://api.github.com/users/TurkeyMan/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-07-07T01:44:03Z","updated_at":"2016-07-08T02:55:56Z","closed_at":null,"body":"I just built head, and I've noticed a new dependency on libssl. When I build myself a premake binary (linux), it creates links to the particular version of libssl I have on my machine.\r\n\r\nIf I then take that binary and run it on another linux machine (the build machine), it complains the libssl version is wrong:\r\n```\r\nbin/premake/premake5: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory\r\n```\r\n\r\nListing the libssl version(/s) present on the build machine:\r\n```\r\n\tlibssl3.so -> libssl3.so\r\n\tlibssl.so.10 -> libssl.so.1.0.1e\r\n\tlibssl.so.6 -> libssl.so.0.9.8e\r\n\tlibssl3.so -> libssl3.so\r\n\tlibssl.so.10 -> libssl.so.1.0.1e\r\n```\r\n\r\nIt doesn't seem right that it linked to libssl.so.1.0.0 precisely... usually it links to something like libssl.so.1 (which is symlink to minor/patch revisions). I think this is a build configuration problem. I haven't looked into it in detail."},"comment":{"url":"https://api.github.com/repos/premake/premake-core/issues/comments/231263682","html_url":"https://github.com/premake/premake-core/issues/528#issuecomment-231263682","issue_url":"https://api.github.com/repos/premake/premake-core/issues/528","id":231263682,"user":{"login":"TurkeyMan","id":1146706,"avatar_url":"https://avatars.githubusercontent.com/u/1146706?v=3","gravatar_id":"","url":"https://api.github.com/users/TurkeyMan","html_url":"https://github.com/TurkeyMan","followers_url":"https://api.github.com/users/TurkeyMan/followers","following_url":"https://api.github.com/users/TurkeyMan/following{/other_user}","gists_url":"https://api.github.com/users/TurkeyMan/gists{/gist_id}","starred_url":"https://api.github.com/users/TurkeyMan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TurkeyMan/subscriptions","organizations_url":"https://api.github.com/users/TurkeyMan/orgs","repos_url":"https://api.github.com/users/TurkeyMan/repos","events_url":"https://api.github.com/users/TurkeyMan/events{/privacy}","received_events_url":"https://api.github.com/users/TurkeyMan/received_events","type":"User","site_admin":false},"created_at":"2016-07-08T02:55:56Z","updated_at":"2016-07-08T02:55:56Z","body":"> so no 'specific' version specified, and that is really just what your gcc makes of it...\r\neven the generated makefile just specifies \"-lssl -lcrypto\"\r\n\r\nYeah, I saw that, but apparently that decision to leave it to the linker is allowing the linker to do the wrong thing.\r\nI changed it to: `links       { \":libssl.a\", \":libcrypto.a\" }`, and that worked. I didn't try explicitly linking to `libssl.so.1`, but I suspect that would be the superior choice; my premake binary was huge after static linking ssl and crypto.\r\n\r\n> I don't understand why Linux can't just have binary compatibility. I can make an executable on Windows 95 that will still run on Windows 10.\r\n\r\nThis is common linux problem with closed-source binaries. One way to mitigate is to link against less-specific libs, ie, in our case `libssl.so.1` instead of `libssl.so.1.0.0`. That will allow a much wider range of library versions to be compatible with the app. The alternative is to bundle the libs you use with the exe, like you already have to do on windows.\r\n\r\nWindows also protects against this problem with system libraries with their WindowsSxS (side by side) 'solution', which is basically keeping parallel copies of the suite of libs for every revision of windows ever released all together. This is also one of the major reasons my windows install is 120gb, and linux is 2gb, and also why a live Windows install seems to just grow larger and larger with age. I don't think their solution is a good solution ;) .. Linux has an advantage, since most software is OSS, they just rebuild everything against new releases. It just shifts an annoying responsibility to us closed-source devs to either static-link, carefully test and support various dynamic versions, or bundle libs with our binaries."}}
{"actor":{"display_login":"TurkeyMan"}}