yuzu-{ea,mainline}: {2901,1131} -> {2907,1137}
This changes the update script to be compatible with the maintainer script in `./maintainers/scripts/update.nix`, which will hopefully make sure r-ryantm can update these packages automatically for us. The script now also automatically updates the compatibility list, as @Docteh pointed out a mirror is available on Github. The call in `all-packages.nix` is changed as well to avoid a double `callPackage`, which can make overriding quite a pain. `QT_QPA_PLATFORM` is automatically set to `xcb` to avoid a crash on wayland, thanks to @sbruder for the suggestion!
This commit is contained in:
parent
6b6e2ee00f
commit
3435f469ec
5 changed files with 104 additions and 1267 deletions
|
@ -5,23 +5,23 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
# Fetched from https://api.yuzu-emu.org/gamedb, last updated 2022-07-14
|
# Mirror of https://api.yuzu-emu.org/gamedb, last updated 2022-08-13
|
||||||
# Please make sure to update this when updating yuzu!
|
# Please make sure to update this when updating yuzu!
|
||||||
compat-list = fetchurl {
|
compat-list = fetchurl {
|
||||||
name = "yuzu-compat-list";
|
name = "yuzu-compat-list";
|
||||||
url = "https://web.archive.org/web/20220714160745/https://api.yuzu-emu.org/gamedb";
|
url = "https://raw.githubusercontent.com/flathub/org.yuzu_emu.yuzu/d83401d2ee3fd5e1922e31baed1f3bdb1c0f036c/compatibility_list.json";
|
||||||
sha256 = "sha256-anOmO7NscHDsQxT03+YbJEyBkXjhcSVGgKpDwt//GHw=";
|
sha256 = "sha256-anOmO7NscHDsQxT03+YbJEyBkXjhcSVGgKpDwt//GHw=";
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
mainline = libsForQt5.callPackage ./generic.nix rec {
|
mainline = libsForQt5.callPackage ./generic.nix rec {
|
||||||
pname = "yuzu-mainline";
|
pname = "yuzu-mainline";
|
||||||
version = "1131";
|
version = "1137";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "yuzu-emu";
|
owner = "yuzu-emu";
|
||||||
repo = "yuzu-mainline";
|
repo = "yuzu-mainline";
|
||||||
rev = "mainline-0-${version}";
|
rev = "mainline-0-${version}";
|
||||||
sha256 = "0lh8s59hrysfjz69yr0f44s3l4aaznmclq0xfnyblsk0cw9ripf6";
|
sha256 = "sha256-DLU5hmjTnlpRQ6sbcU7as/KeI9dDJAFUzVLciql5niE=";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -30,13 +30,13 @@ in {
|
||||||
|
|
||||||
early-access = libsForQt5.callPackage ./generic.nix rec {
|
early-access = libsForQt5.callPackage ./generic.nix rec {
|
||||||
pname = "yuzu-ea";
|
pname = "yuzu-ea";
|
||||||
version = "2901";
|
version = "2907";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "pineappleEA";
|
owner = "pineappleEA";
|
||||||
repo = "pineapple-src";
|
repo = "pineapple-src";
|
||||||
rev = "EA-${version}";
|
rev = "EA-${version}";
|
||||||
sha256 = "0jymm9sdsnayjaffmcbpjck4k2yslx8zid2vsm4jfdaajr244q2z";
|
sha256 = "sha256-spPW2/qeVyd1P1/Z2lcuA69igS3xV4KtcJ59yf9X4JI=";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -45,15 +45,6 @@
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
inherit pname version src;
|
inherit pname version src;
|
||||||
|
|
||||||
# Replace icons licensed under CC BY-ND 3.0 with free ones to allow
|
|
||||||
# for binary redistribution: https://github.com/yuzu-emu/yuzu/pull/8104
|
|
||||||
# The patch hosted on GitHub has the binary information in git format, which
|
|
||||||
# can’t be applied with patch(1), so it has been regenerated with
|
|
||||||
# "git format-patch --text --full-index --binary".
|
|
||||||
# Because pineapple strips all files beginning with a dot, the patch needs to
|
|
||||||
# be edited manually afterwards to remove all changes to those.
|
|
||||||
patches = [ ./yuzu-free-icons.patch ];
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
cmake
|
cmake
|
||||||
doxygen
|
doxygen
|
||||||
|
@ -111,6 +102,13 @@ stdenv.mkDerivation rec {
|
||||||
"-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=OFF" # We provide this deterministically
|
"-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=OFF" # We provide this deterministically
|
||||||
];
|
];
|
||||||
|
|
||||||
|
qtWrapperArgs = [
|
||||||
|
# Fixes vulkan detection
|
||||||
|
"--prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib"
|
||||||
|
# Without yuzu doesnt start on wayland. See https://github.com/yuzu-emu/yuzu/issues/6088
|
||||||
|
"--set QT_QPA_PLATFORM xcb"
|
||||||
|
];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
# This prevents a check for submodule directories.
|
# This prevents a check for submodule directories.
|
||||||
rm -f .gitmodules
|
rm -f .gitmodules
|
||||||
|
@ -127,13 +125,6 @@ stdenv.mkDerivation rec {
|
||||||
ln -sf ${compat-list} ./dist/compatibility_list/compatibility_list.json
|
ln -sf ${compat-list} ./dist/compatibility_list/compatibility_list.json
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Fix vulkan detection
|
|
||||||
postFixup = ''
|
|
||||||
for bin in $out/bin/yuzu $out/bin/yuzu-cmd; do
|
|
||||||
wrapProgram $bin --prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru.updateScript = runCommandLocal "yuzu-${branch}-updateScript" {
|
passthru.updateScript = runCommandLocal "yuzu-${branch}-updateScript" {
|
||||||
script = substituteAll {
|
script = substituteAll {
|
||||||
src = ./update.sh;
|
src = ./update.sh;
|
||||||
|
@ -154,7 +145,7 @@ stdenv.mkDerivation rec {
|
||||||
platforms = [ "x86_64-linux" ];
|
platforms = [ "x86_64-linux" ];
|
||||||
license = with licenses; [
|
license = with licenses; [
|
||||||
gpl3Plus
|
gpl3Plus
|
||||||
# Icons. Note that this would be cc0 and cc-by-nd-30 without the "yuzu-free-icons" patch
|
# Icons
|
||||||
asl20 mit cc0
|
asl20 mit cc0
|
||||||
];
|
];
|
||||||
maintainers = with maintainers; [
|
maintainers = with maintainers; [
|
||||||
|
|
|
@ -1,84 +1,105 @@
|
||||||
#! /usr/bin/env nix-shell
|
#! /usr/bin/env nix-shell
|
||||||
#! nix-shell -i bash -p nix nix-prefetch-git coreutils curl jq gnused
|
#! nix-shell -I nixpkgs=./. -i bash -p nix nix-prefetch-git coreutils curl jq gnused
|
||||||
|
|
||||||
set -e
|
set -euo pipefail
|
||||||
|
|
||||||
# Will be replaced with the actual branch when running this from passthru.updateScript
|
# Will be replaced with the actual branch when running this from passthru.updateScript
|
||||||
BRANCH="@branch@"
|
BRANCH="@branch@"
|
||||||
|
DEFAULT_NIX="$(dirname "${BASH_SOURCE[@]}")/default.nix"
|
||||||
|
|
||||||
if [[ ! "$(basename $PWD)" = "yuzu" ]]; then
|
if [[ "$(basename "$PWD")" = "yuzu" ]]; then
|
||||||
echo "error: Script must be ran from yuzu's directory!"
|
echo "error: Script must be ran from nixpkgs's root directory for compatibility with the maintainer script"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
getLocalVersion() {
|
updateBranch() {
|
||||||
pushd ../../../.. >/dev/null
|
local branch attribute oldVersion oldHash newVersion newHash
|
||||||
nix eval --raw -f default.nix "$1".version
|
branch="$1"
|
||||||
popd >/dev/null
|
attribute="yuzu-$branch"
|
||||||
}
|
[[ "$branch" = "early-access" ]] && attribute="yuzu-ea" # Attribute path doesnt match the branch name
|
||||||
|
oldVersion="$(nix eval --raw -f "./default.nix" "$attribute".version)"
|
||||||
|
oldHash="$(nix eval --raw -f "./default.nix" "$attribute".src.drvAttrs.outputHash)"
|
||||||
|
|
||||||
getLocalHash() {
|
if [[ "$branch" = "mainline" ]]; then
|
||||||
pushd ../../../.. >/dev/null
|
newVersion="$(curl -s ${GITHUB_TOKEN:+"-u \":$GITHUB_TOKEN\""} "https://api.github.com/repos/yuzu-emu/yuzu-mainline/releases?per_page=1" \
|
||||||
nix eval --raw -f default.nix "$1".src.drvAttrs.outputHash
|
| jq -r '.[0].name' | cut -d" " -f2)"
|
||||||
popd >/dev/null
|
elif [[ "$branch" = "early-access" ]]; then
|
||||||
}
|
newVersion="$(curl -s ${GITHUB_TOKEN:+"-u \":$GITHUB_TOKEN\""} "https://api.github.com/repos/pineappleEA/pineapple-src/releases?per_page=2" \
|
||||||
|
| jq -r '.[].tag_name' | grep '^EA-[0-9]*' | head -n1 | cut -d"-" -f2 | cut -d" " -f1)"
|
||||||
updateMainline() {
|
|
||||||
OLD_MAINLINE_VERSION="$(getLocalVersion "yuzu-mainline")"
|
|
||||||
OLD_MAINLINE_HASH="$(getLocalHash "yuzu-mainline")"
|
|
||||||
|
|
||||||
NEW_MAINLINE_VERSION="$(curl -s ${GITHUB_TOKEN:+"-u \":$GITHUB_TOKEN\""} \
|
|
||||||
"https://api.github.com/repos/yuzu-emu/yuzu-mainline/releases?per_page=1" | jq -r '.[0].name' | cut -d" " -f2)"
|
|
||||||
|
|
||||||
if [[ "${OLD_MAINLINE_VERSION}" = "${NEW_MAINLINE_VERSION}" ]]; then
|
|
||||||
echo "yuzu-mainline is already up to date!"
|
|
||||||
|
|
||||||
[ "$KEEP_GOING" ] && return || exit
|
|
||||||
else
|
|
||||||
echo "yuzu-mainline: ${OLD_MAINLINE_VERSION} -> ${NEW_MAINLINE_VERSION}"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo " Fetching source code..."
|
if [[ "${oldVersion}" = "${newVersion}" ]]; then
|
||||||
|
echo "$attribute is already up to date."
|
||||||
NEW_MAINLINE_HASH="$(nix-prefetch-git --quiet --fetch-submodules --rev "mainline-0-${NEW_MAINLINE_VERSION}" "https://github.com/yuzu-emu/yuzu-mainline" | jq -r '.sha256')"
|
return
|
||||||
|
|
||||||
echo " Succesfully fetched. hash: ${NEW_MAINLINE_HASH}"
|
|
||||||
|
|
||||||
sed -i "s/${OLD_MAINLINE_VERSION}/${NEW_MAINLINE_VERSION}/" ./default.nix
|
|
||||||
sed -i "s/${OLD_MAINLINE_HASH}/${NEW_MAINLINE_HASH}/" ./default.nix
|
|
||||||
}
|
|
||||||
|
|
||||||
updateEarlyAccess() {
|
|
||||||
OLD_EA_VERSION="$(getLocalVersion "yuzu-ea")"
|
|
||||||
OLD_EA_HASH="$(getLocalHash "yuzu-ea")"
|
|
||||||
|
|
||||||
NEW_EA_VERSION="$(curl -s ${GITHUB_TOKEN:+"-u \":$GITHUB_TOKEN\""} \
|
|
||||||
"https://api.github.com/repos/pineappleEA/pineapple-src/releases?per_page=2" | jq -r '.[].tag_name' | grep '^EA-[0-9]*' | head -n1 | cut -d"-" -f2 | cut -d" " -f1)"
|
|
||||||
|
|
||||||
if [[ "${OLD_EA_VERSION}" = "${NEW_EA_VERSION}" ]]; then
|
|
||||||
echo "yuzu-ea is already up to date!"
|
|
||||||
|
|
||||||
[ "$KEEP_GOING" ] && return || exit
|
|
||||||
else
|
else
|
||||||
echo "yuzu-ea: ${OLD_EA_VERSION} -> ${NEW_EA_VERSION}"
|
echo "$attribute: ${oldVersion} -> ${newVersion}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo " Fetching source code..."
|
echo " fetching source code to generate hash..."
|
||||||
|
if [[ "$branch" = "mainline" ]]; then
|
||||||
|
newHash="$(nix-prefetch-git --quiet --fetch-submodules --rev "mainline-0-${newVersion}" "https://github.com/yuzu-emu/yuzu-mainline" | jq -r '.sha256')"
|
||||||
|
elif [[ "$branch" = "early-access" ]]; then
|
||||||
|
newHash="$(nix-prefetch-git --quiet --fetch-submodules --rev "EA-${newVersion}" "https://github.com/pineappleEA/pineapple-src" | jq -r '.sha256')"
|
||||||
|
fi
|
||||||
|
newHash="$(nix hash to-sri --type sha256 "${newHash}")"
|
||||||
|
|
||||||
NEW_EA_HASH="$(nix-prefetch-git --quiet --fetch-submodules --rev "EA-${NEW_EA_VERSION}" "https://github.com/pineappleEA/pineapple-src" | jq -r '.sha256')"
|
sed -i "s,${oldVersion},${newVersion}," "$DEFAULT_NIX"
|
||||||
|
sed -i "s,${oldHash},${newHash},g" "$DEFAULT_NIX"
|
||||||
echo " Succesfully fetched. hash: ${NEW_EA_HASH}"
|
echo " succesfully updated $attribute. new hash: $newHash"
|
||||||
|
|
||||||
sed -i "s/${OLD_EA_VERSION}/${NEW_EA_VERSION}/" ./default.nix
|
|
||||||
sed -i "s/${OLD_EA_HASH}/${NEW_EA_HASH}/" ./default.nix
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ "$BRANCH" = "mainline" ]]; then
|
updateCompatibilityList() {
|
||||||
updateMainline
|
local latestRevision oldUrl newUrl oldHash newHash oldDate newDate
|
||||||
elif [[ "$BRANCH" = "early-access" ]]; then
|
latestRevision="$(curl -s ${GITHUB_TOKEN:+"-u \":$GITHUB_TOKEN\""} "https://api.github.com/repos/flathub/org.yuzu_emu.yuzu/commits/master" | jq -r '.sha')"
|
||||||
updateEarlyAccess
|
|
||||||
else
|
oldUrl="$(sed -n '/yuzu-compat-list/,/url/p' "$DEFAULT_NIX" | tail -n1 | cut -d'"' -f2)"
|
||||||
KEEP_GOING=1
|
newUrl="https://raw.githubusercontent.com/flathub/org.yuzu_emu.yuzu/${latestRevision}/compatibility_list.json"
|
||||||
updateMainline
|
|
||||||
updateEarlyAccess
|
oldDate="$(sed -n '/last updated.*/p' "$DEFAULT_NIX" | rev | cut -d' ' -f1 | rev)"
|
||||||
|
newDate="$(curl -s ${GITHUB_TOKEN:+"-u \":$GITHUB_TOKEN\""} "https://api.github.com/repos/flathub/org.yuzu_emu.yuzu/commits/${latestRevision}" \
|
||||||
|
| jq -r '.commit.committer.date' | cut -d'T' -f1)"
|
||||||
|
|
||||||
|
oldHash="$(sed -n '/yuzu-compat-list/,/sha256/p' "$DEFAULT_NIX" | tail -n1 | cut -d'"' -f2)"
|
||||||
|
newHash="$(nix hash to-sri --type sha256 "$(nix-prefetch-url --quiet "$newUrl")")"
|
||||||
|
|
||||||
|
if [[ "$oldHash" = "$newHash" ]]; then
|
||||||
|
echo "compatibility_list is already up to date."
|
||||||
|
return
|
||||||
|
else
|
||||||
|
echo "compatibility_list: $oldDate -> $newDate"
|
||||||
|
fi
|
||||||
|
|
||||||
|
sed -i "s,${oldUrl},${newUrl},g" "$DEFAULT_NIX"
|
||||||
|
sed -i "s,${oldHash},${newHash},g" "$DEFAULT_NIX"
|
||||||
|
sed -i "s,${oldDate},${newDate},g" "$DEFAULT_NIX"
|
||||||
|
echo " succesfully updated compatibility_list. new hash: $newHash"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "$BRANCH" = "mainline" ]] || [[ "$BRANCH" = "early-access" ]]; then
|
||||||
|
updateBranch "$BRANCH"
|
||||||
|
updateCompatibilityList
|
||||||
|
else # Script is not ran from passthru.updateScript
|
||||||
|
if (( $# == 0 )); then
|
||||||
|
updateBranch "mainline"
|
||||||
|
updateBranch "early-access"
|
||||||
|
fi
|
||||||
|
|
||||||
|
while (( "$#" > 0 )); do
|
||||||
|
case "$1" in
|
||||||
|
mainline|yuzu-mainline)
|
||||||
|
updateBranch "mainline"
|
||||||
|
;;
|
||||||
|
early-access|yuzu-early-access|ea|yuzu-ea)
|
||||||
|
updateBranch "early-access"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "error: invalid branch: $1."
|
||||||
|
echo "usage: $(basename "$0") [mainline|early-access]"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
updateCompatibilityList
|
||||||
fi
|
fi
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1609,12 +1609,14 @@ with pkgs;
|
||||||
|
|
||||||
### APPLICATIONS/EMULATORS/YUZU
|
### APPLICATIONS/EMULATORS/YUZU
|
||||||
|
|
||||||
yuzu-mainline = callPackage ../applications/emulators/yuzu {
|
yuzu-mainline = import ../applications/emulators/yuzu {
|
||||||
branch = "mainline";
|
branch = "mainline";
|
||||||
|
inherit libsForQt5 fetchFromGitHub fetchurl;
|
||||||
};
|
};
|
||||||
|
|
||||||
yuzu-ea = callPackage ../applications/emulators/yuzu {
|
yuzu-ea = import ../applications/emulators/yuzu {
|
||||||
branch = "early-access";
|
branch = "early-access";
|
||||||
|
inherit libsForQt5 fetchFromGitHub fetchurl;
|
||||||
};
|
};
|
||||||
|
|
||||||
### APPLICATIONS/EMULATORS/COMMANDERX16
|
### APPLICATIONS/EMULATORS/COMMANDERX16
|
||||||
|
|
Loading…
Reference in a new issue