From 5a8989bdbe1372182a9c335785422ce5e2b8c07c Mon Sep 17 00:00:00 2001 From: Archez Date: Sun, 5 May 2024 17:13:42 -0400 Subject: [PATCH] Pack and publish release builds (#300) * pack release builds * changes * test * more * different unzip * different unzip 2 * add pr artifacts action * mm hashes * add gc rom * update linux sh * fix windows linking * give windows release a console * tweaks --- .github/workflows/main.yml | 74 ++++++++--------- .github/workflows/pr-artifacts.yml | 61 ++++++++++++++ CMake/Packaging-2.cmake | 6 +- CMakeLists.txt | 45 ++++++----- mm/CMakeLists.txt | 15 ++-- mm/linux/2s2h.desktop | 9 +++ mm/linux/2s2h.sh.in | 123 +++++++++++++++++++++++++++++ mm/linux/2s2hIcon.png | Bin 0 -> 64878 bytes mm/linux/build.sh | 6 ++ mm/src/code/main.c | 21 +++++ 10 files changed, 288 insertions(+), 72 deletions(-) create mode 100644 .github/workflows/pr-artifacts.yml create mode 100644 mm/linux/2s2h.desktop create mode 100644 mm/linux/2s2h.sh.in create mode 100644 mm/linux/2s2hIcon.png create mode 100755 mm/linux/build.sh diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4335d1d81..eae7e6bdb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,7 +17,7 @@ jobs: - name: Install dependencies run: | sudo apt update - sudo apt install -y $(cat .github/workflows/apt-deps.txt) + sudo apt install -y $(cat .github/workflows/apt-deps.txt) file - name: Install latest SDL run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" @@ -34,22 +34,22 @@ jobs: run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release + cmake --build build-cmake --config Release --target GenerateSohOtr -j cmake --build build-cmake --config Release -j - # Not building releases/artifacts for now - # (cd build-cmake && cpack -G External) - # mv README.md readme.txt - # mv build-cmake/*.appimage 2ship.appimage + (cd build-cmake && cpack -G External) + mv README.md readme.txt + mv build-cmake/*.appimage 2ship.appimage env: CC: gcc CXX: g++ - # - name: Upload build - # uses: actions/upload-artifact@v3 - # with: - # name: 2ship-linux-${{ matrix.archive-suffix }} - # path: | - # # 2ship.appimage - # readme.txt + - name: Upload build + uses: actions/upload-artifact@v4 + with: + name: 2ship-linux + path: | + 2ship.appimage + readme.txt # build-windows: # needs: generate-soh-otr-and-headers # runs-on: windows-latest @@ -122,17 +122,17 @@ jobs: - uses: actions/checkout@v3 with: submodules: true - - name: Cache build folder - uses: actions/cache@v4 - with: - save-always: true - key: ${{ runner.os }}-self-build-${{ github.ref }}-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-self-build-${{ github.ref }} - ${{ runner.os }}-self-build- - path: | - build-windows - vcpkg + # - name: Cache build folder + # uses: actions/cache@v4 + # with: + # save-always: true + # key: ${{ runner.os }}-self-build-${{ github.ref }}-${{ github.sha }} + # restore-keys: | + # ${{ runner.os }}-self-build-${{ github.ref }} + # ${{ runner.os }}-self-build- + # path: | + # build-windows + # vcpkg - name: Configure Developer Command Prompt uses: ilammy/msvc-dev-cmd@v1 - name: Copy Rom @@ -143,22 +143,16 @@ jobs: run: | set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH" cmake -S . -B build-windows -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_TYPE:STRING=Release - cmake --build build-windows --config Release --target ExtractAssetHeaders --parallel 10 + cmake --build build-windows --config Release --target GenerateSohOtr --parallel 10 cmake --build build-windows --config Release --parallel 10 - # Not building releases/artifacts for now - # mkdir 2ship-windows - # mv ./x64/Release/mm.exe ./2ship-windows/2ship.exe - # mkdir 2ship-windows/debug - # mkdir 2ship-windows/mods - # New-Item 2ship-windows/mods/custom_otr_files_go_here.txt -type file - # mv ./x64/Release/2ship.pdb ./2ship-windows/debug/2ship.pdb - # mv ./README.md ./2ship-windows/readme.txt - # mv ./build-windows/gamecontrollerdb.txt ./2ship-windows/gamecontrollerdb.txt - # mv ./x64/Release/assets ./2ship-windows - # mv ./soh.otr ./2ship-windows/soh.otr - # - name: Upload build - # uses: actions/upload-artifact@v4 - # with: - # name: 2ship-windows - # path: 2ship-windows + (cd build-windows && cpack) + cd .. + mv _packages/*.zip 2ship-windows.zip + - name: Unzip package + run: Expand-Archive -Path 2ship-windows.zip -DestinationPath 2ship-windows + - name: Upload build + uses: actions/upload-artifact@v4 + with: + name: 2ship-windows + path: 2ship-windows diff --git a/.github/workflows/pr-artifacts.yml b/.github/workflows/pr-artifacts.yml new file mode 100644 index 000000000..43b985b5d --- /dev/null +++ b/.github/workflows/pr-artifacts.yml @@ -0,0 +1,61 @@ +name: pr-artifacts + +on: + workflow_run: + workflows: [generate-builds] + types: + - completed + +jobs: + pr-artifacts: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.event == 'pull_request' }} + steps: + - id: 'pr-number' + uses: actions/github-script@v6 + with: + result-encoding: string + script: | + const {owner, repo} = context.repo; + const pullHeadSHA = '${{github.event.workflow_run.head_sha}}'; + const pullUserId = ${{github.event.sender.id}}; + const prNumber = await (async () => { + const pulls = await github.rest.pulls.list({owner, repo}); + for await (const {data} of github.paginate.iterator(pulls)) { + for (const pull of data) { + if (pull.head.sha === pullHeadSHA && pull.user.id === pullUserId) { + return pull.number; + } + } + } + })(); + + if (!prNumber) { + return core.error(`No matching pull request found`); + } + + return prNumber; + - id: 'artifacts-text' + uses: actions/github-script@v6 + with: + result-encoding: string + script: | + let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, + }); + + return allArtifacts.data.artifacts.reduce((acc, item) => { + if (item.name === "assets") return acc; + acc += ` + - [${item.name}.zip](https://nightly.link/${context.repo.owner}/${context.repo.repo}/actions/artifacts/${item.id}.zip)`; + return acc; + }, '### Build Artifacts'); + - id: 'add-to-pr' + uses: garrettjoecox/pr-section@3.1.0 + with: + repo-token: '${{ secrets.GITHUB_TOKEN }}' + pr-number: ${{ steps.pr-number.outputs.result }} + section-name: 'artifacts' + section-value: '${{ steps.artifacts-text.outputs.result }}' diff --git a/CMake/Packaging-2.cmake b/CMake/Packaging-2.cmake index c7b49ae92..38b4b7ac3 100644 --- a/CMake/Packaging-2.cmake +++ b/CMake/Packaging-2.cmake @@ -1,9 +1,9 @@ set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) set(CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY 0) -set(CPACK_COMPONENTS_ALL "2s2h" "extractor" "appimage") +set(CPACK_COMPONENTS_ALL "2s2h") -if (NOT CPACK_GENERATOR STREQUAL "External") - list(REMOVE_ITEM CPACK_COMPONENTS_ALL "appimage") +if (CPACK_GENERATOR STREQUAL "External") + list(APPEND CPACK_COMPONENTS_ALL "extractor" "appimage") endif() if (CPACK_GENERATOR MATCHES "DEB|RPM") diff --git a/CMakeLists.txt b/CMakeLists.txt index 65724a805..d52262995 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,20 +22,6 @@ endif() # Enable the Gfx debugger in LUS to use libgfxd from ZAPDTR set(GFX_DEBUG_DISASSEMBLER ON) -if (CMAKE_SYSTEM_NAME STREQUAL "Windows") -include(CMake/automate-vcpkg.cmake) - -if ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32") - set(VCPKG_TRIPLET x86-windows-static) - set(VCPKG_TARGET_TRIPLET x86-windows-static) -elseif ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64") - set(VCPKG_TRIPLET x64-windows-static) - set(VCPKG_TARGET_TRIPLET x64-windows-static) -endif() -vcpkg_bootstrap() -vcpkg_install_packages(zlib bzip2 libzip libpng sdl2 sdl2-net glew glfw3 nlohmann-json tinyxml2 spdlog) -endif() - ################################################################################ # Set target arch type if empty. Visual studio solution generator provides it. ################################################################################ @@ -51,6 +37,23 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") endif() endif() +################################################################################ +# VCPKG dependencies for Windows +################################################################################ +if (CMAKE_SYSTEM_NAME STREQUAL "Windows") +include(CMake/automate-vcpkg.cmake) + +if ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32") + set(VCPKG_TRIPLET x86-windows-static) + set(VCPKG_TARGET_TRIPLET x86-windows-static) +elseif ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64") + set(VCPKG_TRIPLET x64-windows-static) + set(VCPKG_TARGET_TRIPLET x64-windows-static) +endif() +vcpkg_bootstrap() +vcpkg_install_packages(zlib bzip2 libzip libpng sdl2 sdl2-net glew glfw3 nlohmann-json tinyxml2 spdlog) +endif() + ################################################################################ # Global configuration types ################################################################################ @@ -101,11 +104,11 @@ add_subdirectory(OTRExporter) add_subdirectory(mm) set_property(TARGET mm PROPERTY APPIMAGE_DESKTOP_FILE_TERMINAL YES) -set_property(TARGET mm PROPERTY APPIMAGE_DESKTOP_FILE "${CMAKE_SOURCE_DIR}/scripts/linux/appimage/2s2h.desktop") +set_property(TARGET mm PROPERTY APPIMAGE_DESKTOP_FILE "${CMAKE_SOURCE_DIR}/mm/linux/2s2h.desktop") set_property(TARGET mm PROPERTY APPIMAGE_ICON_FILE "${CMAKE_BINARY_DIR}/2s2hIcon.png") if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") -install(PROGRAMS "${CMAKE_BINARY_DIR}/linux/appimage/s2sh.sh" DESTINATION . COMPONENT appimage) +install(PROGRAMS "${CMAKE_BINARY_DIR}/linux/2s2h.sh" DESTINATION . COMPONENT appimage) install(FILES "${CMAKE_SOURCE_DIR}/soh.otr" DESTINATION . COMPONENT ship) install(TARGETS ZAPD DESTINATION ./assets/extractor COMPONENT extractor) install(DIRECTORY "${CMAKE_SOURCE_DIR}/mm/assets/extractor/" DESTINATION ./assets/extractor COMPONENT extractor) @@ -162,13 +165,7 @@ add_custom_target( ) if(CMAKE_SYSTEM_NAME MATCHES "Linux") - find_package(ImageMagick COMPONENTS convert) - if (ImageMagick_FOUND) - execute_process ( - COMMAND ${ImageMagick_convert_EXECUTABLE} mm/macosx/2s2hIcon.png -resize 512x512 ${CMAKE_BINARY_DIR}/2s2hIcon.png - OUTPUT_VARIABLE outVar - ) - endif() +file(COPY ${CMAKE_SOURCE_DIR}/mm/linux/2s2hIcon.png DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) endif() if(CMAKE_SYSTEM_NAME MATCHES "Darwin") @@ -216,6 +213,8 @@ endif() if(CMAKE_SYSTEM_NAME MATCHES "Windows|NintendoSwitch|CafeOS") install(FILES ${CMAKE_SOURCE_DIR}/README.md DESTINATION . COMPONENT 2s2h RENAME readme.txt ) +install(CODE "file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/mods\")" COMPONENT 2s2h) +install(CODE "file(TOUCH \"\${CMAKE_INSTALL_PREFIX}/mods/custom_mod_files_go_here.txt\")" COMPONENT 2s2h) endif() if(CMAKE_SYSTEM_NAME MATCHES "Linux") diff --git a/mm/CMakeLists.txt b/mm/CMakeLists.txt index d814aa874..36a71ec27 100644 --- a/mm/CMakeLists.txt +++ b/mm/CMakeLists.txt @@ -428,7 +428,7 @@ target_include_directories(${PROJECT_NAME} PRIVATE assets . ) -if (CMAKE_SYSTEM_NAME STREQUAL "Windows") +if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64") target_compile_definitions(${PROJECT_NAME} PRIVATE "$<$:" @@ -439,9 +439,8 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") "$<$:" "NDEBUG" ">" -# "$<$:ENABLE_CROWD_CONTROL>" + # "$<$:ENABLE_CROWD_CONTROL>" "INCLUDE_GAME_PRINTF;" - # "ENABLE_CROWD_CONTROL;" "UNICODE;" "_UNICODE" STORMLIB_NO_AUTO_LINK @@ -490,7 +489,7 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang") "$<$:" "NDEBUG" ">" -# "$<$:ENABLE_CROWD_CONTROL>" + # "$<$:ENABLE_CROWD_CONTROL>" "SPDLOG_ACTIVE_LEVEL=0;" "_CONSOLE;" "_CRT_SECURE_NO_WARNINGS;" @@ -717,7 +716,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") "glu32;" "SDL2::SDL2;" "SDL2::SDL2main;" - # "$<$:SDL2_net::SDL2_net-static>" + # "$<$:SDL2_net::SDL2_net-static>" "glfw;" "winmm;" "imm32;" @@ -777,11 +776,15 @@ if(NOT CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch|CafeOS") INSTALL(TARGETS mm DESTINATION . COMPONENT 2s2h) endif() -if (CMAKE_SYSTEM_NAME STREQUAL "Windows") +if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") INSTALL(FILES $ DESTINATION ./debug COMPONENT 2s2h) INSTALL(FILES ${CMAKE_BINARY_DIR}/mm/soh.otr DESTINATION . COMPONENT 2s2h) endif() +if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/linux/2s2h.sh.in ${CMAKE_BINARY_DIR}/linux/2s2h.sh @ONLY) +endif() + find_program(CURL NAMES curl DOC "Path to the curl program. Used to download files.") execute_process(COMMAND ${CURL} -sSfL https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt -o ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt OUTPUT_VARIABLE RESULT) diff --git a/mm/linux/2s2h.desktop b/mm/linux/2s2h.desktop new file mode 100644 index 000000000..6815fb057 --- /dev/null +++ b/mm/linux/2s2h.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Name=2SHIP +Exec=2s2h.sh +Terminal=false +Icon=2s2hIcon +Type=Application +Categories=Game; +X-AppImage-Integrate=false diff --git a/mm/linux/2s2h.sh.in b/mm/linux/2s2h.sh.in new file mode 100644 index 000000000..6843de16b --- /dev/null +++ b/mm/linux/2s2h.sh.in @@ -0,0 +1,123 @@ +#!/bin/bash +HERE="$(dirname "$(readlink -f "${0}")")"/../.. + +export PATH="$HERE"/bin:"$HERE"/usr/bin:"$PATH" +export LD_LIBRARY_PATH="$HERE"/usr/lib:"$LD_LIBRARY_PATH" +export ZENITY=$(command -v zenity) + +if [ -z ${SHIP_HOME+x} ]; then +export SHIP_HOME=$PWD +fi + +if [ -z ${SHIP_BIN_DIR+x} ]; then +export SHIP_BIN_DIR="$HERE/usr/bin" +fi + +if [[ ! -e "$SHIP_HOME"/mods ]]; then + mkdir -p "$SHIP_HOME"/mods + touch "$SHIP_HOME"/mods/custom_mod_files_go_here.txt +fi + +while [[ (! -e "$SHIP_HOME"/mm.otr) ]]; do + for romfile in "$SHIP_HOME"/*.*64 + do + if [[ -e "$romfile" ]] || [[ -L "$romfile" ]]; then + export ASSETDIR="$(mktemp -d /tmp/assets-XXXXX)" + ln -s "$SHIP_BIN_DIR"/{assets,2s2h.elf,ZAPD} "$ASSETDIR" + export OLDPWD="$PWD" + mkdir -p "$ASSETDIR"/tmp + if [[ -e "$romfile" ]]; then + ln -s "$romfile" "$ASSETDIR"/tmp/rom.z64 + else + ORIG_ROM_PATH=$(readlink "$romfile") + ln -s "$ORIG_ROM_PATH" "$ASSETDIR"/tmp/rom.z64 + fi + cd "$ASSETDIR" + ROMHASH=$(sha1sum -b "$ASSETDIR"/tmp/rom.z64 | awk '{ print $1 }') + + # Remap v64 and n64 hashes to their z64 hash equivalent + # ZAPD will handle converting the data into z64 format + case "$ROMHASH" in + ef6d7273a7bc1cbf778f9021753db5efddfe495e) # v64 + ROMHASH=7f5630dbc4d5d61d6276213210c4d5cdd83a47d6 + ;; + 991460c32f53c7bb0bc650baf5a40ffde6165840) # n64 + ROMHASH=7f5630dbc4d5d61d6276213210c4d5cdd83a47d6 + ;; + 22f8bfa1ab6c763013a3c2a568bb014395b12499) # v64 + ROMHASH=d6133ace5afaa0882cf214cf88daba39e266c078 + ;; + 1a26735c63cb3bdf5eb32d21acf774ee6724f227) # n64 + ROMHASH=d6133ace5afaa0882cf214cf88daba39e266c078 + ;; + 8c378b87c83b3f4de20b14accf91e7590399f5dc) # v64 + ROMHASH=9743aa026e9269b339eb0e3044cd5830a440c1fd + ;; + 8b0436e540b95a5353969d4ee360273cf33fb659) # n64 + ROMHASH=9743aa026e9269b339eb0e3044cd5830a440c1fd + ;; + esac + + case "$ROMHASH" in + 7f5630dbc4d5d61d6276213210c4d5cdd83a47d6) # uncompressed + if [[ ! -e "$SHIP_HOME"/mm.otr ]]; then + ROM=N64_US + else + continue + fi + ;; + d6133ace5afaa0882cf214cf88daba39e266c078) # compressed + if [[ ! -e "$SHIP_HOME"/mm.otr ]]; then + ROM=N64_US + else + continue + fi + ;; + 9743aa026e9269b339eb0e3044cd5830a440c1fd) # compressed + if [[ ! -e "$SHIP_HOME"/mm.otr ]]; then + ROM=GC_US + else + continue + fi + ;; + *) + echo -e "\n$romfile - $ROMHASH rom hash does not match\n" + continue;; + esac + if [[ ! -e "$SHIP_HOME"/mm.otr ]]; then + if [ -n "$ZENITY" ]; then + (echo "# 25%"; echo "25"; sleep 2; echo "# 50%"; echo "50"; sleep 3; echo "# 75%"; echo "75"; sleep 2; echo "# 100%"; echo "100"; sleep 3) | + zenity --progress --title="OTR Generating..." --timeout=10 --percentage=0 --icon-name=2s2h --window-icon=2s2h.png --height=80 --width=400 & + else + echo "Processing..." + fi + assets/extractor/ZAPD.out ed -eh -i assets/extractor/xmls/"${ROM}" -b tmp/rom.z64 -fl assets/extractor/filelists -o placeholder -osf placeholder -gsf 1 -rconf assets/extractor/Config_"${ROM}".xml -se OTR --otrfile mm.otr --portVer "@CMAKE_PROJECT_VERSION@" > /dev/null 2>&1 + cp "$ASSETDIR"/mm.otr "$SHIP_HOME" + fi + else + if [[ (! -e "$SHIP_HOME"/mm.otr) ]]; then + if [ -n "$ZENITY" ]; then + zenity --error --timeout=5 --text="Place ROM in $SHIP_HOME" --title="Missing ROM file" --width=500 --width=200 + else + echo -e "\nPlace ROM in this folder\n" + fi + exit + fi + fi + done + if [[ (! -e "$SHIP_HOME"/mm.otr) ]]; then + if [ -n "$ZENITY" ]; then + zenity --error --timeout=10 --text="No valid ROMs were provided, No OTR was generated." --title="Incorrect ROM file" --width=500 --width=200 + else + echo "No valid roms provided, no OTR was generated." + fi + rm -r "$ASSETDIR" + exit + else + (cd "$SHIP_BIN_DIR"; ./2s2h.elf) + exit + fi + rm -r "$ASSETDIR" +done + (cd "$SHIP_BIN_DIR"; ./2s2h.elf) +exit diff --git a/mm/linux/2s2hIcon.png b/mm/linux/2s2hIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..227a7500821defd22434946d542122819d94d03e GIT binary patch literal 64878 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 +#include +#endif + #include "audiomgr.h" #include "fault.h" #include "idle.h" @@ -50,6 +55,18 @@ void SDL_main(int argc, char** argv /* void* arg*/) { intptr_t sysHeap; s32 exit; s16* msg; + +// Attach console for windows so we can conditionally display it when running the extractor +#ifdef _WIN32 + AllocConsole(); + (void)freopen("CONIN$", "r", stdin); + (void)freopen("CONOUT$", "w", stdout); + (void)freopen("CONOUT$", "w", stderr); +#ifndef _DEBUG + ShowWindow(GetConsoleWindow(), SW_HIDE); +#endif +#endif // _WIN32 + InitOTR(); Heaps_Alloc(); @@ -123,4 +140,8 @@ void SDL_main(int argc, char** argv /* void* arg*/) { osDestroyThread(&gGraphThread); DeinitOTR(); + +#ifdef _WIN32 + FreeConsole(); +#endif }