refactor: patch tinyfd in LWJGL 3.2.2

When we have this cool patching mechanism, we could just use it to patch our existing LWJGL, instead of providing a static one
This commit is contained in:
Sefa Eyeoglu 2022-06-29 00:07:06 +02:00
parent 4f749ba9af
commit eba932312d
No known key found for this signature in database
GPG Key ID: C10411294912A422
5 changed files with 75 additions and 347 deletions

View File

@ -4,11 +4,11 @@ import os
from collections import defaultdict, namedtuple
from operator import attrgetter
from pprint import pprint
from typing import Optional
from typing import Optional, List
from meta.common import ensure_component_dir, polymc_path, upstream_path, static_path
from meta.common.mojang import VERSION_MANIFEST_FILE, MINECRAFT_COMPONENT, LWJGL3_COMPONENT, LWJGL_COMPONENT, \
STATIC_LWJGL322_FILE, STATIC_OVERRIDES_FILE, VERSIONS_DIR, LIBRARY_PATCHES_FILE
STATIC_OVERRIDES_FILE, VERSIONS_DIR, LIBRARY_PATCHES_FILE
from meta.model import MetaVersion, Library, GradleSpecifier, MojangLibraryDownloads, MojangArtifact, Dependency, \
MetaPackage, MojangRules
from meta.model.mojang import MojangIndexWrap, MojangIndex, MojangVersion, LegacyOverrideIndex, LibraryPatches
@ -62,7 +62,7 @@ LOG4J_HASHES = {
PASS_VARIANTS = [
# "beed62ec1d40ae89d808fe70b83df6bd4b3be81f", # 3.3.1 (2022-05-18 13:51:54+00:00) split natives, without workaround
"8836c419f90f69a278b97d945a34af165c24ff60", # 3.3.1 (2022-05-18 13:51:54+00:00) split natives, with workaround
"e13abfa8c5f45ae4a7e87e0b388de46066d31a67", # 3.2.2 (2019-06-19 11:44:29+00:00) our fixed version
"ea4973ebc9eadf059f30f0958c89f330898bff51", # 3.2.2 (2019-07-04 14:41:05+00:00) will be patched by us, missing tinyfd
"8e1f89b96c6f583a0e494949c75115ed13412ba1", # 3.2.1 (2019-02-13 16:12:08+00:00)
"7ed2372097dbd635f5aef3137711141ce91c4ee9", # 3.1.6 (2018-11-29 13:11:38+00:00)
"5a006b7c72a080ac673fff02b259f3127c376655", # 3.1.2 (2018-06-21 12:57:11+00:00)
@ -81,7 +81,6 @@ BAD_VARIANTS = [
"4b73fccb9e5264c2068bdbc26f9651429abbf21a", # 3.2.2 (2021-08-25 14:41:57+00:00) only linux, windows
"090cec3577ecfe438b890b2a9410ea07aa725e16", # 3.2.2 (2021-04-07 14:04:09+00:00) only linux, windows
"ab463e9ebc6a36abf22f2aa27b219dd372ff5069", # 3.2.2 (2019-07-19 09:25:47+00:00) only linux, windows
"ea4973ebc9eadf059f30f0958c89f330898bff51", # 3.2.2 (2019-07-04 14:41:05+00:00) fine but replaced by fixed version
"8bde129ef334023c365bd7f57512a4bf5e72a378", # 3.2.1 (2019-04-18 11:05:19+00:00) only osx, windows
"65b2ce1f2b869bf98b8dd7ec0bc6956967d04811", # 3.1.6 (2019-04-18 11:05:19+00:00) only linux
"f04052162b50fa1433f67e1a90bc79466c4ab776", # 2.9.0 (2013-10-21 16:34:47+00:00) only linux, windows
@ -181,15 +180,24 @@ def is_macos_only(rules: Optional[MojangRules]):
return False
def patch_library(lib: Library, patches: LibraryPatches):
def patch_library(lib: Library, patches: LibraryPatches) -> List[Library]:
to_patch = [lib]
new_libraries = []
while to_patch:
target = to_patch.pop(0)
for patch in patches:
if lib.name in patch.match:
if patch.applies(target):
if patch.override:
lib.merge(patch.override)
target.merge(patch.override)
if patch.additionalLibraries:
new_libraries += patch.additionalLibraries
additional_copy = copy.deepcopy(patch.additionalLibraries)
new_libraries += set(additional_copy)
if patch.patchAdditionalLibraries:
to_patch += additional_copy
return new_libraries
@ -203,21 +211,13 @@ def process_single_variant(lwjgl_variant: MetaVersion, patches: LibraryPatches):
v.libraries += list(dict.fromkeys(new_libraries))
if lwjgl_version[0] == '2':
static_filename = os.path.join(STATIC_DIR, LWJGL_COMPONENT, f"{lwjgl_version}.json")
filename = os.path.join(PMC_DIR, LWJGL_COMPONENT, f"{lwjgl_version}.json")
if os.path.isfile(static_filename):
v = MetaVersion.parse_file(static_filename)
print("LWJGL2 is static:", v.version)
v.name = 'LWJGL 2'
v.uid = LWJGL_COMPONENT
v.conflicts = [Dependency(uid=LWJGL3_COMPONENT)]
elif lwjgl_version[0] == '3':
static_filename = os.path.join(STATIC_DIR, LWJGL3_COMPONENT, f"{lwjgl_version}.json")
filename = os.path.join(PMC_DIR, LWJGL3_COMPONENT, f"{lwjgl_version}.json")
if os.path.isfile(static_filename):
v = MetaVersion.parse_file(static_filename)
print("LWJGL3 is static:", v.version)
v.name = 'LWJGL 3'
v.uid = LWJGL3_COMPONENT
@ -417,10 +417,6 @@ def main():
override.apply_onto_meta_version(v)
v.write(out_filename)
# Add our own 3.2.2, which includes the missing tinyfd libraries
lwjgl322 = MetaVersion.parse_file(os.path.join(STATIC_DIR, STATIC_LWJGL322_FILE))
add_lwjgl_version(lwjglVersionVariants, lwjgl322)
for lwjglVersionVariant in lwjglVersionVariants:
decided_variant = None
passed_variants = 0

View File

@ -7,7 +7,6 @@ VERSIONS_DIR = join(BASE_DIR, "versions")
ASSETS_DIR = join(BASE_DIR, "assets")
STATIC_EXPERIMENTS_FILE = join(BASE_DIR, "minecraft-experiments.json")
STATIC_LWJGL322_FILE = join(BASE_DIR, "lwjgl-3.2.2.json")
STATIC_OVERRIDES_FILE = join(BASE_DIR, "minecraft-legacy-override.json")
LIBRARY_PATCHES_FILE = join(BASE_DIR, "library-patches.json")

View File

@ -114,6 +114,10 @@ class LibraryPatch(MetaBase):
match: List[GradleSpecifier]
override: Optional[Library]
additionalLibraries: Optional[List[Library]]
patchAdditionalLibraries: bool = Field(False)
def applies(self, target: Library) -> bool:
return target.name in self.match
class LibraryPatches(MetaBase):

View File

@ -1,4 +1,55 @@
[
{
"_comment": "Add missing tinyfd to the broken LWJGL 3.2.2 variant",
"match": [
"org.lwjgl:lwjgl:3.2.2"
],
"additionalLibraries": [
{
"downloads": {
"artifact": {
"sha1": "fcbe606c8f8da6f8f9a05e2c540eb1ee8632b0e9",
"size": 7092,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2.jar"
}
},
"name": "org.lwjgl:lwjgl-tinyfd:3.2.2"
},
{
"downloads": {
"artifact": {
"sha1": "fcbe606c8f8da6f8f9a05e2c540eb1ee8632b0e9",
"size": 7092,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2.jar"
},
"classifiers": {
"natives-linux": {
"sha1": "39e35b161c130635d9c8918ce04e887a30c5b687",
"size": 38804,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2-natives-linux.jar"
},
"natives-macos": {
"sha1": "46d0798228b8a28e857a2a0f02310fd6ba2a4eab",
"size": 42136,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2-natives-macos.jar"
},
"natives-windows": {
"sha1": "e9115958773644e863332a6a06488d26f9e1fc9f",
"size": 208314,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2-natives-windows.jar"
}
}
},
"name": "org.lwjgl:lwjgl-tinyfd:3.2.2",
"natives": {
"linux": "natives-linux",
"osx": "natives-macos",
"windows": "natives-windows"
}
}
],
"patchAdditionalLibraries": true
},
{
"_comment": "Add additional library just for osx-arm64. No override needed",
"match": [

View File

@ -1,322 +0,0 @@
{
"conflicts": [
{
"uid": "org.lwjgl"
}
],
"formatVersion": 1,
"libraries": [
{
"downloads": {
"artifact": {
"sha1": "d3ad4df38e400b8afba1de63f84338809399df5b",
"size": 108907,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2.jar"
}
},
"name": "org.lwjgl:lwjgl-glfw:3.2.2"
},
{
"downloads": {
"artifact": {
"sha1": "d3ad4df38e400b8afba1de63f84338809399df5b",
"size": 108907,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2.jar"
},
"classifiers": {
"natives-linux": {
"sha1": "0957733f26a6661d4883da0335f7ef46d3bbbd7d",
"size": 159198,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2-natives-linux.jar"
},
"natives-macos": {
"sha1": "98f745038d17ac3192fcd01dc44126b03ec1570d",
"size": 67311,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2-natives-macos.jar"
},
"natives-windows": {
"sha1": "dc6826d636bf796b33a49038c354210e661bfc17",
"size": 266648,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2-natives-windows.jar"
}
}
},
"name": "org.lwjgl:lwjgl-glfw:3.2.2",
"natives": {
"linux": "natives-linux",
"osx": "natives-macos",
"windows": "natives-windows"
}
},
{
"downloads": {
"artifact": {
"sha1": "ee8e57a79300f78294576d87c4a587f8c99402e2",
"size": 34848,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2.jar"
}
},
"name": "org.lwjgl:lwjgl-jemalloc:3.2.2"
},
{
"downloads": {
"artifact": {
"sha1": "ee8e57a79300f78294576d87c4a587f8c99402e2",
"size": 34848,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2.jar"
},
"classifiers": {
"natives-linux": {
"sha1": "268c08a150347e04e44ba56e359d62c9b78669df",
"size": 156173,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2-natives-linux.jar"
},
"natives-macos": {
"sha1": "805f5a10465375ba034b27b72331912fd2846690",
"size": 117127,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2-natives-macos.jar"
},
"natives-windows": {
"sha1": "338b25b99da3ba5f441f6492f2ce2a9c608860ed",
"size": 220623,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2-natives-windows.jar"
}
}
},
"name": "org.lwjgl:lwjgl-jemalloc:3.2.2",
"natives": {
"linux": "natives-linux",
"osx": "natives-macos",
"windows": "natives-windows"
}
},
{
"downloads": {
"artifact": {
"sha1": "2b772a102b0a11ee5f2109a5b136f4dc7c630827",
"size": 80012,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2.jar"
}
},
"name": "org.lwjgl:lwjgl-openal:3.2.2"
},
{
"downloads": {
"artifact": {
"sha1": "2b772a102b0a11ee5f2109a5b136f4dc7c630827",
"size": 80012,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2.jar"
},
"classifiers": {
"natives-linux": {
"sha1": "0364f9f5c3947393083ab5f37a571f5603aadd0b",
"size": 590997,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2-natives-linux.jar"
},
"natives-macos": {
"sha1": "a97b6345d5a9ddf889e262bd7ad8eed43b1bb063",
"size": 528006,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2-natives-macos.jar"
},
"natives-windows": {
"sha1": "ec20a7d42a2438528fca87e60b1705f1e2339ddb",
"size": 1310102,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2-natives-windows.jar"
}
}
},
"name": "org.lwjgl:lwjgl-openal:3.2.2",
"natives": {
"linux": "natives-linux",
"osx": "natives-macos",
"windows": "natives-windows"
}
},
{
"downloads": {
"artifact": {
"sha1": "6ac5bb88b44c43ea195a570aab059f63da004cd8",
"size": 929780,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2.jar"
}
},
"name": "org.lwjgl:lwjgl-opengl:3.2.2"
},
{
"downloads": {
"artifact": {
"sha1": "6ac5bb88b44c43ea195a570aab059f63da004cd8",
"size": 929780,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2.jar"
},
"classifiers": {
"natives-linux": {
"sha1": "338d33387919cb3f4cdba143c2b738a71ccfda60",
"size": 77392,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2-natives-linux.jar"
},
"natives-macos": {
"sha1": "cf4f43e69ee70d8ebfbb6ba93dec9016339e4fdc",
"size": 38989,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2-natives-macos.jar"
},
"natives-windows": {
"sha1": "d8dcdc91066cae2d2d8279cb4a9f9f05d9525826",
"size": 170798,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2-natives-windows.jar"
}
}
},
"name": "org.lwjgl:lwjgl-opengl:3.2.2",
"natives": {
"linux": "natives-linux",
"osx": "natives-macos",
"windows": "natives-windows"
}
},
{
"downloads": {
"artifact": {
"sha1": "3b8e6ebc5851dd3d17e37e5cadce2eff2a429f0f",
"size": 104469,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2.jar"
}
},
"name": "org.lwjgl:lwjgl-stb:3.2.2"
},
{
"downloads": {
"artifact": {
"sha1": "3b8e6ebc5851dd3d17e37e5cadce2eff2a429f0f",
"size": 104469,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2.jar"
},
"classifiers": {
"natives-linux": {
"sha1": "172c52e586fecf43f759bc4f70a778c01f6fdcc1",
"size": 203476,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2-natives-linux.jar"
},
"natives-macos": {
"sha1": "ee059b129b09fdecbd8595273926ae930bf5a5d7",
"size": 196796,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2-natives-macos.jar"
},
"natives-windows": {
"sha1": "811f705cbb29e8ae8d60bdf8fdd38c0c123ad3ef",
"size": 465810,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2-natives-windows.jar"
}
}
},
"name": "org.lwjgl:lwjgl-stb:3.2.2",
"natives": {
"linux": "natives-linux",
"osx": "natives-macos",
"windows": "natives-windows"
}
},
{
"downloads": {
"artifact": {
"sha1": "fcbe606c8f8da6f8f9a05e2c540eb1ee8632b0e9",
"size": 7092,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2.jar"
}
},
"name": "org.lwjgl:lwjgl-tinyfd:3.2.2"
},
{
"downloads": {
"artifact": {
"sha1": "fcbe606c8f8da6f8f9a05e2c540eb1ee8632b0e9",
"size": 7092,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2.jar"
},
"classifiers": {
"javadoc": {
"sha1": "ba657a222ee267b75fa81ae5ab29ae29b50f725f",
"size": 368913,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2-javadoc.jar"
},
"natives-linux": {
"sha1": "39e35b161c130635d9c8918ce04e887a30c5b687",
"size": 38804,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2-natives-linux.jar"
},
"natives-macos": {
"sha1": "46d0798228b8a28e857a2a0f02310fd6ba2a4eab",
"size": 42136,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2-natives-macos.jar"
},
"natives-windows": {
"sha1": "e9115958773644e863332a6a06488d26f9e1fc9f",
"size": 208314,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2-natives-windows.jar"
},
"sources": {
"sha1": "2fe76dcf2ca02ae0e64ac7c69eb251c09df0e922",
"size": 5034,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2-sources.jar"
}
}
},
"name": "org.lwjgl:lwjgl-tinyfd:3.2.2",
"natives": {
"linux": "natives-linux",
"osx": "natives-macos",
"windows": "natives-windows"
}
},
{
"downloads": {
"artifact": {
"sha1": "8ad6294407e15780b43e84929c40e4c5e997972e",
"size": 321900,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2.jar"
}
},
"name": "org.lwjgl:lwjgl:3.2.2"
},
{
"downloads": {
"artifact": {
"sha1": "8ad6294407e15780b43e84929c40e4c5e997972e",
"size": 321900,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2.jar"
},
"classifiers": {
"natives-linux": {
"sha1": "ae7976827ca2a3741f6b9a843a89bacd637af350",
"size": 124776,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2-natives-linux.jar"
},
"natives-macos": {
"sha1": "bbfb75693bdb714c0c69c2c9f9be73d259b43b62",
"size": 48462,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2-natives-macos.jar"
},
"natives-windows": {
"sha1": "05359f3aa50d36352815fc662ea73e1c00d22170",
"size": 279593,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2-natives-windows.jar"
}
}
},
"name": "org.lwjgl:lwjgl:3.2.2",
"natives": {
"linux": "natives-linux",
"osx": "natives-macos",
"windows": "natives-windows"
}
}
],
"name": "LWJGL 3",
"order": -1,
"releaseTime": "2019-06-19T11:44:29+00:00",
"type": "release",
"uid": "org.lwjgl3",
"version": "3.2.2",
"volatile": true
}