137 lines
3.2 KiB
Bash
137 lines
3.2 KiB
Bash
#!/bin/bash
|
|
|
|
BIN_DIR=$1; shift
|
|
VERSION=$1; shift
|
|
ARCH=$1; shift
|
|
|
|
if [ -z "$BIN_DIR" ]
|
|
then
|
|
echo "This script must be called with a the Libation Linux bins directory as an argument."
|
|
exit
|
|
fi
|
|
|
|
if [ ! -d "$BIN_DIR" ]
|
|
then
|
|
echo "The directory \"$BIN_DIR\" does not exist."
|
|
exit
|
|
fi
|
|
|
|
if [ -z "$VERSION" ]
|
|
then
|
|
echo "This script must be called with the Libation version number as an argument."
|
|
exit
|
|
fi
|
|
|
|
if [ -z "$ARCH" ]
|
|
then
|
|
echo "This script must be called with the Libation cpu architecture as an argument."
|
|
exit
|
|
fi
|
|
|
|
contains() { case "$1" in *"$2"*) true ;; *) false ;; esac }
|
|
|
|
if ! contains "$BIN_DIR" "$ARCH"
|
|
then
|
|
echo "This script must be called with a Libation binaries for ${ARCH}."
|
|
exit
|
|
fi
|
|
|
|
ARCH=$(echo $ARCH | sed 's/x64/amd64/')
|
|
|
|
DEB_DIR=./deb
|
|
|
|
FOLDER_EXEC=$DEB_DIR/usr/lib/libation
|
|
echo "Exec dir: $FOLDER_EXEC"
|
|
mkdir -p $FOLDER_EXEC
|
|
|
|
echo "Moving bins from $BIN_DIR to $FOLDER_EXEC"
|
|
mv "${BIN_DIR}/"* $FOLDER_EXEC
|
|
|
|
if [ $? -ne 0 ]
|
|
then echo "Error moving ${BIN_DIR} files"
|
|
exit
|
|
fi
|
|
|
|
|
|
delfiles=('LinuxConfigApp' 'LinuxConfigApp.deps.json' 'LinuxConfigApp.runtimeconfig.json')
|
|
|
|
for n in "${delfiles[@]}"
|
|
do
|
|
echo "Deleting $n"
|
|
rm $FOLDER_EXEC/$n
|
|
done
|
|
|
|
FOLDER_ICON=$DEB_DIR/usr/share/icons/hicolor/scalable/apps/
|
|
echo "Icon dir: $FOLDER_ICON"
|
|
|
|
FOLDER_DESKTOP=$DEB_DIR/usr/share/applications
|
|
echo "Desktop dir: $FOLDER_DESKTOP"
|
|
|
|
FOLDER_DEBIAN=$DEB_DIR/DEBIAN
|
|
echo "Debian dir: $FOLDER_DEBIAN"
|
|
|
|
mkdir -p $FOLDER_ICON
|
|
mkdir -p $FOLDER_DESKTOP
|
|
mkdir -p $FOLDER_DEBIAN
|
|
|
|
echo "Copying icon..."
|
|
cp $FOLDER_EXEC/libation_glass.svg $FOLDER_ICON/libation.svg
|
|
|
|
echo "Copying desktop file..."
|
|
cp $FOLDER_EXEC/Libation.desktop $FOLDER_DESKTOP/Libation.desktop
|
|
|
|
echo "Creating pre-install file..."
|
|
echo "#!/bin/bash
|
|
# Pre-install script, removes previous installation program files and sym links
|
|
echo \"Removing previously created symlinks...\"
|
|
rm /usr/bin/libation
|
|
rm /usr/bin/hangover
|
|
rm /usr/bin/libationcli
|
|
echo \"Removing previously installed Libation files...\"
|
|
rm -r /usr/lib/libation
|
|
# making sure it won't stop installation
|
|
exit 0
|
|
" >> $FOLDER_DEBIAN/preinst
|
|
|
|
echo "Creating post-install file..."
|
|
echo "#!/bin/bash
|
|
gtk-update-icon-cache -f /usr/share/icons/hicolor/
|
|
ln -s /usr/lib/libation/Libation /usr/bin/libation
|
|
ln -s /usr/lib/libation/Hangover /usr/bin/hangover
|
|
ln -s /usr/lib/libation/LibationCli /usr/bin/libationcli
|
|
# Increase the maximum number of inotify instances
|
|
if ! grep -q 'fs.inotify.max_user_instances=524288' /etc/sysctl.conf; then
|
|
echo fs.inotify.max_user_instances=524288 | tee -a /etc/sysctl.conf && sysctl -p
|
|
fi
|
|
" >> $FOLDER_DEBIAN/postinst
|
|
|
|
echo "Creating control file..."
|
|
echo "Package: Libation
|
|
Version: $VERSION
|
|
Architecture: $ARCH
|
|
Essential: no
|
|
Priority: optional
|
|
Maintainer: github.com/rmcrackan
|
|
Description: liberate your audiobooks
|
|
" >> $FOLDER_DEBIAN/control
|
|
|
|
echo "Changing permissions for pre- and post-install files..."
|
|
chmod +x "$FOLDER_DEBIAN/preinst"
|
|
chmod +x "$FOLDER_DEBIAN/postinst"
|
|
|
|
if [ "$(uname -s)" == "Darwin" ]; then
|
|
echo "macOS detected, installing dpkg"
|
|
brew install dpkg
|
|
fi
|
|
|
|
DEB_FILE=Libation.${VERSION}-linux-chardonnay-${ARCH}.deb
|
|
echo "Creating $DEB_FILE"
|
|
dpkg-deb -Zxz --build $DEB_DIR ./$DEB_FILE
|
|
|
|
echo "moving to ./bundle/$DEB_FILE"
|
|
mkdir bundle
|
|
mv $DEB_FILE ./bundle/$DEB_FILE
|
|
|
|
rm -r "$BIN_DIR"
|
|
|
|
echo "Done!" |