Is there a build dependency tree listed anywhere? (Porting to a different libc)
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Is there a build dependency tree listed anywhere? (Porting to a different libc)
Hi all,
As a side project, I'm trying to build Slackware against the Musl C library. I've got a bootable system but I haven't gotten much past that (I'm up to udev and most of the X libraries, which is about as far as I remember from the last time I rolled my own installation). And part of the point is to mirror the official build as much as possible. So, I'm curious if there's a platinum-iridium build dependency tree somewhere that I'm missing so that I can make sure the packages are built with the same deps as the official ones.
So far I've just been going on what I know different packages can depend on (and BLFS ended up being a huge help here), but there are a million different ways to do this, and I'd like to use the same one that the official builds use; I just can't seem to find it anywhere.
Alien Bob's ARM port -- start at http://alien.slackbook.org/blog/armport/ -- it's really a way of bootstrapping Slackware onto *any* new platform, so it's quite relevant to what you're doing
Long answer:
Slackware is not a source distribution and is not rebuilt from scratch at each release. And it is not guaranteed that running a Slackbuild again to re-build a Slackware package will always succeed without some modification, though it most often does.
As far as I know there is no officially released build dependency tree.
Of course some people have somehow had to re-build Slackware from scratch, e.g. for porting it to a new architecture (see AlienBOB's work for x86_64 or drmozes' work for ARM, for instance).
Using the "Search this forum" feature of LinuxQuestions should lead you to relevant threads.
Slackware can reproduce packages to put together to create a full distribution, but without extensive modifications it can not from source, bootstrap, and rebuild itself.
Very few distributions can do this. I think LFS is the only self-reproducable distribution, and maybe Gentoo.
"Very few distributions can do this" I think it would be more accurate to say that "Very few distributions can *not* do this" -at least as far as 'real' distros are concerned. debian and fedora (and their derivatives) can both be mass-rebuilt.
I would look at the buildscripts for dragora 2.2 as well.
Just curious on how you started the build, did you follow the LFS book but using pkgtools from chapter 6?
I would look at the buildscripts for dragora 2.2 as well.
Just curious on how you started the build, did you follow the LFS book but using pkgtools from chapter 6?
Roughly. I've been rolling my own distro for a while now on my servers and don't exactly follow LFS per se, though it's the same theory. Except in this case it would be closer to Cross LFS because I needed a compiler running on i486-unknown-linux-gnu targeting i486-slackware-linux-musl, to build a native i486-slackware-linux-musl compiler that would work once I was in a chroot.
But, yeah, in LFS parlance once I built /tools and chrooted I installed pkgtools and just started using the SlackBuild scripts on the sources. I had to bump up findutils because of a gnulib problem but pretty much everything else has worked fine with some minor patching except for things that simply don't build with musl (gcc-go, etc.). I was surprised udev worked without any complaint (I remember reading that it requires glibc explicitly, but it didn't kvetch at all; on my homebrewed servers I've been using mdev).
Slackware can reproduce packages to put together to create a full distribution, but without extensive modifications it can not from source, bootstrap, and rebuild itself.
Very few distributions can do this. I think LFS is the only self-reproducable distribution, and maybe Gentoo.
Well, given that I have just done that, one obviously can do it. You just need to build a cross compiler and use that to build a native compiler and the necessary tools to start running the SlackBuild scripts in a chroot. Pretty much any distro that ships binutils and gcc can do that, and I think that's all of them.
I can give you all dynamic linked files that use a lib / package
Thanks, though I'm more concerned about inter-package dependencies, eg, whether cyrus-sasl needs to wait until mariadb is built, whether harfbuzz should wait for freetype or vice versa, etc. (Actually I think stock slackware doesn't ship harfbuzz, but you get the idea.)
Slackware is not a source distribution and is not rebuilt from scratch at each release. And it is not guaranteed that running a Slackbuild again to re-build a Slackware package will always succeed without some modification, though it most often does.
Well, I mean, somebody builds slackware before it's released. I'd just like to follow the same build order he or she does.
Usually, from what AlienBOB hinted at a few times at least from my POV, is that certain packages are built by an existing system, and then a system is put together with certain packages as key structural points like glibc, gcc, and kernel-headers, with everything else either repackaged, rebuilt, and reworked around those structural points on some level, but not always.
Well, I mean, somebody builds slackware before it's released. I'd just like to follow the same build order he or she does.
Well, yes but "builds Slackware" doesn't mean "rebuilds all Slackware packages".
Let's take an example:
Code:
/$ find /media/versions/slackware-14.1/{slackware,extra,testing} -type f -name "*t?z"|wc -l
1347
/$ find /media/versions/slackware-14.1/{slackware,extra,testing} -type f -name "*t?z" -newermt "Sep 26 01:10:42 UTC 2012" |wc -l
821
So, out of the 1347 packages included in Slackware 14.1, 821 were built after the release of the previous Slackware version (Slackware 14.0) that occurred on Sep 26 01:10:42 UTC 2012, but the other ones already existed.
PS I forgot the 2 packages in pasture/ so that's 1349/821. Oh, well...
Last edited by Didier Spaier; 09-10-2014 at 05:18 AM.
Thanks, though I'm more concerned about inter-package dependencies, eg, whether cyrus-sasl needs to wait until mariadb is built, whether harfbuzz should wait for freetype or vice versa, etc. (Actually I think stock slackware doesn't ship harfbuzz, but you get the idea.)
if package, or library/binary A needs B, than A has to wait and B needs to be build
if package, or library/binary A is needed by B, B has to wait and A needs to be built first
sbbdep finds those dependencies on file or package level for dynamically linked files and binaries reports them to you.
so this can be some help
Slackware itself does, in opposite to some other distributions, not have a 'build world' (unfortunately, in my opinion)
it's more like a rolling release, and from time to time there is a 'snapshot' which is labeled as a release.
AlienBob has started to build, and put some documentation therefore, form scratch, which is possible the best help you could find if you really want to build from scratch
I think here are the scripts http://taper.alienbase.nl/mirrors/alienarm/
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.