summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xinstaller/pkg-generator/genpkg.sh144
1 files changed, 144 insertions, 0 deletions
diff --git a/installer/pkg-generator/genpkg.sh b/installer/pkg-generator/genpkg.sh
new file mode 100755
index 00000000..4dd626b5
--- /dev/null
+++ b/installer/pkg-generator/genpkg.sh
@@ -0,0 +1,144 @@
+#!/bin/bash
+#####################################################################
+####### This script downloads svn repo and generates a debian package
+####### Autor: Fredy <aluque@soleta.eu> 2018 Q1
+####### First attempt just launches the opengnsys_installer
+#####################################################################
+
+# Needs root priviledges
+if [ "$(whoami)" != 'root' ]; then
+ echo "ERROR: this program must run under root privileges!!"
+ exit 1
+fi
+
+VERSION="1.1"
+SVNURL=https://opengnsys.es/svn/branches/version$VERSION
+PKG_GEN_PATH=/root/debian-pkg
+#DESTDIR=$ROOTDIR/opt/opengnsys
+TMPDIR=/tmp/opengnsys_installer
+
+function help()
+{
+read -r -d '' HELP <<- EOM
+########################################################################
+# This script creates debian ".deb" packages for the great #
+# Opengnsys Deployment Software #
+# - Select which type of package you would like to generate #
+# - You will find your ".deb" file inside /root/debian-pkg folder #
+# - Send the ".deb" file to your destination machine and install it: #
+# - apt install ./opengnsys-*.deb (use apt instead apt-get or dpkg) #
+# The script has been tested on Ubuntu Xenial 16.04 LTS #
+########################################################################
+EOM
+echo "$HELP"
+}
+
+function createControlFile()
+{
+cat > $ROOTDIR/DEBIAN/control << EOF
+Package: $PKG_NAME
+Priority: optional
+Section: misc
+Maintainer: info@opengnsys.es
+Architecture: all
+Version: $VERSION
+$DEPENDS
+Description: Opengnsys Deploy Generator
+Homepage: https://opengnsys.es
+EOF
+}
+
+function createFullPackage()
+{
+PKG_NAME="opengnsys-full"
+ROOTDIR=$PKG_GEN_PATH/$PKG_NAME
+mkdir -p $DESTDIR $TMPDIR $ROOTDIR
+svn export --force $SVNURL $TMPDIR
+mkdir -p $ROOTDIR/DEBIAN $ROOTDIR/tmp
+ln -s $TMPDIR/ $TMPDIR/opengnsys
+DEPENDS="Depends: subversion, apache2, php, php-ldap, libapache2-mod-php, isc-dhcp-server, bittorrent, tftp-hpa, tftpd-hpa, xinetd, build-essential, g++-multilib, libmysqlclient-dev, wget, curl, doxygen, graphviz, bittornado, ctorrent, samba, rsync, unzip, netpipes, debootstrap, schroot, squashfs-tools, btrfs-tools, procps, arp-scan, realpath, php-curl, gettext ,moreutils, jq, wakeonlan, mysql-server, php-mysql, udpcast"
+createControlFile
+# Copy installer to postinst
+cp $TMPDIR/installer/opengnsys_installer.sh $ROOTDIR/DEBIAN/postinst
+
+# Ejemplo de modificacion del postinst al vuelo
+# sed -i 's/wget --spider -q/wget --spider -q --no-check-certificate/g' $ROOTDIR/DEBIAN/postinst
+
+# deactivate svn function
+sed -i '/function svnExportCode/{N;s/$/\nreturn 0/}' $ROOTDIR/DEBIAN/postinst
+
+# copy svn repo structure inside .deb package
+cp -a $TMPDIR $ROOTDIR/tmp
+
+# Finally Generate package
+cd $PKG_GEN_PATH
+dpkg --build $PKG_NAME .
+}
+
+function createClientPackage()
+{
+PKG_NAME="opengnsys-client"
+ROOTDIR=$PKG_GEN_PATH/$PKG_NAME
+mkdir -p $TMPDIR/opengnsys/client/
+mkdir -p $ROOTDIR/tmp/client
+svn checkout $SVNURL/client $TMPDIR/opengnsys/client/
+mkdir -p $ROOTDIR/DEBIAN
+DEPENDS="Depends: debootstrap, subversion, schroot, squashfs-tools, syslinux, genisoimage, ipxe, qemu, lsof"
+createControlFile
+# Copy installer to postinst
+cp $TMPDIR/opengnsys/client/boot-tools/boottoolsgenerator.sh $ROOTDIR/DEBIAN/postinst
+# Modify installer
+sed -i 's/apt-get -y --force-yes install/#apt-get -y --force-yes install/g' $ROOTDIR/DEBIAN/postinst
+# Copy repo to package
+cp -a $TMPDIR $ROOTDIR/tmp
+# Generate package
+cd $PKG_GEN_PATH
+dpkg --build $PKG_NAME .
+}
+
+# Start the Menu
+echo "Main Menu"
+
+# Define the choices to present to the user.
+choices=( 'help' "Create full package" "Client package (testing)" 'exit')
+
+while [ "$menu" != 1 ]; do
+# Present the choices.
+# The user chooses by entering the *number* before the desired choice.
+ select choice in "${choices[@]}"; do
+
+ # Examine the choice.
+ case $choice in
+ help)
+ echo "Generate Package Help"
+ help
+
+ ;;
+ "Create full package")
+ echo "Creating new full package..."
+ createFullPackage
+ exit 0
+ ;;
+ "Client package (testing)")
+ echo "Creating Client package..."
+ createClientPackage
+ exit 0
+ ;;
+ exit)
+ echo "Exiting. "
+ exit 0
+ ;;
+ *)
+ echo "Wrong choice!"
+ exit 1
+ esac
+ break
+
+ done
+done
+
+echo "End of the script"
+exit
+
+
+