summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli Mohammad Pur <ali.mpfard@gmail.com>2022-01-17 13:19:23 +0330
committerAndreas Kling <kling@serenityos.org>2022-01-17 11:17:15 +0100
commit63b02859bc0e7595c8f6b10453bb1e5394223d3f (patch)
treea64697ed5d5048fa0a52a94db130980b11c5c584
parent7a26f6523a2fa7abe2fe410550112fe5ebd4151c (diff)
downloadserenity-63b02859bc0e7595c8f6b10453bb1e5394223d3f.zip
Meta+Ports: Make 'package.sh showproperty' report multiple properties
And use that to avoid shelling out multiple times for checking properties in lint-ports.py.
-rwxr-xr-xMeta/lint-ports.py21
-rwxr-xr-xPorts/.port_include.sh28
2 files changed, 27 insertions, 22 deletions
diff --git a/Meta/lint-ports.py b/Meta/lint-ports.py
index 8a5448e220..f9fac2664d 100755
--- a/Meta/lint-ports.py
+++ b/Meta/lint-ports.py
@@ -197,16 +197,17 @@ def get_port_properties(port):
"""
props = {}
- for prop in PORT_PROPERTIES:
- res = subprocess.run(f"cd {port}; exec ./package.sh showproperty {prop}", shell=True, capture_output=True)
- if res.returncode == 0:
- props[prop] = res.stdout.decode('utf-8').strip()
- else:
- print((
- f'Executing "./package.sh showproperty {prop}" script for port {port} failed with '
- f'exit code {res.returncode}, output from stderr:\n{res.stderr.decode("utf-8").strip()}'
- ))
- props[prop] = ''
+ package_sh_command = f"./package.sh showproperty {' '.join(PORT_PROPERTIES)}"
+ res = subprocess.run(f"cd {port}; exec {package_sh_command}", shell=True, capture_output=True)
+ if res.returncode == 0:
+ results = res.stdout.decode('utf-8').split('\n\n')
+ props = {prop: results[i].strip() for i, prop in enumerate(PORT_PROPERTIES)}
+ else:
+ print((
+ f'Executing "{package_sh_command}" script for port {port} failed with '
+ f'exit code {res.returncode}, output from stderr:\n{res.stderr.decode("utf-8").strip()}'
+ ))
+ props = {x: '' for x in PORT_PROPERTIES}
return props
diff --git a/Ports/.port_include.sh b/Ports/.port_include.sh
index 2545272c49..1a2cf1f151 100755
--- a/Ports/.port_include.sh
+++ b/Ports/.port_include.sh
@@ -543,18 +543,22 @@ do_uninstall() {
uninstall
}
do_showproperty() {
- if ! declare -p "${1}" > /dev/null 2>&1; then
- echo "Property '$1' is not set." >&2
- exit 1
- fi
- property_declaration="$(declare -p "${1}")"
- if [[ "$property_declaration" =~ "declare -a" ]]; then
- prop_array="${1}[@]"
- # Some magic to avoid empty arrays being considered unset.
- echo "${!prop_array+"${!prop_array}"}"
- else
- echo ${!1}
- fi
+ while [ $# -gt 0 ]; do
+ if ! declare -p "${1}" > /dev/null 2>&1; then
+ echo "Property '$1' is not set." >&2
+ exit 1
+ fi
+ property_declaration="$(declare -p "${1}")"
+ if [[ "$property_declaration" =~ "declare -a" ]]; then
+ prop_array="${1}[@]"
+ # Some magic to avoid empty arrays being considered unset.
+ echo "${!prop_array+"${!prop_array}"}"
+ else
+ echo ${!1}
+ fi
+ printf '\n'
+ shift
+ done
}
do_all() {
do_installdepends