diff options
author | Felix Endres | 2006-11-27 19:51:00 +0100 |
---|---|---|
committer | Felix Endres | 2006-11-27 19:51:00 +0100 |
commit | 382b10aa3e159cac026dd635976da9ac8b24b493 (patch) | |
tree | feed165541ed713fffeae110600fed260ad2c9cf | |
parent | Changes for the case that /bin/sh is not a link to bash (diff) | |
download | core-382b10aa3e159cac026dd635976da9ac8b24b493.tar.gz core-382b10aa3e159cac026dd635976da9ac8b24b493.tar.xz core-382b10aa3e159cac026dd635976da9ac8b24b493.zip |
New Debian Packaging Script based on the install target of Makefile
Minor corrections to the package content
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@525 95ad53e4-c205-0410-b2fa-d234c58c8868
-rwxr-xr-x | builddebianpackage | 112 | ||||
-rw-r--r-- | packaging/default_files/control | 6 | ||||
-rw-r--r-- | packaging/default_files/mkdxsinitrd.1 | 20 |
3 files changed, 125 insertions, 13 deletions
diff --git a/builddebianpackage b/builddebianpackage new file mode 100755 index 00000000..c3b71a2a --- /dev/null +++ b/builddebianpackage @@ -0,0 +1,112 @@ +#!/bin/sh +# +# This script transforms the openslx project files to debians +# binary package format .deb + +DEBUG=0 +# This function makes the directory of this script to the present working directory +# It is called within precheck() +# Does also work when called by symbolic links (even for nested links). +goto_script_dir() +{ + [ $DEBUG -ge 2 ] && echo "Aufgerufen wurde $0, checking if it is a link" + calleddetails=`ls -l $0` # get the file flags (e.g. lrwxrwxrwx) + [ $DEBUG -ge 2 ] && echo $calleddetails + + calleddir=${0%/*} # Strip the filename from path + [ $DEBUG -ge 2 ] && echo "Wechsele ins Verzeichnis des aufgerufenen scripts/links ($calleddir)" + cd $calleddir + + while index=`expr index "$calleddetails" "l"`; + [ $index -eq 1 ]; do + + [ $DEBUG -ge 2 ] && echo "It is a link" + target=`echo $calleddetails | awk '{print $NF}'` + [ $DEBUG -ge 2 ] && echo "The target of the link is: $target" + hasslash=`expr index "$target" "/"` + if [ $hasslash -ne 0 ]; then + targetpath=${target%/*} # extract the pathname + [ $DEBUG -ge 2 ] && echo "Following link to $targetpath" + cd $targetpath + else + [ $DEBUG -ge 2 ] && echo "It is in the same directory as the link" + fi + targetfile=`basename $target` + [ $DEBUG -ge 2 ] && echo "The target file of the link is: $targetfile" + calleddetails=`ls -l $targetfile` # get the file flags (e.g. lrwxrwxrwx) + [ $DEBUG -ge 2 ] && echo $calleddetails + done + [ $DEBUG -ge 2 ] && pwd + +} +dpkg_deb=`which dpkg-deb` +if [ -z "$dpkg_deb" ];then + echo "You need the program dpkg-deb (contained in package dpkg) to build a debian package" + exit +fi + +goto_script_dir +if [ ! -e ./Makefile ]; then + echo "There is no makefile in this programs directory (`pwd`)." + echo "Please run this script only embedded in the context of an openslx installation" + exit +fi +# Manipulate the Path, make installs to, by placing it into a temporary directory +mkdir -p /tmp/ld$$ +export USR_BIN_PATH="/tmp/ld$$/usr/bin" +export SLX_CONFIG_PATH="/tmp/ld$$/etc/opt/openslx" +export SLX_BASE_PATH="/tmp/ld$$/opt/openslx" +export SLX_BIN_PATH="${SLX_BASE_PATH}/bin" +export SLX_SHARE_PATH="${SLX_BASE_PATH}/share" +export SLX_VMWARE_PATH="${SLX_BASE_PATH}/vmware" +export SLX_PRIVATE_PATH="/tmp/ld$$/var/opt/openslx" +export SLX_PUBLIC_PATH="/tmp/ld$$/srv/openslx" +export SLX_EXPORT_PATH="${SLX_PUBLIC_PATH}/export" +export SLX_TFTPBOOT_PATH="${SLX_PUBLIC_PATH}/tftpboot" +export SLX_TEMP_PATH="/tmp/ld$$/tmp" +export SLX_INSTALL_LOG="packaging.log" +mkdir -p $USR_BIN_PATH +mkdir -p $SLX_CONFIG_PATH +mkdir -p $SLX_BASE_PATH +mkdir -p $SLX_BIN_PATH +mkdir -p $SLX_SHARE_PATH +mkdir -p $SLX_VMWARE_PATH +mkdir -p $SLX_PRIVATE_PATH +mkdir -p $SLX_PUBLIC_PATH +mkdir -p $SLX_EXPORT_PATH +mkdir -p $SLX_TFTPBOOT_PATH +mkdir -p $SLX_TEMP_PATH + +#Now "make install" installs the slx software to /tmp/ld$$ +if make install; then + #Create Temporary working directory + mkdir -p /tmp/ld$$/DEBIAN + mkdir -p /tmp/ld$$/usr/share/man/man1 + cp packaging/default_files/control /tmp/ld$$/DEBIAN/ + cp packaging/default_files/prerm /tmp/ld$$/DEBIAN/ + cp packaging/default_files/postinst /tmp/ld$$/DEBIAN/ + cp packaging/default_files/*.1 /tmp/ld$$/usr/share/man/man1/ + gzip -9 /tmp/ld$$/usr/share/man/man1/* + + #Set permissions + find /tmp/ld$$ -type d|xargs chmod 755 + #Correct symbolic links + #1. find: print all symbolic links in our installation + #2. ls: print the long listing format for the links + #3. awk: extract the link position and link target and print them concatenated with a separator in between + #4. sed: remove the path prefix of our temporary installation for the link target (but not for the link position) + for link in `find /tmp/ld$$ -type l |xargs ls -l| awk '{print $8"_SEPARATOR_"$10}'|sed "s#_SEPARATOR_/tmp/ld$$#_SEPARATOR_#"`; do + # For every link set the corresponding target with stripped prefix + ln -sf ${link#*_SEPARATOR_} ${link%_SEPARATOR_*} + done; + + #Create the package + dpkg-deb --build /tmp/ld$$ > /dev/null + . ./VERSIONS + mv /tmp/ld$$.deb ./openslx_$OPENSLX_VERSION_STRING.deb + echo "Written './openslx_$OPENSLX_VERSION_STRING.deb':" + ls -lh ./openslx_$OPENSLX_VERSION_STRING.deb +fi +#Clean up +rm -rf /tmp/ld$$ + diff --git a/packaging/default_files/control b/packaging/default_files/control index 05b3082d..92c91a1d 100644 --- a/packaging/default_files/control +++ b/packaging/default_files/control @@ -1,4 +1,4 @@ -Package: dxs +Package: openslx Version: 4-1 Section: base Priority: optional @@ -6,5 +6,5 @@ Architecture: all Depends: bash (>= 3.0), coreutils (>= 5.2.1), sed (>= 4.1.4), mawk (>= 1.3.3), findutils (>= 4.2.22) Maintainer: Felix Endres <felix-ld4@256bit.org> Description: Diskless Linux Server Setup - This project provides a convenient way to setup a server for diskless - clients. + This project provides a convenient way to setup a server for stateless +(possibly diskless) fat clients. diff --git a/packaging/default_files/mkdxsinitrd.1 b/packaging/default_files/mkdxsinitrd.1 index b62f46c9..4820aef7 100644 --- a/packaging/default_files/mkdxsinitrd.1 +++ b/packaging/default_files/mkdxsinitrd.1 @@ -10,7 +10,7 @@ .TH mkdxsinitrd 1 "2006-05-05" "4.0.1" "" .LO 1 .SH NAME -mkdxsinitrd \- erstellt eine initial ramdisk für diskless clients +mkdxsinitrd \- erstellt eine initial ramdisk fuer diskless clients .SH SYNTAX .B mkdxsinitrd .RB [\| \-gh \|] @@ -25,16 +25,16 @@ mkdxsinitrd \- erstellt eine initial ramdisk für diskless clients .RB [\| \-r .IR Pfad \|] .RB [\| \-s -.IR Bildgröße \|] +.IR Bildgroesse \|] .SH BESCHREIBUNG -Damit Clients ein Betriebssystem nutzen können dass über ein +Damit Clients ein Betriebssystem nutzen koennen dass ueber ein Netzwerk bereitgestellt wird, brauchen diese eine initial ramdisk, -in der Vorkonfigurationsschritte stattfinden. Diese sind nötig, +in der Vorkonfigurationsschritte stattfinden. Diese sind noetig, damit das Betriebssystem eine Umgebung vorfindet in der es seine gewohnte Initialisierung betreiben kann. .B mkdxsinitrd -erstellt eine solche ramdisk, die von PXE-fähigen zum Booten benutzt +erstellt eine solche ramdisk, die von PXE-faehigen zum Booten benutzt werden kann. @@ -49,14 +49,14 @@ Zeige Informationen zur Benutzung. .BI \-k\ Kernelversion .B mkdxsinitrd versucht die aktuellste Kernelversion zu finden. Falls dies nicht klappt, -oder eine andere Kernelversion gewünscht ist kann diese hier angegeben werden -(funktioniert natürlich nur für auf dem Hostsystem vorhandene Kernelversionen). +oder eine andere Kernelversion gewuenscht ist kann diese hier angegeben werden +(funktioniert natuerlich nur fuer auf dem Hostsystem vorhandene Kernelversionen). .TP .BI \-i\ Pfad Optionale Angabe wo die erstellte ramdisk hingeschrieben werden soll. .TP .BI \-f\ Modulliste -Kernelmodule die benutzt werden sollen um das Rootfilesystem über das dem Netzwerk zu mounten (z.B. nfs, nbd dnbd). +Kernelmodule die benutzt werden sollen um das Rootfilesystem ueber das dem Netzwerk zu mounten (z.B. nfs, nbd dnbd). .TP .BI \-n\ Modulliste Kernelmodule zum Betrieb der Clientnetzwerkkarten (z.B. e100 tg3 via-rhine). @@ -64,8 +64,8 @@ Kernelmodule zum Betrieb der Clientnetzwerkkarten (z.B. e100 tg3 via-rhine). .BI \-r\ Pfad Pfad zum Wurzelverzeichnis des zu exportierenden Betriebsystems (z.B. /nfsroot). .TP -.BI \-s\ Bildgröße -Größenangabe des splash images. +.BI \-s\ Bildgroesse +Groessenangabe des splash images. .TP .BI \-d\ Name Name der Distribution der Betriebsystemvorlage |