diff --git a/.ci/scripts/windows/docker.sh b/.ci/scripts/windows/docker.sh deleted file mode 100755 index 44023600d..000000000 --- a/.ci/scripts/windows/docker.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash -ex - -# SPDX-FileCopyrightText: 2019 yuzu Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -set -e - -#cd /yuzu - -ccache -sv - -mkdir -p build && cd build -cmake .. \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_TOOLCHAIN_FILE="${PWD}/../CMakeModules/MinGWCross.cmake" \ - -DDISPLAY_VERSION="$1" \ - -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \ - -DENABLE_QT_TRANSLATION=ON \ - -DUSE_CCACHE=ON \ - -DYUZU_USE_BUNDLED_SDL2=OFF \ - -DYUZU_USE_EXTERNAL_SDL2=OFF \ - -DYUZU_TESTS=OFF \ - -GNinja -ninja yuzu yuzu-cmd - -ccache -sv - -echo "Tests skipped" -#ctest -VV -C Release - -echo 'Prepare binaries...' -cd .. -mkdir package - -if [ -d "/usr/x86_64-w64-mingw32/lib/qt5/plugins/platforms/" ]; then - QT_PLUGINS_PATH='/usr/x86_64-w64-mingw32/lib/qt5/plugins' -else - #fallback to qt - QT_PLUGINS_PATH='/usr/x86_64-w64-mingw32/lib/qt/plugins' -fi - -find build/ -name "yuzu*.exe" -exec cp {} 'package' \; - -# copy Qt plugins -mkdir package/platforms -cp -v "${QT_PLUGINS_PATH}/platforms/qwindows.dll" package/platforms/ -cp -rv "${QT_PLUGINS_PATH}/mediaservice/" package/ -cp -rv "${QT_PLUGINS_PATH}/imageformats/" package/ -cp -rv "${QT_PLUGINS_PATH}/styles/" package/ -rm -f package/mediaservice/*d.dll - -for i in package/*.exe; do - # we need to process pdb here, however, cv2pdb - # does not work here, so we just simply strip all the debug symbols - x86_64-w64-mingw32-strip "${i}" -done - -python3 .ci/scripts/windows/scan_dll.py package/*.exe package/imageformats/*.dll "package/" - -# copy FFmpeg libraries -EXTERNALS_PATH="$(pwd)/build/externals" -FFMPEG_DLL_PATH="$(find "${EXTERNALS_PATH}" -maxdepth 1 -type d | grep 'ffmpeg-')/bin" -find ${FFMPEG_DLL_PATH} -type f -regex ".*\.dll" -exec cp -nv {} package/ ';' - -# copy libraries from yuzu.exe path -find "$(pwd)/build/bin/" -type f -regex ".*\.dll" -exec cp -v {} package/ ';' diff --git a/.ci/scripts/windows/exec.sh b/.ci/scripts/windows/exec.sh deleted file mode 100644 index ca74eeba5..000000000 --- a/.ci/scripts/windows/exec.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -ex - -# SPDX-FileCopyrightText: 2019 yuzu Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -mkdir -p "ccache" || true -chmod a+x ./.ci/scripts/windows/docker.sh -# the UID for the container yuzu user is 1027 -sudo chown -R 1027 ./ -docker run -e CCACHE_DIR=/yuzu/ccache -v "$(pwd):/yuzu" -w /yuzu yuzuemu/build-environments:linux-mingw /bin/bash -ex /yuzu/.ci/scripts/windows/docker.sh "$1" -sudo chown -R $UID ./ diff --git a/.ci/scripts/windows/install-vulkan-sdk.ps1 b/.ci/scripts/windows/install-vulkan-sdk.ps1 deleted file mode 100644 index de218d90a..000000000 --- a/.ci/scripts/windows/install-vulkan-sdk.ps1 +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: 2023 yuzu Emulator Project -# SPDX-License-Identifier: GPL-3.0-or-later - -$ErrorActionPreference = "Stop" - -$VulkanSDKVer = "1.3.250.1" -$ExeFile = "VulkanSDK-$VulkanSDKVer-Installer.exe" -$Uri = "https://sdk.lunarg.com/sdk/download/$VulkanSDKVer/windows/$ExeFile" -$Destination = "./$ExeFile" - -echo "Downloading Vulkan SDK $VulkanSDKVer from $Uri" -$WebClient = New-Object System.Net.WebClient -$WebClient.DownloadFile($Uri, $Destination) -echo "Finished downloading $ExeFile" - -$VULKAN_SDK = "C:/VulkanSDK/$VulkanSDKVer" -$Arguments = "--root `"$VULKAN_SDK`" --accept-licenses --default-answer --confirm-command install" - -echo "Installing Vulkan SDK $VulkanSDKVer" -$InstallProcess = Start-Process -FilePath $Destination -NoNewWindow -PassThru -Wait -ArgumentList $Arguments -$ExitCode = $InstallProcess.ExitCode - -if ($ExitCode -ne 0) { - echo "Error installing Vulkan SDK $VulkanSDKVer (Error: $ExitCode)" - Exit $ExitCode -} - -echo "Finished installing Vulkan SDK $VulkanSDKVer" - -if ("$env:GITHUB_ACTIONS" -eq "true") { - echo "VULKAN_SDK=$VULKAN_SDK" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - echo "$VULKAN_SDK/Bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append -} diff --git a/.ci/scripts/windows/scan_dll.py b/.ci/scripts/windows/scan_dll.py deleted file mode 100644 index a536f7375..000000000 --- a/.ci/scripts/windows/scan_dll.py +++ /dev/null @@ -1,109 +0,0 @@ -# SPDX-FileCopyrightText: 2019 yuzu Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -import pefile -import sys -import re -import os -import queue -import shutil - -# constant definitions -KNOWN_SYS_DLLS = ['WINMM.DLL', 'MSVCRT.DLL', 'VERSION.DLL', 'MPR.DLL', - 'DWMAPI.DLL', 'UXTHEME.DLL', 'DNSAPI.DLL', 'IPHLPAPI.DLL'] -# below is for Ubuntu 18.04 with specified PPA enabled, if you are using -# other distro or different repositories, change the following accordingly -DLL_PATH = [ - '/usr/x86_64-w64-mingw32/bin/', - '/usr/x86_64-w64-mingw32/lib/', - '/usr/lib/gcc/x86_64-w64-mingw32/7.3-posix/' -] - -missing = [] - - -def parse_imports(file_name): - results = [] - pe = pefile.PE(file_name, fast_load=True) - pe.parse_data_directories() - - for entry in pe.DIRECTORY_ENTRY_IMPORT: - current = entry.dll.decode() - current_u = current.upper() # b/c Windows is often case insensitive - # here we filter out system dlls - # dll w/ names like *32.dll are likely to be system dlls - if current_u.upper() not in KNOWN_SYS_DLLS and not re.match(string=current_u, pattern=r'.*32\.DLL'): - results.append(current) - - return results - - -def parse_imports_recursive(file_name, path_list=[]): - q = queue.Queue() # create a FIFO queue - # file_name can be a string or a list for the convenience - if isinstance(file_name, str): - q.put(file_name) - elif isinstance(file_name, list): - for i in file_name: - q.put(i) - full_list = [] - while q.qsize(): - current = q.get_nowait() - print('> %s' % current) - deps = parse_imports(current) - # if this dll does not have any import, ignore it - if not deps: - continue - for dep in deps: - # the dependency already included in the list, skip - if dep in full_list: - continue - # find the requested dll in the provided paths - full_path = find_dll(dep) - if not full_path: - missing.append(dep) - continue - full_list.append(dep) - q.put(full_path) - path_list.append(full_path) - return full_list - - -def find_dll(name): - for path in DLL_PATH: - for root, _, files in os.walk(path): - for f in files: - if name.lower() == f.lower(): - return os.path.join(root, f) - - -def deploy(name, dst, dry_run=False): - dlls_path = [] - parse_imports_recursive(name, dlls_path) - for dll_entry in dlls_path: - if not dry_run: - shutil.copy(dll_entry, dst) - else: - print('[Dry-Run] Copy %s to %s' % (dll_entry, dst)) - print('Deploy completed.') - return dlls_path - - -def main(): - if len(sys.argv) < 3: - print('Usage: %s [files to examine ...] [target deploy directory]') - return 1 - to_deploy = sys.argv[1:-1] - tgt_dir = sys.argv[-1] - if not os.path.isdir(tgt_dir): - print('%s is not a directory.' % tgt_dir) - return 1 - print('Scanning dependencies...') - deploy(to_deploy, tgt_dir) - if missing: - print('Following DLLs are not found: %s' % ('\n'.join(missing))) - return 0 - - -if __name__ == '__main__': - main() diff --git a/.ci/scripts/windows/upload.ps1 b/.ci/scripts/windows/upload.ps1 deleted file mode 100644 index 492763420..000000000 --- a/.ci/scripts/windows/upload.ps1 +++ /dev/null @@ -1,118 +0,0 @@ -# SPDX-FileCopyrightText: 2019 yuzu Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -param($BUILD_NAME) - -$GITDATE = $(git show -s --date=short --format='%ad') -replace "-", "" -$GITREV = $(git show -s --format='%h') - -if ("$BUILD_NAME" -eq "mainline") { - $RELEASE_DIST = "yuzu-windows-msvc" -} -else { - $RELEASE_DIST = "yuzu-windows-msvc-$BUILD_NAME" -} - -$MSVC_BUILD_ZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", "" -$MSVC_BUILD_PDB = "yuzu-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", "" -$MSVC_SEVENZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", "" -$MSVC_TAR = "yuzu-windows-msvc-$GITDATE-$GITREV.tar" -replace " ", "" -$MSVC_TARXZ = "yuzu-windows-msvc-$GITDATE-$GITREV.tar.xz" -replace " ", "" -$MSVC_SOURCE = "yuzu-windows-msvc-source-$GITDATE-$GITREV" -replace " ", "" -$MSVC_SOURCE_TAR = "$MSVC_SOURCE.tar" -$MSVC_SOURCE_TARXZ = "$MSVC_SOURCE_TAR.xz" - -$env:BUILD_ZIP = $MSVC_BUILD_ZIP -$env:BUILD_SYMBOLS = $MSVC_BUILD_PDB -$env:BUILD_UPDATE = $MSVC_SEVENZIP - -if (Test-Path -Path ".\build\bin\Release") { - $BUILD_DIR = ".\build\bin\Release" -} else { - $BUILD_DIR = ".\build\bin\" -} - -# Cleanup unneeded data in submodules -git submodule foreach git clean -fxd - -# Upload debugging symbols -mkdir pdb -Get-ChildItem "$BUILD_DIR\" -Recurse -Filter "*.pdb" | Copy-Item -destination .\pdb -7z a -tzip $MSVC_BUILD_PDB .\pdb\*.pdb -rm "$BUILD_DIR\*.pdb" - -# Create artifact directories -mkdir $RELEASE_DIST -mkdir $MSVC_SOURCE -mkdir "artifacts" - -$CURRENT_DIR = Convert-Path . - -# Build a tar.xz for the source of the release -git clone --depth 1 file://$CURRENT_DIR $MSVC_SOURCE -7z a -r -ttar $MSVC_SOURCE_TAR $MSVC_SOURCE -7z a -r -txz $MSVC_SOURCE_TARXZ $MSVC_SOURCE_TAR - -# Following section is quick hack to package artifacts differently for GitHub Actions -if ("$env:GITHUB_ACTIONS" -eq "true") { - echo "Hello GitHub Actions" - - # With vcpkg we now have a few more dll files - ls .\build\bin\*.dll - cp .\build\bin\*.dll .\artifacts\ - - # Hopefully there is an exe in either .\build\bin or .\build\bin\Release - cp .\build\bin\yuzu*.exe .\artifacts\ - Copy-Item "$BUILD_DIR\*" -Destination "artifacts" -Recurse - Remove-Item .\artifacts\tests.exe -ErrorAction ignore - - # None of the other GHA builds are including source, so commenting out today - #Copy-Item $MSVC_SOURCE_TARXZ -Destination "artifacts" - - # Debugging symbols - cp .\build\bin\yuzu*.pdb .\artifacts\ - - # Write out a tag BUILD_TAG to environment for the Upload step - # We're getting ${{ github.event.number }} as $env:PR_NUMBER" - echo "env:PR_NUMBER: $env:PR_NUMBER" - if (Test-Path env:PR_NUMBER) { - $PR_NUMBER = $env:PR_NUMBER.Substring(2) -as [int] - $PR_NUMBER_TAG = "pr"+([string]$PR_NUMBER).PadLeft(5,'0') - if ($PR_NUMBER -gt 1){ - $BUILD_TAG="verify-$PR_NUMBER_TAG-$GITDATE-$GITREV" - } else { - $BUILD_TAG = "verify-$GITDATE-$GITREV" - } - } else { - # If env:PR_NUMBER isn't set, we should still write out a variable - $BUILD_TAG = "verify-$GITDATE-$GITREV" - } - echo "BUILD_TAG=$BUILD_TAG" - echo "BUILD_TAG=$BUILD_TAG" >> $env:GITHUB_ENV - - # For extra job, just the exe - $INDIVIDUAL_EXE = "yuzu-msvc-$BUILD_TAG.exe" - echo "INDIVIDUAL_EXE=$INDIVIDUAL_EXE" - echo "INDIVIDUAL_EXE=$INDIVIDUAL_EXE" >> $env:GITHUB_ENV - echo "Just the exe: $INDIVIDUAL_EXE" - cp .\artifacts\yuzu.exe .\$INDIVIDUAL_EXE - - -} else { - -# Build the final release artifacts -Copy-Item $MSVC_SOURCE_TARXZ -Destination $RELEASE_DIST -Copy-Item "$BUILD_DIR\*" -Destination $RELEASE_DIST -Recurse -rm "$RELEASE_DIST\*.exe" -Get-ChildItem "$BUILD_DIR" -Recurse -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST -Get-ChildItem "$BUILD_DIR" -Recurse -Filter "QtWebEngineProcess*.exe" | Copy-Item -destination $RELEASE_DIST -7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\* -7z a $MSVC_SEVENZIP $RELEASE_DIST - -7z a -r -ttar $MSVC_TAR $RELEASE_DIST -7z a -r -txz $MSVC_TARXZ $MSVC_TAR - -Get-ChildItem . -Filter "*.zip" | Copy-Item -destination "artifacts" -Get-ChildItem . -Filter "*.7z" | Copy-Item -destination "artifacts" -Get-ChildItem . -Filter "*.tar.xz" | Copy-Item -destination "artifacts" -} diff --git a/.ci/scripts/windows/upload.sh b/.ci/scripts/windows/upload.sh deleted file mode 100755 index 4aa5be544..000000000 --- a/.ci/scripts/windows/upload.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -ex - -# SPDX-FileCopyrightText: 2019 yuzu Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -. .ci/scripts/common/pre-upload.sh - -REV_NAME="yuzu-windows-mingw-${GITDATE}-${GITREV}" -ARCHIVE_NAME="${REV_NAME}.tar.xz" -COMPRESSION_FLAGS="-cJvf" - -if [ "${RELEASE_NAME}" = "mainline" ]; then - DIR_NAME="${REV_NAME}" -else - DIR_NAME="${REV_NAME}_${RELEASE_NAME}" -fi - -mkdir "$DIR_NAME" -# get around the permission issues -cp -r package/* "$DIR_NAME" - -. .ci/scripts/common/post-upload.sh