Update bundle/package scripts

* Ardour only has 64 bit builds
* gcc5 or newer (C++11 ABI)
* Add "-demo" suffix to freebie builds
* Remove wine support in package scripts
This commit is contained in:
Robin Gareus 2023-03-24 19:07:30 +01:00
parent 197157ecf8
commit 4bc8939dda
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
7 changed files with 76 additions and 262 deletions

View File

@ -58,3 +58,9 @@ if grep -q "DEBUG = True" ../../build/c4che/_cache.py; then
else
DEBUG="F"
fi
if grep -q "FREEBIE=1" ../../build/c4che/_cache.py; then
FREEBI="T"
else
FREEBI="F"
fi

View File

@ -2,10 +2,9 @@
# script for pulling together a Linux app bundle.
#
# This will create a bundle for a single architecture.
# Execute this script on both x86 and x86_64 and then use
# package to merge the 2 bundles into a final package with the
# installer. See "noderun" for a complete build script.
# This will create a bundle for a x86_64 architecture.
# Execute this script and then use `package; to build
# the installer.
# where the GTK stack is installed
GTKSTACK_ROOT=$HOME/gtk/inst
@ -30,8 +29,6 @@ WITH_NLS=
EXTERNAL_JACK=
VENDOR=Ardour ;
EXENAME=ardour
GCC5ABI=false
USEWINE=false
WINEEXE=
BUILDTYPE=""
NOSTRIP="libsuil|libserd|libsord|liblilv|libsratom|liblrdf|libardour|libpbd|libevoral"
@ -101,7 +98,7 @@ while [ $# -gt 0 ] ; do
--sysdeps) PRINT_SYSDEPS=1; shift ;;
--nls) WITH_NLS=1 ; shift ;;
--harvid) WITH_HARVID=1 ; shift ;;
--gcc5abi) GCC5ABI=true ; shift ;;
--gcc5abi) shift ;;
--chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;;
*)
@ -133,14 +130,6 @@ echo "Info string is $info_string"
# Figure out our CPU type
case `uname -m` in
i[3456789]86|x86|i86pc)
echo "Architecture is x86"
ARCH='x86'
WARCH='i386'
HARCH='linux32'
ARCH_BITS='32-bit'
MULTIARCH='i386-linux-gnu'
;;
x86_64|amd64|AMD64)
echo "Architecture is x86_64"
ARCH='x86_64'
@ -157,8 +146,17 @@ case `uname -m` in
;;
esac
if [ "$DEBUG" = "T" ]; then
BUILDTYPE="dbg"
fi
if [ "FREEBI" = "T" ]; then
BUILDTYPE="demo"
fi
if [ "$DEBUG$FREEBI" = "TT" ]; then
BUILDTYPE="demo-dbg"
fi
if [ x$DEBUG = xT ]; then
BUILDTYPE="dbg"
if [ x$STRIP = xall ] ; then
echo "A debug build with --strip all makes no sense - STRIP reset to \"some\""
STRIP=some
@ -261,7 +259,7 @@ fi
echo export 'PATH="/usr/local/bin:/opt/bin:$PATH"' >> $ENVIRONMENT
sed -e "/^%ENV%/r $ENVIRONMENT" -e '/^%ENV%/d' -e 's/%VER%/'"${release_version}"'/;s/%EXENAME%/'"${EXENAME}"'/;s/%WINE%/'"$WINEEXE"'/' < ardour.sh.in > $APPBIN/${EXENAME}${major_version}
sed -e "/^%ENV%/r $ENVIRONMENT" -e '/^%ENV%/d' -e 's/%VER%/'"${release_version}"'/;s/%EXENAME%/'"${EXENAME}"'/' < ardour.sh.in > $APPBIN/${EXENAME}${major_version}
rm $ENVIRONMENT && chmod 775 $APPBIN/${EXENAME}${major_version}
echo "Copying ardour executable ...."
@ -723,11 +721,7 @@ if test -n "$MIXBUS"; then
echo "Adding Harrison Vamp Plugins"
if test "$GCC5ABI" = "true"; then
VAMPARCH="${HARCH}gcc5"
else
VAMPARCH="${HARCH}"
fi
VAMPARCH="${HARCH}gcc5"
curl -s -S --fail -# \
-z "${CACHEDIR}/harrison_vamp.${VAMPARCH}.so" \
-o "${CACHEDIR}/harrison_vamp.${VAMPARCH}.so" \
@ -856,10 +850,9 @@ chmod a+x $APPBIN/${APP_VER_NAME}.uninstall.sh
#
# Add the stage2.run script
#
sed -e "s/%REPLACE_MAJOR_VERSION%/${major_version}/;s/%REPLACE_PGM%/${APPNAME}/;s/%REPLACE_VENDOR%/${VENDOR}/;s/%REPLACE_EXE%/${EXENAME}/;s/%REPLACE_GCC5%/${GCC5ABI}/;s/%REPLACE_WINE%/${USEWINE}/" < stage2.run.in > stage2.run
sed -e "s/%REPLACE_MAJOR_VERSION%/${major_version}/;s/%REPLACE_PGM%/${APPNAME}/;s/%REPLACE_VENDOR%/${VENDOR}/;s/%REPLACE_EXE%/${EXENAME}/" < stage2.run.in > stage2.run
chmod a+x stage2.run
#Sanity Check file
if [ -e $BUILD_ROOT/tools/sanity_check/sanityCheck ]; then
cp $BUILD_ROOT/tools/sanity_check/sanityCheck $APPBIN

