[debian-edu-commits] debian-edu/ 01/02: Restructure eatmydata optimisation to do the work in a new script edu-eatmydata-install.

Petter Reinholdtsen pere at moszumanska.debian.org
Tue Sep 16 11:56:28 UTC 2014


This is an automated email from the git hooks/post-receive script.

pere pushed a commit to branch master
in repository debian-edu-install.

commit f65ed181b22a0d785fcb6281638551d885b5922d
Author: Petter Reinholdtsen <pere at hungry.com>
Date:   Tue Sep 16 13:46:41 2014 +0200

    Restructure eatmydata optimisation to do the work in a new script edu-eatmydata-install.
---
 debian/rules                |  4 +--
 finish-install              | 19 +------------
 post-base-installer         | 12 ++++++++-
 pre-pkgsel                  | 43 +++++------------------------
 tools/edu-eatmydata-install | 66 +++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 87 insertions(+), 57 deletions(-)

diff --git a/debian/rules b/debian/rules
index 844b0ac..939e492 100755
--- a/debian/rules
+++ b/debian/rules
@@ -64,8 +64,8 @@ install-debian-edu-profile-udeb: install-common
 	touch $(CURDIR)/debian/debian-edu-profile-udeb/etc/uselvm
 	$(INSTALL_DATA) version $(CURDIR)/debian/debian-edu-profile-udeb/usr/lib/debian-edu-install/.
 
-	for p in tools/edu-etcvcs tools/edu-is-testinstall tools/laptop-detect tools/report-if-disk-too-small ; do \
-	    $(INSTALL) $$p $(CURDIR)/debian/debian-edu-profile-udeb/usr/bin/. ; \
+	for p in edu-etcvcs edu-is-testinstall laptop-detect report-if-disk-too-small edu-eatmydata-install ; do \
+	    $(INSTALL) tools/$$p $(CURDIR)/debian/debian-edu-profile-udeb/usr/bin/. ; \
 	done
 
 # Build architecture-independent files here.
