-
-
Notifications
You must be signed in to change notification settings - Fork 44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Building on Mint 19.3 #94
Comments
gcc version 4:7.4.01ubuntu2.3 |
Here it my error log $ ls -lF build/
total 16
drwxr-xr-x 2 denis denis 4096 May 7 16:54 CMakeFiles/
-rw-r--r-- 1 denis denis 1178 May 7 16:54 cmake_install.cmake
-rw-r--r-- 1 denis denis 4483 May 7 16:54 Makefile |
Still getting a sharedlib but it does work from the cmd line in a terminal will try @ermo 's elfedit hack tomorrow |
@Loki1950 interesting - I get a binary, and KDE prompts about what to do with it when I double-click - asking to either Execute or Cancel. I think the normal means is to provide FreeDesktop Entry File (see https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html) which would get installed to /usr/share/applications (at least on Linux). |
To be clear, my "elfedit hack" was a suggestion to try My hypothesis is that, for some reason, @Loki1950 's Linux Mint 19.3 build apparatus isn't setting the ELF type correctly during the linking phase. @Loki1950 does it make any difference if you build with |
@ermo haven't tried yet I tend to use what works and it works for me now @BenjamenMeyer I don't install VS most of the time I run it in userland much easier to update asset errors |
@Loki1950 I haven't installed it yet myself, just run using symlinks in the asset directories (e.g git submodules). |
With svn I used to have a directory under my Project one that I called Playground or Sandbox which was an export of the data (striped the .svn folders out) |
Could you please try compiling newest master with |
Will do later this afternoon |
Still get a sharedlib |
(emphasis mine) That interpreter Would you be willing to try to reinstall your I would also do a FWIW, I have the |
Sorry I will not that would in effect break my system I have no /lib64 under /usr what is under /usr/lib are folders for installed packages and symbolic links to lib's .so reminder each distro interprets the standard in it's own way till you can prove to me that your interpretation is valid period I gave up the bloody noses when I drop fedora I have a stable system BTW my laptop also shows the same structure also a Mint 19.3 install so it does indeed seem to be Distro policy |
You misunderstand -- I'm suggesting that Running a file system check and then asking your package manager to re-install packages shouldn't break your system unless the package manager is seriously broken (which I doubt is the case for Mint/Ubuntu given that you're on a mature LTS). But in any case, if you refuse to perform troubleshooting steps which can help determine whether what you are seeing is down to a local issue or not, then you should probably close this bug as invalid, since there'll effectively be no way to determine what the root cause is and since none of us are able to reproduce your issue. Your call. |
Can you give me the proper apt cmd line and the fsck |
I already posted the fsck part (but you could be forgiven for missing it):
It looks like the Ubuntu glibc package is split up into libc6 and libc-bin Binutils is binutils. So to see what would happen on a re-install, you would do a:
But in any case, if I were in your shoes, I would do things in the following order:
|
Thx will do the Smart test over night the in the process of cooking my supper |
@ermo the APT line in #94 (comment) looks right; generates the following: $ sudo apt-get install --reinstall --dry-run binutils libc6 libc-bin
[sudo] password for bmeyer:
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 4 reinstalled, 0 to remove and 1 not upgraded.
Inst libc-bin [2.30-0ubuntu2.1] (2.30-0ubuntu2.1 Ubuntu:19.10/eoan-updates [amd64])
Inst libc6 [2.30-0ubuntu2.1] (2.30-0ubuntu2.1 Ubuntu:19.10/eoan-updates [amd64])
Inst libc6:i386 [2.30-0ubuntu2.1] (2.30-0ubuntu2.1 Ubuntu:19.10/eoan-updates [i386])
Conf libc6 (2.30-0ubuntu2.1 Ubuntu:19.10/eoan-updates [amd64])
Conf libc6:i386 (2.30-0ubuntu2.1 Ubuntu:19.10/eoan-updates [i386])
Conf libc-bin (2.30-0ubuntu2.1 Ubuntu:19.10/eoan-updates [amd64])
Inst binutils [2.33-2ubuntu1.2] (2.33-2ubuntu1.2 Ubuntu:19.10/eoan-updates, Ubuntu:19.10/eoan-security [amd64])
Conf binutils (2.33-2ubuntu1.2 Ubuntu:19.10/eoan-updates, Ubuntu:19.10/eoan-security [amd64])
$ |
|
Complete build instructions with relevant output for comparison:
|
Still getting a sharedlib |
Still feel that we are missing something will do some google fu tomorrow see if has turn up somewhere else as my kernel modules build properly many the nVidia kernel interface though is is a dynamic build when I update the kernel besides the Mint/Ubuntu maintainers do it so there must be some documentation. |
Quote from https://askubuntu.com/questions/690631/executables-vs-shared-objects:
It would not surprise me if the problem relates to Could you please paste the output of The hypothesis that the object code really is a "shared object executable" (PIE) is supported by the fact that you can execute it from the command line. Could you double check whether your compiler adds a compilation flag containing Bonus points for investigating and reporting it as a bug to Ubuntu as necessary (since Mint will pull in any fixes related to this). |
Again could you be more specific lld file and ldd dolphin on what |
As noted on the stackoverflow answer Arch now uses pie as the default Ubuntu seems to following that lead and would declare no bug intended behaviour.Arch sees it as closing a security hole. |
From the googling I have done that is what most of Ubuntu's package maintainers have been doing it is something that started with version 7.2 of gcc so it's been around for a while the -no-pie hack does seen to have become accepted practice as for the security issue it fairly obscure IMO most users will expect that double-clicking is the way to start the app |
Adding a compilation flag to make the binary work properly because the distribution defaults result in breakage seems ... odious at best. If we do decide to create a work-around, it might make sense to guard it behind a |
Where is the breakage define it. |
I see two options here:
|
I don't know, I don't see this issue on Ubuntu on my side. Though I haven't checked on 20.04 yet. |
The problem here is that you have a SNAFU where the compilation succeeds and looks innocent, but the binary appears broken. Speaking from experience (just look how long it took for us to investigate this!) this kind of error is the worst kind of insidious. So, on reflection, the only reasonable outcome is to take a clear stance by either refusing to compile if there's a risk of the binary issue, or alternatively, make it go away by providing an automatic workaround. Which, again, begs the question if VegaStrike should be held accountable for quirky/slightly-broken distributions that apparently don't care enough to actually fix their mess. As a maintainer, my stance (after experiencing a particularly annoying recent build error with the julia package in Solus) is that I'd rather have a hard error and having the workaround clearly documented in the build instructions, because I can then mark it as a distribution bug with a patch in my package script and my commit log and drop said patch when the distribution bug goes away and note why in the associated commit. As @Loki1950 said, the packagers for the affected distributions already know that this is a common problem. I say we let them deal with it then. |
Based on what @stephengtuggy and @Loki1950 have noted, I'm probably seeing this on Kubuntu 19.10 (essentially Ubuntu 19.10 + KDE); only difference is that KDE prompts about running it. It runs fine from the command-line, but double-clicking in Dolphin gives a prompt that I wouldn't normally get. I agree with @ermo that we need to push back on Debian/Ubuntu to fix this as it's a lot wider spread issue than just us. |
Slightly tongue-in-cheek proposal for build system error-gating: If we encounter a possibly-broken distribution ( The error text can be a carbon copy of the text warning we will henceforth provide in the README so that packagers won't have any excuse to ignore it. |
I am all for pushing back on Debian/Ubuntu to fix this. @Loki1950 do you have a link(s) to the thread(s) you were reading on this subject? |
Just followed those from the stackoverflow I posted earlier the reference to Arch's reasoning is a link to a reddit post while it points to the Arch-dev-public mailing list and the one that @ermo posted from askubuntu |
What would I do locally so I get a old style executable so I can start verifying all of the units my tool chain for this starts with @pyramid3d UnitConvertor which calls mesher (mesh_ tool) and vegastrike as well as nvtt (NVIDIA texture tools) the nvtt no longer looks to be available for Linux so I have gotten the Flatpack version of GIMP 2.10 with includes the dds plug-in. |
Here's a bug filed with Ubuntu: https://bugs.launchpad.net/ubuntu/+source/file/+bug/1747711 |
Seems a common work around is to add the For the time being, while a PIE is generally more secure since it makes things fully relocatable, based on the bug I found (see #94 (comment)) there doesn't seem to be a good way for Further, I tried doing #97 and it doesn't seem to resolve it either. So until Ubuntu or whomever is upstream can fix this we probably should enable |
So which file do I add |
cmake 3.5.x (used by Ubuntu 16.04 LTS) supports the option This is the text I have written for the option and which I am now testing locally:
|
@ermo looks good; can you please also include a link to the Ubuntu Bug in the CMakeLists.txt change? |
Done (see above). Still testing whether the code I have written actually does anything -- I remain unconvinced at this stage, but we'll see... |
@ermo if you have any success, feel free to open a PR |
I think I've got it working now:
In the PR, I'm also going to change the suggested build invocation from |
@ermo thanks! Question: which do we want to be default? What makes it painful? or easy? To push back on distros it seems which should make it painful (per earlier discussion); but at the same time I'm inclined to put the users first. Thoughts? |
Older versions of Ubuntu and its derivates have an issue where the `file` utility will interpret Position Independent Executables as shared libraries: https://bugs.launchpad.net/ubuntu/+source/file/+bug/1747711 As a workaround, allow setting the option COMPILE_WITH_FPIE (defaults to OFF) and add a suitable message for maintainers in both the CMake code, during configuration runs and in ccmake. Update the build instructions in the README to reflect this change. Closes vegastrike#94
Older versions of Ubuntu and its derivates have an issue where the `file` utility will interpret Position Independent Executables as shared libraries: https://bugs.launchpad.net/ubuntu/+source/file/+bug/1747711 As a workaround, allow setting the option COMPILE_WITH_FPIE (defaults to OFF) and add a suitable message for maintainers in both the CMake code, during configuration runs and in ccmake. Update the build instructions in the README to reflect this change. Closes vegastrike#94
Older versions of Ubuntu and its derivates have an issue where the `file` utility will interpret Position Independent Executables as shared libraries: https://bugs.launchpad.net/ubuntu/+source/file/+bug/1747711 As a workaround, allow setting the option COMPILE_WITH_FPIE (defaults to OFF) and add a suitable message for maintainers in both the CMake code, during configuration runs and in ccmake. Update the build instructions in the README to reflect this change. Closes vegastrike#94
Older versions of Ubuntu and its derivates have an issue where the `file` utility will interpret Position Independent Executables as shared libraries: https://bugs.launchpad.net/ubuntu/+source/file/+bug/1747711 As a workaround, allow setting the option COMPILE_WITH_FPIE (defaults to OFF) and add a suitable message for maintainers in both the CMake code, during configuration runs and in ccmake. Update the build instructions in the README to reflect this change. Closes vegastrike#94
I'm defaulting At the same time, I have added a suitably snarky comment in README.md referencing the launchpad bug in question. |
Just did an update of |
Having great difficulty building do not get an executable get
vegastrike: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=7037dafcdf95535245ab216b3e22191299d30af8, not stripped
The text was updated successfully, but these errors were encountered: