[arch-dev-public] Punishment needed for not building in a chroot
paul at mattal.com
Sun Dec 6 21:39:56 EST 2009
Allan McRae wrote:
> Paul Mattal wrote:
>> Giovanni Scafora wrote:
>>> 2009/12/6, Allan McRae <allan at archlinux.org>:
>>>> It is as simple as mkarchroot to make the chroot and makechrootpkg
>>>> to build
>>>> the package (providing the path to the chroot as an arguement).
>>>> Making a chroot for the opposite architecture is slightly more
>>>> but I can provide patches if needed.
>>> mkarchroot to make the chroot and makechrootpkg to build is very sample.
>>> I think that patches are not necessary...
>> I agree that it's pretty simple, but not simple enough to have removed
>> the barrier to everyone doing it. So why not make it easier and get
>> rid of more of the mystery?
>> Let's start at the beginning, with the recommended command for
>> creating chroots:
>> sudo mkarchroot -C <pacman.conf> -M <makepkg.conf> <chrootdir>/root
>> base base-devel sudo
>> For starters, I have to trust mkarchroot pretty well not to have any
>> bugs, because I'm sudoing it.
> I'll never understand why people are more scared about their root
> filesystem being damaged when you can easily recover that using pacman.
> All our db-scripts could destroy your /home/<user> data which is much
> more difficult to recover from backups but I bet you never second guess
>> Then I need to find the pacman.conf and makepkg.conf.
> That is optional. But most people want to keep their makepkg.conf for
> the PACKAGER variable and MAKEFLAGS.
>> Then there's the chrootdir/root--- now do I create that first or not?
>> How much of it?
> No idea... my guess is that "mkdir -p" is used, but I have always
> created <chrootdir>/
>> Who's going to own the stuff in there?
> It is a system chroot, so files are owned by whoever owns the
> corresponding files in the packages your are installing.
>> What stuff will it put in there? Where will it keep the differencing
>> data for the unionfs partition (so I can be sure to have enough disk
> Everything is in <chrootdir>. <chrootdir>/rw for the difference data
> and the union is created in <chrootdir>/union
>> Then I should decide-- if I have i686 and x86_64 boxes, is it better
>> to do all my builds on 1 machine, or on separate boxes? Can I build
>> i686 on x86_64? Can I build x86_64 on i686? If I'm going to set all
>> this up, I'm probably going to set it up on several machines-- how can
>> I do that easily?
> Up to you... I build for x86_64 and i686 on my i686 comp (running
> x86_64 kernel). I know many people build for i686 on x86_64. I used to
> have a separate build machine for x86_64. All combinations can work.
>> I'm not saying people can't/won't/shouldn't do this. I'm saying it's
>> not a particularly kept-simple part of a distro that prides itself on
>> keeping things simple. People will do it if they trust it and it's
>> simple and elegant, just like the rest of Arch.
> In all honesty, I rarely ever create a new chroot but that is definitely
> the most difficult part of the lot. You should only need to create a
> chroot once. My workflow goes:
> update chroot:
> sudo mkarchroot -u /home/stable-i686/root/
> build package:
> sudo makechrootpkg -c -r /home/stable-i686/
> Done. Alias them to "mar" and "mcp" and possibly add them to the
> NOPASSWD section of your sudoers file and the process will become even
> For soname bumps it is slightly more complicated.
> build package with library bump and install in rw layer:
> sudo makechrootpkg -c -r /home/stable-i686/ -- -i
> then, build next package against new library from installed package:
> sudo makechrootpkg -r /home/stable-i686/
> The creation of the chroot could be simpler, but I'm not sure we can
> make the building steps much simpler without removing the flexibility of
> the tools.
Hmm. It seems my trouble starts in that I'm using a linode as my x86_64
box, and the linode kernel doesn't have aufs2 in it. I typically use
that for all my x86_64 builds.
I should have another fast x86_64 build box at my disposal soon. My
laptop is still running i686, which I sometimes still need for some
things. Can I switch *just* to the x86_64 kernel but leave the rest
i686? Then I could use it to build both. This somehow seems like a bad
idea, but maybe that's just because I'm too tired at the moment to think
through all the possible bad things that could happen.
More information about the arch-dev-public