diff --git a/finish-install b/finish-install
index c941ef6..ddafb80 100755
--- a/finish-install
+++ b/finish-install
@@ -23,23 +23,6 @@ at_exit() {
 disable_exception() { trap - INT TERM EXIT; }
 trap at_exit INT TERM EXIT
 
-# Revert the divert we did in the pre-pkgsel.d fragment to speed up
-# the installation.
-remove_install_override() {
-    for bin in dpkg apt-get aptitude tasksel ; do
-	file=/usr/bin/$bin
-	if [ -x /target$file.edu ] ; then
-	    rm /target$file
-	    in-target dpkg-divert --package debian-edu-config \
-		--rename --quiet --remove $file
-	    rm /target$file.edu
-	else
-	    error "Missing divert for $file."
-	fi
-    done
-    sync # Flush file buffers before continuing
-}
-
 # Stop automatic lvm resize script set up before base-installer
 # started.
 rm -f /target/debian-edu-extend-file-systems
@@ -54,7 +37,7 @@ else
     error "Unable to find $hook"
 fi
 
-remove_install_override
+edu-eatmydata-install disable
 
 disable_exception
 exit 0
diff --git a/post-base-installer b/post-base-installer
index c4218ca..7b1ad25 100755
--- a/post-base-installer
+++ b/post-base-installer
@@ -4,7 +4,10 @@
 # is installed, and before most packages are installed.  APT is
 # only using packages on the CD/DVD at this point.
 
+. /usr/share/debconf/confmodule
+
 log() { logger -t debian-edu-install/post-base-installer "$@"; }
+info() { log "info: $*"; }
 error() { log "error: $*"; }
 
 at_exit() {
@@ -13,7 +16,14 @@ at_exit() {
 disable_exception() { trap - INT TERM EXIT; }
 trap at_exit INT TERM EXIT
 
-# ...
+# Try here, in case the eatmydata package is available on the ISO or
+# we are installing via PXE.
+db_get debian-edu-install/quick-install
+if [ true = "$RET" ] ; then
+    edu-eatmydata-install enable
+else
+    info "not enabling quick install, preseed debian-edu-install/quick-install=true to change this."
+fi
 
 disable_exception
 exit 0
diff --git a/pre-pkgsel b/pre-pkgsel
index 055a6e2..56b54bc 100755
--- a/pre-pkgsel
+++ b/pre-pkgsel
@@ -38,37 +38,15 @@ install_required_pkg() {
     fi
 }
 
-# Speed up apt/dpkg/tasksel intsallation by disabling all file system
-# flushing.  If something go wrong on first time installation,
-# reinstall.  This divert is undone in finish-install.  See also bug
-# #613428.
-# Install on Dell D505 07:46 - 08:50 64m (tasksel run at uio.no,
-#   installing lxde)
-# Install on Dell D505 11:27 - 12:11 44m (similar, but included
-#   waiting for me to answer two debconf questions)
-override_install() {
-    apt-install eatmydata || true
-    if [ -x /target/usr/bin/eatmydata ] ; then
-	for bin in dpkg apt-get aptitude tasksel ; do
-	    if [ -f /target/usr/bin/$bin ] ; then
-		log "diverting /usr/bin/$bin using eatmydata"
-		printf "#!/bin/sh\neatmydata $bin.distrib \"\$@\"\n" \
-		    > /target/usr/bin/$bin.edu
-		chmod 755 /target/usr/bin/$bin.edu
-		chroot /target dpkg-divert --package debian-edu-config \
-		    --rename --quiet --add /usr/bin/$bin
-		ln -sf ./$bin.edu /target/usr/bin/$bin
-	    else
-		error "unable to divert /usr/bin/$bin, as it is missing."
-	    fi
-	done
-    else
-	error "unable to find /usr/bin/eatmydata after installing the eatmydata pacage"
-    fi
-}
-
 load_proxy_conf
 
+db_get debian-edu-install/quick-install
+if [ true = "$RET" ] ; then
+    edu-eatmydata-install enable
+else
+    log "not enabling quick install, preseed debian-edu-install/quick-install=true to change this."
+fi
+
 # Initialize etckeeper early
 edu-etcvcs init
 
@@ -109,13 +87,6 @@ fi
 
 edu-etcvcs commit
 
-db_get debian-edu-install/quick-install
-if [ true = "$RET" ] ; then
-    override_install
-else
-    log "not enabling quick install, preseed debian-edu-install/quick-install=true to change this."
-fi
-
 log "asking for a few extra packages to be installed"
 
 # our local archive keyring, update apt database after it is installed
diff --git a/tools/edu-eatmydata-install b/tools/edu-eatmydata-install
new file mode 100755
index 0000000..e6d4b29
--- /dev/null
+++ b/tools/edu-eatmydata-install
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Speed up apt/dpkg/tasksel intsallation by disabling all file system
+# flushing.  If something go wrong on first time installation,
+# reinstall.  This divert is done in post-base-installer.d and
+# pre-pkgsel.d and undone in finish-install.  See also bug #613428.
+
+set -e
+
+log() { logger -t edu-eatmydata-install "$@"; }
+info() { log  "info: $@"; }
+error() { log  "error: $@"; }
+
+at_exit() {
+    error "script $0 terminated unexpectedly."
+}
+disable_exception() { trap - INT TERM EXIT; }
+trap at_exit INT TERM EXIT
+
+enable_override() {
+    apt-install eatmydata || true
+    if [ -x /target/usr/bin/eatmydata ] ; then
+        for bin in dpkg apt-get aptitude tasksel ; do
+            file=/usr/bin/$bin
+            # Test that the file exist and have not been diverted already.
+            if [ -f /target/usr/bin/$bin ] ; then
+                info "diverting /usr/bin/$bin using eatmydata"
+                printf "#!/bin/sh\neatmydata $bin.distrib \"\$@\"\n" \
+                    > /target/usr/bin/$bin.edu
+                chmod 755 /target/usr/bin/$bin.edu
+                in-target dpkg-divert --package debian-edu-config \
+                    --rename --quiet --add /usr/bin/$bin
+                ln -sf ./$bin.edu /target/usr/bin/$bin
+            else
+                error "unable to divert /usr/bin/$bin, as it is missing."
+            fi
+        done
+    else
+        error "unable to find /usr/bin/eatmydata after installing the eatmydata pacage"
+    fi
+}
+
+disable_override() {
+    for bin in dpkg apt-get aptitude tasksel ; do
+        file=/usr/bin/$bin
+        if [ -x /target$file.edu ] ; then
+            rm /target$file
+            in-target dpkg-divert --package debian-edu-config \
+                --rename --quiet --remove $file
+            rm /target$file.edu
+        else
+            error "missing divert for $file."
+        fi
+    done
+    sync # Flush file buffers before continuing
+}
+
+case "$1" in
+    enable)
+        enable_override
+        ;;
+    disable)
+        disable_override
+        ;;
+esac
+
+disable_exception

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-edu/debian-edu-install.git



More information about the debian-edu-commits mailing list