mirror of
https://github.com/unmojang/meta.git
synced 2025-09-24 11:41:28 -04:00
Add package info and filter out bad LWJGL versions
This commit is contained in:
parent
585e3e8f85
commit
ed91f63702
@ -47,7 +47,9 @@ def shouldIgnoreArtifact(libSet, match):
|
|||||||
|
|
||||||
def versionFromProfile(profile, version):
|
def versionFromProfile(profile, version):
|
||||||
result = MultiMCVersionFile({"name":"Forge", "version":version.longVersion, "uid":"net.minecraftforge" })
|
result = MultiMCVersionFile({"name":"Forge", "version":version.longVersion, "uid":"net.minecraftforge" })
|
||||||
result.mcVersion = profile.install.minecraft
|
mcversion = profile.install.minecraft
|
||||||
|
result.parentUid ='net.minecraft'
|
||||||
|
result.requires ={'net.minecraft': mcversion}
|
||||||
result.mainClass = profile.versionInfo.mainClass
|
result.mainClass = profile.versionInfo.mainClass
|
||||||
args = profile.versionInfo.minecraftArguments
|
args = profile.versionInfo.minecraftArguments
|
||||||
tweakers = []
|
tweakers = []
|
||||||
@ -63,7 +65,7 @@ def versionFromProfile(profile, version):
|
|||||||
# result.minecraftArguments = args
|
# result.minecraftArguments = args
|
||||||
result.releaseTime = profile.versionInfo.time
|
result.releaseTime = profile.versionInfo.time
|
||||||
libs = []
|
libs = []
|
||||||
mcFilter = loadMcVersionFilter(result.mcVersion)
|
mcFilter = loadMcVersionFilter(mcversion)
|
||||||
for forgeLib in profile.versionInfo.libraries:
|
for forgeLib in profile.versionInfo.libraries:
|
||||||
if forgeLib.name.isLwjgl():
|
if forgeLib.name.isLwjgl():
|
||||||
continue
|
continue
|
||||||
@ -74,7 +76,7 @@ def versionFromProfile(profile, version):
|
|||||||
if fixedName.artifact == "minecraftforge":
|
if fixedName.artifact == "minecraftforge":
|
||||||
fixedName.artifact = "forge"
|
fixedName.artifact = "forge"
|
||||||
fixedName.classifier = "universal"
|
fixedName.classifier = "universal"
|
||||||
fixedName.version = "%s-%s" % (result.mcVersion, fixedName.version)
|
fixedName.version = "%s-%s" % (mcversion, fixedName.version)
|
||||||
elif fixedName.artifact == "forge":
|
elif fixedName.artifact == "forge":
|
||||||
fixedName.classifier = "universal"
|
fixedName.classifier = "universal"
|
||||||
ourLib = MultiMCLibrary(name=fixedName)
|
ourLib = MultiMCLibrary(name=fixedName)
|
||||||
@ -83,6 +85,7 @@ def versionFromProfile(profile, version):
|
|||||||
ourLib.mmcHint = "forge-pack-xz"
|
ourLib.mmcHint = "forge-pack-xz"
|
||||||
libs.append(ourLib)
|
libs.append(ourLib)
|
||||||
result.libraries = libs
|
result.libraries = libs
|
||||||
|
result.order = 5
|
||||||
return result
|
return result
|
||||||
|
|
||||||
# load the locally cached version list
|
# load the locally cached version list
|
||||||
@ -92,6 +95,8 @@ with open("upstream/forge/index.json", 'r', encoding='utf-8') as f:
|
|||||||
|
|
||||||
versions = []
|
versions = []
|
||||||
|
|
||||||
|
writeSharedPackageData('net.minecraftforge', 'Forge', 'net.minecraft')
|
||||||
|
|
||||||
for id, entry in remoteVersionlist.number.items():
|
for id, entry in remoteVersionlist.number.items():
|
||||||
if entry.mcversion == None:
|
if entry.mcversion == None:
|
||||||
eprint ("Skipping %d with invalid MC version" % entry.build)
|
eprint ("Skipping %d with invalid MC version" % entry.build)
|
||||||
|
@ -83,6 +83,8 @@ for filename in os.listdir('upstream/mojang/versions'):
|
|||||||
addLWJGLVersion(lwjglVersions, keyBucket)
|
addLWJGLVersion(lwjglVersions, keyBucket)
|
||||||
versionFile.libraries = libs_minecraft
|
versionFile.libraries = libs_minecraft
|
||||||
versionFile.id = mojangVersionFile.id
|
versionFile.id = mojangVersionFile.id
|
||||||
|
versionFile.requires = {'org.lwjgl': '*'}
|
||||||
|
versionFile.order = -2
|
||||||
filenameOut = "multimc/net.minecraft/%s.json" % versionFile.version
|
filenameOut = "multimc/net.minecraft/%s.json" % versionFile.version
|
||||||
if versionFile.version in staticVersionlist.versions:
|
if versionFile.version in staticVersionlist.versions:
|
||||||
ApplyLegacyOverride (versionFile, staticVersionlist.versions[versionFile.version])
|
ApplyLegacyOverride (versionFile, staticVersionlist.versions[versionFile.version])
|
||||||
@ -91,6 +93,29 @@ for filename in os.listdir('upstream/mojang/versions'):
|
|||||||
|
|
||||||
for version in lwjglVersions:
|
for version in lwjglVersions:
|
||||||
versionObj = lwjglVersions[version]
|
versionObj = lwjglVersions[version]
|
||||||
|
versionObj.order = -1
|
||||||
filename = "multimc/org.lwjgl/%s.json" % version
|
filename = "multimc/org.lwjgl/%s.json" % version
|
||||||
with open(filename, 'w') as outfile:
|
good = True
|
||||||
json.dump(versionObj.to_json(), outfile, sort_keys=True, indent=4)
|
for lib in versionObj.libraries:
|
||||||
|
if not lib.natives:
|
||||||
|
continue
|
||||||
|
checkedDict = {'linux', 'windows', 'osx'}
|
||||||
|
if not checkedDict.issubset(lib.natives.keys()):
|
||||||
|
print("Missing system classifier!", versionObj.version, lib.name, lib.natives.keys())
|
||||||
|
good = False
|
||||||
|
break
|
||||||
|
if lib.downloads:
|
||||||
|
for entry in checkedDict:
|
||||||
|
bakedEntry = lib.natives[entry]
|
||||||
|
if not bakedEntry in lib.downloads.classifiers:
|
||||||
|
print("Missing download for classifier!", versionObj.version, lib.name, bakedEntry, lib.downloads.classifiers.keys())
|
||||||
|
good = False
|
||||||
|
break
|
||||||
|
if good:
|
||||||
|
with open(filename, 'w') as outfile:
|
||||||
|
json.dump(versionObj.to_json(), outfile, sort_keys=True, indent=4)
|
||||||
|
else:
|
||||||
|
print("Skipped LWJGL", versionObj.version)
|
||||||
|
|
||||||
|
writeSharedPackageData('org.lwjgl', 'LWJGL', None)
|
||||||
|
writeSharedPackageData('net.minecraft', 'Minecraft', None)
|
||||||
|
18
index.py
18
index.py
@ -16,7 +16,7 @@ def HashFile(hash, fname):
|
|||||||
return hash_instance.hexdigest()
|
return hash_instance.hexdigest()
|
||||||
|
|
||||||
# ignore these files when indexing versions
|
# ignore these files when indexing versions
|
||||||
ignore = set(["index.json", ".git"])
|
ignore = set(["index.json", "package.json", ".git"])
|
||||||
|
|
||||||
# initialize output structures - package list level
|
# initialize output structures - package list level
|
||||||
packages = MultiMCPackageIndex()
|
packages = MultiMCPackageIndex()
|
||||||
@ -26,11 +26,15 @@ for package in os.listdir('multimc'):
|
|||||||
if package in ignore:
|
if package in ignore:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
sharedData = readSharedPackageData(package)
|
||||||
|
|
||||||
# initialize output structures - version list level
|
# initialize output structures - version list level
|
||||||
versionList = MultiMCVersionIndex()
|
versionList = MultiMCVersionIndex()
|
||||||
versionList.uid = package
|
versionList.uid = package
|
||||||
|
versionList.parentUid = sharedData.parentUid
|
||||||
|
versionList.name = sharedData.name
|
||||||
|
|
||||||
latest = {}
|
latest = {}
|
||||||
name = None
|
|
||||||
|
|
||||||
# walk through all the versions of the package
|
# walk through all the versions of the package
|
||||||
for filename in os.listdir("multimc/%s" % (package)):
|
for filename in os.listdir("multimc/%s" % (package)):
|
||||||
@ -50,9 +54,7 @@ for package in os.listdir('multimc'):
|
|||||||
versionEntry.type = versionFile.type
|
versionEntry.type = versionFile.type
|
||||||
versionEntry.releaseTime = versionFile.releaseTime
|
versionEntry.releaseTime = versionFile.releaseTime
|
||||||
versionEntry.sha256 = filehash
|
versionEntry.sha256 = filehash
|
||||||
if name == None:
|
versionEntry.requires = versionFile.requires
|
||||||
name = versionFile.name
|
|
||||||
|
|
||||||
# update the latest version of particular type (if needed)
|
# update the latest version of particular type (if needed)
|
||||||
if versionFile.type:
|
if versionFile.type:
|
||||||
if versionFile.type in latest:
|
if versionFile.type in latest:
|
||||||
@ -65,9 +67,6 @@ for package in os.listdir('multimc'):
|
|||||||
# sort the versions in descending order by time of release
|
# sort the versions in descending order by time of release
|
||||||
versionList.versions = sorted(versionList.versions, key=itemgetter('releaseTime'), reverse=True)
|
versionList.versions = sorted(versionList.versions, key=itemgetter('releaseTime'), reverse=True)
|
||||||
|
|
||||||
# assign some values derived from the version files
|
|
||||||
versionList.name = name
|
|
||||||
|
|
||||||
# if the latest version dict was populated, transform it into output
|
# if the latest version dict was populated, transform it into output
|
||||||
if latest:
|
if latest:
|
||||||
versionList.latest = {}
|
versionList.latest = {}
|
||||||
@ -83,10 +82,11 @@ for package in os.listdir('multimc'):
|
|||||||
packageEntry = MultiMCPackageIndexEntry(
|
packageEntry = MultiMCPackageIndexEntry(
|
||||||
{
|
{
|
||||||
"uid" : package,
|
"uid" : package,
|
||||||
"name" : name,
|
"name" : sharedData.name,
|
||||||
"sha256": HashFile(hashlib.sha256, outFilePath)
|
"sha256": HashFile(hashlib.sha256, outFilePath)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
packageEntry.parentUid = sharedData.parentUid
|
||||||
packages.packages.append(packageEntry)
|
packages.packages.append(packageEntry)
|
||||||
|
|
||||||
# write the repository package index
|
# write the repository package index
|
||||||
|
27
metautil.py
27
metautil.py
@ -213,7 +213,8 @@ class MultiMCVersionFile (VersionedJsonObject):
|
|||||||
version = StringProperty(required=True)
|
version = StringProperty(required=True)
|
||||||
uid = StringProperty(required=True)
|
uid = StringProperty(required=True)
|
||||||
id = StringProperty(exclude_if_none=True, default=None) # DEPRECATED this is the main Minecraft version ID Mojang uses...
|
id = StringProperty(exclude_if_none=True, default=None) # DEPRECATED this is the main Minecraft version ID Mojang uses...
|
||||||
mcVersion = StringProperty(exclude_if_none=True, default=None) # DEPRECATED - replace with proper depends
|
parentUid = StringProperty(exclude_if_none=True, default=None)
|
||||||
|
requires = DictProperty(StringProperty, exclude_if_none=True, default=None)
|
||||||
assetIndex = ObjectProperty(MojangAssets, exclude_if_none=True, default=None)
|
assetIndex = ObjectProperty(MojangAssets, exclude_if_none=True, default=None)
|
||||||
downloads = DictProperty(MojangArtifactBase, exclude_if_none=True, default=None)
|
downloads = DictProperty(MojangArtifactBase, exclude_if_none=True, default=None)
|
||||||
libraries = ListProperty(MultiMCLibrary, exclude_if_none=True, default=None)
|
libraries = ListProperty(MultiMCLibrary, exclude_if_none=True, default=None)
|
||||||
@ -224,6 +225,7 @@ class MultiMCVersionFile (VersionedJsonObject):
|
|||||||
type = StringProperty(exclude_if_none=True, default=None)
|
type = StringProperty(exclude_if_none=True, default=None)
|
||||||
addTraits = ListProperty(StringProperty, name="+traits", exclude_if_none=True, default=None)
|
addTraits = ListProperty(StringProperty, name="+traits", exclude_if_none=True, default=None)
|
||||||
addTweakers = ListProperty(StringProperty, name="+tweakers", exclude_if_none=True, default=None)
|
addTweakers = ListProperty(StringProperty, name="+tweakers", exclude_if_none=True, default=None)
|
||||||
|
order = IntegerProperty()
|
||||||
|
|
||||||
# Convert Mojang version file object to a MultiMC version file object
|
# Convert Mojang version file object to a MultiMC version file object
|
||||||
def MojangToMultiMC (file, name, uid, version):
|
def MojangToMultiMC (file, name, uid, version):
|
||||||
@ -244,15 +246,35 @@ def MojangToMultiMC (file, name, uid, version):
|
|||||||
mmcFile.type = file.type
|
mmcFile.type = file.type
|
||||||
return mmcFile
|
return mmcFile
|
||||||
|
|
||||||
|
class MultiMCSharedPackageData(JsonObject):
|
||||||
|
name = StringProperty(required=True)
|
||||||
|
uid = StringProperty(required=True)
|
||||||
|
parentUid = StringProperty(exclude_if_none=True, default=None)
|
||||||
|
|
||||||
|
def writeSharedPackageData(uid, name, parentUid = None):
|
||||||
|
desc = MultiMCSharedPackageData({
|
||||||
|
'name': name,
|
||||||
|
'uid': uid
|
||||||
|
})
|
||||||
|
desc.parentUid = parentUid
|
||||||
|
with open("multimc/%s/package.json" % uid, 'w') as file:
|
||||||
|
json.dump(desc.to_json(), file, sort_keys=True, indent=4)
|
||||||
|
|
||||||
|
def readSharedPackageData(uid):
|
||||||
|
with open("multimc/%s/package.json" % uid, 'r') as file:
|
||||||
|
return MultiMCSharedPackageData(json.load(file))
|
||||||
|
|
||||||
class MultiMCVersionIndexEntry(JsonObject):
|
class MultiMCVersionIndexEntry(JsonObject):
|
||||||
version = StringProperty()
|
version = StringProperty()
|
||||||
type = StringProperty()
|
type = StringProperty(exclude_if_none=True, default=None)
|
||||||
releaseTime = ISOTimestampProperty()
|
releaseTime = ISOTimestampProperty()
|
||||||
|
requires = DictProperty(StringProperty, exclude_if_none=True, default=None)
|
||||||
sha256 = StringProperty()
|
sha256 = StringProperty()
|
||||||
|
|
||||||
class MultiMCVersionIndex(VersionedJsonObject):
|
class MultiMCVersionIndex(VersionedJsonObject):
|
||||||
name = StringProperty()
|
name = StringProperty()
|
||||||
uid = StringProperty()
|
uid = StringProperty()
|
||||||
|
parentUid = StringProperty(exclude_if_none=True, default=None)
|
||||||
latest = DictProperty(StringProperty, exclude_if_none=True, default=None)
|
latest = DictProperty(StringProperty, exclude_if_none=True, default=None)
|
||||||
recommended = DictProperty(StringProperty, exclude_if_none=True, default=None)
|
recommended = DictProperty(StringProperty, exclude_if_none=True, default=None)
|
||||||
versions = ListProperty(MultiMCVersionIndexEntry)
|
versions = ListProperty(MultiMCVersionIndexEntry)
|
||||||
@ -260,6 +282,7 @@ class MultiMCVersionIndex(VersionedJsonObject):
|
|||||||
class MultiMCPackageIndexEntry(JsonObject):
|
class MultiMCPackageIndexEntry(JsonObject):
|
||||||
name = StringProperty()
|
name = StringProperty()
|
||||||
uid = StringProperty()
|
uid = StringProperty()
|
||||||
|
parentUid = StringProperty(exclude_if_none=True, default=None)
|
||||||
sha256 = StringProperty()
|
sha256 = StringProperty()
|
||||||
|
|
||||||
class MultiMCPackageIndex(VersionedJsonObject):
|
class MultiMCPackageIndex(VersionedJsonObject):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user