Iterate on convert_app_to_packaging_v2.py to parse and convert app.src stuff
This commit is contained in:
parent
953073f39b
commit
8f842db5bb
1 changed files with 108 additions and 1 deletions
|
@ -3,6 +3,7 @@ import os
|
||||||
import re
|
import re
|
||||||
import json
|
import json
|
||||||
import subprocess
|
import subprocess
|
||||||
|
from glob import glob
|
||||||
|
|
||||||
|
|
||||||
def check_output(cmd):
|
def check_output(cmd):
|
||||||
|
@ -13,6 +14,81 @@ def check_output(cmd):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def convert_app_sources(folder):
|
||||||
|
|
||||||
|
def parse_and_convert_src(filename):
|
||||||
|
|
||||||
|
D = {}
|
||||||
|
raw = open(filename).read()
|
||||||
|
for line in raw.split("\n"):
|
||||||
|
line = line.strip()
|
||||||
|
if not line or line.startswith("#") or "=" not in line:
|
||||||
|
continue
|
||||||
|
key, value = line.split("=", 1)
|
||||||
|
key = key.replace("SOURCE_", "").lower()
|
||||||
|
D[key] = value
|
||||||
|
|
||||||
|
new_D = {
|
||||||
|
"url": D["url"],
|
||||||
|
"sha256": D["sum"],
|
||||||
|
}
|
||||||
|
|
||||||
|
if D.get("format", "tar.gz") not in ["zip", "tar.gz", "tar.xz", "tgz", "tar.bz2"]:
|
||||||
|
new_D["format"] = D["format"]
|
||||||
|
if "filename" in D:
|
||||||
|
new_D["rename"] = D["filename"]
|
||||||
|
elif "in_subdir" in D and D["in_subdir"] != "true":
|
||||||
|
new_D["in_subdir"] = False
|
||||||
|
|
||||||
|
return new_D
|
||||||
|
|
||||||
|
sources = {}
|
||||||
|
|
||||||
|
remap_id = {
|
||||||
|
"app": "main",
|
||||||
|
"amd64": "main.amd64",
|
||||||
|
"i386": "main.i386",
|
||||||
|
"arm64": "main.arm64",
|
||||||
|
"armhf": "main.armhf",
|
||||||
|
"arm7": "main.armhf",
|
||||||
|
"app.arm64": "main.arm64",
|
||||||
|
"app.x86_64": "main.amd64",
|
||||||
|
"app.x64": "main.amd64",
|
||||||
|
"app.arm": "main.armhf",
|
||||||
|
"app.armhf": "main.armhf",
|
||||||
|
"app.armv7": "main.armhf",
|
||||||
|
"app.386": "main.i386",
|
||||||
|
"app.x86": "main.i386",
|
||||||
|
"app.armel": "main.armel",
|
||||||
|
"armel": "main.armel",
|
||||||
|
"aarch64": "main.arm64",
|
||||||
|
"x86-64": "main.amd64",
|
||||||
|
"armv6": "main.armel",
|
||||||
|
"armv7": "main.armhf",
|
||||||
|
}
|
||||||
|
|
||||||
|
for filename in glob(folder + "/conf/*.src"):
|
||||||
|
id_ = os.path.basename(filename).rsplit(".", 1)[0]
|
||||||
|
if id_ in remap_id:
|
||||||
|
id_ = remap_id[id_]
|
||||||
|
|
||||||
|
sources[id_] = parse_and_convert_src(filename)
|
||||||
|
|
||||||
|
if id_.startswith("main."):
|
||||||
|
if "main" not in sources:
|
||||||
|
sources["main"] = sources[id_]
|
||||||
|
arch = id_.split(".")[1]
|
||||||
|
sources["main"][arch + ".url"] = sources[id_]["url"]
|
||||||
|
sources["main"][arch + ".sha256"] = sources[id_]["sha256"]
|
||||||
|
del sources[id_]["url"]
|
||||||
|
del sources[id_]["sha256"]
|
||||||
|
del sources[id_]
|
||||||
|
|
||||||
|
os.system(f"rm '{filename}'")
|
||||||
|
|
||||||
|
return sources
|
||||||
|
|
||||||
|
|
||||||
def _convert_v1_manifest_to_v2(app_path):
|
def _convert_v1_manifest_to_v2(app_path):
|
||||||
|
|
||||||
manifest = json.load(open(app_path + "/manifest.json"))
|
manifest = json.load(open(app_path + "/manifest.json"))
|
||||||
|
@ -73,6 +149,11 @@ def _convert_v1_manifest_to_v2(app_path):
|
||||||
manifest["install"]["domain"]["full_domain"] = True
|
manifest["install"]["domain"]["full_domain"] = True
|
||||||
|
|
||||||
manifest["resources"] = {}
|
manifest["resources"] = {}
|
||||||
|
|
||||||
|
sources = convert_app_sources(app_path)
|
||||||
|
if sources:
|
||||||
|
manifest["resources"]["sources"] = sources
|
||||||
|
|
||||||
manifest["resources"]["system_user"] = {}
|
manifest["resources"]["system_user"] = {}
|
||||||
manifest["resources"]["install_dir"] = {}
|
manifest["resources"]["install_dir"] = {}
|
||||||
|
|
||||||
|
@ -202,7 +283,16 @@ def _dump_v2_manifest_as_toml(manifest):
|
||||||
resources[key] = table()
|
resources[key] = table()
|
||||||
resources[key].indent(4)
|
resources[key].indent(4)
|
||||||
for key2, value2 in value.items():
|
for key2, value2 in value.items():
|
||||||
|
if not isinstance(value2, dict):
|
||||||
resources[key].add(key2, value2)
|
resources[key].add(key2, value2)
|
||||||
|
else:
|
||||||
|
t = table()
|
||||||
|
t.indent(4)
|
||||||
|
resources[key].add(key2, t)
|
||||||
|
for key3, value3 in value2.items():
|
||||||
|
t.add(key3, value3)
|
||||||
|
t.add(nl())
|
||||||
|
|
||||||
if key == "apt" and key2 == "extras":
|
if key == "apt" and key2 == "extras":
|
||||||
for extra in resources[key][key2]:
|
for extra in resources[key][key2]:
|
||||||
extra.indent(8)
|
extra.indent(8)
|
||||||
|
@ -217,6 +307,19 @@ def _dump_v2_manifest_as_toml(manifest):
|
||||||
toml_manifest_dump = toml_manifest_dump.replace('"ram.runtime"', "ram.runtime")
|
toml_manifest_dump = toml_manifest_dump.replace('"ram.runtime"', "ram.runtime")
|
||||||
toml_manifest_dump = toml_manifest_dump.replace('"main.url"', "main.url")
|
toml_manifest_dump = toml_manifest_dump.replace('"main.url"', "main.url")
|
||||||
toml_manifest_dump = toml_manifest_dump.replace('"main.default"', "main.default")
|
toml_manifest_dump = toml_manifest_dump.replace('"main.default"', "main.default")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('"main.default"', "main.default")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('""', "main.default")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('"armhf.url"', "armhf.url")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('"armhf.sha256"', "armhf.sha256")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('"arm64.url"', "arm64.url")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('"arm64.sha256"', "arm64.sha256")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('"amd64.url"', "amd64.url")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('"amd64.sha256"', "amd64.sha256")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('"i386.url"', "i386.url")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('"i386.sha256"', "i386.sha256")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('"armel.url"', "armel.url")
|
||||||
|
toml_manifest_dump = toml_manifest_dump.replace('"armel.sha256"', "armel.sha256")
|
||||||
|
|
||||||
if "ports" in manifest["resources"]:
|
if "ports" in manifest["resources"]:
|
||||||
for port_thing in manifest["resources"]["ports"].keys():
|
for port_thing in manifest["resources"]["ports"].keys():
|
||||||
toml_manifest_dump = toml_manifest_dump.replace(f'"{port_thing}"', f"{port_thing}")
|
toml_manifest_dump = toml_manifest_dump.replace(f'"{port_thing}"', f"{port_thing}")
|
||||||
|
@ -299,6 +402,10 @@ def cleanup_scripts_and_conf(folder):
|
||||||
("FINALPATH", "INSTALL_DIR"),
|
("FINALPATH", "INSTALL_DIR"),
|
||||||
("datadir", "data_dir"),
|
("datadir", "data_dir"),
|
||||||
("DATADIR", "DATA_DIR"),
|
("DATADIR", "DATA_DIR"),
|
||||||
|
('--source_id="$architecture"', ''),
|
||||||
|
('--source_id="$YNH_ARCH"', ''),
|
||||||
|
('--source_id=app', ''),
|
||||||
|
('--source_id="app.$architecture"', ''),
|
||||||
]
|
]
|
||||||
|
|
||||||
for s in ["_common.sh", "install", "remove", "upgrade", "backup", "restore", "change_url"]:
|
for s in ["_common.sh", "install", "remove", "upgrade", "backup", "restore", "change_url"]:
|
||||||
|
|
Loading…
Reference in a new issue