tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
libretro: add update.py script
Thiago Kenji Okada
4 years ago
8b122f95
14b2e99b
+136
1 changed file
expand all
collapse all
unified
split
pkgs
misc
emulators
retroarch
update.py
+136
pkgs/misc/emulators/retroarch/update.py
···
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
···
1
+
#!/usr/bin/env nix-shell
2
+
#!nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ requests nix-prefetch-github ])" -p "git"
3
+
4
+
import json
5
+
import sys
6
+
from pathlib import Path
7
+
8
+
from nix_prefetch_github import nix_prefetch_github
9
+
10
+
SCRIPT_PATH = Path(__file__).absolute().parent
11
+
HASHES_PATH = SCRIPT_PATH / "hashes.json"
12
+
CORES = {
13
+
"atari800": {"repo": "libretro-atari800"},
14
+
"beetle-snes": {"repo": "beetle-bsnes-libretro"},
15
+
"beetle-gba": {"repo": "beetle-gba-libretro"},
16
+
"beetle-lynx": {"repo": "beetle-lynx-libretro"},
17
+
"beetle-ngp": {"repo": "beetle-ngp-libretro"},
18
+
"beetle-pce-fast": {"repo": "beetle-pce-fast-libretro"},
19
+
"beetle-pcfx": {"repo": "beetle-pcfx-libretro"},
20
+
"beetle-psx": {"repo": "beetle-psx-libretro"},
21
+
"beetle-saturn": {"repo": "beetle-saturn-libretro"},
22
+
"beetle-supergrafx": {"repo": "beetle-supergrafx-libretro"},
23
+
"beetle-wswan": {"repo": "beetle-wswan-libretro"},
24
+
"beetle-vb": {"repo": "beetle-vb-libretro"},
25
+
"bluemsx": {"repo": "bluemsx-libretro"},
26
+
"bsnes-mercury": {"repo": "bsnes-mercury"},
27
+
"citra": {"repo": "citra", "fetch_submodules": True},
28
+
"desmume": {"repo": "desmume"},
29
+
"desmume2015": {"repo": "desmume2015"},
30
+
"dolphin": {"repo": "dolphin"},
31
+
"dosbox": {"repo": "dosbox-libretro"},
32
+
"eightyone": {"repo": "81-libretro"},
33
+
"fbalpha2012": {"repo": "fbalpha2012"},
34
+
"fbneo": {"repo": "fbneo"},
35
+
"fceumm": {"repo": "libretro-fceumm"},
36
+
"flycast": {"repo": "flycast"},
37
+
"fmsx": {"repo": "fmsx-libretro"},
38
+
"freeintv": {"repo": "freeintv"},
39
+
"gambatte": {"repo": "gambatte-libretro"},
40
+
"genesis-plus-gx": {"repo": "Genesis-Plus-GX"},
41
+
"gpsp": {"repo": "gpsp"},
42
+
"gw": {"repo": "gw-libretro"},
43
+
"handy": {"repo": "libretro-handy"},
44
+
"hatari": {"repo": "hatari"},
45
+
"mame": {"repo": "mame"},
46
+
"mame2000": {"repo": "mame2000-libretro"},
47
+
"mame2003": {"repo": "mame2003-libretro"},
48
+
"mame2003-plus": {"repo": "mame2003-plus-libretro"},
49
+
"mame2010": {"repo": "mame2010-libretro"},
50
+
"mame2015": {"repo": "mame2015-libretro"},
51
+
"mame2016": {"repo": "mame2016-libretro"},
52
+
"mesen": {"repo": "mesen", "owner": "SourMesen"},
53
+
"meteor": {"repo": "meteor-libretro"},
54
+
"mgba": {"repo": "mgba"},
55
+
"mupen64plus": {"repo": "mupen64plus-libretro-nx"},
56
+
"neocd": {"repo": "neocd_libretro"},
57
+
"nestopia": {"repo": "nestopia"},
58
+
"np2kai": {"repo": "NP2kai", "owner": "AZO234", "fetch_submodules": True},
59
+
"o2em": {"repo": "libretro-o2em"},
60
+
"opera": {"repo": "opera-libretro"},
61
+
"parallel-n64": {"repo": "parallel-n64"},
62
+
"pcsx_rearmed": {"repo": "pcsx_rearmed"},
63
+
"picodrive": {"repo": "picodrive", "fetch_submodules": True},
64
+
"play": {"repo": "Play-", "fetch_submodules": True},
65
+
"ppsspp": {"repo": "ppsspp", "owner": "hrydgard", "fetch_submodules": True},
66
+
"prboom": {"repo": "libretro-prboom"},
67
+
"prosystem": {"repo": "prosystem-libretro"},
68
+
"quicknes": {"repo": "QuickNES_Core"},
69
+
"sameboy": {"repo": "sameboy"},
70
+
"scummvm": {"repo": "scummvm"},
71
+
"smsplus-gx": {"repo": "smsplus-gx"},
72
+
"snes9x": {"repo": "snes9x", "owner": "snes9xgit"},
73
+
"snes9x2002": {"repo": "snes9x2002"},
74
+
"snes9x2005": {"repo": "snes9x2005"},
75
+
"snes9x2010": {"repo": "snes9x2010"},
76
+
"stella": {"repo": "stella", "owner": "stella-emu"},
77
+
"stella2014": {"repo": "stella2014-libretro"},
78
+
"tgbdual": {"repo": "tgbdual-libretro"},
79
+
"thepowdertoy": {"repo": "ThePowderToy"},
80
+
"tic80": {"repo": "tic-80", "fetch_submodules": True},
81
+
"vba-next": {"repo": "vba-next"},
82
+
"vba-m": {"repo": "vbam-libretro"},
83
+
"vecx": {"repo": "libretro-vecx"},
84
+
"virtualjaguar": {"repo": "virtualjaguar-libretro"},
85
+
"yabause": {"repo": "yabause"},
86
+
}
87
+
88
+
89
+
def info(*msg):
90
+
print(*msg, file=sys.stderr)
91
+
92
+
93
+
def get_repo_hash_fetchFromGitHub(repo, owner="libretro", fetch_submodules=False):
94
+
assert repo is not None, "Parameter 'repo' can't be None."
95
+
96
+
repo_hash = nix_prefetch_github(
97
+
owner=owner, repo=repo, fetch_submodules=fetch_submodules
98
+
)
99
+
return {
100
+
"owner": repo_hash.repository.owner,
101
+
"repo": repo_hash.repository.name,
102
+
"rev": repo_hash.rev,
103
+
"sha256": repo_hash.sha256,
104
+
"fetchSubmodules": repo_hash.fetch_submodules,
105
+
}
106
+
107
+
108
+
def get_repo_hash(fetcher="fetchFromGitHub", **kwargs):
109
+
if fetcher == "fetchFromGitHub":
110
+
return get_repo_hash_fetchFromGitHub(**kwargs)
111
+
else:
112
+
raise ValueError(f"Unsupported fetcher: {fetcher}")
113
+
114
+
115
+
def get_repo_hashes():
116
+
repo_hashes = {}
117
+
118
+
for core, repo in CORES.items():
119
+
info(
120
+
f"Getting repo hash for '{core}'...",
121
+
)
122
+
repo_hashes[core] = get_repo_hash(**repo)
123
+
124
+
return repo_hashes
125
+
126
+
127
+
def main():
128
+
repo_hashes = get_repo_hashes()
129
+
info(f"Generating '{HASHES_PATH}'...")
130
+
with open(HASHES_PATH, "w") as f:
131
+
f.write(json.dumps(repo_hashes, indent=4))
132
+
info("Finished!")
133
+
134
+
135
+
if __name__ == "__main__":
136
+
main()