diff options
| -rw-r--r-- | README | 28 | ||||
| -rw-r--r-- | bootstrap/Dockerfile | 3 | ||||
| -rw-r--r-- | builder/files/entrypoint.sh | 1 | 
3 files changed, 27 insertions, 5 deletions
@@ -1,6 +1,12 @@  Proof of concept remote builder of clean Gentoo tree to provide on demand binary packages to desktop and  laptop comptuers.  + - The configuration between builder and base system should not diverge even in minor details. Otherwise, + fancy effects may happen, particularly with perl/python/ruby. Virtuals for perl may offer a few versions + of perl package as a variants. When built, a specific version is registered in the binary package. Then, + this becomes hard dependency likely causing slot conflicts - host wants to update to 5.30 (unmasked), but  + some perl virtuals are for 5.28). +    - This will not work with presence of any significant unstable packet.      * For instance, unstable firefox depends on unstable "nss-3.45". After update it is replaced in portage      with "nss-3.46". Either full "nss-3.*" branch should be unmasked (which may bring its own problems or the @@ -13,11 +19,11 @@ Idea:      make bootstrap      make check - - Instantiate 'Builder', i.e. synced configs and portage tree + - Instantiate 'Builder', i.e. synced configs and portage tree (not needed, but kept for comptaibility)      make builder      make bash - - Update builder to integrate latest configuration/portage changes + - Update builder to integrate latest configuration/portage changes (not needed, builder updates itself)      make update      make bash @@ -25,6 +31,11 @@ Idea:      make build      make logs + - On major updates (perl/python/ruby especially), it could make sense to re-create builder from latest + gentoo snapshot and restart (many packages will be re-used, so little performance penalty).  +   * Some binary packages may be built against old versions of library, etc. There is mechanism to trigger rebuilds, +   but it would not work in this case? +   It will build packages and put it on the attached volume. The script is designed to run forever.     * If crashed it will start idle sleep until the connected user solves the problem and kills the  @@ -39,7 +50,8 @@ Idea:  Problems: -  - This requires large and fast storage. I guess overlayfs2 based stuff is helpful. +  - This requires large and fast storage. I guess overlayfs2 based stuff is helpful (as of Oct 2019, +  overlayfs2 causes performance problems for eix-sync and should not be used) .    - It also requires a novel kernel on the docker machine. For instance, QT would not    compile on the old kernel. The library now may incorporate information about the minimum @@ -49,3 +61,13 @@ Problems:    However, such elf-header is (at the moment) also preventing it from linking. So, you not    only unable to run a novel QT with old kenrel, but also compile it. + +Status: +  - Builder is able to fully built my configuration. I can't use it due to divergence in perl versions (perl-5.30 unmasked) +  Technically, it should work once perl-5.30 get stable. + +  - How system survives update of major subsystem (perl, python)? While it update automatically or shall we re-create builder? +  In the later case, will it handle required re-builds automatically? Or do we need also to delete some binaries (at least  +  paritally). +  +  
\ No newline at end of file diff --git a/bootstrap/Dockerfile b/bootstrap/Dockerfile index afc13d1..d0cfc7e 100644 --- a/bootstrap/Dockerfile +++ b/bootstrap/Dockerfile @@ -44,7 +44,6 @@ RUN \      rm -f /etc/portage/package.keywords/skip.keywords && \      rm -f /etc/portage/package.keywords/xdeps-perl* && \      rm -f /etc/portage/package.keywords/xdeps-firefox* && \ -    bash /etc/portage/scripts/gen-world-sets && \ -    bash /etc/portage/scripts/bootstrap/fix_deps.sh +    bash /etc/portage/scripts/gen-world-sets  CMD ["bash"] diff --git a/builder/files/entrypoint.sh b/builder/files/entrypoint.sh index 6685207..c6d32a3 100644 --- a/builder/files/entrypoint.sh +++ b/builder/files/entrypoint.sh @@ -8,4 +8,5 @@ if [ ! -d "/darklin/darklin4" ]; then      cd "/darklin" && git clone http://darksoft.org/git/csa/devops/darkconf/darklin4.git || exit 1  fi +/bin/bash "/etc/portage/scripts/bootstrap/fix_deps.sh"  /bin/bash "/etc/portage/scripts/bootstrap/builder.sh"  | 
