diff --git a/.azure/common-steps.yml b/.azure/common-steps.yml new file mode 100644 index 00000000..ae5290c2 --- /dev/null +++ b/.azure/common-steps.yml @@ -0,0 +1,33 @@ +parameters: + pythonVersion: '' + +steps: + - task: DownloadSecureFile@1 + name: privateKey + displayName: 'Download SSH private key' + inputs: + secureFile: 'id_rsa-azure' + + - task: InstallSSHKey@0 + displayName: 'Install SSH key' + inputs: + knownHostsEntry: "|1|5qWKb7xAKkWXfLw6ZdNAs9FzKNA=|A+W82x1iZWz+nXHgPdlIQmsEOsU= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" + sshKeySecureFile: 'id_rsa-azure' + + - script: | + git config --global user.name "Garrett Brown" + git config --global user.email "themagnificentmrb@gmail.com" + displayName: 'Set Git authorship' + + - script: | + git clone --branch retroplayer-21 --depth=1 https://github.com/garbear/xbmc.git kodi + displayName: 'Clone Kodi' + + - task: UsePythonVersion@0 + inputs: + versionSpec: ${{ parameters.pythonVersion }} + + - script: | + python3 -m pip install --upgrade pip + python3 -m pip install -r requirements.txt + displayName: 'Install Python requirements' diff --git a/.azure/job-template.yml b/.azure/job-template.yml new file mode 100644 index 00000000..1ade4e84 --- /dev/null +++ b/.azure/job-template.yml @@ -0,0 +1,50 @@ +parameters: + displayName: '' + vmImage: '' + pythonVersion: '' + dependsOn: '' + addons: [] + installScript: '' + +jobs: + - job: ${{ parameters.displayName }} + displayName: ${{ parameters.displayName }} + pool: + vmImage: ${{ parameters.vmImage }} + dependsOn: ${{ parameters.dependsOn }} + strategy: + matrix: + Python3: + python.version: ${{ parameters.pythonVersion }} + timeoutInMinutes: 0 + steps: + - template: common-steps.yml + parameters: + pythonVersion: ${{ parameters.pythonVersion }} + + # Optional dependency installation script + - script: | + sudo apt update + ${{ parameters.installScript }} + displayName: 'Install system dependencies' + condition: ne('${{ parameters.installScript }}', '') + + - template: azure-process-addon.yml + parameters: + addons: ${{ parameters.addons }} + + - script: | + echo + echo "wiki.txt:" + echo + cat game-addons/wiki.txt || true + echo + displayName: 'Print wiki.txt' + + - script: | + echo + echo "summary.html:" + echo + cat game-addons/summary.html || true + echo + displayName: 'Print summary.html' diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b27dbb8a..9a6a2c0f 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,6 +1,6 @@ ################################################################################ # -# Pipeline to process Kodi game -addons +# Pipeline to process Kodi game-addons # ################################################################################ @@ -18,36 +18,155 @@ trigger: - todo-disabled-for-now +schedules: +- cron: "0 2 * * *" # Every day at 02:00 UTC + always: true + branches: + include: + - master + jobs: - - job: Build - pool: + - template: .azure/job-template.yml + parameters: + displayName: "BuildYabauseToReicast" vmImage: 'ubuntu-22.04' + pythonVersion: '3.10' + installScript: | + # same_cdi + dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev - strategy: - matrix: - Python310: - python.version: '3.10' + # vecx + dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev - timeoutInMinutes: 0 # Use the maximum limit + # wolfenstein3d + #dpkg -s libsdl1.2-dev || sudo apt install -y libsdl1.2-dev - steps: - # Download secure file to the agent machine - - task: DownloadSecureFile@1 - name: privateKey # The name with which to reference the secure file's path on the agent - displayName: 'Download SSH private key' - inputs: - secureFile: 'id_rsa-azure' # The file name or GUID of the secure file + # yabasanshiro + dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev + addons: + - yabause + - yabasanshiro + - xrick + - xmil + #- wolfenstein3d # Doesn't compile + - virtualjaguar + - vice_xvic + - vice_xscpu64 + - vice_xplus4 + - vice_xpet + - vice_xcbm5x0 + - vice_xcbm2 + - vice_x64sc + - vice_x64dtv + - vice_x64 + - vice_x128 + - vemulator + - vecx + - vbam + - vba-next + - uzem + #- uae4arm # Doesn't run on x86_64 + - uae + - tyrquake + - thepowdertoy + - theodore + - tgbdual + - swanstation + - supafaust + - stella + - snes9x2010 + - snes9x2002 + - snes9x + - smsplus-gx + - scummvm + - sameboy + - same_cdi + #- rustation # Disabled for now + - retro8 + - remotejoy + - reminiscence + + - template: .azure/job-template.yml + parameters: + displayName: "BuildRedbook" + vmImage: 'ubuntu-20.04' + pythonVersion: '3.10' + dependsOn: "BuildYabauseToReicast" + installScript: "" + addons: + - redbook + + - template: .azure/job-template.yml + parameters: + displayName: "BuildRaceToPCSXRearmed" + vmImage: 'ubuntu-22.04' + pythonVersion: '3.10' + dependsOn: "BuildRedbook" + installScript: | + # ppsspp + dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev + addons: + - race + - quicknes + - quasi88 + - px68k + - prosystem + - prboom + - ppsspp + - potator + - pokemini + - pocketcdg + - picodrive + - pcsx-rearmed + + - template: .azure/job-template.yml + parameters: + displayName: "BuildPcemToParallext" + vmImage: 'ubuntu-20.04' + pythonVersion: '3.10' + dependsOn: "BuildRaceToPCSXRearmed" + installScript: | + # parallext + dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev + dpkg -s nasm || sudo apt install -y nasm + addons: + - pcem + - parallext - # Install SSH key prior to a build or deployment - - task: InstallSSHKey@0 - inputs: - knownHostsEntry: "|1|5qWKb7xAKkWXfLw6ZdNAs9FzKNA=|A+W82x1iZWz+nXHgPdlIQmsEOsU= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" - sshKeySecureFile: 'id_rsa-azure' + - template: .azure/job-template.yml + parameters: + displayName: "BuildParallelN64ToOpera" + vmImage: 'ubuntu-22.04' + pythonVersion: '3.10' + dependsOn: "BuildPcemToParallext" + installScript: | + # parallel_n64 + dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev + dpkg -s nasm || sudo apt install -y nasm + addons: + - parallel_n64 + - opera - - script: | - sudo apt update + - template: .azure/job-template.yml + parameters: + displayName: "BuildOpenLara" + vmImage: 'ubuntu-20.04' + pythonVersion: '3.10' + dependsOn: "BuildParallelN64ToOpera" + installScript: | + # openlara + dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev + addons: + - openlara + - template: .azure/job-template.yml + parameters: + displayName: "BuildOberonTo2048" + vmImage: 'ubuntu-22.04' + pythonVersion: '3.10' + dependsOn: "BuildOpenLara" + installScript: | # 3dengine dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev @@ -71,10 +190,9 @@ jobs: dpkg -s libxrandr-dev || sudo apt install -y libxrandr-dev dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev - # dosbox-core - #dpkg -s libasound2-dev || sudo apt install -y libasound2-dev - #dpkg -s libtool-bin || sudo apt install -y libtool-bin - #dpkg -s ninja-build || sudo apt install -y ninja-build + # easyrpg + dpkg -s libfmt-dev || sudo apt install -y libfmt-dev + dpkg -s libinih-dev || sudo apt install -y libinih-dev # flycast dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev @@ -121,238 +239,105 @@ jobs: # mupen64plus-nx dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev dpkg -s nasm || sudo apt install -y nasm - - # openlara - dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev - - # parallel_n64 - dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev - dpkg -s nasm || sudo apt install -y nasm - - # parallext - dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev - dpkg -s nasm || sudo apt install -y nasm - - # ppsspp - dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev - - # reicast - #dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev - - # same_cdi - dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev - - # vecx - dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev - - # wolfenstein3d - #dpkg -s libsdl1.2-dev || sudo apt install -y libsdl1.2-dev - - # yabasanshiro - dpkg -s mesa-common-dev || sudo apt install -y mesa-common-dev - displayName: 'Install system dependencies' - - # TODO: git authorship - - script: | - git config --global user.name "Garrett Brown" - git config --global user.email "themagnificentmrb@gmail.com" - displayName: 'Set Git authorship' - - - script: | - git clone --branch retroplayer-21 --depth=1 https://github.com/garbear/xbmc.git kodi - displayName: 'Clone Kodi' - - - task: UsePythonVersion@0 - inputs: - versionSpec: $(python.version) - - - script: | - pip3 install -r requirements.txt - displayName: 'Install Python requirements' - - - template: .azure/azure-process-addon.yml - parameters: - # List add-ons in reverse order for sorted results in the kodi-game org - addons: - - yabause - - yabasanshiro - - xrick - - xmil - #- wolfenstein3d # Doesn't compile - - virtualjaguar - - vice_xvic - - vice_xscpu64 - - vice_xplus4 - - vice_xpet - - vice_xcbm5x0 - - vice_xcbm2 - - vice_x64sc - - vice_x64dtv - - vice_x64 - - vice_x128 - #- vice # Renamed to vice_x64 - - vemulator - - vecx - - vbam - - vba-next - - uzem - #- uae4arm # Doesn't run on x86_64 - - uae - - tyrquake - - thepowdertoy - - theodore - - tgbdual - - swanstation - - supafaust - - stella - - snes9x2010 - - snes9x2002 - - snes9x - - smsplus-gx - - scummvm - - sameboy - - same_cdi - #- rustation # Disabled for now - - retro8 - - remotejoy - - reminiscence - #- reicast # Renamed to flycast - - redbook - - race - - quicknes - - quasi88 - - px68k - - prosystem - - prboom - - ppsspp - - potator - - pokemini - - pocketcdg - - picodrive - - pcsx-rearmed - - pcem - - parallext - - parallel_n64 - - opera - - openlara - - oberon - - o2em - - nx - - nestopia - - neocd - - mupen64plus-nx - #- mupen64plus # Renamed to mupen64plus-nx - - mu - - mrboom - - moonlight - - minivmac - - mgba - - meteor - - mesen-s - - mesen - - meowpc98 - - melonds - - mame2016 - - mame2015 - - mame2010 - - mame2003_plus - - mame2003_midway - - mame2003 - - mame2000 - - mame # Insanely huge and long running (hours and 50GB on a fast machine) - - lutro - - lrps2 - - jumpnbump - - hbmame - - hatari - - handy - - gw - - gpsp - - gong - - gme - - genplus-wide - - genplus - - gearsystem - - gearcoleco - - gearboy - - gambatte - - galaxy - - fuse - #- fsuae # Requires configure command: "./autogen.sh && ./configure && make gen" - - frodo - - freeintv - - freechaf - - fmsx - - flycast - - fceumm - - fbneo - - fbalpha2012-neogeo - - fbalpha2012-cps3 - - fbalpha2012-cps2 - - fbalpha2012-cps1 - - fbalpha2012 - #- fbalpha # Renamed to fbneo - - ep128emu - - ecwolf - - dosbox-pure - #- dosbox-core # Add-on marked as broken - - dosbox - - dolphin - - dinothawr - - desmume2015 - - desmume - - daphne - - crocods - - craft - - chailove - - cap32 - - cannonball - - bsnes2014-performance - - bsnes2014-balanced - - bsnes2014-accuracy - - bsnes-mercury-performance - - bsnes-mercury-balanced - - bsnes-mercury-accuracy - - bsnes-hd - - bsnes - - boom3 - - bnes - - bluemsx - - blastem - - bk - - beetle-wswan - - beetle-vb - - beetle-supergrafx - - beetle-saturn - - beetle-psx-hw - - beetle-psx - - beetle-pcfx - - beetle-pce-fast - - beetle-pce - - beetle-ngp - - beetle-lynx - - beetle-gba - #- beetle-cygne # Renamed to beetle-wswan - - beetle-bsnes - - atari800 - - a5200 - - 81 - #- 4do # Renamed to opera - - 3dengine - - 2048 - - - script: | - echo - echo "wiki.txt:" - echo - cat game-addons/wiki.txt - echo - displayName: 'Print wiki.txt' - - - script: | - echo - echo "summary.html:" - echo - cat game-addons/summary.html - echo - displayName: 'Print summary.html' + addons: + - oberon + - o2em + - nx + - nestopia + - neocd + - mupen64plus-nx + - mu + - mrboom + - moonlight + - minivmac + - mgba + - meteor + - mesen-s + - mesen + - meowpc98 + - melonds + - mame2016 + - mame2015 + - mame2010 + - mame2003_plus + - mame2003_midway + - mame2003 + - mame2000 + #- mame # Insanely huge and long running (hours and 50GB on a fast machine) + - lutro + - lrps2 + - jumpnbump + #- hbmame # Currently fails to build + - hatari + - handy + - gw + - gpsp + - gong + - gme + - genplus-wide + - genplus + - gearsystem + - gearcoleco + - gearboy + - gambatte + - galaxy + - fuse + #- fsuae # Requires configure command: "./autogen.sh && ./configure && make gen" + - frodo + - freeintv + - freechaf + - fmsx + - flycast + - fceumm + - fbneo + - fbalpha2012-neogeo + - fbalpha2012-cps3 + - fbalpha2012-cps2 + - fbalpha2012-cps1 + - fbalpha2012 + - ep128emu + - ecwolf + - easyrpg + - dosbox-pure + - dosbox + - dolphin + - dinothawr + - desmume2015 + - desmume + - daphne + - crocods + - craft + - chailove + - cap32 + - cannonball + - bsnes2014-performance + - bsnes2014-balanced + - bsnes2014-accuracy + - bsnes-mercury-performance + - bsnes-mercury-balanced + - bsnes-mercury-accuracy + - bsnes-hd + - bsnes + - boom3 + - bnes + - bluemsx + - blastem + - bk + - beetle-wswan + - beetle-vb + - beetle-supergrafx + - beetle-saturn + - beetle-psx-hw + - beetle-psx + - beetle-pcfx + - beetle-pce-fast + - beetle-pce + - beetle-ngp + - beetle-lynx + - beetle-gba + - beetle-bsnes + - atari800 + - a5200 + - 81 + - 3dengine + - 2048 diff --git a/kodi_game_scripting/config.py b/kodi_game_scripting/config.py index 0e18773a..5db8565d 100644 --- a/kodi_game_scripting/config.py +++ b/kodi_game_scripting/config.py @@ -28,12 +28,10 @@ ADDONS = { '2048': ('libretro-2048', 'Makefile.libretro', '.', 'jni', {}), '3dengine': ('libretro-3dengine', 'Makefile', '.', 'jni', {}), - '4do': ('kodi-game/4do-libretro', 'Makefile', '.', 'jni', {}), '81': ('81-libretro', 'Makefile', '.', 'build/jni', {}), 'a5200': ('a5200', 'Makefile', '.', 'jni', {}), 'atari800': ('libretro-atari800', 'Makefile', '.', 'jni', {}), 'beetle-bsnes': ('beetle-bsnes-libretro', 'Makefile', '.', 'jni', {'soname': 'mednafen_snes'}), - 'beetle-cygne': ('beetle-wswan-libretro', 'Makefile', '.', 'jni', {'soname': 'mednafen_wswan'}), 'beetle-gba': ('beetle-gba-libretro', 'Makefile', '.', 'jni', {'soname': 'mednafen_gba'}), 'beetle-lynx': ('beetle-lynx-libretro', 'Makefile', '.', 'jni', {'soname': 'mednafen_lynx'}), 'beetle-ngp': ('beetle-ngp-libretro', 'Makefile', '.', 'jni', {'soname': 'mednafen_ngp'}), @@ -70,11 +68,10 @@ 'dinothawr': ('Dinothawr', 'Makefile', '.', 'jni', {}), 'dolphin': ('dolphin', '', '', '', {'cmake': True }), 'dosbox': ('dosbox-libretro', 'Makefile.libretro', '.', 'jni', {}), - #'dosbox-core': ('realnc/dosbox-core', 'Makefile.libretro', 'libretro', 'libretro/jni', {'branch': 'libretro --', 'cmake_options': 'BUNDLED_SDL=1', 'soname': 'dosbox_core'}), # Add-on marked as broken 'dosbox-pure': ('dosbox-pure', 'Makefile', '.', 'jni', {'branch': 'main', 'soname': 'dosbox_pure'}), + 'easyrpg': ('EasyRPG/Player', '', '', '', {'cmake': True}), 'ecwolf': ('kodi-game/ecwolf', 'Makefile', 'src/libretro', 'src/libretro/jni', {}), 'ep128emu': ('ep128emu-core', 'Makefile', '.', 'jni', {'branch': 'core', 'soname': 'ep128emu_core'}), - 'fbalpha': ('fbalpha', 'makefile.libretro', '.', 'jni', {}), 'fbalpha2012': ('fbalpha2012', 'makefile.libretro', 'svn-current/trunk', 'svn-current/trunk/projectfiles/libretro-android/jni', {}), 'fbalpha2012-cps1': ('fbalpha2012_cps1', 'makefile.libretro', '.', 'projectfiles/libretro-android/jni', {'soname': 'fbalpha2012_cps1'}), 'fbalpha2012-cps2': ('fbalpha2012_cps2', 'makefile.libretro', '.', 'projectfiles/libretro-android/jni', {'soname': 'fbalpha2012_cps2'}), @@ -124,8 +121,7 @@ 'moonlight': ('kodi-game/moonlight-libretro','Makefile', '.', '', {}), 'mrboom': ('kodi-game/mrboom-libretro', 'Makefile', '.', 'libretro/jni', {}), 'mu': ('Mu', 'Makefile.libretro', 'libretroBuildSystem', 'libretroBuildSystem/jni', {}), - 'mupen64plus': ('mupen64plus-libretro-nx', 'Makefile', '.', 'libretro/jni', {'soname': 'mupen64plus_next'}), - 'mupen64plus-nx': ('mupen64plus-libretro-nx', 'Makefile', '.', 'libretro/jni', {'soname': 'mupen64plus_next'}), + 'mupen64plus-nx': ('kodi-game/mupen64plus-libretro-nx', 'Makefile', '.', 'libretro/jni', {'branch': 'develop', 'soname': 'mupen64plus_next'}), 'nestopia': ('nestopia', 'Makefile', 'libretro', 'libretro/jni', {}), 'neocd': ('neocd_libretro', 'Makefile', '.', 'jni', {}), 'nx': ('nxengine-libretro', 'Makefile', '.', 'jni', {'soname': 'nxengine'}), @@ -149,7 +145,6 @@ 'quicknes': ('QuickNES_Core', 'Makefile', '.', 'jni', {}), 'race': ('RACE', 'Makefile', '.', 'jni', {}), 'redbook': ('redbook', 'Makefile', '.', 'jni', {}), - 'reicast': ('kodi-game/reicast', 'Makefile', '.', 'jni', {'soname': 'flycast'}), 'reminiscence': ('REminiscence', 'Makefile', '.', 'jni', {}), 'remotejoy': ('libretro-remotejoy', 'Makefile', '.', 'jni', {}), 'retro8': ('retro8', 'Makefile', '.', 'jni', {}), @@ -185,7 +180,6 @@ 'vice_xplus4': ('vice-libretro', 'Makefile', '.', 'jni', {'soname': 'vice_xplus4', 'cmake_options': 'EMUTYPE=xplus4'}), 'vice_xscpu64': ('vice-libretro', 'Makefile', '.', 'jni', {'soname': 'vice_xscpu64', 'cmake_options': 'EMUTYPE=xscpu64'}), 'vice_xvic': ('vice-libretro', 'Makefile', '.', 'jni', {'soname': 'vice_xvic', 'cmake_options': 'EMUTYPE=xvic'}), - 'vice': ('vice-libretro', 'Makefile', '.', 'jni', {'soname': 'vice_x64', 'cmake_options': 'EMUTYPE=x64'}), 'virtualjaguar': ('virtualjaguar-libretro', 'Makefile', '.', 'jni', {}), #'wolfenstein3d': ('kodi-game/libretro-wolfenstein3d', 'Makefile.libretro', '.', 'jni', {}), # Requires SDL 1 'xmil': ('xmil-libretro', 'Makefile.libretro', 'libretro', 'libretro/jni', {'soname': 'x1'}),