From 7aec763dbdaa79d7efbd2b246fe710ce143a3814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Sat, 26 Dec 2020 23:54:31 -0300 Subject: [PATCH] wine: make it work on i686-musl. -fno-PIC (wine build system) and pie by default (our toolchain) are a bad match. Force -no-pie where necessary. Also xlint. --- srcpkgs/wine/template | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/srcpkgs/wine/template b/srcpkgs/wine/template index 42592c677d9..c449db42b4a 100644 --- a/srcpkgs/wine/template +++ b/srcpkgs/wine/template @@ -1,8 +1,8 @@ # Template file for 'wine' pkgname=wine version=6.0rc4 -wrksrc=wine-${version/r/-r} revision=1 +wrksrc=wine-${version/r/-r} build_style=gnu-configure configure_args="--bindir=/usr/libexec/wine" short_desc="Run Microsoft Windows applications" @@ -13,7 +13,15 @@ distfiles="https://dl.winehq.org/wine/source/${version%r*}/wine-${version/r/-r}. checksum=9dd7813918277d89ad3dbbd911eb1a7ada1c92778f17c727ca3a9fba591c7ec5 lib32mode=full -archs="i686 x86_64*" +archs="i686* x86_64*" + +_nopie=no +if [ "$XBPS_TARGET_MACHINE" = i686-musl ]; then + # build system adds -fno-PIC for 32bit builds, which, + # coupled with our default pie toolchain, leads to textrels + # in the final binary; musl doesn't support those + _nopie=yes +fi hostmakedepends="pkg-config flex gettext" makedepends="gettext-devel lcms2-devel zlib-devel ncurses-devel @@ -47,6 +55,18 @@ fi _wine_libexec="/usr/libexec/wine" nopie_files="${_wine_libexec}/wine${_wine_suffix}" +if [ "${_nopie}" = yes ]; then + nopie_files+=" ${_wine_libexec}/wineserver${_wineserver_suffix}" +fi + +pre_build() { + if [ "${_nopie}" = yes ]; then + make LDFLAGS="$LDFLAGS -no-pie" \ + tools/{widl/widl,winebuild/winebuild,winegcc/winegcc,wrc/wrc} \ + loader/wine server/wineserver + fi +} + post_install() { # Font aliasing settings for Win32 applications install -d ${DESTDIR}/etc/fonts/conf.{avail,d} @@ -103,6 +123,9 @@ wine-common_package() { wine-tools_package() { depends="wine-${version}_${revision}" short_desc+=" - development tools" + if [ "${_nopie}" = yes ]; then + nopie=yes + fi pkg_install() { for file in widl winebuild winecpp winedump wineg++ winegcc winemaker wmc wrc function_grep.pl do