mirror of
https://github.com/unmojang/meta.git
synced 2025-09-24 03:31:03 -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):
|
||||
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
|
||||
args = profile.versionInfo.minecraftArguments
|
||||
tweakers = []
|
||||
@ -63,7 +65,7 @@ def versionFromProfile(profile, version):
|
||||
# result.minecraftArguments = args
|
||||
result.releaseTime = profile.versionInfo.time
|
||||
libs = []
|
||||
mcFilter = loadMcVersionFilter(result.mcVersion)
|
||||
mcFilter = loadMcVersionFilter(mcversion)
|
||||
for forgeLib in profile.versionInfo.libraries:
|
||||
if forgeLib.name.isLwjgl():
|
||||
continue
|
||||
@ -74,7 +76,7 @@ def versionFromProfile(profile, version):
|
||||
if fixedName.artifact == "minecraftforge":
|
||||
fixedName.artifact = "forge"
|
||||
fixedName.classifier = "universal"
|
||||
fixedName.version = "%s-%s" % (result.mcVersion, fixedName.version)
|
||||
fixedName.version = "%s-%s" % (mcversion, fixedName.version)
|
||||
elif fixedName.artifact == "forge":
|
||||
fixedName.classifier = "universal"
|
||||
ourLib = MultiMCLibrary(name=fixedName)
|
||||
@ -83,6 +85,7 @@ def versionFromProfile(profile, version):
|
||||
ourLib.mmcHint = "forge-pack-xz"
|
||||
libs.append(ourLib)
|
||||
result.libraries = libs
|
||||
result.order = 5
|
||||
return result
|
||||
|
||||
# load the locally cached version list
|
||||
@ -92,6 +95,8 @@ with open("upstream/forge/index.json", 'r', encoding='utf-8') as f:
|
||||
|
||||
versions = []
|
||||
|
||||
writeSharedPackageData('net.minecraftforge', 'Forge', 'net.minecraft')
|
||||
|
||||
for id, entry in remoteVersionlist.number.items():
|
||||
if entry.mcversion == None:
|
||||
eprint ("Skipping %d with invalid MC version" % entry.build)
|
||||
|
@ -83,6 +83,8 @@ for filename in os.listdir('upstream/mojang/versions'):
|
||||
addLWJGLVersion(lwjglVersions, keyBucket)
|
||||
versionFile.libraries = libs_minecraft
|
||||
versionFile.id = mojangVersionFile.id
|
||||
versionFile.requires = {'org.lwjgl': '*'}
|
||||
versionFile.order = -2
|
||||
filenameOut = "multimc/net.minecraft/%s.json" % versionFile.version
|
||||
if versionFile.version in staticVersionlist.versions:
|
||||
ApplyLegacyOverride (versionFile, staticVersionlist.versions[versionFile.version])
|
||||
@ -91,6 +93,29 @@ for filename in os.listdir('upstream/mojang/versions'):
|
||||
|
||||
for version in lwjglVersions:
|
||||
versionObj = lwjglVersions[version]
|
||||
versionObj.order = -1
|
||||
filename = "multimc/org.lwjgl/%s.json" % version
|
||||
with open(filename, 'w') as outfile:
|
||||
json.dump(versionObj.to_json(), outfile, sort_keys=True, indent=4)
|
||||
good = True
|
||||
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()
|
||||
|
||||
# ignore these files when indexing versions
|
||||
ignore = set(["index.json", ".git"])
|
||||
ignore = set(["index.json", "package.json", ".git"])
|
||||
|
||||
# initialize output structures - package list level
|
||||
packages = MultiMCPackageIndex()
|
||||
@ -26,11 +26,15 @@ for package in os.listdir('multimc'):
|
||||
if package in ignore:
|
||||
continue
|
||||
|
||||
sharedData = readSharedPackageData(package)
|
||||
|
||||
# initialize output structures - version list level
|
||||
versionList = MultiMCVersionIndex()
|
||||
versionList.uid = package
|
||||
versionList.parentUid = sharedData.parentUid
|
||||
versionList.name = sharedData.name
|
||||
|
||||
latest = {}
|
||||
name = None
|
||||
|
||||
# walk through all the versions of the package
|
||||
for filename in os.listdir("multimc/%s" % (package)):
|
||||
@ -50,9 +54,7 @@ for package in os.listdir('multimc'):
|
||||
versionEntry.type = versionFile.type
|
||||
versionEntry.releaseTime = versionFile.releaseTime
|
||||
versionEntry.sha256 = filehash
|
||||
if name == None:
|
||||
name = versionFile.name
|
||||
|
||||
versionEntry.requires = versionFile.requires
|
||||
# update the latest version of particular type (if needed)
|
||||
if versionFile.type:
|
||||
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
|
||||
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 latest:
|
||||
versionList.latest = {}
|
||||
@ -83,10 +82,11 @@ for package in os.listdir('multimc'):
|
||||
packageEntry = MultiMCPackageIndexEntry(
|
||||
{
|
||||
"uid" : package,
|
||||
"name" : name,
|
||||
"name" : sharedData.name,
|
||||
"sha256": HashFile(hashlib.sha256, outFilePath)
|
||||
}
|
||||
)
|
||||
packageEntry.parentUid = sharedData.parentUid
|
||||
packages.packages.append(packageEntry)
|
||||
|
||||
# write the repository package index
|
||||
|
27
metautil.py
27
metautil.py
@ -213,7 +213,8 @@ class MultiMCVersionFile (VersionedJsonObject):
|
||||
version = 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...
|
||||
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)
|
||||
downloads = DictProperty(MojangArtifactBase, 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)
|
||||
addTraits = ListProperty(StringProperty, name="+traits", 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
|
||||
def MojangToMultiMC (file, name, uid, version):
|
||||
@ -244,15 +246,35 @@ def MojangToMultiMC (file, name, uid, version):
|
||||
mmcFile.type = file.type
|
||||
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):
|
||||
version = StringProperty()
|
||||
type = StringProperty()
|
||||
type = StringProperty(exclude_if_none=True, default=None)
|
||||
releaseTime = ISOTimestampProperty()
|
||||
requires = DictProperty(StringProperty, exclude_if_none=True, default=None)
|
||||
sha256 = StringProperty()
|
||||
|
||||
class MultiMCVersionIndex(VersionedJsonObject):
|
||||
name = StringProperty()
|
||||
uid = StringProperty()
|
||||
parentUid = 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)
|
||||
versions = ListProperty(MultiMCVersionIndexEntry)
|
||||
@ -260,6 +282,7 @@ class MultiMCVersionIndex(VersionedJsonObject):
|
||||
class MultiMCPackageIndexEntry(JsonObject):
|
||||
name = StringProperty()
|
||||
uid = StringProperty()
|
||||
parentUid = StringProperty(exclude_if_none=True, default=None)
|
||||
sha256 = StringProperty()
|
||||
|
||||
class MultiMCPackageIndex(VersionedJsonObject):
|
||||
|
Loading…
x
Reference in New Issue
Block a user