68 lines
2.1 KiB
Bash
68 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.6.1810-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
|
|
|
|
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" |