uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead

https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948
this can do it nicely.

Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View file

@ -0,0 +1,24 @@
{ callPackage, lib, javaPackages }:
let
versions = lib.importJSON ./versions.json;
latestVersion = lib.last (builtins.sort lib.versionOlder (builtins.attrNames versions));
escapeVersion = builtins.replaceStrings [ "." ] [ "-" ];
getJavaVersion = v: (builtins.getAttr "openjdk${toString v}" javaPackages.compiler).headless;
packages = lib.mapAttrs'
(version: value: {
name = "vanilla-${escapeVersion version}";
value = callPackage ./derivation.nix {
inherit (value) version url sha1;
jre_headless = getJavaVersion (if value.javaVersion == null then 8 else value.javaVersion); # versions <= 1.6 will default to 8
};
})
versions;
in
lib.recurseIntoAttrs (
packages // {
vanilla = builtins.getAttr "vanilla-${escapeVersion latestVersion}" packages;
}
)

View file

@ -0,0 +1,37 @@
{ lib, stdenv, fetchurl, nixosTests, jre_headless, version, url, sha1 }:
stdenv.mkDerivation {
pname = "minecraft-server";
inherit version;
src = fetchurl { inherit url sha1; };
preferLocalBuild = true;
installPhase = ''
mkdir -p $out/bin $out/lib/minecraft
cp -v $src $out/lib/minecraft/server.jar
cat > $out/bin/minecraft-server << EOF
#!/bin/sh
exec ${jre_headless}/bin/java \$@ -jar $out/lib/minecraft/server.jar nogui
EOF
chmod +x $out/bin/minecraft-server
'';
dontUnpack = true;
passthru = {
tests = { inherit (nixosTests) minecraft-server; };
updateScript = ./update.py;
};
meta = with lib; {
description = "Minecraft Server";
homepage = "https://minecraft.net";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.unfreeRedistributable;
platforms = platforms.unix;
maintainers = with maintainers; [ thoughtpolice tomberek costrouc jyooru ];
};
}

View file

@ -0,0 +1,156 @@
#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p python3Packages.requests python3Packages.dataclasses-json
import json
from dataclasses import dataclass, field
from datetime import datetime
from pathlib import Path
from typing import Any, Dict, List, Optional
import requests
from dataclasses_json import DataClassJsonMixin, LetterCase, config
from marshmallow import fields
@dataclass
class Download(DataClassJsonMixin):
sha1: str
size: int
url: str
@dataclass
class Version(DataClassJsonMixin):
id: str
type: str
url: str
time: datetime = field(
metadata=config(
encoder=datetime.isoformat,
decoder=datetime.fromisoformat,
mm_field=fields.DateTime(format="iso"),
)
)
release_time: datetime = field(
metadata=config(
encoder=datetime.isoformat,
decoder=datetime.fromisoformat,
mm_field=fields.DateTime(format="iso"),
letter_case=LetterCase.CAMEL,
)
)
def get_manifest(self) -> Any:
"""Return the version's manifest."""
response = requests.get(self.url)
response.raise_for_status()
return response.json()
def get_downloads(self) -> Dict[str, Download]:
"""
Return all downloadable files from the version's manifest, in Download
objects.
"""
return {
download_name: Download.from_dict(download_info)
for download_name, download_info in self.get_manifest()["downloads"].items()
}
def get_java_version(self) -> Any:
"""
Return the java version specified in a version's manifest, if it is
present. Versions <= 1.6 do not specify this.
"""
return self.get_manifest().get("javaVersion", {}).get("majorVersion", None)
def get_server(self) -> Optional[Download]:
"""
If the version has a server download available, return the Download
object for the server download. If the version does not have a server
download avilable, return None.
"""
downloads = self.get_downloads()
if "server" in downloads:
return downloads["server"]
return None
def get_versions() -> List[Version]:
"""Return a list of Version objects for all available versions."""
response = requests.get(
"https://launchermeta.mojang.com/mc/game/version_manifest.json"
)
response.raise_for_status()
data = response.json()
return [Version.from_dict(version) for version in data["versions"]]
def get_major_release(version_id: str) -> str:
"""
Return the major release for a version. The major release for 1.17 and
1.17.1 is 1.17.
"""
if not len(version_id.split(".")) >= 2:
raise ValueError(f"version not in expected format: '{version_id}'")
return ".".join(version_id.split(".")[:2])
def group_major_releases(releases: List[Version]) -> Dict[str, List[Version]]:
"""
Return a dictionary containing each version grouped by each major release.
The key "1.17" contains a list with two Version objects, one for "1.17"
and another for "1.17.1".
"""
groups: Dict[str, List[Version]] = {}
for release in releases:
major_release = get_major_release(release.id)
if major_release not in groups:
groups[major_release] = []
groups[major_release].append(release)
return groups
def get_latest_major_releases(releases: List[Version]) -> Dict[str, Version]:
"""
Return a dictionary containing the latest version for each major release.
The latest major release for 1.16 is 1.16.5, so the key "1.16" contains a
Version object for 1.16.5.
"""
return {
major_release: sorted(releases, key=lambda x: x.id, reverse=True)[0]
for major_release, releases in group_major_releases(releases).items()
}
def generate() -> Dict[str, Dict[str, str]]:
"""
Return a dictionary containing the latest url, sha1 and version for each major
release.
"""
versions = get_versions()
releases = list(
filter(lambda version: version.type == "release", versions)
) # remove snapshots and betas
latest_major_releases = get_latest_major_releases(releases)
servers = {
version: Download.schema().dump(download_info) # Download -> dict
for version, download_info in {
version: value.get_server()
for version, value in latest_major_releases.items()
}.items()
if download_info is not None # versions < 1.2 do not have a server
}
for server in servers.values():
del server["size"] # don't need it
for version, server in servers.items():
server["version"] = latest_major_releases[version].id
server["javaVersion"] = latest_major_releases[version].get_java_version()
return servers
if __name__ == "__main__":
with open(Path(__file__).parent / "versions.json", "w") as file:
json.dump(generate(), file, indent=2)
file.write("\n")

