From 812f3a2cbab791853e9d71ab0e8ffe6feae2f9e9 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Sun, 27 Oct 2019 04:39:19 +0100 Subject: A bit of documentation --- README | 28 +++++++++++++++++++++++++--- bootstrap/Dockerfile | 3 +-- builder/files/entrypoint.sh | 1 + 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/README b/README index 3bad064..772b905 100644 --- a/README +++ b/README @@ -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" -- cgit v1.2.3