View File

@ -6,10 +6,6 @@
# and package them together with an installer script.
BUILDTYPE=""
SINGLE_ARCH="F"
X86_BUNDLE_OK="F"
X86_64_BUNDLE_OK="F"
GCC5ABI="F"
MAKESELF=""
BUILD_ROOT=../../build
@ -49,9 +45,9 @@ while [ $# -gt 0 ] ; do
MAKESELF=`which makeself`;
shift ;;
--singlearch) SINGLE_ARCH="T" ; shift ;;
--singlearch) shift ;;
--gcc5abi) GCC5ABI="T" ; shift ;;
--gcc5abi) shift ;;
--xz) MAKESELFOPTS="--xz --complevel 9" ; shift ;;
@ -70,84 +66,26 @@ done
if [ x$DEBUG = xT ]; then
BUILDTYPE="dbg"
fi
if [ x$FREEBI = xT ]; then
BUILDTYPE="demo"
fi
if [ x$DEBUG$FREEBI = xTT ]; then
BUILDTYPE="demo-dbg"
fi
X86_BUNDLE="${APPNAME}_x86-${release_version}"
X86_64_BUNDLE="${APPNAME}_x86_64-${release_version}"
PACKAGE="${APPNAME}-${release_version}-x86_64"
if [ ! -z ${BUILDTYPE} ]; then
X86_BUNDLE="${X86_BUNDLE}-${BUILDTYPE}"
X86_64_BUNDLE="${X86_64_BUNDLE}-${BUILDTYPE}"
PACKAGE="${APPNAME}-${release_version}-${BUILDTYPE}-x86_64"
fi
if [ ! -e ${X86_BUNDLE}.tar ] ; then
echo ""
echo "Can't locate x86 bundle file ${X86_BUNDLE}.tar"
echo ""
elif [ ! -e ${X86_BUNDLE}.size ] ; then
echo ""
echo "Can't locate x86 bundle size file ${X86_BUNDLE}.size"
echo ""
else
X86_BUNDLE_OK="T"
fi
if [ ! -e ${X86_64_BUNDLE}.tar ]; then
echo ""
echo "Can't locate x86_64 bundle file ${X86_64_BUNDLE}.tar"
echo ""
elif [ ! -e ${X86_64_BUNDLE}.size ]; then
echo ""
echo "Can't locate x86 bundle size file ${X86_BUNDLE}.size"
echo ""
else
X86_64_BUNDLE_OK="T"
fi
if [ "${X86_BUNDLE_OK}" = "F" ] || [ "${X86_64_BUNDLE_OK}" = "F" ]; then
if [ "${X86_BUNDLE_OK}" = "${X86_64_BUNDLE_OK}" ]; then
echo ""
echo "!!! ERROR !!! - Can't locate bundle files ${X86_BUNDLE} or ${X86_64_BUNDLE}"
echo ""
exit 1
elif [ "${SINGLE_ARCH}" = "T" ]; then
echo ""
echo "!!! Warning !!! - A single architecture package has been selected"
echo ""
else
echo ""
echo "!!! ERROR !!! - Missing bundle files."
echo ""
exit 1
fi
fi
if [ -z ${BUILDTYPE} ]; then
if [ "${SINGLE_ARCH}" = "T" ]; then
if [ "${X86_BUNDLE_OK}" = "T" ]; then
PACKAGE="${APPNAME}-${release_version}-x86"
else
PACKAGE="${APPNAME}-${release_version}-x86_64"
fi
else
PACKAGE="${APPNAME}-${release_version}"
fi
else
if [ "${SINGLE_ARCH}" = "T" ]; then
if [ "${X86_BUNDLE_OK}" = "T" ]; then
PACKAGE="${APPNAME}-${release_version}-${BUILDTYPE}-x86"
else
PACKAGE="${APPNAME}-${release_version}-${BUILDTYPE}-x86_64"
fi
else
PACKAGE="${APPNAME}-${release_version}-${BUILDTYPE}"
fi
fi
if [ "$GCC5ABI" = "T" ]; then
PACKAGE="${PACKAGE}-gcc5"
exit 1
fi
echo "Cleaning up any old package files for this build"
@ -159,30 +97,13 @@ rm -rf ${PACKAGE}
echo "Creating new package dir..."
mkdir ${PACKAGE}
if [ "${X86_BUNDLE_OK}" = "T" ]; then
mv ${X86_BUNDLE}.tar ${PACKAGE}
mv ${X86_BUNDLE}.size ${PACKAGE}/.${X86_BUNDLE}.size
fi
if [ "${X86_64_BUNDLE_OK}" = "T" ]; then
mv ${X86_64_BUNDLE}.tar ${PACKAGE}
mv ${X86_64_BUNDLE}.size ${PACKAGE}/.${X86_64_BUNDLE}.size
fi
mv ${X86_64_BUNDLE}.tar ${PACKAGE}
mv ${X86_64_BUNDLE}.size ${PACKAGE}/.${X86_64_BUNDLE}.size
cp install.sh ${PACKAGE}
cp stage2.run ${PACKAGE}/.stage2.run
cp README ${PACKAGE}
# gcc4/5 ABI test tool
if [ -e $BUILD_ROOT/tools/gccabicheck/gcc-glibmm-abi-check ]; then
cp $BUILD_ROOT/tools/gccabicheck/gcc-glibmm-abi-check ${PACKAGE}/.gcc-glibmm-abi-check
else
echo "!!!ERROR !!! gcc-glibmm-abi-check program is missing. packager will exit without being complete"
rm -rf ${PACKAGE}
rm -f stage2.run
exit 1
fi
if test -n "$MAKESELF"; then
echo "Creating self-extracting installer"
$MAKESELF ${MAKESELFOPTS} ${PACKAGE}/ ${PACKAGE}.run ${APPNAME} ./install.sh

