Gentoo Archives: gentoo-alt

From: Sam Pfeiffer <sammypfeiffer@×××××.com>
To: Michael Haubenwallner <haubi@g.o>
Cc: gentoo-alt@l.g.o
Subject: [gentoo-alt] Re: 'Continuous Integration' for Gentoo Prefix?
Date: Mon, 01 Apr 2019 00:25:28
Message-Id: CABVqfw_+gKuK9VKTiMPcT2GH8rC1wkBPOThZGn3K5Wm9DbMR_A@mail.gmail.com
In Reply to: [gentoo-alt] Re: 'Continuous Integration' for Gentoo Prefix? by Michael Haubenwallner
1 Hello,
2
3 I just wanted to say I'm very happy to see this project advancing and that
4 you found my work useful :) I've been offline for quite a while and it has
5 been great to find all this activity!
6
7 On Mon, Mar 18, 2019 at 11:53 PM Michael Haubenwallner <haubi@g.o>
8 wrote:
9
10 > Hi,
11 >
12 > based on Sammy's work I've set up another Azure build matrix behind a nice
13 > url:
14 > https://dev.azure.com/gentoo-prefix/ci-builds/_build
15 >
16 > This does bootstrap Gentoo Prefix (using self hosted Windows Server
17 > build agents for the long running Cygwin builds) in all these setups:
18 >
19 > ---------------------+---------------+---------------+
20 > | Prefix | RAP |
21 > 64bit OS | 64bit | 32bit | 64bit | 32bit |
22 > ---------------------+-------+-------+-------+-------+
23 > Fedora current | yes | yes | yes | yes |
24 > Fedora 28 | yes | yes | yes | yes |
25 > OpenSUSE current | yes | yes | yes | yes |
26 > Ubuntu current | - | - | yes | yes |
27 > Ubuntu 16.04 | - | - | yes | yes |
28 > MacOS current | yes | - | - | - |
29 > Cygwin Server 2012R2 | yes | - | - | - |
30 > Cygwin Server 2016 | yes | - | - | - |
31 > Cygwin Server 2019 | yes | - | - | - |
32 > ---------------------+-------+-------+-------+-------+
33 >
34 > One Cygwin agent on Windows Server 2019 also does submit results to
35 > http://bootstrap.prefix.bitzolder.nl/results/
36 >
37 > Uploading docker images with bootstrapped /tmp/gentoo Prefix I'm happy
38 > to leave up to Sammy's jobs still.
39 >
40 > Thanks!
41 > /haubi/
42 >
43 > On 11/26/18 5:02 AM, Sam Pfeiffer wrote:
44 > > Hello,
45 > >
46 > > First, let me apologise if I have any wrong preexisting ideas/guesses
47 > about Gentoo Prefix and how it is developed. Secondly, sorry if this email
48 > is a bit too long.
49 > >
50 > > I'll present myself, explain my use-case and my troubles and tricks, and
51 > then ask for feedback.
52 > >
53 > > Hello, I'm Sammy Pfeiffer. I am a PhD student at University of
54 > Technology Sydney. I'm a (software) robotics engineer pursuing my PhD in a
55 > lab with a bunch of different robots and machine learning setups. I'm using
56 > Gentoo Prefix for deploying a big bunch of software into robots where the
57 > OS is old and frozen (and also to deploy in computation farms
58 > experiments... once again with no option to touch the OS). (The bunch of
59 > software is ROS, the 'Robotics Operating System' which has a ton of
60 > dependencies, and there is an existing overlay which I'm helping on
61 > maintaining and improving (https://github.com/ros/ros-overlay)).
62 > >
63 > > I'd like to share the trick I found to overcome a few annoying bits of
64 > my platforms:
65 > > * I have no root access in the machines I need to deploy.
66 > > * The machines don't have Docker installed (too old kernel anyways).
67 > > * I have 32 bit and 64 bit machines (the OS running in them is).
68 > > * I have a different username (and home folder) on each machine.
69 > > * Each machine has a different disk(s)/partition(s) structure (main
70 > issue here is that I may need to use a different disk to store my data,
71 > cause of size constrains).
72 > >
73 > > The trick to be able to use Gentoo Prefix with all these constraints
74 > bootstrapping it only once is to set the EPREFIX to /tmp/gentoo.
75 > > Then you can deploy the full bootstrapped system in any folder/disk and
76 > just do a softlink to /tmp/gentoo. This works nicely (I was scared of the
77 > softlink breaking stuff somewhere, but it was alright).
78 > > The other trick is to bootstrap a 32bit Gentoo Prefix, which can be run
79 > in any 32b or 64b box (it's not ideal but simplifies my deployment
80 > currently).
81 > >
82 > > Also, having all these machines use the same Gentoo Prefix in the same
83 > place, with the same 32bit compilation, I can setup a binary package
84 > server, which all the deployments can point to and just get all the
85 > packages skipping the long compilation times (specially in very old and low
86 > powered machines).
87 > >
88 > > The final trick I'm experimenting with is to use a set of Docker images
89 > (and soon in a continuous integration environment) to bootstrap all the
90 > system. With that I can save snapshot of successfully built systems &
91 > packages to serve as an easy deployment (and easy installation of extra
92 > packages thru the binary package server).
93 > >
94 > > Given my particular annoyance of the 32bit system (and noting that my
95 > hosts are 64bits, as is the standard nowadays) I found that I can use
96 > either:
97 > > * https://github.com/docker-32bit/ubuntu a 32bit Ubuntu Docker image
98 > > * https://github.com/gentoo/gentoo-docker-images stage3-x86 32bit
99 > Gentoo Docker image
100 > >
101 > > And then execute the build step of Docker with:
102 > >
103 > > setarch i686 docker build -t my_bootstrapping_gentoo_prefix_32b_image .
104 > >
105 > > Which will trick any program trying to do uname -m to assume 32bit
106 > machine. (Previously I used the variable CHOST=i686-pc-linux-gnu for
107 > bootstrapping, but I found some problems, which didn't appear with this
108 > method).
109 > >
110 > > Once I have all this setup working nicely, I'd like to trigger rebuilds
111 > every X time, and on changes on main players (or all dependencies actually)
112 > of my setup, like the bootstrapping of Gentoo Prefix (Ideally, on every
113 > change of a part of the system just trigger a rebuild from that point on,
114 > Docker layers make this possible).
115 > >
116 > > With Azure announcing unlimited minutes on CI/CD for open source
117 > projects:
118 > >
119 > https://azure.microsoft.com/en-us/blog/announcing-azure-pipelines-with-unlimited-ci-cd-minutes-for-open-source/
120 > >
121 > > Even bootstrapping Gentoo prefix, with pieces of software like gcc
122 > taking very long to compile, is possible.
123 > >
124 > > The point is: I have been trying to build Gentoo Prefix during the last
125 > days after a few months of break since the last time I touched the system.
126 > And it's failing. I haven't managed yet to bootstrap it completely. I feel
127 > there is no CI/CD setup to catch these issues and be able to offer a
128 > working version of Gentoo Prefix at any time.
129 > >
130 > > I was going to build it for myself (cause I need it), but instead, I'd
131 > like to offer my help to build it for the community. At least offer as an
132 > option ready-to-use /tmp/gentoo EPREFIX'ed built Gentoo Prefix from a
133 > Docker image, just copy the full folder structure, do the softlink, and you
134 > are ready to play with Gentoo. If you mess up anything, just re-deploy.
135 > >
136 > > To do this I'd need a bit of help as I'm quite new to Gentoo and I tend
137 > to get blocked on little issues that take a while to google or debug
138 > (specially with the long compilation times of the bootstrap and some big
139 > packages).
140 > >
141 > > I've posted a short issue in the Docker repo of Gentoo images about this
142 > (https://github.com/gentoo/gentoo-docker-images/issues/62) but I think
143 > the maintainers probably don't usually work with Gentoo Prefix.
144 > >
145 > > Thank you very much for your time, and for your open source efforts.
146 > >
147 > > --
148 > > *
149 > > *
150 > > *Sammy Pfeiffer*
151 > > PhD Candidate at The Magic Lab within UTS.
152 >
153 >
154
155 --
156
157 *Sammy Pfeiffer*
158 PhD Candidate at The Magic Lab within UTS.

Replies