Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upgnutls: bump to 3.4.14 + 3.5.2, drop lib*.la, add TEST(). #628
Conversation
|
When I run
For the record, the 3 tests that got skipped are:
But it then tries to build more stuff in another directory, /sources/gnutls-3.4.13/tests, and fails with:
Does someone have an idea of how the |
Yes.
It can't; it's a C library function we apparently don't implement for whatever reason. Just don't run the tests, I suppose |
|
Unless you know of something using the .la files, please drop them from here too. |
|
net-libs/libsoup needs net-libs/glib_networking which in turn needs net-libs/gnutls. package-links abstraction + libtool files = much simpler dependencies |
Um, libtool files do not help us with what's in BUILD_REQUIRES, at all? If the files are required and libtool knows that, that's fine and dandy, but it doesn't help us one bit with HaikuPorter dependencies. So I fail to see how this is relevant. |
In the wonderful world of Linux, stuff does care because it has to care. And so we have to care, because we don't have native software that can replace all of this (yet) :). |
When I was asked a few weeks ago to evaluate whether we could get rid of the libtool files, I started building some packages without the libtool files to see if they could still be built. I found that it was OK because: Keeping and fixing the libtool files allows to narrow the dependencies to just the set of direct dependencies. Who would want to maintain recipes that need to list all indirect dependencies? |
|
Cc'ing @korli here. I still don't understand how libtool files help us with recipes themselves at all. If there are indirect dependencies, won't they be pulled in automatically? E.g. to build libsoup, one needs devel:libglib_networking_2.0, and that pulls in devel:libgnutls, which it needs. So I don't see how libtool affects the packages that get pulled into the chrooted environment at all. HaikuPorter doesn't parse libtool files, or know or care about them, and so the activated packages are still the exact same ones that are listed in BUILD_REQUIRES & BUILD_PREREQUIRES (and the complete dependency tree built from them, of course.) |
|
Using package-links abstractions for the paths in the libtool files is what allows libtool to find the libs that are part of the set of indirect dependencies even after an indirect dependency gets updated. |
|
Yes, but what does this break? Have we had to patch anything because we didn't have libtool files? I'm having trouble seeing this, your logic seems to be confusing I'm still trying to establish where we have to do more work, or something is more broken, or whatever due to not having libtool files. |
|
This is the statement I'm having trouble with, I suppose:
How exactly does keeping the libtool files change what we put in the recipe? While this may help with linking static libraries, it won't help us with the PROVIDES/REQUIRES sections at all, and that's where the extra work would come in. And for dynamic libraries, .la files are altogether pointless. |
|
If I'm not mistaken, libtool files are also useful for building programs that use dynamic linking. The paths that libtool passes to ld are embedded in the runtimes. And since every package has its set of package-links, the stable path can be used and remains valid even if the indirect dependencies are updated. BTW, thanks to this discussion I have just understood that the BUILD_REQUIRES of libsoup which mentions |
|
Here is what we would want to achieve in the ideal world. Let's take a practical and simple example. Here is a game using SDL and SDL_image. SDL_image in turn depends on libpng version 16. This means, if we rebuild SDL_image against a new, ABI-incompatible version of libpng, we don't need to rebuild all games using SDL_image. The runtime_loader will load the new sdl_image lib, and see it depends on libpng, and load that as well. Note that this is all runtime problems. At runtime, the .la files are not even available, so they are of no help in achieving this. Now let's see what we need at build time for this to work properly:
So, this is all already working properly, without the .la files. We don't need or want any absolute path in the runtime .so. We want just the name required to lookup the library, and let the runtime_loader figure things out. Since we already get everything working as it should, without any .la files involved, we should just remove the .la files. If there are problems with doing that, we can fix said problems directly in libtool and/or the runtime_loader, instead of hacking around them with .la files. In our case, the information libtool gets from the .la files is already available in the .so files (you can check with readelf + grep NEEDED as above if you don't believe me :)). You can get a problem with static linking however, because .a file may not have this information. But, this is irrelevant, because if you statically link something, you have to dynamically link its dependencies (if any) directly. |
|
Yep. (thanks for taking the time to write that out, @pulkomandy!) |
|
OK. In a few hours I'll drop the libtool files in this PR (and also in #665 (comment)) although I'm not yet convinced that doing so won't trigger other problems, e.g. for building against static libs of indirect dependencies. |
* Bump to 3.4.14 (current stable) and add 3.5.2, marked untested.
* Move $binDir to a _bin sub-package, for more flexibility with
regards to package co-installation. 3.4.x and 3.5.x seem to be
causing problems for other recipes, so this layout change, with
some other changes (e.g. package basename renames) can help.
* Update the layout of 2.8.x.
* Change the basename of the recipe of 3.4.x to gnutls34.
* Use gnutls35 as basename for the recipe of 3.5.x.
* Declare CONFLICTS, CONFLICTS_{bin,devel} in a way that allows
gnutls-2.8.x to be installed with either gnutls-3.4.x or
gnutls-3.5.x. On top of that, a single _bin package may be
installed (provided the base package is also installed.) Same
thing for _devel.
* Add cmd:cvs cmd:git to BUILD_PREREQUIRES in order to make
gl/tests/test-vc-list-files-{cvs,git} succeed.
* Patch gl/tests/test-float.c to enable that test.
* Add cmd:{perl,makeinfo} to BUILD_PREREQUIRES.
|
Dropped libtool files ;-) |
73360c5
into
haikuports:master
fbrosson commentedJun 7, 2016
•
edited
Fix paths of dependency_libs indevelop/lib/lib*.lato make sure they will still be valid even if these dependencies are updated.$binDirto a _bin sub-package, for more flexibility with regards to package co-installation. 3.4.x and 3.5.x seem to be causing problems for other recipes, so this layout change, with some other changes (e.g. package basename renames) can help.and add x86 and x86_64 as untested.cmd:{cvs,git}to BUILD_PREREQUIRES in order to makegl/tests/test-vc-list-files-{cvs,git}succeed.gl/tests/test-float.cto enable that test.cmd:{perl,makeinfo}to BUILD_PREREQUIRES.