libreschool-iso-builder/run.sh

70 lines
2.1 KiB
Bash

#!/bin/bash
set -e
PLUGIN_SOURCE_ISO_URL=${PLUGIN_SOURCE_ISO_URL:-"http://downloads.sourceforge.net/project/nethserver/nethserver-7.7.1908-x86_64.iso"}
PLUGIN_OUTPUT_ISO=${PLUGIN_OUTPUT_ISO:-"output.iso"}
echo "+ PWD: $PWD"
if [ ! -r /source.iso ] ; then
# download only if source iso is not already present
echo "+ Downloading URL: $PLUGIN_SOURCE_ISO_URL"
wget -qO/source.iso "$PLUGIN_SOURCE_ISO_URL" || exit 1
fi
if [ ! -r /drone/src/packages.list ] ; then
echo "! missing packages.list"
exit 1
fi
mkdir /src
echo "+ Extracting source ISO"
7z x -o/src -bd /source.iso || exit 1
echo "+ Removing all TRANS.TBL files"
find /src -name TRANS.TBL -delete
echo "+ Adding custom files from 'root'"
cp -vfr /drone/src/root/* /src/
echo "+ Adding GPG signing key"
curl -s "http://repo.libreschool.org/nethserver/RPM-GPG-KEY-LibreSchool" > /src/RPM-GPG-KEY-LibreSchool
rpm --import /src/RPM-GPG-KEY-LibreSchool
echo "+ Adding custom packages"
# TODO: find a way to remove packages already on ISO
mkdir -p /src/libreschool /drone/src/package_cache
cat /drone/src/packages.list | xargs yum install --downloaddir=/drone/src/package_cache --downloadonly && \
cat /drone/src/packages.list | xargs yumdownloader --destdir=/drone/src/package_cache --downloadonly --archlist=x86_64 \
|| ( echo "! cannot download all packages." ; exit 1 )
cp /drone/src/package_cache/*.rpm /src/libreschool
cd /src/libreschool
if [ -r comps.xml ] ; then
echo "+ Updating libreschool local repo (with groups)"
createrepo -g comps.xml -dp .
else
echo "+ Updating libreschool local repo"
createrepo -dp .
fi
if [ -d /drone/src/anaconda ] ; then
echo "+ Generating anaconda customization package"
cd /drone/src/anaconda/
find . | cpio -c -o | gzip -9cv > /src/images/product.img
fi
echo "+ Generating new ISO"
cd /src && \
genisoimage -o /output.iso -b isolinux/isolinux.bin -c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-V "nethserver" -R -J -quiet -T . && \
isohybrid /output.iso && \
implantisomd5 /output.iso
echo "+ Renaming file"
mv /output.iso "/drone/src/$PLUGIN_OUTPUT_ISO"
echo "+ Done"