From 9b46c2cafefb43884a4f5f72eb278948411ed4d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Mon, 6 Jul 2020 20:26:32 -0300 Subject: [PATCH 1/9] musl-obstack: ship dynamic lib, split devel. --- common/shlibs | 1 + srcpkgs/musl-obstack-devel | 1 + srcpkgs/musl-obstack/template | 16 +++++++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) create mode 120000 srcpkgs/musl-obstack-devel diff --git a/common/shlibs b/common/shlibs index 86ee9fcb734..31272a3530a 100644 --- a/common/shlibs +++ b/common/shlibs @@ -3978,3 +3978,4 @@ libsepol.so.1 libsepol-3.0_1 libfrrcares.so.0 libfrr-7.3.1_1 libhugetlbfs.so.0 libhugetlbfs-2.22_1 libdolphinvcs.so.5 dolphin-plugins-20.04.2_1 +libobstack.so.0 musl-obstack-1.1_4 diff --git a/srcpkgs/musl-obstack-devel b/srcpkgs/musl-obstack-devel new file mode 120000 index 00000000000..e21ca66cded --- /dev/null +++ b/srcpkgs/musl-obstack-devel @@ -0,0 +1 @@ +musl-obstack \ No newline at end of file diff --git a/srcpkgs/musl-obstack/template b/srcpkgs/musl-obstack/template index 2cd2ddf2efc..4e8bee6afec 100644 --- a/srcpkgs/musl-obstack/template +++ b/srcpkgs/musl-obstack/template @@ -1,16 +1,15 @@ # Template file for 'musl-obstack' pkgname=musl-obstack version=1.1 -revision=3 +revision=4 archs="*-musl" build_style=gnu-configure -configure_args="--disable-shared" hostmakedepends="automake libtool" short_desc="Implementation of obstack for musl libc" maintainer="Jürgen Buchmüller " license="GPL-2.0-or-later" homepage="https://github.com/void-linux/musl-obstack" -distfiles="https://github.com/void-linux/${pkgname}/archive/v${version}.tar.gz>${pkgname}-${version}.tar.gz" +distfiles="${homepage}/archive/v${version}.tar.gz>${pkgname}-${version}.tar.gz" checksum=52a216613e7d55e8725e43d017bb2d49a4b1ffa1e06da472f03c7f9875df7d0d CFLAGS="-fPIC" @@ -22,3 +21,14 @@ pre_configure() { post_install() { vinstall ${pkgname}.pc 644 usr/lib/pkgconfig } + +musl-obstack-devel_package() { + depends="${sourcepkg}-${version}_${revision}" + short_desc+=" - development files" + pkg_install() { + vmove usr/include + vmove usr/lib/libobstack.a + vmove usr/lib/libobstack.so + vmove usr/lib/pkgconfig + } +} From 61cbfc0a97977cd907f0d26c0ce03ec4a359199a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Mon, 6 Jul 2020 17:45:20 -0300 Subject: [PATCH 2/9] gcompat: update to 0.9.0. Add musl-obstack dependency. --- .../gcompat/patches/ppc-libc_start_main.patch | 67 ------------------- srcpkgs/gcompat/template | 10 +-- 2 files changed, 6 insertions(+), 71 deletions(-) delete mode 100644 srcpkgs/gcompat/patches/ppc-libc_start_main.patch diff --git a/srcpkgs/gcompat/patches/ppc-libc_start_main.patch b/srcpkgs/gcompat/patches/ppc-libc_start_main.patch deleted file mode 100644 index 518292745f7..00000000000 --- a/srcpkgs/gcompat/patches/ppc-libc_start_main.patch +++ /dev/null @@ -1,67 +0,0 @@ -From d30e49d10cefeb2748373127e1d1aba1184f653d Mon Sep 17 00:00:00 2001 -From: q66 -Date: Sun, 10 Nov 2019 15:32:28 +0100 -Subject: [PATCH 1/1] internal: add a wrapper for __libc_start_main for - PowerPC(64(le)) - -This is necessary because the musl and glibc function signatures -differ significantly. ---- - libgcompat/internal.c | 41 +++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 41 insertions(+) - -diff --git a/libgcompat/internal.c b/libgcompat/internal.c -index 450c5e4..53ac429 100644 ---- libgcompat/internal.c -+++ libgcompat/internal.c -@@ -2,6 +2,47 @@ - #include - #include - -+#if defined(__powerpc__) -+ -+/* On PowerPC as well as ppc64, we need to fix up __libc_start_main as the -+ * glibc and musl versions have wildly different signatures, which would -+ * result in the arguments to __libc_start_main being completely wrong. -+ * -+ * Using dlsym in this context is mildly questionable as this is before -+ * the full initialization has been done, but there is no better way. -+ */ -+ -+#include -+ -+struct startup_info { -+ void *sda_base; -+ void *f_main; -+ void *f_init; -+ void *f_fini; -+}; -+ -+typedef int (*start_main_t)(void *mf, int argc, char **argv); -+ -+/* -+ * ref: https://git.musl-libc.org/cgit/musl/tree/crt/crt1.c?id=90251cf -+ * ref: https://git.musl-libc.org/cgit/musl/tree/src/env/__libc_start_main.c?id=90251cf#n71 -+ * ref: https://github.com/bminor/glibc/blob/5cb226d/sysdeps/unix/sysv/linux/powerpc/libc-start.c#L36 -+ */ -+int __libc_start_main(void *argc, void *argv, void *ev, void *auxv, void *fini, -+ struct startup_info *si, long *p) -+{ -+ (void)argc; -+ (void)argv; -+ (void)ev; -+ (void)auxv; -+ (void)fini; -+ /* argc/argv from the stack, main from startup_info */ -+ start_main_t mainf = (start_main_t)dlsym(RTLD_NEXT, "__libc_start_main"); -+ return mainf(si->f_main, *p, (void *)(p + 1)); -+} -+ -+#endif /* defined(__powerpc__) */ -+ - void GCOMPAT__panic(const char *fmt, ...) - { - va_list va; --- -2.23.0 - diff --git a/srcpkgs/gcompat/template b/srcpkgs/gcompat/template index 237f97bd5e9..b2c1e9f8230 100644 --- a/srcpkgs/gcompat/template +++ b/srcpkgs/gcompat/template @@ -1,14 +1,16 @@ # Template file for 'gcompat' pkgname=gcompat -version=0.4.0 +version=0.9.0 revision=1 build_style=gnu-makefile +hostmakedepends="pkg-config" +makedepends="musl-obstack-devel" short_desc="Compatibility layer to allow running glibc binaries on musl systems" maintainer="Daniel James " license="ISC" homepage="https://code.foxkit.us/adelie/gcompat" distfiles="https://distfiles.AdelieLinux.org/source/${pkgname}/${pkgname}-${version}.tar.xz" -checksum=9903fac7b70de3ba7736ae2987fa00bbafff7bfcf6a9c88731c292dff19e44e2 +checksum=4555d045d7d2831d11b907719005c5dfbc77642c32f8c0172d40883026ffaf53 build_options="libucontext" desc_option_libucontext="Build with ucontext support via libucontext" @@ -43,10 +45,10 @@ esac make_build_args="LINKER_PATH=/usr/lib/${_musl} LOADER_NAME=${_glibc} LIBGCOMPAT_PATH=/usr/lib/libgcompat.so.0 LOADER_PATH=/usr/lib/${LOADER_NAME} - WITH_OBSTACK=no" + WITH_OBSTACK=musl-obstack" make_install_args="LINKER_PATH=/usr/lib/${_musl} LOADER_NAME=${_glibc} LIBGCOMPAT_PATH=/usr/lib/libgcompat.so.0 LOADER_PATH=/usr/lib/${LOADER_NAME} - WITH_OBSTACK=no" + WITH_OBSTACK=musl-obstack" if [ "$build_option_libucontext" ]; then makedepends+=" libucontext-devel" From af0b4464009b958580a2dedc3552e0c741f5c164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Mon, 6 Jul 2020 20:34:12 -0300 Subject: [PATCH 3/9] reiserfsprogs: use musl-obstack-devel. --- srcpkgs/reiserfsprogs/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/reiserfsprogs/template b/srcpkgs/reiserfsprogs/template index 121b03a95a4..8b45947935c 100644 --- a/srcpkgs/reiserfsprogs/template +++ b/srcpkgs/reiserfsprogs/template @@ -1,7 +1,7 @@ # Template file for 'reiserfsprogs' pkgname=reiserfsprogs version=3.6.27 -revision=1 +revision=2 build_style=gnu-configure hostmakedepends="automake libtool pkg-config" makedepends="libuuid-devel e2fsprogs-devel acl-devel" @@ -14,7 +14,7 @@ checksum=0e95b67fa7746a3c2d59145e9b9c2feb4a6be52853e83b497b182eae508e62e3 case "$XBPS_TARGET_MACHINE" in *-musl) - makedepends+=" musl-obstack" + makedepends+=" musl-obstack-devel" LDFLAGS="-lobstack" ;; esac From df6d47d39f6a6466154b99c260422da813867431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Mon, 6 Jul 2020 20:34:40 -0300 Subject: [PATCH 4/9] perl-Proc-ProcessTable: use musl-obstack-devel. --- srcpkgs/perl-Proc-ProcessTable/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/perl-Proc-ProcessTable/template b/srcpkgs/perl-Proc-ProcessTable/template index 58c07f2cb22..3fb6d53f684 100644 --- a/srcpkgs/perl-Proc-ProcessTable/template +++ b/srcpkgs/perl-Proc-ProcessTable/template @@ -1,7 +1,7 @@ # Template file for 'perl-Proc-ProcessTable' pkgname=perl-Proc-ProcessTable version=0.59 -revision=2 +revision=3 wrksrc="Proc-ProcessTable-${version}" build_style=perl-module hostmakedepends="perl" @@ -15,5 +15,5 @@ distfiles="${CPAN_SITE}/Proc/Proc-ProcessTable-${version}.tar.gz" checksum=f8cc5054d78c35a0ce39fb75430b4ef402e2a99013d2ec37e7997f316594606c case "$XBPS_TARGET_MACHINE" in - *-musl) makedepends+=" musl-obstack" ;; + *-musl) makedepends+=" musl-obstack-devel" ;; esac From 1172ca589e6464b202e782343c8fcd72ffa64072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Mon, 6 Jul 2020 20:35:00 -0300 Subject: [PATCH 5/9] pahole: use musl-obstack-devel. --- srcpkgs/pahole/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/pahole/template b/srcpkgs/pahole/template index e504d3479f7..4d16a3ba7b5 100644 --- a/srcpkgs/pahole/template +++ b/srcpkgs/pahole/template @@ -1,7 +1,7 @@ # Template file for 'pahole' pkgname=pahole version=1.17 -revision=1 +revision=2 _bpfver=0.0.7 build_style=cmake configure_args="-D__LIB=lib" @@ -16,7 +16,7 @@ checksum="51e35041ce43ed08922037a1ee9e415aff1590e0d8d7cbe3e2b003f388db0a8a a616ba2ea72d00b4022689b17f4a78365379e3040d0f1a66d28eba52c528e480" case $XBPS_TARGET_MACHINE in - *-musl) makedepends+=" musl-obstack argp-standalone" + *-musl) makedepends+=" musl-obstack-devel argp-standalone" esac pre_patch() { From 95e444876e3fbe3d5279c7e16b198d32fb973437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Mon, 6 Jul 2020 20:35:12 -0300 Subject: [PATCH 6/9] hidrd: use musl-obstack-devel. --- srcpkgs/hidrd/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/hidrd/template b/srcpkgs/hidrd/template index 1bb75b98a0c..3470511708c 100644 --- a/srcpkgs/hidrd/template +++ b/srcpkgs/hidrd/template @@ -1,7 +1,7 @@ # Template file for 'hidrd' pkgname=hidrd version=0.2.0 -revision=1 +revision=2 build_style=gnu-configure hostmakedepends="automake libtool pkg-config" short_desc="HID report descriptor I/O library and conversion tool" @@ -14,7 +14,7 @@ checksum=0147993dedb3066873d22fab1dc3aafec78d8c5783d168cccc43126f0fc3b307 case $XBPS_TARGET_MACHINE in *-musl) configure_args+=' LIBS=-lobstack' - makedepends+=" musl-obstack" + makedepends+=" musl-obstack-devel" ;; esac From dd6e78046f017adb3618d1bd2d793f6c8926d5ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Mon, 6 Jul 2020 20:35:23 -0300 Subject: [PATCH 7/9] elfutils: use musl-obstack-devel. --- srcpkgs/elfutils/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/elfutils/template b/srcpkgs/elfutils/template index ed40864be48..4523c6db0e2 100644 --- a/srcpkgs/elfutils/template +++ b/srcpkgs/elfutils/template @@ -1,7 +1,7 @@ # Template file for 'elfutils' pkgname=elfutils version=0.180 -revision=1 +revision=2 build_style=gnu-configure configure_args="--program-prefix=eu- --disable-debuginfod" hostmakedepends="automake libtool pkg-config" @@ -16,7 +16,7 @@ checksum=b827b6e35c59d188ba97d7cf148fa8dc6f5c68eb6c5981888dfdbb758c0b569d CFLAGS="-Wno-error -Wno-error=null-dereference" case "$XBPS_TARGET_MACHINE" in - *-musl) makedepends+=" argp-standalone musl-fts-devel musl-obstack" ;; + *-musl) makedepends+=" argp-standalone musl-fts-devel musl-obstack-devel" ;; esac if [ "$CROSS_BUILD" ]; then From 3675c1bd29b2a61ad3fa33e84a34c716d579d430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Mon, 6 Jul 2020 20:35:46 -0300 Subject: [PATCH 8/9] cronie: use musl-obstack-devel. --- srcpkgs/cronie/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/cronie/template b/srcpkgs/cronie/template index cd00937e7f5..e2c40f9e645 100644 --- a/srcpkgs/cronie/template +++ b/srcpkgs/cronie/template @@ -1,7 +1,7 @@ # Template file for 'cronie' pkgname=cronie version=1.5.5 -revision=2 +revision=3 build_style=gnu-configure configure_args="--with-inotify --without-selinux --with-pam --enable-anacron --enable-pie --enable-relro" @@ -34,7 +34,7 @@ alternatives=" " if [ "$XBPS_TARGET_LIBC" = "musl" ]; then - makedepends+=" musl-obstack" + makedepends+=" musl-obstack-devel" fi pre_configure() { From a0519c19dd3af345bab9e9c1d0d3fec64a83aae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Mon, 6 Jul 2020 17:45:34 -0300 Subject: [PATCH 9/9] spotify: enable musl support. Requires gcompat and patchelf, follows instructions from https://catfox.life/2020/07/06/live-from-adelie-streaming-spotify-on-musl/ --- srcpkgs/spotify/INSTALL | 18 ++++++++++++++++-- srcpkgs/spotify/template | 10 ++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/srcpkgs/spotify/INSTALL b/srcpkgs/spotify/INSTALL index 1cf70985dcb..6d557133403 100644 --- a/srcpkgs/spotify/INSTALL +++ b/srcpkgs/spotify/INSTALL @@ -1,7 +1,7 @@ # INSTALL for 'spotify' # Fetching proprietary binaries at install-time -_BUILDDIR="/tmp/spotify.build" +_BUILDDIR="$(mktemp -d /tmp/spotify.build.XXXXX)" _LIBS=$(ldconfig -vNX -n usr/lib 2>/dev/null) linklib() { @@ -10,8 +10,8 @@ linklib() { } if test "$ACTION" = "post"; then + # get checksum and version information . usr/share/spotify/pkgdata - mkdir -p "$_BUILDDIR" ( set -e cd "$_BUILDDIR" @@ -27,15 +27,29 @@ if test "$ACTION" = "post"; then exit 1; fi + # delete old package version [ -d "/usr/share/spotify/spotify-client" ] && rm -rf usr/share/spotify/spotify-client + + # copy data mv -f "${_BUILDDIR}/usr/share/spotify" usr/share/spotify/spotify-client for _s in 16 22 24 32 48 64 128 256 512; do mkdir -p "/usr/share/icons/hicolor/${_s}x${_s}/apps" ln -sf "/usr/share/spotify/spotify-client/icons/spotify-linux-${_s}.png" "/usr/share/icons/hicolor/${_s}x${_s}/apps/spotify-client.png" done + mkdir -p usr/share/applications ln -sf /usr/share/spotify/spotify-client/spotify.desktop usr/share/applications/spotify.desktop + + # https://catfox.life/2020/07/06/live-from-adelie-streaming-spotify-on-musl/ + if [ "$(xbps-uhelper arch)" = "x86_64-musl" ]; then + for _l in libm.so.6 libdl.so.2; do + patchelf --remove-needed "${_l}" usr/share/spotify/spotify-client/spotify + done + fi + linklib "libssl" "1.0.0" linklib "libcrypto" "1.0.0" + + # cleanup rm -r "$_BUILDDIR" fi diff --git a/srcpkgs/spotify/template b/srcpkgs/spotify/template index d9ec603bf6a..5053a7224b2 100644 --- a/srcpkgs/spotify/template +++ b/srcpkgs/spotify/template @@ -2,17 +2,23 @@ pkgname=spotify version=1.1.26 revision=1 -archs="x86_64" +archs="x86_64*" create_wrksrc=yes build_style=fetch depends="binutils gtk+ nss GConf libXScrnSaver libatomic" short_desc="Proprietary music streaming client" maintainer="Stefan Mühlinghaus " -license="Proprietary" +license="custom:Proprietary" homepage="https://www.spotify.com" repository=nonfree _sversion=".501.gbe11e53b-15_amd64" _schecksum="54ba1bd91020913273c469591cedeebfa34aedc250033dde7c8b3fded94a9c71" + +if [ "$XBPS_TARGET_LIBC" = musl ]; then + # musl requires compat library and modifying the binary + depends+=" gcompat>=0.9.0 patchelf" +fi + do_install() { vbin ${FILESDIR}/spotify vmkdir usr/share/spotify