summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README28
-rw-r--r--bootstrap/Dockerfile3
-rw-r--r--builder/files/entrypoint.sh1
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"