View File

@ -31,7 +31,6 @@ USER_NAME=$(logname)
#### Global Variables ####
HAS_XDG="T"
MULTABI_BUNDLE=""
########################
# Function Definitions
@ -271,12 +270,10 @@ case `uname -m` in
arm|armv7l|aarch32)
echo "Architecture is armhf"
ARCH='armhf'
NOABICHECK=1
;;
aarch64|armv8b)
echo "Architecture is arm64"
ARCH='arm64'
NOABICHECK=1
;;
*)
echo ""
@ -287,35 +284,14 @@ case `uname -m` in
;;
esac
###################
# Determine gcc ABI
###################
if test -n "$MULTABI_BUNDLE"; then
if ! "${PKG_PATH}/.gcc-glibmm-abi-check" --fail --gcc5; then
ABI=-gcc4
else
ABI=-gcc5
fi
# allow to manually override
if test "$1" = "--gcc4"; then
ABI=-gcc4
fi
if test "$1" = "--gcc5"; then
ABI=-gcc5
fi
else
ABI=
fi
####################################
# Check if bundle is for this system
####################################
if [ ! -e ${PGM_NAME}_${ARCH}${ABI}-*.tar ]; then
if [ ! -e ${PGM_NAME}_${ARCH}-*.tar ]; then
echo ""
echo "!!! ERROR !!! Can't locate ${ARCH}${ABI} bundle file."
echo "The installer detected the system as ${ARCH}${ABI}, but this bundle"
echo "!!! ERROR !!! Can't locate ${ARCH} bundle file."
echo "The installer detected the system as ${ARCH}, but this bundle"
echo "does not contain the files needed for that configuration."
echo ""
read -p "Press ENTER to exit installer:" BLAH
@ -331,15 +307,15 @@ fi
# in case they are on different devices
echo "Checking for required disk space"
if [ ! -e .${PGM_NAME}_${ARCH}${ABI}-*.size ]; then
if [ ! -e .${PGM_NAME}_${ARCH}-*.size ]; then
echo ""
echo "!!! ERROR !!! Can't locate .size file for ${ARCH}${ABI} bundle."
echo "This package is broken or does not support ${ARCH}${ABI}."
echo "!!! ERROR !!! Can't locate .size file for ${ARCH} bundle."
echo "This package is broken or does not support ${ARCH}."
echo ""
read -p "Press ENTER to exit installer:" BLAH
exit 1
else
REQUIRED_BYTES=$(cat .${PGM_NAME}_${ARCH}${ABI}-*.size)
REQUIRED_BYTES=$(cat .${PGM_NAME}_${ARCH}-*.size)
#Installer needs 2x the space since the bundle is unpacked locally and then copied
REQUIRED_BYTES=$(($REQUIRED_BYTES + $REQUIRED_BYTES))
@ -371,57 +347,6 @@ else
fi
fi
###############################
# Determine C++11 stdlibc++ ABI
###############################
if test -z "$ABI" -a -z "$NOABICHECK"; then
if %REPLACE_GCC5%; then
# Ardour was compiled with gcc5, warn on gcc4 systems
if ! "${PKG_PATH}/.gcc-glibmm-abi-check" --gcc5; then
echo ""
echo "WARNING: GCC4/5 libstdc++ ABI Mismatch"
echo ""
echo "${PGM_NAME} was compiled with gcc5, your system uses an older version of the"
echo "standard c++ library. Plugins on your system may not load or plugin-UIs"
echo "may cause crashes."
echo ""
ANSWER=$(VaildateYesNoQuestion "Continue anyway?")
if test "n" = $ANSWER; then
exit 1
fi
fi
else
# Ardour was compiled with gcc4, warn on gcc5 systems
if ! "${PKG_PATH}/.gcc-glibmm-abi-check" --gcc4 ; then
echo ""
echo "WARNING: GCC4/5 libstdc++ ABI Mismatch"
echo ""
echo "${PGM_NAME} was compiled with gcc4, your system uses a newer version of the"
echo "standard c++ library. Plugins on your system may not load or plugin-UIs"
echo "may cause crashes."
echo ""
ANSWER=$(VaildateYesNoQuestion "Continue anyway?")
if test "n" = $ANSWER; then
exit 1
fi
fi
fi
fi
if %REPLACE_WINE%; then
if test -z "`which wine`"; then
echo ""
echo "!!! ERROR !!! - 'wine' was not found."
echo ""
echo "This version of ${PGM_NAME} with Windows VST support requires wine."
echo "https://www.winehq.org/"
echo ""
read -p "Press ENTER to exit installer:" BLAH
exit 1
fi
fi
#####################
# Unpack the bundle
#####################
@ -430,11 +355,11 @@ FILESYSTEM_TYPE=$(df -P -T "${PKG_PATH}" | grep / | awk '{print $2}')
echo "Bundle is on ${FILESYSTEM_TYPE} filesystem"
# untar the correct bundle for us to install
echo "Unpacking bundle for $ARCH${ABI}"
echo "Unpacking bundle for $ARCH"
if ! tar -xf ${PGM_NAME}_${ARCH}${ABI}-*.tar; then
if ! tar -xf ${PGM_NAME}_${ARCH}-*.tar; then
echo ""
echo "!!! ERROR !!! Can't unpack ${ARCH}${ABI} bundle file."
echo "!!! ERROR !!! Can't unpack ${ARCH} bundle file."
echo ""
read -p "Press ENTER to exit installer:" BLAH
exit 1
@ -476,54 +401,6 @@ then
HAS_XDG="F"
fi
#################################################
# Set up libwine.so
#################################################
if %REPLACE_WINE%; then
echo ""
echo "Searching libwine.so (Windows VST support)"
# we need to add libwine to ardour's LD_LIBRARY_PATH
# libwine itself includes paths to the various system-components
# which may be different on each platform.
#
# There's some chicken/egg here: ardour.exe.so is linked against libwine.so
# at build-time. wine/wineloader assumes a windows-application (which does not use libwine
# directly) and does not set up the LD path to libwine itself. the application terminates
# (missing libs) before it even starts..
#
# wine itself does not provide means to find the location of libwine.
# /usr/bin/wine is usually shell-script and libwine.so can be found in
# various places on different distros.
#
# if this check were quick and easy.. it should be done in the startup-script, but it's not
# so here we go... (updating wine may require re-installing ardour)
#
# on recent Ubuntu wine does load both:
# /usr/lib/i386-linux-gnu/libwine.so.1
# AND
# /usr/lib/x86_64-linux-gnu/libwine.so.1
# so we need to work around this (thanks).
# (this hack break 64bit LinuxVST builds, but we don't do those anyway)
LIBWINE=$(
LD_DEBUG=files wine `pwd`/${BUNDLE_DIR}/lib/ardour-vst-scanner.exe.so 2>&1 \
| grep -e "calling init:.*libwine" \
| sed 's/^.*calling init: //' \
| grep -v x86_64-linux-gnu \
| uniq \
)
if ! test -f "$LIBWINE"; then
echo ""
echo "!!! ERROR !!! - 'libwine.so*' was not found."
echo ""
read -p "Press ENTER to exit installer:" BLAH
exit 1
fi
echo "Using: $LIBWINE"
# this replaces/overwrites the bundled libwine
cp -L "$LIBWINE" `pwd`/${BUNDLE_DIR}/lib/libwine.so.1
fi
#################################################
# Check if system libs are OK (libc, etc)
#################################################

