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 collections import defaultdict, namedtuple
from operator import attrgetter from operator import attrgetter
from pprint import pprint 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 import ensure_component_dir, polymc_path, upstream_path, static_path
from meta.common.mojang import VERSION_MANIFEST_FILE, MINECRAFT_COMPONENT, LWJGL3_COMPONENT, LWJGL_COMPONENT, \ 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, \ from meta.model import MetaVersion, Library, GradleSpecifier, MojangLibraryDownloads, MojangArtifact, Dependency, \
MetaPackage, MojangRules MetaPackage, MojangRules
from meta.model.mojang import MojangIndexWrap, MojangIndex, MojangVersion, LegacyOverrideIndex, LibraryPatches from meta.model.mojang import MojangIndexWrap, MojangIndex, MojangVersion, LegacyOverrideIndex, LibraryPatches
@ -62,7 +62,7 @@ LOG4J_HASHES = {
PASS_VARIANTS = [ PASS_VARIANTS = [
# "beed62ec1d40ae89d808fe70b83df6bd4b3be81f", # 3.3.1 (2022-05-18 13:51:54+00:00) split natives, without workaround # "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 "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) "8e1f89b96c6f583a0e494949c75115ed13412ba1", # 3.2.1 (2019-02-13 16:12:08+00:00)
"7ed2372097dbd635f5aef3137711141ce91c4ee9", # 3.1.6 (2018-11-29 13:11:38+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) "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 "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 "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 "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 "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 "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 "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 return False
def patch_library(lib: Library, patches: LibraryPatches): def patch_library(lib: Library, patches: LibraryPatches) -> List[Library]:
new_libraries = [] to_patch = [lib]
for patch in patches:
if lib.name in patch.match: new_libraries = []
if patch.override: while to_patch:
lib.merge(patch.override) target = to_patch.pop(0)
for patch in patches:
if patch.applies(target):
if patch.override:
target.merge(patch.override)
if patch.additionalLibraries:
additional_copy = copy.deepcopy(patch.additionalLibraries)
new_libraries += set(additional_copy)
if patch.patchAdditionalLibraries:
to_patch += additional_copy
if patch.additionalLibraries:
new_libraries += patch.additionalLibraries
return new_libraries return new_libraries
@ -203,21 +211,13 @@ def process_single_variant(lwjgl_variant: MetaVersion, patches: LibraryPatches):
v.libraries += list(dict.fromkeys(new_libraries)) v.libraries += list(dict.fromkeys(new_libraries))
if lwjgl_version[0] == '2': 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") 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.name = 'LWJGL 2'
v.uid = LWJGL_COMPONENT v.uid = LWJGL_COMPONENT
v.conflicts = [Dependency(uid=LWJGL3_COMPONENT)] v.conflicts = [Dependency(uid=LWJGL3_COMPONENT)]
elif lwjgl_version[0] == '3': 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") 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.name = 'LWJGL 3'
v.uid = LWJGL3_COMPONENT v.uid = LWJGL3_COMPONENT
@ -417,10 +417,6 @@ def main():
override.apply_onto_meta_version(v) override.apply_onto_meta_version(v)
v.write(out_filename) 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: for lwjglVersionVariant in lwjglVersionVariants:
decided_variant = None decided_variant = None
passed_variants = 0 passed_variants = 0

View File

@ -7,7 +7,6 @@ VERSIONS_DIR = join(BASE_DIR, "versions")
ASSETS_DIR = join(BASE_DIR, "assets") ASSETS_DIR = join(BASE_DIR, "assets")
STATIC_EXPERIMENTS_FILE = join(BASE_DIR, "minecraft-experiments.json") 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") STATIC_OVERRIDES_FILE = join(BASE_DIR, "minecraft-legacy-override.json")
LIBRARY_PATCHES_FILE = join(BASE_DIR, "library-patches.json") LIBRARY_PATCHES_FILE = join(BASE_DIR, "library-patches.json")

View File

@ -114,6 +114,10 @@ class LibraryPatch(MetaBase):
match: List[GradleSpecifier] match: List[GradleSpecifier]
override: Optional[Library] override: Optional[Library]
additionalLibraries: Optional[List[Library]] additionalLibraries: Optional[List[Library]]
patchAdditionalLibraries: bool = Field(False)
def applies(self, target: Library) -> bool:
return target.name in self.match
class LibraryPatches(MetaBase): 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", "_comment": "Add additional library just for osx-arm64. No override needed",
"match": [ "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
}