Skip to content

Instantly share code, notes, and snippets.

@paulcarroty
Last active June 7, 2022 13:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paulcarroty/a307c0c184671ca96f4aa9e9d0fa95b5 to your computer and use it in GitHub Desktop.
Save paulcarroty/a307c0c184671ca96f4aa9e9d0fa95b5 to your computer and use it in GitHub Desktop.
wine.spec
# Using hacked https://github.com/clearlinux-pkgs/wine RPM spec
# and non-interactive build mode https://github.com/Frogging-Family/wine-tkg-git
Name : wine
Version : 6.22
Release : 80
URL : https://github.com/Frogging-Family/wine-tkg-git
# Source0 : https://github.com/Frogging-Family/wine-tkg-git/archive/refs/heads/master.tar.gz
Source0 : https://dl.winehq.org/wine/source/6.x/wine-%{version}.tar.xz
Source1: https://github.com/wine-staging/wine-staging/archive/v%{version}.tar.gz#/wine-staging-%{version}.tar.gz
Summary : Windows translator layer for Linux
Group : Development/Tools
License : LGPL-2.1 MIT
Requires: wine-bin = %{version}-%{release}
Requires: wine-data = %{version}-%{release}
Requires: wine-lib = %{version}-%{release}
Requires: wine-license = %{version}-%{release}
Requires: wine-man = %{version}-%{release}
Requires: SDL2-lib
Requires: SDL2-lib32
Requires: Vulkan-Loader-lib
Requires: Vulkan-Loader-lib32
Requires: cups-lib
Requires: dbus-lib
Requires: dbus-lib32
Requires: elfutils-lib32
Requires: expat-lib32
Requires: fontconfig-lib
Requires: fontconfig-lib32
Requires: freetype-lib
Requires: freetype-lib32
Requires: glu-lib
Requires: glu-lib32
Requires: gnutls-lib
Requires: gnutls-lib32
Requires: libX11-lib
Requires: libX11-lib32
Requires: libXcursor-lib
Requires: libXcursor-lib32
Requires: libdrm-lib32
Requires: libjpeg-turbo-lib
Requires: libjpeg-turbo-lib32
Requires: libpng-lib
Requires: libpng-lib32
Requires: libxslt-lib
Requires: libxslt-lib32
Requires: mesa-lib
Requires: mesa-lib32
Requires: mpg123-lib32
Requires: ncurses-lib
Requires: ncurses-lib32
Requires: samba-lib
Requires: tiff-lib
Requires: tiff-lib32
Requires: unixODBC-lib
Requires: v4l-utils-lib
Requires: v4l-utils-lib32
Requires: wine-lib32
BuildRequires : llvm
BuildRequires : rustc
BuildRequires : SDL2-dev32
BuildRequires : acl-dev acl-dev32
BuildRequires : alsa-lib-dev
BuildRequires : attr-dev
BuildRequires : bison
BuildRequires : cups-dev
BuildRequires : cyrus-sasl-dev
BuildRequires : dbus-dev32 dbus-dev
BuildRequires : flex
BuildRequires : fontconfig-dev32
BuildRequires : freetype-dev32
BuildRequires : gcc-dev32
BuildRequires : gcc-libgcc32
BuildRequires : gcc-libstdc++32
BuildRequires : glibc-dev32
BuildRequires : glibc-libc32
BuildRequires : gstreamer-dev
BuildRequires : krb5-dev
BuildRequires : lcms2-dev32 lcms2-dev
BuildRequires : libX11-dev32
BuildRequires : libXcomposite-dev32 libXcomposite-dev
BuildRequires : libXcursor-dev32 libXcursor-dev
BuildRequires : libXext-dev32
BuildRequires : libXfixes-dev32
BuildRequires : libXi-dev32 libXi-dev
BuildRequires : libXinerama-dev32 libXinerama-dev
BuildRequires : libXrandr-dev32
BuildRequires : libXrender-dev32
BuildRequires : libgphoto2-dev
BuildRequires : libjpeg-turbo-dev32
BuildRequires : libpng-dev32
BuildRequires : libxml2-dev32
BuildRequires : mingw-binutils
BuildRequires : mingw-crt
BuildRequires : mingw-crt-dev
BuildRequires : mingw-gcc
BuildRequires : mpg123-dev
BuildRequires : ncurses-dev32
BuildRequires : ocl-icd-dev
BuildRequires : openal-soft-dev
BuildRequires : openal-soft-dev32
BuildRequires : opencl-headers-dev
BuildRequires : pkgconfig(32gl)
BuildRequires : pkgconfig(32glu)
BuildRequires : pkgconfig(32gnutls)
BuildRequires : pkgconfig(32ice)
BuildRequires : pkgconfig(32libpulse)
BuildRequires : pkgconfig(32libxslt)
BuildRequires : pkgconfig(32vulkan)
BuildRequires : pkgconfig(32x11)
BuildRequires : pkgconfig(32xext)
BuildRequires : pkgconfig(gstreamer-1.0)
BuildRequires : pkgconfig(libcdio)
BuildRequires : pkgconfig(ncurses)
BuildRequires : pkgconfig(ncursesw)
BuildRequires : pulseaudio-dev32
BuildRequires : sane-backends-dev
BuildRequires : systemd-dev32 systemd-dev
BuildRequires : tiff-dev
BuildRequires : unixODBC-dev
BuildRequires : valgrind
BuildRequires : valgrind-dev
BuildRequires : vkd3d-dev
BuildRequires : vkd3d-dev32
BuildRequires : gst-plugins-base-dev
BuildRequires : gst-plugins-base-dev
BuildRequires : xorgproto-dev xorgproto-dev32
BuildRequires : freetype-dev freetype-dev32
BuildRequires : fontconfig-dev fontconfig-dev32
BuildRequires : mesa-dev mesa-dev32
BuildRequires : tiff-dev tiff-dev32
BuildRequires : libpcap-dev
BuildRequires : krb5-dev32 krb5-dev
BuildRequires : v4l-utils-dev v4l-utils-dev32
BuildRequires : ibus-dev
BuildRequires : libXres-dev libXres-dev32
BuildRequires : libXxf86dga-dev libXxf86dga-dev32
BuildRequires : libusb-dev libusb-dev32
BuildRequires : freeglut-dev
BuildRequires : attr-dev attr-dev32
BuildRequires : librsvg-dev
BuildRequires : libXmu-dev libXmu-dev32
BuildRequires : glslang-dev
BuildRequires : openssl-dev openssl-dev32 git
BuildRequires : wayland-dev wayland-protocols-dev
BuildRequires : gtk3-dev attr-dev libva-dev libva-dev32
%description
Wine is a program which allows running Microsoft Windows programs
(including DOS, Windows 3.x, Win32, and Win64 executables) on Unix.
%prep
#%%setup -q -n wine-tkg-git-master
%setup -q -n wine-%{version} -a1
wine-staging-%{version}/patches/patchinstall.sh DESTDIR="`pwd`" --all
# cd %%{_builddir}/wine-tkg-git-master/wine-tkg-git
# sed -i 's/_NOCOMPILE="false"/_NOCOMPILE="true"/' wine-tkg-profiles/advanced-customization.cfg
# fix bcrypt undefined error
# sed -i 's|_hotfixes+=("$_where"/wine-tkg-patches/hotfixes/rdr2/0001-proton-bcrypt_rdr2_fixes2)|echo "skip 0001-bcrypt_rdr2_fixes2"|' wine-tkg-patches/hotfixes/hotfixer
# sed -i 's|_hotfixes+=("$_where"/wine-tkg-patches/hotfixes/rdr2/0001-proton-bcrypt_rdr2_fixes)|echo "skip 0001-bcrypt_rdr2_fixes"|' wine-tkg-patches/hotfixes/hotfixer
# sed -i 's|_hotfixes+=("$_where"/wine-tkg-patches/hotfixes/rdr2/0002-bcrypt-Add-support-for-calculating-secret-ecc-keys)|echo "skip 0002-bcrypt"|' wine-tkg-patches/hotfixes/hotfixer
# sed -i 's|_hotfixes+=("$_where"/wine-tkg-patches/hotfixes/rdr2/0003-bcrypt-Add-support-for-OAEP-padded-asymmetric-key-de)|echo "skip 003-bcrypt"|' wine-tkg-patches/hotfixes/hotfixer
# sed -i 's|_hotfix_mainlinereverts+=(341cb1a933aec7b2858414f571ea98ba29caa72a)|echo "skip bcrypt mainlinereverts"|' wine-tkg-patches/hotfixes/hotfixer
# sed -i 's|_hotfixes+=("$_where"/wine-tkg-patches/hotfixes/rdr2/ef6e33f)|echo "skip bcrypt ef6e33f"|' wine-tkg-patches/hotfixes/hotfixer
# yes|./non-makepkg-build.sh
%build
pushd ..
# cp -a wine-tkg-git-master/wine-tkg-git/src/wine-mirror-git build64
cp -a wine-%{version} build64
popd
pushd ../build64
export CFLAGS="`echo "$CFLAGS -O3" | sed 's/-ffat-lto-objects -flto//'`"
export CFLAGS="`echo "$CFLAGS" | sed s/-m32/-m64/`"
export CXXFLAGS="$CFLAGS"
%reconfigure --enable-win64 --without-gssapi
make %{?_smp_mflags}
popd
## build_prepend end
export http_proxy=http://127.0.0.1:9/
export https_proxy=http://127.0.0.1:9/
export no_proxy=localhost,127.0.0.1,0.0.0.0
export LANG=C.UTF-8
export SOURCE_DATE_EPOCH=1635298850
export GCC_IGNORE_WERROR=1
export CFLAGS="-O2 -g -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wno-error -Wl,-z,max-page-size=0x1000 -march=westmere -mtune=haswell"
export CXXFLAGS=$CFLAGS
export FFLAGS="-O2 -g -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wno-error -Wl,-z,max-page-size=0x1000 -march=westmere -mtune=haswell"
export FCFLAGS=$FFLAGS
unset LDFLAGS
export CFLAGS="$CFLAGS -Ofast -falign-functions=32 -fno-lto -fno-semantic-interposition -mno-vzeroupper -mprefer-vector-width=256 "
export FCFLAGS="$FFLAGS -Ofast -falign-functions=32 -fno-lto -fno-semantic-interposition -mno-vzeroupper -mprefer-vector-width=256 "
export FFLAGS="$FFLAGS -Ofast -falign-functions=32 -fno-lto -fno-semantic-interposition -mno-vzeroupper -mprefer-vector-width=256 "
export CXXFLAGS="$CXXFLAGS -Ofast -falign-functions=32 -fno-lto -fno-semantic-interposition -mno-vzeroupper -mprefer-vector-width=256 "
# pushd wine-tkg-git/src/wine-mirror-git
%reconfigure --disable-static --with-wine64=%{_builddir}/build64 \
--libdir=/usr/lib32 \
--disable-win16
make %{?_smp_mflags}
#popd
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}/usr/share/package-licenses/wine
cp %{_builddir}/wine-%{version}/COPYING.LIB %{buildroot}/usr/share/package-licenses/wine/a64734e065eb3fcf8b3eea74e695bf274048be81
cp %{_builddir}/wine-%{version}/LICENSE %{buildroot}/usr/share/package-licenses/wine/abc50ed5f6b410141a576e7d925ca7d87f0c7afc
cp %{_builddir}/wine-%{version}/LICENSE.OLD %{buildroot}/usr/share/package-licenses/wine/02915a3f045528cc246cf0b22399bca9b3a75099
# pushd wine-tkg-git/src/wine-mirror-git
%make_install
# popd
## install_append content
pushd ../build64
%make_install
popd
rm -rf %{buildroot}/usr/share/man
# install static dev libs
# pushd wine-tkg-git/src/wine-mirror-git
# pushd wine-staging-%%{version}
find dlls -name 'lib*.a' -exec install {} %{buildroot}/usr/lib32/wine/ \;
#popd
find %{_builddir}/build64/dlls -name 'lib*.a' -exec install {} %{buildroot}/usr/lib64/wine/ \;
## install_append end
%files
%defattr(-,root,root,-)
/usr/bin
/usr/lib32
/usr/lib64
/usr/share/wine
/usr/share/package-licenses/wine
%define _lto_cflags %{nil}
%define realver 7.10
%define stagingver 7.10
%define packagever 7.10
%global flavor @BUILD_FLAVOR@%nil
# defaults ..
%define pkg wine-staging
%define compat_package winehq-staging
%define _prefix /opt/wine-staging
%define ver %packagever
%define lib_major 1
%define lib_name lib%{pkg}1
%define lib_name_devel lib%{pkg}-devel
%undefine _hardened_build
Name: %pkg
Version: %ver
Release: 0
Epoch: 1
Summary: WINE Is Not An Emulator - runs MS Windows programs
License: LGPLv2+
Group: Emulators
URL: https://www.winehq.org/
%ifarch x86_64
%define wine %{name}64
%define mark64 ()(64bit)
%else
%define wine %{name}
%define mark64 %{nil}
%endif
Source0: https://dl.winehq.org/wine/source/7.x/wine-%{realver}.tar.xz
Source1: https://dl.winehq.org/wine/source/7.x/wine-%{realver}.tar.xz.sign
Source100: https://github.com/wine-staging/wine-staging/archive/v%{realver}.tar.gz#/wine-staging-%{stagingver}.tar.xz
BuildRequires : SDL2-dev SDL2-dev32
BuildRequires : acl-dev acl-dev32
BuildRequires : alsa-lib-dev
BuildRequires : attr-dev
BuildRequires : bison
BuildRequires : cups-dev
BuildRequires : cyrus-sasl-dev
BuildRequires : dbus-dev32 dbus-dev
BuildRequires : flex
BuildRequires : fontconfig-dev32
BuildRequires : freetype-dev32
BuildRequires : gcc-dev32
BuildRequires : gcc-libgcc32
BuildRequires : gcc-libstdc++32
BuildRequires : glibc-dev32
BuildRequires : glibc-libc32
BuildRequires : gstreamer-dev
BuildRequires : krb5-dev
BuildRequires : lcms2-dev32 lcms2-dev
BuildRequires : libX11-dev32
BuildRequires : libXcomposite-dev32 libXcomposite-dev
BuildRequires : libXcursor-dev32 libXcursor-dev
BuildRequires : libXext-dev32
BuildRequires : libXfixes-dev32
BuildRequires : libXi-dev32 libXi-dev
BuildRequires : libXinerama-dev32 libXinerama-dev
BuildRequires : libXrandr-dev libXrandr-dev32
BuildRequires : libXrender-dev libXrender-dev32
BuildRequires : libgphoto2-dev
BuildRequires : libjpeg-turbo-dev32
BuildRequires : libpng-dev32
BuildRequires : libxml2-dev32
BuildRequires : mingw-binutils
BuildRequires : mingw-crt
BuildRequires : mingw-crt-dev
BuildRequires : mingw-gcc
BuildRequires : mpg123-dev
BuildRequires : ncurses-dev32
BuildRequires : ocl-icd-dev
BuildRequires : openal-soft-dev
BuildRequires : openal-soft-dev32
BuildRequires : opencl-headers-dev
BuildRequires : pkgconfig(32gl)
BuildRequires : pkgconfig(32glu)
BuildRequires : pkgconfig(32gnutls)
BuildRequires : pkgconfig(32ice)
BuildRequires : pkgconfig(32libpulse)
BuildRequires : pkgconfig(32libxslt)
BuildRequires : pkgconfig(32vulkan)
BuildRequires : pkgconfig(32x11)
BuildRequires : pkgconfig(32xext)
BuildRequires : pkgconfig(gstreamer-1.0)
BuildRequires : pkgconfig(libcdio)
BuildRequires : pkgconfig(ncurses)
BuildRequires : pkgconfig(ncursesw)
BuildRequires : pulseaudio-dev32
BuildRequires : sane-backends-dev
BuildRequires : systemd-dev32 systemd-dev
BuildRequires : tiff-dev
BuildRequires : unixODBC-dev
BuildRequires : valgrind
BuildRequires : valgrind-dev
BuildRequires : vkd3d-dev
BuildRequires : vkd3d-dev32
BuildRequires : gst-plugins-base-dev
BuildRequires : gst-plugins-base-dev
BuildRequires : xorgproto-dev xorgproto-dev32
BuildRequires : freetype-dev freetype-dev32
BuildRequires : fontconfig-dev fontconfig-dev32
BuildRequires : mesa-dev mesa-dev32
BuildRequires : tiff-dev tiff-dev32
BuildRequires : libpcap-dev
BuildRequires : krb5-dev32 krb5-dev
BuildRequires : v4l-utils-dev v4l-utils-dev32
BuildRequires : ibus-dev
BuildRequires : libXres-dev libXres-dev32
BuildRequires : libXxf86dga-dev libXxf86dga-dev32
BuildRequires : libusb-dev libusb-dev32
BuildRequires : freeglut-dev
BuildRequires : attr-dev attr-dev32
BuildRequires : librsvg-dev
BuildRequires : libXmu-dev libXmu-dev32
BuildRequires : glslang-dev
BuildRequires : openssl-dev openssl-dev32 git
BuildRequires : wayland-dev wayland-protocols-dev
BuildRequires : gtk3-dev attr-dev libva-dev libva-dev32
BuildRequires : nasm yasm
%description
wine
%prep
# unpack tarball SOURCE0
%setup -n wine-%realver -q -T -b0
# apply wine staging patch set on top of the wine release.
tar xf %{SOURCE100}
bash ./wine-staging-%{stagingver}/patches/patchinstall.sh --all
%build
%define debug_package %{nil}
#export CFLAGS="$(echo "%{optflags}" | sed -e 's/-O2//' -e 's/-Wp,-D_FORTIFY_SOURCE=2//' -e 's/-fcf-protection//' -e 's/-fstack-protector-strong//' -e 's/-fstack-clash-protection//' -e 's/-ffat-lto-objects//') -O2"
#export CFLAGS="$(echo "%{optflags}" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//' -e 's/-fcf-protection//' -e 's/-fstack-protector-strong//' -e 's/-fstack-clash-protection//' -e 's/-ffat-lto-objects//')"
export CFLAGS="`echo "$CFLAGS -O3" | sed 's/-ffat-lto-objects/-fno-lto/'`"
export CFLAGS="`echo "$CFLAGS" | sed 's/-Wp,-D_FORTIFY_SOURCE=2//'`"
export CFLAGS="`echo "$CFLAGS" | sed 's/-fstack-protector//'`"
autoreconf -i -f
%configure \
--with-gstreamer \
--disable-tests \
--with-xattr \
--enable-win64 \
--with-x
make -j1
%install
%make_install LDCONFIG=/bin/true
# Compat symlinks for bindir
mkdir -p "%{buildroot}/usr/bin"
for _file in $(ls "%{buildroot}/%{_bindir}"); do \
ln -s "%{_bindir}/$_file" "%{buildroot}/usr/bin/$_file"; \
done
%ifarch x86_64
for _file in wine wine-preloader; do \
ln -s "%{_prefix}/bin/$_file" "%{buildroot}/usr/bin/$_file"; \
done
%endif
%files
%defattr(-,root,root,-)
/usr/bin
/usr/share/wine
/usr/share/package-licenses
/usr/share/applications
/usr/lib64/wine
/usr/lib32/wine
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment