blob: d378b421b86755dfbcb03b78fae00520d90ecdd8 [file] [log] [blame]
#!/usr/bin/env bash
set -e
set -u
#change dir to script location
cd "${0%/*}"
. common_make_packages.sh
if ! is_dep_available gem
then
exit 1
fi
export PATH=`gem environment gemdir`/bin:$PATH
#expand this list if needed. bsdtar is required for arch packages.
if ! is_dep_available fpm ||\
! is_dep_available rpm ||\
! is_dep_available bsdtar
then
exit 1
fi
DIR=renode_$VERSION
INSTALL_DIR=/opt/renode
OS_NAME=linux
SED_COMMAND="sed -i"
. common_copy_files.sh
PYTHONVERSION=3.8
COMMON_SCRIPT=$DIR/tests/common.sh
TEST_SCRIPT=linux/renode-test
RUNNER=mono
copy_bash_tests_scripts $TEST_SCRIPT $COMMON_SCRIPT $RUNNER
COMMAND_SCRIPT=linux/renode
echo "#!/bin/sh" > $COMMAND_SCRIPT
echo "MONOVERSION=$MONOVERSION" >> $COMMAND_SCRIPT
echo "REQUIRED_MAJOR=$MONO_MAJOR" >> $COMMAND_SCRIPT
echo "REQUIRED_MINOR=$MONO_MINOR" >> $COMMAND_SCRIPT
# skip the first line (with the hashbang)
tail -n +2 linux/renode-mono-template >> $COMMAND_SCRIPT
chmod +x $COMMAND_SCRIPT
PACKAGES=output/packages
OUTPUT=$BASE/$PACKAGES
GENERAL_FLAGS=(\
-f -n renode -v $VERSION --license MIT\
--category devel --provides renode -a native\
-m 'Antmicro <renode@antmicro.com>'\
--vendor 'Antmicro <renode@antmicro.com>'\
--description 'The Renode Framework'\
--url 'www.renode.io'\
--after-install linux/update_icon_cache.sh\
--after-remove linux/update_icon_cache.sh\
--license MIT\
$DIR/=$INSTALL_DIR\
$TEST_SCRIPT=/usr/bin/renode-test\
$COMMAND_SCRIPT=/usr/bin/renode\
linux/Renode.desktop=/usr/share/applications/Renode.desktop\
linux/icons/128x128/apps/renode.png=/usr/share/icons/hicolor/128x128/apps/renode.png
linux/icons/16x16/apps/renode.png=/usr/share/icons/hicolor/16x16/apps/renode.png
linux/icons/24x24/apps/renode.png=/usr/share/icons/hicolor/24x24/apps/renode.png
linux/icons/32x32/apps/renode.png=/usr/share/icons/hicolor/32x32/apps/renode.png
linux/icons/48x48/apps/renode.png=/usr/share/icons/hicolor/48x48/apps/renode.png
linux/icons/64x64/apps/renode.png=/usr/share/icons/hicolor/64x64/apps/renode.png
linux/icons/scalable/apps/renode.svg=/usr/share/icons/hicolor/scalable/apps/renode.svg
)
### create debian package
fpm -s dir -t deb\
-d "libmono-cil-dev >= $MONOVERSION"\
-d "mono-runtime >= $MONOVERSION"\
-d "python3 >= $PYTHONVERSION"\
-d python3-pip\
-d gtk-sharp2-gapi\
-d libglade2.0-cil-dev\
-d libglib2.0-cil-dev\
-d libgtk2.0-cil-dev\
-d screen\
-d policykit-1\
-d libc6-dev\
-d gcc\
--deb-no-default-config-files\
"${GENERAL_FLAGS[@]}" >/dev/null
mkdir -p $OUTPUT
deb=(renode*deb)
mv $deb $OUTPUT
echo "Created a Debian package in $PACKAGES/$deb"
### create rpm package
#redhat-rpm-config is apparently required for GCC to work in Docker images
fpm -s dir -t rpm\
-d "mono-core >= $MONOVERSION"\
-d python3-pip\
-d gcc\
-d redhat-rpm-config\
-d gtk-sharp2\
-d screen\
-d polkit\
"${GENERAL_FLAGS[@]}" >/dev/null
rpm=(renode*rpm)
mv $rpm $OUTPUT
echo "Created a Fedora package in $PACKAGES/$rpm"
### create arch package
fpm -s dir -t pacman --pacman-compression xz \
-d mono -d gtk-sharp-2 -d screen -d polkit -d gcc -d python3 -d python-pip \
"${GENERAL_FLAGS[@]}" >/dev/null
arch=(renode*.pkg.tar.xz)
# Rationale:
# As a result of the following commit:
# https://github.com/jordansissel/fpm/commit/ca3477b67ba6bc9adc1cbe97e560061a739a12fc
# packages generated with `--pacman-compression xz` have an invalid extension: `.zst`
# instead of `.xz`. Versions from 1.12.0 to 1.14.1 (at the moment of writing this)
# are affected.
#
# This is a workaround - if the user will generate packages with an
# older fpm (<1.12.0), the file will remain unchanged. If an affected version of fpm
# will be used - it will be renamed to have the expected file extension.
ZST=(renode*.pkg.tar.zst)
if [ -f "$arch" ]
then
mv $arch $OUTPUT
echo "Created an Arch package in $PACKAGES/$arch"
elif [ -f "$ZST" ]
then
file $ZST | grep "XZ compressed data" >> /dev/null
if [ $? -eq 0 ]
then
mv "$ZST" "${ZST%.zst}.xz"
arch=(renode*.pkg.tar.xz)
mv $arch $OUTPUT
echo "Warning: .zst file was detected during the process and was renamed to .xz manually. \
Please upgrade fpm above version 1.14.1, if possible."
echo "Created an Arch package in $PACKAGES/$arch"
else
echo "Could not create Arch package"
fi
fi
#cleanup unless user requests otherwise
if $REMOVE_WORKDIR
then
rm -rf $DIR
rm $COMMAND_SCRIPT
rm $TEST_SCRIPT
fi