diff options
| author | Jonathan Bauer | 2013-08-06 15:37:16 +0200 |
|---|---|---|
| committer | Jonathan Bauer | 2013-08-06 15:37:16 +0200 |
| commit | 10f36c2caada79078924a28956043a926d009c82 (patch) | |
| tree | 01b7a700fc1b8acd62338363b2a6e5488b390098 | |
| parent | [clone_stage4] fix path to logging.inc (diff) | |
| parent | [systemd] .build: Experimental: Special cases for Scientific Linux: (diff) | |
| download | tm-scripts-10f36c2caada79078924a28956043a926d009c82.tar.gz tm-scripts-10f36c2caada79078924a28956043a926d009c82.tar.xz tm-scripts-10f36c2caada79078924a28956043a926d009c82.zip | |
Merge branch 'master' of git.openslx.org:openslx-ng/tm-scripts
| -rwxr-xr-x | data/openslx-update | 55 | ||||
| -rw-r--r-- | remote/modules/german/german.build | 1 | ||||
| -rw-r--r-- | remote/modules/german/german.conf.scientific | 8 | ||||
| -rw-r--r-- | remote/modules/kdm/kdm.conf.scientific | 20 | ||||
| -rw-r--r-- | remote/modules/systemd/systemd.build | 66 | ||||
| -rw-r--r-- | remote/modules/systemd/systemd.conf.scientific | 16 | ||||
| -rwxr-xr-x | remote/setup_target | 5 |
7 files changed, 153 insertions, 18 deletions
diff --git a/data/openslx-update b/data/openslx-update index c7e24d30..cb46b258 100755 --- a/data/openslx-update +++ b/data/openslx-update @@ -17,7 +17,7 @@ function warning () { echo -e "\033[01;33m$@\033[00m" } - + ### Variablen ################################### # Web MIRROR="http://mltk.boot.openslx.org" @@ -28,12 +28,16 @@ PXECONFIG="$PXEDIR/default" PXETEMPLATE="/opt/openslx/templates/pxemenu-header" FILEPRAEFIX="openslx-" WWWDIR="/srv/openslx/www" +SLXSCRIPTS="openslx-install openslx-update" +SCRIPTPATH=$(dirname "$0") +SCRIPTBACKUPDIR=/root/backup # Konfigurationsdateien SERVERDEFAULTS="/opt/openslx/server-defaults" # Temporäres -REMOTEINDEX="/tmp/mlversion" +REMOTEINDEX=$(mktemp /tmp/mlversionXXX) LOCALINDEX="/opt/openslx/local_version" WWWTEMP="/srv/openslx/www-temp" +DLFLAG=0 # if something was downloaded # Vars zum Überladen LOCAL_STABLE=0 LOCAL_TESTING=0 @@ -42,6 +46,8 @@ CRCCOMMAND=md5sum CRCEXTENSION=md5 # Mindestens freier Plattenplatz in Kilobytes MINSPACE=409600 # 400MB +# Allgemein +DATUM=$(date +%Y%m%d) trap "{ rm -f $REMOTEINDEX $WWWTEMP/* $WWWDIR/*.$CRCEXTENSION; }" SIGINT SIGTERM EXIT @@ -67,6 +73,7 @@ cp "$PXETEMPLATE" "$PXECONFIG" ERR=$?; [ $ERR -ne 0 ] && error "Kann PXE-Vorlage nicht umkopieren!" mkdir -p "$WWWTEMP" +print "Kopiere bestehende Dateien sicherheitshalber um..." cp -p "$WWWDIR/$FILEPRAEFIX"* "$WWWTEMP/" ERR=$?; [ $ERR -ne 0 ] && error "Kann bestehende Dateien nicht nach $WWWTEMP kopieren!" @@ -92,7 +99,7 @@ for REL in ${!AVAILABLE_*}; do continue fi # Download - wget -O "$WWWTEMP/$FILEPRAEFIX$FILE" "$MIRROR/$MIRRORDIR/$FILE" || { warning "Could not download $FILE"; continue; } + wget -O "$WWWTEMP/$FILEPRAEFIX$FILE" "$MIRROR/$MIRRORDIR/$FILE" && DLFLAG=1 || { warning "Could not download $FILE"; continue; } # Download md5 value wget -O "$WWWTEMP/$FILEPRAEFIX$FILE.$CRCEXTENSION" "$MIRROR/$MIRRORDIR/$FILE.$CRCEXTENSION" \ || { warning "Could not download $FILE.$CRCEXTENSION!"; continue; } @@ -133,10 +140,40 @@ done # If we are here, then we can assume everything went either right, or at least no fatal error happened. # So, we will move the stuff in $WWWTEMP to $WWWDIR. -print "Alles scheint ok - Bewege neue Abbilder zum Webserver." -mv "$WWWTEMP/"* "$WWWDIR/" -print "Done." -# print "Old files left over:" -# ls -alh "$WWWTEMP" +if [ "$DLFLAG" -ne 0 ]; then + print "Alles scheint ok - Bewege neue Abbilder zum Webserver." + mv "$WWWTEMP/"* "$WWWDIR/" + print "Neue Abbilder bewegt." +else + print "Keine Abbilder heruntergeladen - leere temporäres Verzeichnis $WWWTEMP." + rm -f "$WWWTEMP/"* +fi -exit 0 +# Update Scripts openslx-install and openslx-update, if possible. +if [ ! -d "$SCRIPTBACKUPDIR" ]; then + print "Erzeuge Sicherungsverzeichnis für Skripte $SCRIPTBACKUPDIR" + mkdir -p "$SCRIPTBACKUPDIR" || error "Kann Sicherungsverzeichnis für Skripte nicht erstellen!" +fi + +for FILE in $SLXSCRIPTS; do + wget -O "$WWWTEMP/$FILE.$CRCEXTENSION" "$MIRROR/$MIRRORDIR/$FILE.$CRCEXTENSION" + CRCVALNEW=$(cat "$WWWTEMP/$FILE.$CRCEXTENSION"|cut -f 1 -d " ") + CRCVALOLD=$($CRCCOMMAND "$SCRIPTPATH/$FILE"|cut -f 1 -d " ") + if [ "$CRCVALNEW" == "$CRCVALOLD" ]; then + print "$SCRIPTPATH/$FILE - kein Update notwendig." + continue + else + wget -O "$WWWTEMP/$FILE" "$MIRROR/$MIRRORDIR/$FILE" + if [ $($CRCCOMMAND "$WWWTEMP/$FILE"|cut -f 1 -d " ") != "$CRCVALNEW" ]; then + warning "$SCRIPTPATH/$FILE konnte nicht upgedatet werden ($CRCEXTENSION-Fehler)!" + continue + else + print "$SCRIPTPATH/$FILE wird upgedatet - $CRCEXTENSION ok." + print "Alte Version $SCRIPTPATH/$FILE gesichert nach: $SCRIPTBACKUPDIR/$FILE.$DATUM." + mv "$SCRIPTPATH/$FILE" "$SCRIPTBACKUPDIR/$FILE.$DATUM" + chmod u+x "$WWWTEMP/$FILE" # sonst wg. wget keine exec-bit + mv "$WWWTEMP/$FILE" "$SCRIPTPATH" + fi + fi +done +exit 0 diff --git a/remote/modules/german/german.build b/remote/modules/german/german.build index f7f19a84..6327815f 100644 --- a/remote/modules/german/german.build +++ b/remote/modules/german/german.build @@ -4,6 +4,7 @@ fetch_source() { build() { # Make sure uncompressed locales are present, so we can fetch german utf8 + # Cave: locale-gen is debian/ubunto-specific, so other distris _must_ have /usr/lib/locale/de_DE.utf8! if [ ! -d "/usr/lib/locale/de_DE.utf8" ]; then pinfo "Generating locales..." locale-gen --purge --no-archive || perror "Could not run locale-gen" diff --git a/remote/modules/german/german.conf.scientific b/remote/modules/german/german.conf.scientific new file mode 100644 index 00000000..88ac0d27 --- /dev/null +++ b/remote/modules/german/german.conf.scientific @@ -0,0 +1,8 @@ +REQUIRED_INSTALLED_PACKAGES=" + libX11-data + glibc-common +" +REQUIRED_CONTENT_PACKAGES=" + libX11-data" +REQUIRED_BINARIES="" +REQUIRED_FILES="" diff --git a/remote/modules/kdm/kdm.conf.scientific b/remote/modules/kdm/kdm.conf.scientific new file mode 100644 index 00000000..d61cc8d6 --- /dev/null +++ b/remote/modules/kdm/kdm.conf.scientific @@ -0,0 +1,20 @@ +REQUIRED_INSTALLED_PACKAGES=" + kdm +" +REQUIRED_CONTENT_PACKAGES=" + kdm +" +REQUIRED_BINARIES="" +REQUIRED_DIRECTORIES+=" + /usr/$LIB64/kde4 +" +REQUIRED_FILES="" +REQUIRED_LIBRARIES="" +#non-standard vars +REQUIRED_SYSTEM_FILES=" + /usr/share/icons/oxygen/16x16/actions/system-reboot.png + /usr/share/icons/oxygen/16x16/actions/system-shutdown.png + /usr/share/icons/oxygen/16x16/actions/dialog-cancel.png + /usr/share/icons/oxygen/index.theme + /usr/share/icons/default.kde4/index.theme +" diff --git a/remote/modules/systemd/systemd.build b/remote/modules/systemd/systemd.build index 8052ca4e..a5f9ef3b 100644 --- a/remote/modules/systemd/systemd.build +++ b/remote/modules/systemd/systemd.build @@ -3,6 +3,10 @@ fetch_source () { download_untar "$REQUIRED_URL" "src/" download_untar "$REQUIRED_LIBKMOD_URL" "src/" + + # Another nice hack for Scientific Linux - experimental. + [ "$SYS_DISTRIBUTION" == "scientific" ] && download_untar "$REQUIRED_UTILLINUX_URL" "src/" + # Patch PATH environment sed -s -i -r 's#"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin(:/sbin:/bin)?"#& ":/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin"#g' src/systemd-*/src/core/main.c sed -s -i -r 's#"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"#& ":/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin"#g' src/systemd-*/src/nspawn/nspawn.c @@ -17,15 +21,59 @@ build () { make install || perror "kmod make install failed." cd - &> /dev/null - #build systemd - pinfo "Building systemd" - cd "${MODULE_DIR}/src/$REQUIRED_VERSION" - pinfo "calling configure" - ./configure --disable-manpages --enable-split-usr --sysconfdir="/etc" --enable-gtk-doc-html=no --disable-nls --disable-microhttpd --disable-bootchart --disable-quotacheck --disable-hostnamed --disable-timedated --disable-localed --disable-coredump --disable-keymap --without-python --enable-blkid --enable-acl --enable-pam|| perror "configure failed." - pinfo "calling make" - make || perror "make failed." - pinfo "calling make install" - DESTDIR="${MODULE_BUILD_DIR}" make install || perror "make install failed." + # Scientific Linux specials + if [ "$SYS_DISTRIBUTION" == "scientific" ]; then + # Utillinux stuff + penfo "Building util-linux" + cd "${MODULE_DIR}/src/util-linux-$REQUIRED_UTILLINUX_VERSION" + ./configure --prefix=${MODULE_DIR}/build --exec-prefix=${MODULE_DIR}/build --disable-libuuid --disable-libmount \ + --disable-mount --disable-losetup --disable-cytune --disable-fsck --disable-partx --disable-uuidd \ + --disable-mountpoint --disable-fallocate --disable-unshare --disable-nsenter --disable-setpriv \ + --disable-eject --disable-agetty --disable-cramfs --disable-bfs --disable-fdformat --disable-hwclock \ + --disable-wdctl --disable-switch_root --disable-pivot_root --disable-kill --disable-utmpdump --disable-raw \ + --disable-rename --disable-login --disable-sulogin --disable-su --disable-runuser --disable-ul --disable-more \ + --disable-pg --disable-schedutils --disable-wall --disable-bash-completion \ + || perror "./configure util-linux failed." + make || perror "util-linux make failed." + make install || perror "util-linux make install failed." + cd - &> /dev/null + + # patching configure for Scientific Linux - cave - ugly hack! + pinfo "Scientific Linux detected; patching systemd/configure..." + cd "${MODULE_DIR}/src/$REQUIRED_VERSION" + sed 's/dbus-1 >= 1.3.2/dbus-1 >= 1.2.24/g' configure > configure.patched + mv configure configure.orig + mv configure.patched configure + chmod +x configure + cd - &> /dev/null + + #build systemd for Scientific Linux + pinfo "Building systemd" + cd "${MODULE_DIR}/src/$REQUIRED_VERSION" + pinfo "calling configure" + ./configure --prefix=${MODULE_DIR}/build --exec-prefix=${MODULE_DIR}/build --datadir=${MODULE_DIR}/build \ + --disable-manpages --enable-split-usr --sysconfdir="/etc" --enable-gtk-doc-html=no --disable-nls \ + --disable-microhttpd --disable-bootchart --disable-quotacheck --disable-hostnamed --disable-timedated \ + --disable-localed --disable-coredump --disable-keymap --without-python --enable-blkid --enable-acl --enable-pam \ + || perror "configure failed." + pinfo "calling make" + make || perror "make failed." + pinfo "calling make install" + DESTDIR="${MODULE_BUILD_DIR}" make install || perror "make install failed." + else + #build systemd + pinfo "Building systemd" + cd "${MODULE_DIR}/src/$REQUIRED_VERSION" + pinfo "calling configure" + ./configure --disable-manpages --enable-split-usr --sysconfdir="/etc" --enable-gtk-doc-html=no --disable-nls \ + --disable-microhttpd --disable-bootchart --disable-quotacheck --disable-hostnamed --disable-timedated \ + --disable-localed --disable-coredump --disable-keymap --without-python --enable-blkid --enable-acl --enable-pam \ + || perror "configure failed." + pinfo "calling make" + make || perror "make failed." + pinfo "calling make install" + DESTDIR="${MODULE_BUILD_DIR}" make install || perror "make install failed." + fi cd - &> /dev/null # Delete unneeded services pinfo "Deleting unneeded services" diff --git a/remote/modules/systemd/systemd.conf.scientific b/remote/modules/systemd/systemd.conf.scientific new file mode 100644 index 00000000..cbda26fc --- /dev/null +++ b/remote/modules/systemd/systemd.conf.scientific @@ -0,0 +1,16 @@ +REQUIRED_VERSION="systemd-206" +REQUIRED_URL="http://www.freedesktop.org/software/systemd/${REQUIRED_VERSION}.tar.xz" +# REQUIRED_URL="http://www.freedesktop.org/software/systemd/${REQUIRED_VERSION}.tar.bz2" +REQUIRED_INSTALLED_PACKAGES=" + intltool + gperf + pkgconfig + libcap-devel + libudev-devel + dbus-devel + libxslt + libblkid-devel + libacl-devel +" +REQUIRED_UTILLINUX_VERSION="2.23" +REQUIRED_UTILLINUX_URL="ftp://ftp.kernel.org/pub/linux/utils/util-linux/v${REQUIRED_UTILLINUX_VERSION}/util-linux-${REQUIRED_UTILLINUX_VERSION}.tar.xz" diff --git a/remote/setup_target b/remote/setup_target index 2115d18e..f0722055 100755 --- a/remote/setup_target +++ b/remote/setup_target @@ -375,6 +375,11 @@ post_process_target() { fi # replace ck connector with fake one + # CAVE: On Scientific Lunux (6.4) and perhaps others: + # If include dbus/dbus-arch-deps.h is missing (file not found) either set a symb. link: + # /usr/include/dbus-1.0/dbus/dbus-arch-deps.h -> /usr/lib(64)/dbus-1.0/include/dbus/dbus-arch-deps.h + # or execute "pkg-config dbus-1 --cflags". + local CK_LIBS=$(find "$TARGET_BUILD_DIR" -name "libck-connector.so*") if [ -n "$CK_LIBS" ]; then pinfo "Replacing libck-connector with dummy" |
