From 75fbae3bdef646dc003b8f8e9569413ae3a68217 Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 23 Jun 2020 18:23:23 +0200 Subject: [PATCH 1/2] Patch osx binaries to remove rpath references --- build-jack.sh | 43 +++++++++++++++++++++++++++++++++++-------- setup/functions.sh | 16 ++++++++++++++++ 2 files changed, 51 insertions(+), 8 deletions(-) diff --git a/build-jack.sh b/build-jack.sh index 31b0b88..32805ae 100755 --- a/build-jack.sh +++ b/build-jack.sh @@ -185,32 +185,59 @@ fi build_waf jack2 "${JACK2_VERSION}" "${jack2_args}" -# patch pkg-config file for static builds in regular prefix +# remove useless dbus-specific file +rm "${PAWPAW_PREFIX}/jack2/bin/jack_control" + +# copy jack pkg-config file to main system, so qjackctl can find it if [ ! -e "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc" ]; then - if [ "${WIN64}" -eq 1 ]; then - s="64" - else - s="" - fi cp -v "${PAWPAW_PREFIX}/jack2/lib/pkgconfig/jack.pc" "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc" + + # patch pkg-config file for static win32 builds in regular prefix if [ "${WIN32}" -eq 1 ]; then - # FIXME rule that works for server lib too + if [ "${WIN64}" -eq 1 ]; then + s="64" + else + s="" + fi + # FIXME rule that works for server lib too, maybe ignoring suffix even sed -i -e "s/lib -ljack${s}/lib -Wl,-Bdynamic -ljack${s} -Wl,-Bstatic/" "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc" fi fi +if [ "${MACOS}" -eq 1 ]; then + for f in $(ls "${PAWPAW_PREFIX}/jack2/bin/"); do + patch_osx_binary_libs "${PAWPAW_PREFIX}/jack2/bin/${f}" + done +fi + # --------------------------------------------------------------------------------------------------------------------- # if qt is available, build qjackctl if [ -f "${PAWPAW_PREFIX}/bin/moc" ]; then download qjackctl "${QJACKCTL_VERSION}" https://download.sourceforge.net/qjackctl + if [ "${WIN64}" -eq 1 ]; then patch_file qjackctl "${QJACKCTL_VERSION}" "configure" 's/-ljack /-Wl,-Bdynamic -ljack64 -Wl,-Bstatic /' elif [ "${WIN32}" -eq 1 ]; then patch_file qjackctl "${QJACKCTL_VERSION}" "configure" 's/-ljack /-Wl,-Bdynamic -ljack -Wl,-Bstatic /' fi + build_autoconf qjackctl "${QJACKCTL_VERSION}" "--enable-jack-version" - if [ "${WIN32}" -eq 1 ]; then + + if [ "${MACOS}" -eq 1 ]; then + qjackctl_dir="${PAWPAW_PREFIX}/bin/qjackctl.app/Contents/MacOS" + patch_osx_binary_libs "${qjackctl_dir}/qjackctl" + if [ ! -e "${qjackctl_dir}/QtXml" ]; then + cp -v "${PAWPAW_PREFIX}/lib/QtCore.framework/Versions/5/QtCore" "${qjackctl_dir}/" + patch_osx_binary_libs "${qjackctl_dir}/QtCore" + cp -v "${PAWPAW_PREFIX}/lib/QtGui.framework/Versions/5/QtGui" "${qjackctl_dir}/" + patch_osx_binary_libs "${qjackctl_dir}/QtGui" + cp -v "${PAWPAW_PREFIX}/lib/QtWidgets.framework/Versions/5/QtWidgets" "${qjackctl_dir}/" + patch_osx_binary_libs "${qjackctl_dir}/QtWidgets" + cp -v "${PAWPAW_PREFIX}/lib/QtXml.framework/Versions/5/QtXml" "${qjackctl_dir}/" + patch_osx_binary_libs "${qjackctl_dir}/QtXml" + fi + elif [ "${WIN32}" -eq 1 ]; then copy_file qjackctl "${QJACKCTL_VERSION}" "src/release/qjackctl.exe" "${PAWPAW_PREFIX}/jack2/bin/qjackctl.exe" fi fi diff --git a/setup/functions.sh b/setup/functions.sh index 62d556b..e659671 100644 --- a/setup/functions.sh +++ b/setup/functions.sh @@ -506,3 +506,19 @@ function remove_file() { } # --------------------------------------------------------------------------------------------------------------------- + +function patch_osx_binary_libs() { + local file="${1}" + + if otool -L "${file}" | grep -q "${PAWPAW_PREFIX}"; then + install_name_tool -change "@rpath/QtCore.framework/Versions/5/QtCore" "@executable_path/QtCore" "${file}" + install_name_tool -change "@rpath/QtGui.framework/Versions/5/QtGui" "@executable_path/QtGui" "${file}" + install_name_tool -change "@rpath/QtWidgets.framework/Versions/5/QtWidgets" "@executable_path/QtWidgets" "${file}" + install_name_tool -change "@rpath/QtXml.framework/Versions/5/QtXml" "@executable_path/QtXml" "${file}" + install_name_tool -change "${PAWPAW_PREFIX}/jack2/lib/libjack.0.dylib" "/usr/local/lib/libjack.0.dylib" "${file}" + install_name_tool -change "${PAWPAW_PREFIX}/jack2/lib/libjacknet.0.dylib" "/usr/local/lib/libjacknet.0.dylib" "${file}" + install_name_tool -change "${PAWPAW_PREFIX}/jack2/lib/libjackserver.0.dylib" "/usr/local/lib/libjackserver.0.dylib" "${file}" + fi +} + +# --------------------------------------------------------------------------------------------------------------------- From ad34952f1df7254e5e37a19bb27d17787feaffed Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 23 Jun 2020 18:37:33 +0200 Subject: [PATCH 2/2] Package jack2 for macosx --- build-jack.sh | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/build-jack.sh b/build-jack.sh index 32805ae..858b90c 100755 --- a/build-jack.sh +++ b/build-jack.sh @@ -13,10 +13,14 @@ QJACKCTL_VERSION=0.6.2 target="${1}" if [ -z "${target}" ]; then - echo "usage: ${0} " + echo "usage: ${0} [package-build?]" exit 1 fi +if [ -n "${2}" ]; then + PACKAGING_BUILD="y" +fi + # --------------------------------------------------------------------------------------------------------------------- # TODO check that bootstrap.sh has been run @@ -243,3 +247,16 @@ if [ -f "${PAWPAW_PREFIX}/bin/moc" ]; then fi # --------------------------------------------------------------------------------------------------------------------- + +if [ -n "${PACKAGING_BUILD}" ]; then + if [ "${MACOS}" -eq 1 ]; then + ./jack2/macosx/generate-pkg.sh "${PAWPAW_PREFIX}/jack2/" + + rm -rf jack2/macosx/qjackctl.app + cp -rv "${PAWPAW_PREFIX}/bin/qjackctl.app" "jack2/macosx/" + + tar czf jack2-osx-1.9.14.tar.gz -C jack2/macosx jack2-osx-1.9.14.pkg qjackctl.app + fi +fi + +# ---------------------------------------------------------------------------------------------------------------------