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. |