Build and Release Wine x86_64 #251
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Release Wine x86_64 | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '0 0 * * *' | |
push: | |
tags: | |
- '*' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: list debug | |
run: | | |
ls -la | |
echo $PWD | |
- name: Setup Dependencies | |
run: | | |
mkdir ~/finalbuild | |
sudo dpkg --add-architecture i386 | |
sudo apt update | |
sudo apt-get install --reinstall python3-apt | |
sudo apt install -y wine-stable wine32 wine64 libwine libwine:i386 fonts-wine samba-dev libcapi20-3:i386 libgstreamer-plugins-base1.0-dev:i386 libgphoto2-dev:i386 libv4l-dev:i386 libusb-1.0-0:i386 opencl-headers build-essential gcc g++ make flex bison libc6-dev libncurses5-dev libfreetype6-dev libxml2-dev libx11-dev libxext-dev libxrender-dev libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev libxss-dev libxt-dev libxv-dev libxcomposite-dev libxslt1-dev libosmesa6-dev libpcap0.8-dev libdbus-1-dev libncurses5-dev libncursesw5-dev libpulse-dev libaudio-dev libsdl2-dev libvulkan-dev libgnutls28-dev libncurses-dev libv4l-dev liblcms2-dev libtiff5-dev libmpg123-dev libopenal-dev libldap2-dev libcapi20-dev libcups2-dev libgphoto2-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libusb-1.0-0-dev libudev-dev libkrb5-dev ocl-icd-opencl-dev libgl1-mesa-dev libglu1-mesa-dev libosmesa6-dev libxcomposite-dev libxinerama-dev gcc-multilib g++-multilib libglu1-mesa-dev:i386 libosmesa6-dev:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 mesa-vulkan-drivers:i386 libvulkan1:i386 libgnutls28-dev:i386 libwayland-dev libpcap-dev libpcsclite-dev libsane-dev libunwind-dev libfreetype6-dev:i386 libxcursor-dev:i386 libxi-dev:i386 libxrandr-dev:i386 libxfixes-dev:i386 libxinerama-dev:i386 libxcomposite-dev:i386 libxrender-dev:i386 libasound2-dev:i386 libpulse-dev:i386 libdbus-1-dev:i386 libvulkan-dev:i386 libudev-dev:i386 libsdl2-dev:i386 libcups2-dev:i386 libfontconfig1-dev:i386 | |
- name: Clone Wine | |
run: git clone git://source.winehq.org/git/wine.git ~/wine-dirs/wine | |
- name: Extract Wine Version | |
id: wine_version | |
run: | | |
VERSION=$(cat ~/wine-dirs/wine/VERSION | sed 's/Wine version //') # Enlève "Wine version " du contenu | |
echo "Extracted version: $VERSION" | |
if [ -z "$VERSION" ]; then | |
echo "Failed to extract Wine version." | |
exit 1 | |
fi | |
echo "::set-output name=version::$VERSION" | |
- name: Get Latest Release Version | |
id: latest_release | |
run: | | |
LATEST_RELEASE_TAG=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r '.tag_name') | |
echo "Latest release tag: $LATEST_RELEASE_TAG" | |
echo "::set-output name=tag::$LATEST_RELEASE_TAG" | |
- name: Compare Versions | |
id: compare_versions | |
run: | | |
if [ "silverwine-${{ steps.wine_version.outputs.version }}" = "${{ steps.latest_release.outputs.tag }}" ]; then | |
echo "Version is the same as the latest release." | |
echo "::set-output name=should_skip::true" | |
else | |
echo "::set-output name=should_skip::false" | |
fi | |
- name: Build Wine64 | |
if: steps.compare_versions.outputs.should_skip == 'false' | |
run: | | |
mkdir ~/wine64 | |
cd ~/wine64 | |
../wine-dirs/wine/configure --enable-win64 # Configure pour x86_64 | |
make -j$(nproc) | |
DESTDIR="$HOME/finalbuild" make -j$(nproc) install | |
- name: Build Wine32 | |
if: steps.compare_versions.outputs.should_skip == 'false' | |
run: | | |
mkdir ~/wine32 | |
cd ~/wine32 | |
PKG_CONFIG_PATH=/usr/lib/pkgconfig ../wine-dirs/wine/configure CFLAGS="-march=native -O3 -pipe -fstack-protector-strong -I/usr/include/freetype2 -I/usr/lib/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/include/gstreamer-1.0" --with-wine64=../wine64 | |
make -j$(nproc) | |
DESTDIR="$HOME/finalbuild" make -j$(nproc) install | |
- name: Download and add Dependencies | |
if: steps.compare_versions.outputs.should_skip == 'false' | |
run: | | |
docker run --rm -v ${{ github.workspace }}:/workspace fedora /bin/bash -c "\ | |
dnf install -y dnf-plugins-core && \ | |
dnf config-manager --add-repo https://dl.winehq.org/wine-builds/fedora/39/winehq.repo && \ | |
dnf install -y diffutils && \ | |
ls /lib > ~/lib_before.txt && \ | |
ls /lib64 > ~/lib64_before.txt && \ | |
# dnf install -y wine-devel && \ | |
# dnf repoquery --requires --resolve wine-devel | xargs dnf download --destdir /workspace/fedoradeps | |
dnf install -y wine-devel && \ | |
ls /lib > ~/lib_after.txt && \ | |
ls /lib64 > ~/lib64_after.txt && \ | |
echo 'New libs list saved' && \ | |
echo 'Checking existence of /lib before and after lists' && \ | |
ls -l ~/lib_before.txt && \ | |
ls -l ~/lib_after.txt && \ | |
echo 'Checking differences in /lib' && \ | |
diff ~/lib_before.txt ~/lib_after.txt > ~/lib_diff.txt || true && \ | |
echo 'Diff command for /lib completed with exit status $?' && \ | |
echo 'Checking existence of /lib64 before and after lists' && \ | |
ls -l ~/lib64_before.txt && \ | |
ls -l ~/lib64_after.txt && \ | |
echo 'Checking differences in /lib64' && \ | |
diff ~/lib64_before.txt ~/lib64_after.txt > ~/lib64_diff.txt || true && \ | |
echo 'Diff command for /lib64 completed with exit status $?' && \ | |
echo 'Diff libs list saved' && \ | |
depsfolder=/workspace/deps && \ | |
mkdir -p \$depsfolder/lib && \ | |
mkdir -p \$depsfolder/lib64 && \ | |
grep '^>' ~/lib_diff.txt | sed 's/> //' | while read filename; do \ | |
cp -r \"/lib/\$filename\" \"\$depsfolder/lib/\"; \ | |
done && \ | |
grep '^>' ~/lib64_diff.txt | sed 's/> //' | while read filename; do \ | |
cp -r \"/lib64/\$filename\" \"\$depsfolder/lib64/\"; \ | |
done" | |
- name: Copy Dependencies to build | |
if: steps.compare_versions.outputs.should_skip == 'false' | |
run: | | |
mkdir -p ~/finalbuild/usr/local/deps | |
cp -r ${{ github.workspace }}/deps/lib/ ~/finalbuild/usr/local/deps | |
cp -r ${{ github.workspace }}/deps/lib64/ ~/finalbuild/usr/local/deps | |
cp /home/runner/work/silverwine/silverwine/silverwine ~/finalbuild/usr/local/bin | |
- name: Package Wine | |
if: steps.compare_versions.outputs.should_skip == 'false' | |
run: | | |
cd ~/ | |
tar -czvf silverwine-${{ steps.wine_version.outputs.version }}-x86_64.tar.gz -C ~/finalbuild/usr/local . | |
ls -l | |
pwd | |
- name: Create Release | |
if: steps.compare_versions.outputs.should_skip == 'false' | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: silverwine-${{ steps.wine_version.outputs.version }} | |
release_name: Silverwine ${{ steps.wine_version.outputs.version }} | |
draft: false | |
prerelease: false | |
- name: Upload Wine as Release Asset | |
if: steps.compare_versions.outputs.should_skip == 'false' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: "/home/runner/silverwine-${{ steps.wine_version.outputs.version }}-x86_64.tar.gz" | |
asset_name: silverwine-${{ steps.wine_version.outputs.version }}-x86_64.tar.gz | |
asset_content_type: application/gzip |