* [gentoo-dev] Making a common sub-profile for no-multilib @ 2014-06-25 17:01 Ian Stakenvicius 2014-06-25 18:44 ` Michał Górny 2014-07-03 10:58 ` [gentoo-dev] " Michał Górny 0 siblings, 2 replies; 18+ messages in thread From: Ian Stakenvicius @ 2014-06-25 17:01 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Hey everyone -- so right now (and it's been this way for a very long time, it seems), amd64 no-multilib profiles will always report repoman 'dependency.badindev' warnings whenever a package either depends on an emul-* package or an abi_x86_32 use dependency. At the moment there are two profiles in particular that do this, amd64/no-multilib and hardened/linux/uclibc/amd64 .. It's possible or likely there are others, too, on other arches perhaps. In general, it's good that repoman notices this because those profiles don't support having the 32bit deps installed. However, if one of those profiles ever moves from a dev profile to a stable one (and blueness mentioned he would like to make uclibc/amd64 stable), then those dependency.badindev warnings will suddenly turn into dependency.bad errors. The solution to this would seem to be to package.mask all of these 32-bit packages in the pure 64bit profiles. However, having to do this in multiple locations is annoying. I would like to propose adding 'no-multilib/[arch]/package.mask' sub-profile(s), to allow all of these masks to go in one place. Populating package.mask should be fairly easy for amd64 at least, since anything depending on an app-emulation/emul-* will need to be masked. However the merits of where the package.mask will go needs discussion. Perhaps, for instance, it's time to adjust the profile tree hierarchy more aggressively instead of "piling on" with yet another subdir. Thoughts? -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iF4EAREIAAYFAlOrAHwACgkQ2ugaI38ACPA1lgD/eTAWJz5gBHAL49HFP9StYlcj aWcBKp7I8/5yP5KxXcgA/3jcn2v/yNt3nhbNWvhRWvmj1FIau6kWnjTXNyS1uVYh =9p7z -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [gentoo-dev] Making a common sub-profile for no-multilib 2014-06-25 17:01 [gentoo-dev] Making a common sub-profile for no-multilib Ian Stakenvicius @ 2014-06-25 18:44 ` Michał Górny 2014-06-25 19:00 ` Chris Reffett 2014-06-25 19:11 ` Rich Freeman 2014-07-03 10:58 ` [gentoo-dev] " Michał Górny 1 sibling, 2 replies; 18+ messages in thread From: Michał Górny @ 2014-06-25 18:44 UTC (permalink / raw To: Ian Stakenvicius; +Cc: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 2648 bytes --] Dnia 2014-06-25, o godz. 13:01:48 Ian Stakenvicius <axs@gentoo.org> napisał(a): > At the moment there are two profiles in particular that do this, > amd64/no-multilib and hardened/linux/uclibc/amd64 .. It's possible or > likely there are others, too, on other arches perhaps. > > In general, it's good that repoman notices this because those profiles > don't support having the 32bit deps installed. However, if one of > those profiles ever moves from a dev profile to a stable one (and > blueness mentioned he would like to make uclibc/amd64 stable), then > those dependency.badindev warnings will suddenly turn into > dependency.bad errors. > > The solution to this would seem to be to package.mask all of these > 32-bit packages in the pure 64bit profiles. However, having to do > this in multiple locations is annoying. > > I would like to propose adding 'no-multilib/[arch]/package.mask' > sub-profile(s), to allow all of these masks to go in one place. > > Populating package.mask should be fairly easy for amd64 at least, > since anything depending on an app-emulation/emul-* will need to be > masked. However the merits of where the package.mask will go needs > discussion. Perhaps, for instance, it's time to adjust the profile > tree hierarchy more aggressively instead of "piling on" with yet > another subdir. Forgive me for using such a words, but the profile tree is a well stacked pile of crap. We have a dozen random profiles for each arch then a dozen other profiles forked off them 'because the generic arch profiles have crap' and a lot of profiles that inherit others in a complex and semi-random manner. For example, abi_x86_64 and abi_x86_32 each need to be forced in 4 profiles. This proves that we have 4 distinct profiles for amd64 which need to be kept in sync. If I change something, I need to perform the change in 4 different profiles and make sure I didn't screw something up. Then there's the x32 profile that inherits amd64 profile and therefore requires reverting some of the stuff done on amd64. To do a complete common change to x86-family multilib (like adding IUSE_IMPLICIT) I have to modify 9 profiles. Now let's add to this circa 8 mips profiles, around 3 ppc profiles, 4 arm profiles and some more. Every arch organized in somewhat different and totally non-documented manner. Long story short, doing anything to Gentoo profiles is utter pain and comes with random breakage guarantee. Therefore, I'm asking -- nuke those damn profiles, and start over! The current situation is completely unmaintainable. -- Best regards, Michał Górny [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 949 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [gentoo-dev] Making a common sub-profile for no-multilib 2014-06-25 18:44 ` Michał Górny @ 2014-06-25 19:00 ` Chris Reffett 2014-06-25 19:14 ` Anthony G. Basile 2014-06-25 19:11 ` Rich Freeman 1 sibling, 1 reply; 18+ messages in thread From: Chris Reffett @ 2014-06-25 19:00 UTC (permalink / raw To: gentoo-dev On June 25, 2014 2:44:57 PM EDT, "Michał Górny" <mgorny@gentoo.org> wrote: >Dnia 2014-06-25, o godz. 13:01:48 >Ian Stakenvicius <axs@gentoo.org> napisał(a): > >> At the moment there are two profiles in particular that do this, >> amd64/no-multilib and hardened/linux/uclibc/amd64 .. It's possible >or >> likely there are others, too, on other arches perhaps. >> >> In general, it's good that repoman notices this because those >profiles >> don't support having the 32bit deps installed. However, if one of >> those profiles ever moves from a dev profile to a stable one (and >> blueness mentioned he would like to make uclibc/amd64 stable), then >> those dependency.badindev warnings will suddenly turn into >> dependency.bad errors. >> >> The solution to this would seem to be to package.mask all of these >> 32-bit packages in the pure 64bit profiles. However, having to do >> this in multiple locations is annoying. >> >> I would like to propose adding 'no-multilib/[arch]/package.mask' >> sub-profile(s), to allow all of these masks to go in one place. >> >> Populating package.mask should be fairly easy for amd64 at least, >> since anything depending on an app-emulation/emul-* will need to be >> masked. However the merits of where the package.mask will go needs >> discussion. Perhaps, for instance, it's time to adjust the profile >> tree hierarchy more aggressively instead of "piling on" with yet >> another subdir. > >Forgive me for using such a words, but the profile tree is a well >stacked pile of crap. We have a dozen random profiles for each arch >then a dozen other profiles forked off them 'because the generic >arch profiles have crap' and a lot of profiles that inherit others >in a complex and semi-random manner. > >For example, abi_x86_64 and abi_x86_32 each need to be forced in 4 >profiles. This proves that we have 4 distinct profiles for amd64 which >need to be kept in sync. If I change something, I need to perform >the change in 4 different profiles and make sure I didn't screw >something up. > >Then there's the x32 profile that inherits amd64 profile and therefore >requires reverting some of the stuff done on amd64. To do a complete >common change to x86-family multilib (like adding IUSE_IMPLICIT) I have >to modify 9 profiles. > >Now let's add to this circa 8 mips profiles, around 3 ppc profiles, 4 >arm profiles and some more. Every arch organized in somewhat different >and totally non-documented manner. > >Long story short, doing anything to Gentoo profiles is utter pain >and comes with random breakage guarantee. Therefore, I'm asking -- nuke >those damn profiles, and start over! The current situation is >completely unmaintainable. +1, I'm all for replacing it with something more usable. I personally would favor the mix-in approach, but just about anything would be better than the weird setup we have right now. Chris ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [gentoo-dev] Making a common sub-profile for no-multilib 2014-06-25 19:00 ` Chris Reffett @ 2014-06-25 19:14 ` Anthony G. Basile 0 siblings, 0 replies; 18+ messages in thread From: Anthony G. Basile @ 2014-06-25 19:14 UTC (permalink / raw To: gentoo-dev On 06/25/14 15:00, Chris Reffett wrote: > > On June 25, 2014 2:44:57 PM EDT, "Michał Górny" <mgorny@gentoo.org> wrote: >> Dnia 2014-06-25, o godz. 13:01:48 >> Ian Stakenvicius <axs@gentoo.org> napisał(a): >> >>> At the moment there are two profiles in particular that do this, >>> amd64/no-multilib and hardened/linux/uclibc/amd64 .. It's possible >> or >>> likely there are others, too, on other arches perhaps. >>> >>> In general, it's good that repoman notices this because those >> profiles >>> don't support having the 32bit deps installed. However, if one of >>> those profiles ever moves from a dev profile to a stable one (and >>> blueness mentioned he would like to make uclibc/amd64 stable), then >>> those dependency.badindev warnings will suddenly turn into >>> dependency.bad errors. >>> >>> The solution to this would seem to be to package.mask all of these >>> 32-bit packages in the pure 64bit profiles. However, having to do >>> this in multiple locations is annoying. >>> >>> I would like to propose adding 'no-multilib/[arch]/package.mask' >>> sub-profile(s), to allow all of these masks to go in one place. >>> >>> Populating package.mask should be fairly easy for amd64 at least, >>> since anything depending on an app-emulation/emul-* will need to be >>> masked. However the merits of where the package.mask will go needs >>> discussion. Perhaps, for instance, it's time to adjust the profile >>> tree hierarchy more aggressively instead of "piling on" with yet >>> another subdir. >> Forgive me for using such a words, but the profile tree is a well >> stacked pile of crap. We have a dozen random profiles for each arch >> then a dozen other profiles forked off them 'because the generic >> arch profiles have crap' and a lot of profiles that inherit others >> in a complex and semi-random manner. >> >> For example, abi_x86_64 and abi_x86_32 each need to be forced in 4 >> profiles. This proves that we have 4 distinct profiles for amd64 which >> need to be kept in sync. If I change something, I need to perform >> the change in 4 different profiles and make sure I didn't screw >> something up. >> >> Then there's the x32 profile that inherits amd64 profile and therefore >> requires reverting some of the stuff done on amd64. To do a complete >> common change to x86-family multilib (like adding IUSE_IMPLICIT) I have >> to modify 9 profiles. >> >> Now let's add to this circa 8 mips profiles, around 3 ppc profiles, 4 >> arm profiles and some more. Every arch organized in somewhat different >> and totally non-documented manner. >> >> Long story short, doing anything to Gentoo profiles is utter pain >> and comes with random breakage guarantee. Therefore, I'm asking -- nuke >> those damn profiles, and start over! The current situation is >> completely unmaintainable. > +1, I'm all for replacing it with something more usable. I personally would favor the mix-in approach, but just about anything would be better than the weird setup we have right now. > > Chris > The profiles have caused us no end of suffering in hardened. The hardened/linux/uclibc profiles are my attempt to avoid the "well stacked pile of crap" without creating more "crap", although that's debatable ;) The problem is the way stacking works. You don't have control over the inheritance and so wind up turn things on, then reverting, then turning them on again on in the next layer etc. We had luck disentangling selinux because it was orthogonal to the rest of hardened, but not so much luck when it came to the hardened/desktop subprofiles. I've been trying to keep up with the multilib stuff for uclibc, so don't fret too much about those profiles, although any help is appreciated like repoman -d warnings. I'd worry more about the rest of them. However, in the long run, before we nuke them all and start over (and loose a lot of memory in the process) we may want to look into designs where we can control the inheritance better via portage. More syntax in the parent file may help here. The issue has vexed me enough that I blogged about it: http://blogs.gentoo.org/blueness/2014/02/07/the-gentoo-profile-stacking-problem/ -- Anthony G. Basile, Ph.D. Gentoo Linux Developer [Hardened] E-Mail : blueness@gentoo.org GnuPG FP : 1FED FAD9 D82C 52A5 3BAB DC79 9384 FA6E F52D 4BBA GnuPG ID : F52D4BBA ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [gentoo-dev] Making a common sub-profile for no-multilib 2014-06-25 18:44 ` Michał Górny 2014-06-25 19:00 ` Chris Reffett @ 2014-06-25 19:11 ` Rich Freeman 2014-06-25 20:01 ` Andreas K. Huettel 1 sibling, 1 reply; 18+ messages in thread From: Rich Freeman @ 2014-06-25 19:11 UTC (permalink / raw To: gentoo-dev On Wed, Jun 25, 2014 at 2:44 PM, Michał Górny <mgorny@gentoo.org> wrote: > Long story short, doing anything to Gentoo profiles is utter pain > and comes with random breakage guarantee. Therefore, I'm asking -- nuke > those damn profiles, and start over! The current situation is > completely unmaintainable. ++ But, would it make sense to just go the Funtoo route with "mix-ins." Basically instead of symlinking make.profile to a profile directory they turn make.profile into an actual profile which just has a parent that inherits all the real profiles, and eselect is designed to handle it. That would get rid of the 47 permutations in our current tree. It would also reduce the barrier to adding more options, since it means adding one subdir that only affects those who use/maintain it, and not 23 combinations that drive everybody mad. Rich ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Re: [gentoo-dev] Making a common sub-profile for no-multilib 2014-06-25 19:11 ` Rich Freeman @ 2014-06-25 20:01 ` Andreas K. Huettel 2014-07-02 13:30 ` Rich Freeman 0 siblings, 1 reply; 18+ messages in thread From: Andreas K. Huettel @ 2014-06-25 20:01 UTC (permalink / raw To: gentoo-dev Am Mittwoch 25 Juni 2014, 15:11:40 schrieb Rich Freeman: > On Wed, Jun 25, 2014 at 2:44 PM, Michał Górny <mgorny@gentoo.org> wrote: > > Long story short, doing anything to Gentoo profiles is utter pain > > and comes with random breakage guarantee. Therefore, I'm asking -- nuke > > those damn profiles, and start over! The current situation is > > completely unmaintainable. > > ++ > > But, would it make sense to just go the Funtoo route with "mix-ins." > Basically instead of symlinking make.profile to a profile directory > they turn make.profile into an actual profile which just has a parent > that inherits all the real profiles, and eselect is designed to handle > it. > > That would get rid of the 47 permutations in our current tree. It > would also reduce the barrier to adding more options, since it means > adding one subdir that only affects those who use/maintain it, and not > 23 combinations that drive everybody mad. ++ this is what we've been just discussing on the irc channel -- Andreas K. Huettel Gentoo Linux developer kde, council ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Re: [gentoo-dev] Making a common sub-profile for no-multilib 2014-06-25 20:01 ` Andreas K. Huettel @ 2014-07-02 13:30 ` Rich Freeman 2014-07-02 18:14 ` [gentoo-dev] " Duncan 0 siblings, 1 reply; 18+ messages in thread From: Rich Freeman @ 2014-07-02 13:30 UTC (permalink / raw To: gentoo-dev On Wed, Jun 25, 2014 at 4:01 PM, Andreas K. Huettel <dilfridge@gentoo.org> wrote: > Am Mittwoch 25 Juni 2014, 15:11:40 schrieb Rich Freeman: >> On Wed, Jun 25, 2014 at 2:44 PM, Michał Górny <mgorny@gentoo.org> wrote: >> > Long story short, doing anything to Gentoo profiles is utter pain >> > and comes with random breakage guarantee. Therefore, I'm asking -- nuke >> > those damn profiles, and start over! The current situation is >> > completely unmaintainable. >> >> ++ >> >> But, would it make sense to just go the Funtoo route with "mix-ins." > ++ > > this is what we've been just discussing on the irc channel So, not wanting this to die on the vine. If we did the mix-in approach, would we just follow the example of Funtoo? They use an arch profile, a stability profile (~arch vs arch), a "flavor" profile (core, minimal, desktop), and then users can layer as much other stuff on top of that as they want (gnome, kde, multimedia, etc). Do we want to do things the same way? Some things to think about include multilib (just another arch?), systemd, and usr-merge. I'm not saying that we need to implement any of that stuff completely - but when planning the profile layout we should at least consider whether it will handle things like this in the future. Should some types of profiles be only additive? Etc... Rich ^ permalink raw reply [flat|nested] 18+ messages in thread
* [gentoo-dev] Re: Making a common sub-profile for no-multilib 2014-07-02 13:30 ` Rich Freeman @ 2014-07-02 18:14 ` Duncan 2014-07-02 23:06 ` Jonathan Callen 0 siblings, 1 reply; 18+ messages in thread From: Duncan @ 2014-07-02 18:14 UTC (permalink / raw To: gentoo-dev Rich Freeman posted on Wed, 02 Jul 2014 09:30:50 -0400 as excerpted: > Some things to think about include multilib (just another arch?), > systemd, > and usr-merge. I'm not saying that we need to implement any of that > stuff completely - but when planning the profile layout we should at > least consider whether it will handle things like this in the future. > Should some types of profiles be only additive? Etc... FWIW, systemd with merge to / (/usr being a symlink to . and sbin to bin) here. In particular, the merge "just works" with current portage. I'm no-multilib. -- Duncan - List replies preferred. No HTML msgs. "Every nonfree program has a lord, a master -- and if you use the program, he is your master." Richard Stallman ^ permalink raw reply [flat|nested] 18+ messages in thread
* [gentoo-dev] Re: Making a common sub-profile for no-multilib 2014-07-02 18:14 ` [gentoo-dev] " Duncan @ 2014-07-02 23:06 ` Jonathan Callen 2014-07-03 4:59 ` Duncan 0 siblings, 1 reply; 18+ messages in thread From: Jonathan Callen @ 2014-07-02 23:06 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 On 07/02/2014 02:14 PM, Duncan wrote: > Rich Freeman posted on Wed, 02 Jul 2014 09:30:50 -0400 as > excerpted: > >> Some things to think about include multilib (just another >> arch?), systemd, and usr-merge. I'm not saying that we need to >> implement any of that stuff completely - but when planning the >> profile layout we should at least consider whether it will handle >> things like this in the future. Should some types of profiles be >> only additive? Etc... > > FWIW, systemd with merge to / (/usr being a symlink to . and sbin > to bin) here. In particular, the merge "just works" with current > portage. I'm no-multilib. > That merge only works because you happened to get lucky, and have portage merge coreutils in a particular manner (/usr/bin/uname installed before /bin/uname). If portage had installed /bin/uname first, you would have ended up with a /bin/uname symlink pointing to /bin/uname. The same is also true of basename, chroot, cut, dir, dirname, du, env, expr, head, mkfifo, mktemp, readlink, seq, sleep, sort, tail, touch, tr, tty, vdir, wc, and yes. I myself am currently running a system with the opposite merge (/bin, /lib, /lib64, and /sbin are symlinks to /usr/bin, /usr/lib, /usr/lib64, and /usr/sbin) although I do not yet have the sbin -> bin merge yet. I added a post_src_install and post_pkg_preinst hook in my /etc/portage/bashrc to ensure that there are no conflicts before the package is merged and a pre_pkg_setup hook to disarm gen_usr_ldscript (so as not to create a conflict). The only two packages I have installed that I had to modify to make this work were coreutils (as noted above) and plymouth. - -- Jonathan Callen -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIcBAEBCgAGBQJTtJCTAAoJELHSF2kinlg41W0P/19TAJErj3y7eMFGJG2BMVIM TtAj2wM+whB0Md1+TGypFS0ESO+hJAxNyyuIT215afRIqZJgYjZG5NZCnmygI71t 9das1k2JHn+PRO5KSZcw3Z3VcpspzADTwR+avaxiqRuslzyTvAYrsPj+7oQd6iDp 4XzDKFSEh2hNJHUQUQ3eT5NxlJNQu9uxKLc4aM+1/GImlSAVbbiKHUHWy3njSVWN twFkQJ59IHod9aZgn0txydd9hhMr43Et6uDJywjGuIeVQncAO/eBvT9hRE5tB3aN x/pd1Dcf0V5FTN/459kcoRwTBQ2k3quhGJBeSSGLUwNlTjdOWDbqU5HcgOf0d7v4 NXMIOr95ung3LgeqCyZU5S4XTyoh9w/nZRXuSTYL0sQL3IxffLRkVPcvis02cY6a jZaSAwkVkPhyAGkV0QxMsfhEP9+2wdtB7JMc28kslO0kGpdV5Oa8ES+QqnwVXgi7 umB+5D4IjTDK6uPcM5K5p+8wKWcsFMvn5X/+3Fh49S6KDiWZRsjq45pHC7+5lC0p S8EJb8XybieRvQsVGo8NfgucvRQFbeUn+BaUfztoNRvKG3NxsnxRJ+JycK9bi1pj znu7YKmCZMmt8PurliQPKQ6vtPjFQK19gZZf72zTVBycc2hdaKnbowAV0rBgTETN +8xryIRBNfISkUIjEip/ =Muzz -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 18+ messages in thread
* [gentoo-dev] Re: Making a common sub-profile for no-multilib 2014-07-02 23:06 ` Jonathan Callen @ 2014-07-03 4:59 ` Duncan 2014-07-03 7:05 ` Jonathan Callen 0 siblings, 1 reply; 18+ messages in thread From: Duncan @ 2014-07-03 4:59 UTC (permalink / raw To: gentoo-dev Jonathan Callen posted on Wed, 02 Jul 2014 19:06:59 -0400 as excerpted: > On 07/02/2014 02:14 PM, Duncan wrote: >> Rich Freeman posted on Wed, 02 Jul 2014 09:30:50 -0400 as excerpted: >> >>> Some things to think about include multilib (just another arch?), >>> systemd, and usr-merge. >> >> FWIW, systemd with merge to / (/usr being a symlink to . and sbin to >> bin) here. In particular, the merge "just works" with current portage. >> I'm no-multilib. >> > That merge only works because you happened to get lucky, and have > portage merge coreutils in a particular manner (/usr/bin/uname installed > before /bin/uname). If portage had installed /bin/uname first, you > would have ended up with a /bin/uname symlink pointing to /bin/uname. > The same is also true of basename, chroot, cut, dir, dirname, du, env, > expr, head, mkfifo, mktemp, readlink, seq, sleep, sort, tail, touch, tr, > tty, vdir, wc, and yes. No, it works because, as I specifically asked the portage folks about before I tried it, portage has had symlink merge intelligence for some time now. Apparently well before I asked (in May, 2013, according to my portage-devel list archives), some portage dev considered the possibility of directory symlinks triggering overwrites of targets with the symlinks pointing to them, and ensured that portage's qmerge code "just did the right thing." I did nothing with the answer for some time, but eventually decided to try it. As I was a bit skeptical/careful at first, after doing the initial manual moves and thus finding which files existed in both target dirs, then deleting the individual file symlinks, moving the remaining files to the new location and making the old directory a symlink, I equery-belonged the symlinks and manually remerged (from binpkg, which still stores the symlinks in their usual location in the binpkg tarball) several of the packages one at a time, first a non-critical one, then I think coreutils itself, just to be sure, then 2-3 others together, and sure enough, it "just worked" the way it was supposed to work. =:^) > I myself am currently running a system with the opposite merge (/bin, > /lib, /lib64, and /sbin are symlinks to /usr/bin, /usr/lib, /usr/lib64, > and /usr/sbin) although I do not yet have the sbin -> bin merge yet. FWIW I decided the single /usr -> . symlink was simpler, and besides, I liked the shorter direct paths. =:^) And I did the /usr merge first, thinking I wanted to keep the bin/sbin distinction at first, until sometime later I decided to simplify my PATH var to remove /usr, and realized I had sbin in my normal user's PATH too. Completing the merge would/did allow me to simplify PATH even further, and since I has sbin in my normal user's PATH, there really wasn't a reason to keep them separate at that point, and I was already comfortable with merged bins by then anyway, so it wasn't much of a stretch at all. > I > added a post_src_install and post_pkg_preinst hook in my > /etc/portage/bashrc to ensure that there are no conflicts before the > package is merged and a pre_pkg_setup hook to disarm gen_usr_ldscript > (so as not to create a conflict). That's all unnecessary, because as I said, in general portage "just works" with the merge now, since it's designed to work with pretty much /any/ strange site-specific symlinking local gentoo admins might throw at it, altho I expect the ldcache stuff is still doing a bunch of extra work by going over all the dirs that are actually the same thing, and I suspect revdep-rebuild (which I still run religiously after every @world update) is doing a bunch of extra scanning too. But as I'm on SSD the extra filesystem IO isn't a big issue, meaning it's simply the CPU cycle cost, and so far simply spending the extra CPU cycles has been cheaper for me than actually researching what I might do about it, so... > The only two packages I have installed that I had to modify to make this > work were coreutils (as noted above) and plymouth. I did find one package with a specific post-install quirk, that was there to work around a binary move from many years ago, that ended up specifically removing the binary after portage had done its thing and actually put the binary in place instead of the symlink, but that binary wasn't a system-critical binary (dircolors, FWIW, pkg=coreutils), and upon investigation and filing a bug suggesting to test that it was a symlink, not the actual binary removed, the maintainer (vapier) decided that the reason that particular post-install quirk was there was far enough back in history he could just remove it from the ebuild. I didn't check whether he removed it from stable, but at least leading ~arch coreutils doesn't have that quirk any longer, and leaves dircolors alone. FWIW, https://bugs.gentoo.org/show_bug.cgi?id=509596 The only other relatively minor irritation that remains is a portage bug, but as I said it's relatively minor as it doesn't affect functionality. But what it /does/ mean is that for nearly EVERY package upgrade, I have an identical message complaining about /usr being a possibly stale symlink, with no easy/apparent way to quite the warning using UNINSTALL_IGNORE, as I can and have with other symlinks such as /var/run -> run, etc. When it stops being a relatively minor irritation and gets big enough to really annoy me (if simply mentioning it here doesn't get it fixed before I actually get to that point), I'll file a bug on it and I expect that annoyance will go away as well. =:^) -- Duncan - List replies preferred. No HTML msgs. "Every nonfree program has a lord, a master -- and if you use the program, he is your master." Richard Stallman ^ permalink raw reply [flat|nested] 18+ messages in thread
* [gentoo-dev] Re: Making a common sub-profile for no-multilib 2014-07-03 4:59 ` Duncan @ 2014-07-03 7:05 ` Jonathan Callen 2014-07-03 9:05 ` Duncan 0 siblings, 1 reply; 18+ messages in thread From: Jonathan Callen @ 2014-07-03 7:05 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 On 07/03/2014 12:59 AM, Duncan wrote: > Jonathan Callen posted on Wed, 02 Jul 2014 19:06:59 -0400 as > excerpted: > >> On 07/02/2014 02:14 PM, Duncan wrote: >>> Rich Freeman posted on Wed, 02 Jul 2014 09:30:50 -0400 as >>> excerpted: >>> >>>> Some things to think about include multilib (just another >>>> arch?), systemd, and usr-merge. >>> >>> FWIW, systemd with merge to / (/usr being a symlink to . and >>> sbin to bin) here. In particular, the merge "just works" with >>> current portage. I'm no-multilib. >>> >> That merge only works because you happened to get lucky, and >> have portage merge coreutils in a particular manner >> (/usr/bin/uname installed before /bin/uname). If portage had >> installed /bin/uname first, you would have ended up with a >> /bin/uname symlink pointing to /bin/uname. The same is also true >> of basename, chroot, cut, dir, dirname, du, env, expr, head, >> mkfifo, mktemp, readlink, seq, sleep, sort, tail, touch, tr, tty, >> vdir, wc, and yes. > > No, it works because, as I specifically asked the portage folks > about before I tried it, portage has had symlink merge intelligence > for some time now. Apparently well before I asked (in May, 2013, > according to my portage-devel list archives), some portage dev > considered the possibility of directory symlinks triggering > overwrites of targets with the symlinks pointing to them, and > ensured that portage's qmerge code "just did the right thing." > > I did nothing with the answer for some time, but eventually decided > to try it. As I was a bit skeptical/careful at first, after doing > the initial manual moves and thus finding which files existed in > both target dirs, then deleting the individual file symlinks, > moving the remaining files to the new location and making the old > directory a symlink, I equery-belonged the symlinks and manually > remerged (from binpkg, which still stores the symlinks in their > usual location in the binpkg tarball) several of the packages one > at a time, first a non-critical one, then I think coreutils itself, > just to be sure, then 2-3 others together, and sure enough, it > "just worked" the way it was supposed to work. > > =:^) > >> I myself am currently running a system with the opposite merge >> (/bin, /lib, /lib64, and /sbin are symlinks to /usr/bin, >> /usr/lib, /usr/lib64, and /usr/sbin) although I do not yet have >> the sbin -> bin merge yet. > > FWIW I decided the single /usr -> . symlink was simpler, and > besides, I liked the shorter direct paths. =:^) And I did the /usr > merge first, thinking I wanted to keep the bin/sbin distinction at > first, until sometime later I decided to simplify my PATH var to > remove /usr, and realized I had sbin in my normal user's PATH too. > Completing the merge would/did allow me to simplify PATH even > further, and since I has sbin in my normal user's PATH, there > really wasn't a reason to keep them separate at that point, and I > was already comfortable with merged bins by then anyway, so it > wasn't much of a stretch at all. > >> I added a post_src_install and post_pkg_preinst hook in my >> /etc/portage/bashrc to ensure that there are no conflicts before >> the package is merged and a pre_pkg_setup hook to disarm >> gen_usr_ldscript (so as not to create a conflict). > > That's all unnecessary, because as I said, in general portage "just > works" with the merge now, since it's designed to work with pretty > much /any/ strange site-specific symlinking local gentoo admins > might throw at it, altho I expect the ldcache stuff is still doing > a bunch of extra work by going over all the dirs that are actually > the same thing, and I suspect revdep-rebuild (which I still run > religiously after every @world update) is doing a bunch of extra > scanning too. But as I'm on SSD the extra filesystem IO isn't a > big issue, meaning it's simply the CPU cycle cost, and so far > simply spending the extra CPU cycles has been cheaper for me than > actually researching what I might do about it, so... > That is good to know. I did, however test when a package installs two (different) regular files into paths that end up symlinked, and found that portage does break in that case (as the only sensible option at that point is to fail, as something will be lost in either case). - -- Jonathan -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIcBAEBCgAGBQJTtQDKAAoJELHSF2kinlg4eIIP/0Jmia/151IPAAt3oG7OalVr 1SyUSdAchM/cCb6m8uf3BDPIxMQa704Zh/TKd3wAxz64BJGmJtDmEBlAq+04nXnw UFB+dJVJsphN/X/jS7iln1tVqn8099mntYWG9mjv4nQLXNf6U0H1i9iBQtz+uvi5 9tzO6Ghoen6VvyV7ykI/r2uByI4Y4+anVgXKT2s99akbIWFR9qQuHOHWlcxZxurd QA17Wfnxene7FfpGtsanORvpiKaQamUo75zXlR7l5FydiANH5QKt1Qw5RZIC/k27 PVc+oV2A+7HJVWHrMqEBwwGyn8LokzzX644TpiL17rTHkGa9jYYnsfwO/mIksEh2 O7HzbHyGjD6yUVbY/G3bxUfjpEi0C02DASSlOrHnDsZf4U5joYf9D//jTFQhCkp8 TtPcU7h4HIlyniberknM/WMqQ8B4lnjlCGNcVoaZtqabQ6YtIV+9eu32Gzd0LP29 TN/MQFm98pRGTwAAoyoq8QzOUUpoEBZP05htsW5UvgSe5CAzfi2Tm2TEsF/ulbMs IoZBdovmv1mpTnNESJ6rTos9QesAbErV0FQn6NC5WcvtWpTrpiRFf3QeqOCcgpZY ogH241MJaaxnu3vUdKnCD5zd4UBJOjWaViLKIK29v3pWVAgbMeHhC0inNW6gIZIu Nn8aKkjoyjyEhyJT9/tj =3Nrz -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 18+ messages in thread
* [gentoo-dev] Re: Making a common sub-profile for no-multilib 2014-07-03 7:05 ` Jonathan Callen @ 2014-07-03 9:05 ` Duncan 2014-07-03 9:43 ` Michał Górny 0 siblings, 1 reply; 18+ messages in thread From: Duncan @ 2014-07-03 9:05 UTC (permalink / raw To: gentoo-dev Jonathan Callen posted on Thu, 03 Jul 2014 03:05:46 -0400 as excerpted: > I did, however test when a package installs two (different) regular > files into paths that end up symlinked, and found that portage does > break in that case (as the only sensible option at that point is to > fail, as something will be lost in either case). Indeed, and good point. I guess at that point it's basically a pkg-collision, except that it's in a single package instead of two different packages. Too bad a package can't block itself and thus handle it the way different packages blocking each other handle that case! =;^) That's why symlinking both lib64 and lib32 to lib isn't a particularly good idea! =;^) -- Duncan - List replies preferred. No HTML msgs. "Every nonfree program has a lord, a master -- and if you use the program, he is your master." Richard Stallman ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [gentoo-dev] Re: Making a common sub-profile for no-multilib 2014-07-03 9:05 ` Duncan @ 2014-07-03 9:43 ` Michał Górny 0 siblings, 0 replies; 18+ messages in thread From: Michał Górny @ 2014-07-03 9:43 UTC (permalink / raw To: Duncan; +Cc: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1068 bytes --] Dnia 2014-07-03, o godz. 09:05:47 Duncan <1i5t5.duncan@cox.net> napisał(a): > Jonathan Callen posted on Thu, 03 Jul 2014 03:05:46 -0400 as excerpted: > > > I did, however test when a package installs two (different) regular > > files into paths that end up symlinked, and found that portage does > > break in that case (as the only sensible option at that point is to > > fail, as something will be lost in either case). > > Indeed, and good point. > > I guess at that point it's basically a pkg-collision, except that it's in > a single package instead of two different packages. Too bad a package > can't block itself and thus handle it the way different packages blocking > each other handle that case! =;^) > > That's why symlinking both lib64 and lib32 to lib isn't a particularly > good idea! =;^) Symlinking anything to lib wasn't ever a particularly good idea. We will spend a lot of effort fixing that (see the SYMLINK_LIB=no bug [1]). [1]:https://bugs.gentoo.org/show_bug.cgi?id=506276 -- Best regards, Michał Górny [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 949 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [gentoo-dev] Making a common sub-profile for no-multilib 2014-06-25 17:01 [gentoo-dev] Making a common sub-profile for no-multilib Ian Stakenvicius 2014-06-25 18:44 ` Michał Górny @ 2014-07-03 10:58 ` Michał Górny 2014-07-03 12:07 ` Peter Stuge 1 sibling, 1 reply; 18+ messages in thread From: Michał Górny @ 2014-07-03 10:58 UTC (permalink / raw To: Ian Stakenvicius; +Cc: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 3383 bytes --] Dnia 2014-06-25, o godz. 13:01:48 Ian Stakenvicius <axs@gentoo.org> napisał(a): > I would like to propose adding 'no-multilib/[arch]/package.mask' > sub-profile(s), to allow all of these masks to go in one place. > > Populating package.mask should be fairly easy for amd64 at least, > since anything depending on an app-emulation/emul-* will need to be > masked. However the merits of where the package.mask will go needs > discussion. Perhaps, for instance, it's time to adjust the profile > tree hierarchy more aggressively instead of "piling on" with yet > another subdir. > > Thoughts? I would go for a bit different way of handling arch profiles. This is an early idea that probably can't work but could make things a little bit easier to mangle. The arch/ tree starts with 'generic' subdirectories matching main arches -- like arm, mips, x86, sparc, powerpc, s390 (but not amd64). Each of arch trees contains an 'abis' subtree that contains mix-ins describing particular ABIs supported. For example, arch/x86/abis/x86, arch/x86/abis/amd64, arch/mips/abis/o32. Each of those mix-ins describes that basic stuff for ABI (like LIBDIR, standard CHOST), unmasks relevant ABI flags and p.masks them on packages that don't support a particular ABI. Now, each of those mix-ins may come with a sub-profile called 'default' that sets use.force & make.defaults for making the ABI the default ABI. I'm currently not sure if this will be really helpful since the small amount of work we may also put directly into 'real' profiles (described below). Moreover, each of those mix-ins may come with a 'no-multilib' sub-profile. This one -- aside from setting all the standard variables -- package.masks all the packages that were package.use.mask in parent profile. This way, we can keep all the masks almost in a single place. Then, we have multilib profiles like arch/x86/multilib/amd64, arch/x86/multilib/x32. Those inherit from all the relevant ABI profiles -- e.g. amd64 would inherit arch/x86/abis/x86 & arch/x86/abis/amd64[/default], and set the remaining variables for multilib. While I feel it's a bit complex, I think that's somehow a sane way to express what we have now without moving back and forth. Few extra key points: - minimal no of profiles in each 'parent' -- supposedly abis/ would have no parents, and possibly final profiles would have 'arch/base' as parent, - as already mentioned somewhere else, i'd rather see 'arch/base' instead of plain 'base' -- the idea is to put everything that's easier reverted than copied through all arch/ profiles, and have it inherited only by the final arch profiles. For example, the expanded inherits for arch/x86/multilib/amd64 would go like: 1. arch/base -- that disables a lot of uncommon stuff, 2. arch/x86/base [optionally] -- setting some generic defaults, 3. arch/x86/abis/x86 -- setting support for 'x86' ABI, 4. arch/x86/abis/x86/lib32 [optionally] -- overriding LIBDIR_x86 for compatibility with current SYMLINK_LIB screwup, 5. arch/x86/abis/amd64 -- setting support for 'amd64' ABI, 6. arch/x86/abis/amd64/default [optionally] -- setting 'amd64' as default ABI, 7. arch/x86/multilib/amd64 -- finishing multilib setup. The key point here being that no profile is run twice. -- Best regards, Michał Górny [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 949 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [gentoo-dev] Making a common sub-profile for no-multilib 2014-07-03 10:58 ` [gentoo-dev] " Michał Górny @ 2014-07-03 12:07 ` Peter Stuge 2014-07-03 12:12 ` Michał Górny 2014-07-03 12:33 ` Rich Freeman 0 siblings, 2 replies; 18+ messages in thread From: Peter Stuge @ 2014-07-03 12:07 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1221 bytes --] Michał Górny wrote: > The arch/ tree starts with 'generic' subdirectories matching main > arches -- like arm, mips, x86, sparc, powerpc, s390 (but not amd64). I like this idea, but.. > Each of arch trees contains an 'abis' subtree that contains mix-ins ..please please call this 'abi' instead. > For example, the expanded inherits for arch/x86/multilib/amd64 would > go like: > > 1. arch/base -- that disables a lot of uncommon stuff, > 2. arch/x86/base [optionally] -- setting some generic defaults, Fine so far. > 3. arch/x86/abis/x86 -- setting support for 'x86' ABI, > 4. arch/x86/abis/x86/lib32 [optionally] -- overriding LIBDIR_x86 for > compatibility with current SYMLINK_LIB screwup, This can't work; abi/x86 can't be both a file and a subdir. Maybe call them abi/x86 and abi/x86_SYMLINK_LIB_compatibility ? (Or x86_lib32, although that is a lot less descriptive.) > 5. arch/x86/abis/amd64 -- setting support for 'amd64' ABI, > 6. arch/x86/abis/amd64/default [optionally] -- setting 'amd64' > as default ABI, Same here with abi/amd64 being both file and subdir. > 7. arch/x86/multilib/amd64 -- finishing multilib setup. I think it looks good. //Peter [-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [gentoo-dev] Making a common sub-profile for no-multilib 2014-07-03 12:07 ` Peter Stuge @ 2014-07-03 12:12 ` Michał Górny 2014-07-03 12:42 ` Peter Stuge 2014-07-03 12:33 ` Rich Freeman 1 sibling, 1 reply; 18+ messages in thread From: Michał Górny @ 2014-07-03 12:12 UTC (permalink / raw To: Peter Stuge; +Cc: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1110 bytes --] Dnia 2014-07-03, o godz. 14:07:28 Peter Stuge <peter@stuge.se> napisał(a): > Michał Górny wrote: > > The arch/ tree starts with 'generic' subdirectories matching main > > arches -- like arm, mips, x86, sparc, powerpc, s390 (but not amd64). > > I like this idea, but.. > > > > Each of arch trees contains an 'abis' subtree that contains mix-ins > > ..please please call this 'abi' instead. > > > > For example, the expanded inherits for arch/x86/multilib/amd64 would > > go like: > > > > 1. arch/base -- that disables a lot of uncommon stuff, > > 2. arch/x86/base [optionally] -- setting some generic defaults, > > Fine so far. > > > 3. arch/x86/abis/x86 -- setting support for 'x86' ABI, > > 4. arch/x86/abis/x86/lib32 [optionally] -- overriding LIBDIR_x86 for > > compatibility with current SYMLINK_LIB screwup, > > This can't work; abi/x86 can't be both a file and a subdir. > Maybe call them abi/x86 and abi/x86_SYMLINK_LIB_compatibility ? > (Or x86_lib32, although that is a lot less descriptive.) Profiles are directories... -- Best regards, Michał Górny [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 949 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [gentoo-dev] Making a common sub-profile for no-multilib 2014-07-03 12:12 ` Michał Górny @ 2014-07-03 12:42 ` Peter Stuge 0 siblings, 0 replies; 18+ messages in thread From: Peter Stuge @ 2014-07-03 12:42 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 192 bytes --] Michał Górny wrote: > > abi/x86 can't be both a file and a subdir. > > Profiles are directories... Doh, yes of course. :\ abi rather than abis is still important. :) //Peter [-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [gentoo-dev] Making a common sub-profile for no-multilib 2014-07-03 12:07 ` Peter Stuge 2014-07-03 12:12 ` Michał Górny @ 2014-07-03 12:33 ` Rich Freeman 1 sibling, 0 replies; 18+ messages in thread From: Rich Freeman @ 2014-07-03 12:33 UTC (permalink / raw To: gentoo-dev On Thu, Jul 3, 2014 at 8:07 AM, Peter Stuge <peter@stuge.se> wrote: > This can't work; abi/x86 can't be both a file and a subdir. Profiles ARE subdirs. Most of our existing profiles are stacked in this way. This would become less-so if we went with the mix-in approach, but it wouldn't be entirely flat in this proposal. Rich ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2014-07-03 12:42 UTC | newest] Thread overview: 18+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-06-25 17:01 [gentoo-dev] Making a common sub-profile for no-multilib Ian Stakenvicius 2014-06-25 18:44 ` Michał Górny 2014-06-25 19:00 ` Chris Reffett 2014-06-25 19:14 ` Anthony G. Basile 2014-06-25 19:11 ` Rich Freeman 2014-06-25 20:01 ` Andreas K. Huettel 2014-07-02 13:30 ` Rich Freeman 2014-07-02 18:14 ` [gentoo-dev] " Duncan 2014-07-02 23:06 ` Jonathan Callen 2014-07-03 4:59 ` Duncan 2014-07-03 7:05 ` Jonathan Callen 2014-07-03 9:05 ` Duncan 2014-07-03 9:43 ` Michał Górny 2014-07-03 10:58 ` [gentoo-dev] " Michał Górny 2014-07-03 12:07 ` Peter Stuge 2014-07-03 12:12 ` Michał Górny 2014-07-03 12:42 ` Peter Stuge 2014-07-03 12:33 ` Rich Freeman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox