[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