View file

@ -0,0 +1,104 @@
{
"1.18": {
"url": "https://launcher.mojang.com/v1/objects/c8f83c5655308435b3dcf03c06d9fe8740a77469/server.jar",
"sha1": "c8f83c5655308435b3dcf03c06d9fe8740a77469",
"version": "1.18.2",
"javaVersion": 17
},
"1.17": {
"url": "https://launcher.mojang.com/v1/objects/a16d67e5807f57fc4e550299cf20226194497dc2/server.jar",
"sha1": "a16d67e5807f57fc4e550299cf20226194497dc2",
"version": "1.17.1",
"javaVersion": 16
},
"1.16": {
"url": "https://launcher.mojang.com/v1/objects/1b557e7b033b583cd9f66746b7a9ab1ec1673ced/server.jar",
"sha1": "1b557e7b033b583cd9f66746b7a9ab1ec1673ced",
"version": "1.16.5",
"javaVersion": 8
},
"1.15": {
"url": "https://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar",
"sha1": "bb2b6b1aefcd70dfd1892149ac3a215f6c636b07",
"version": "1.15.2",
"javaVersion": 8
},
"1.14": {
"url": "https://launcher.mojang.com/v1/objects/3dc3d84a581f14691199cf6831b71ed1296a9fdf/server.jar",
"sha1": "3dc3d84a581f14691199cf6831b71ed1296a9fdf",
"version": "1.14.4",
"javaVersion": 8
},
"1.13": {
"url": "https://launcher.mojang.com/v1/objects/3737db93722a9e39eeada7c27e7aca28b144ffa7/server.jar",
"sha1": "3737db93722a9e39eeada7c27e7aca28b144ffa7",
"version": "1.13.2",
"javaVersion": 8
},
"1.12": {
"url": "https://launcher.mojang.com/v1/objects/886945bfb2b978778c3a0288fd7fab09d315b25f/server.jar",
"sha1": "886945bfb2b978778c3a0288fd7fab09d315b25f",
"version": "1.12.2",
"javaVersion": 8
},
"1.11": {
"url": "https://launcher.mojang.com/v1/objects/f00c294a1576e03fddcac777c3cf4c7d404c4ba4/server.jar",
"sha1": "f00c294a1576e03fddcac777c3cf4c7d404c4ba4",
"version": "1.11.2",
"javaVersion": 8
},
"1.10": {
"url": "https://launcher.mojang.com/v1/objects/3d501b23df53c548254f5e3f66492d178a48db63/server.jar",
"sha1": "3d501b23df53c548254f5e3f66492d178a48db63",
"version": "1.10.2",
"javaVersion": 8
},
"1.9": {
"url": "https://launcher.mojang.com/v1/objects/edbb7b1758af33d365bf835eb9d13de005b1e274/server.jar",
"sha1": "edbb7b1758af33d365bf835eb9d13de005b1e274",
"version": "1.9.4",
"javaVersion": 8
},
"1.8": {
"url": "https://launcher.mojang.com/v1/objects/b58b2ceb36e01bcd8dbf49c8fb66c55a9f0676cd/server.jar",
"sha1": "b58b2ceb36e01bcd8dbf49c8fb66c55a9f0676cd",
"version": "1.8.9",
"javaVersion": 8
},
"1.7": {
"url": "https://launcher.mojang.com/v1/objects/4cec86a928ec171fdc0c6b40de2de102f21601b5/server.jar",
"sha1": "4cec86a928ec171fdc0c6b40de2de102f21601b5",
"version": "1.7.9",
"javaVersion": 8
},
"1.6": {
"url": "https://launcher.mojang.com/v1/objects/050f93c1f3fe9e2052398f7bd6aca10c63d64a87/server.jar",
"sha1": "050f93c1f3fe9e2052398f7bd6aca10c63d64a87",
"version": "1.6.4",
"javaVersion": null
},
"1.5": {
"url": "https://launcher.mojang.com/v1/objects/f9ae3f651319151ce99a0bfad6b34fa16eb6775f/server.jar",
"sha1": "f9ae3f651319151ce99a0bfad6b34fa16eb6775f",
"version": "1.5.2",
"javaVersion": null
},
"1.4": {
"url": "https://launcher.mojang.com/v1/objects/2f0ec8efddd2f2c674c77be9ddb370b727dec676/server.jar",
"sha1": "2f0ec8efddd2f2c674c77be9ddb370b727dec676",
"version": "1.4.7",
"javaVersion": null
},
"1.3": {
"url": "https://launcher.mojang.com/v1/objects/3de2ae6c488135596e073a9589842800c9f53bfe/server.jar",
"sha1": "3de2ae6c488135596e073a9589842800c9f53bfe",
"version": "1.3.2",
"javaVersion": null
},
"1.2": {
"url": "https://launcher.mojang.com/v1/objects/d8321edc9470e56b8ad5c67bbd16beba25843336/server.jar",
"sha1": "d8321edc9470e56b8ad5c67bbd16beba25843336",
"version": "1.2.5",
"javaVersion": null
}
}