View File

@ -1012,14 +1012,20 @@ fi
echo "Building DMG ..."
# UC_DMG=$APPNAME-${release_version}-UC.dmg
# FINAL_DMG=$APPNAME-${release_version}.dmg
BUILDTYPE=""
if [ x$DEBUG = xT ]; then
UC_DMG=$APPNAME-$release_version-dbg${DMG_ARCH}.dmg
else
UC_DMG=$APPNAME-$release_version${DMG_ARCH}.dmg
BUILDTYPE="-dbg"
fi
if [ x$FREEBI = xT ]; then
BUILDTYPE="-demo"
fi
if [ x$DEBUG$FREEBI = xTT ]; then
BUILDTYPE="-demo-dbg"
fi
UC_DMG=$APPNAME-$release_version${BUILDTYPE}${DMG_ARCH}.dmg
VOLNAME=$APPNAME-$release_version
MNTPATH=`mktemp -d -t ardourimg`

View File

@ -249,9 +249,27 @@ fi
### include static gdb - re-zipped binaries from
### http://sourceforge.net/projects/mingw/files/MinGW/Extension/gdb/gdb-7.6.1-1/gdb-7.6.1-1-mingw32-bin.tar.lzma
### http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.1/threads-win32/sjlj/x86_64-4.9.1-release-win32-sjlj-rt_v3-rev1.7z
if ! grep " using ./waf configure" build/config.log | grep -q -- "--optimize"; then
BUILDTYPE=""
VERSIONINFO="Optimized Version."
if [ "$DEBUG" = "T" ]; then
BUILDTYPE="-dbg"
PACKAGE_GDB=1
VERSIONINFO="Debug Build."
fi
if [ "$FREEBI" = "T" ]; then
BUILDTYPE="-demo"
VERSIONINFO="Optimized Demo Version."
fi
if [ "$DEBUG$FREEBI" = "TT" ]; then
BUILDTYPE="-demo-dbg"
PACKAGE_GDB=1
VERSIONINFO="Demo Version."
fi
OUTFILE="${TMPDIR}/${PRODUCT_NAME}-${ARDOURVERSION}${BUILDTYPE}-${WARCH}-Setup.exe"
if test -n "$PACKAGE_GDB"; then
download gdb-static-win3264.tar.xz http://robin.linuxaudio.org/gdb-static-win3264.tar.xz
cd ${SRCCACHE}
@ -264,11 +282,6 @@ if test -n "$PACKAGE_GDB"; then
cd bin
START ..\\gdb\\bin\\gdb.exe -iex "set logging overwrite on" -iex "set height 0" -iex "set logging on %UserProfile%\\${PRODUCT_NAME}-debug.log" -iex "target exec ${PRODUCT_EXE}" -iex "run"
EOF
OUTFILE="${TMPDIR}/${PRODUCT_NAME}-${ARDOURVERSION}-dbg-${WARCH}-Setup.exe"
VERSIONINFO="Debug Version."
else
OUTFILE="${TMPDIR}/${PRODUCT_NAME}-${ARDOURVERSION}-${WARCH}-Setup.exe"
VERSIONINFO="Optimized Version."
fi
################################################################################

View File

@ -1477,7 +1477,6 @@ int main () { __int128 x = 0; return 0; }
pass
elif Options.options.dist_target != 'mingw':
sub_config_and_use(conf, 'tools/sanity_check')
sub_config_and_use(conf, 'tools/gccabicheck')
# explicitly link against libm. This is possible on all POSIX systems
# and required on Linux for symbol versioning and ABI compatibility
@ -1636,7 +1635,6 @@ def build(bld):
pass
elif bld.env['build_target'] != 'mingw':
bld.recurse('tools/sanity_check')
bld.recurse('tools/gccabicheck')
obj = bld(features = 'subst')
obj.source = 'tools/avahi.sh'