move to separate bash script, cleanups, filegroup fixes

pull/10830/head
Sandy Zhang 2 years ago
parent 9cc343f175
commit 2a2d592242
  1. 86
      php/ext/google/protobuf/BUILD.bazel
  2. 42
      php/ext/google/protobuf/generate_package_xml.sh

@ -1,76 +1,54 @@
# Protobuf PHP extension (PECL)
load("@rules_pkg//:mappings.bzl", "pkg_files", "pkg_filegroup", "strip_prefix")
filegroup(
name = "template_package_xml",
srcs = ["template_package.xml"],
)
filegroup(
name = "src_files",
srcs = glob(
[
"**/*.m4",
"**/*.c",
"**/*.h",
"**/*.inc"
pkg_files(
name = "utf8_range_files",
srcs = [
"@utf8_range//:utf8_range_srcs",
"@utf8_range//:LICENSE",
],
exclude = [
"tests/**",
]
),
)
filegroup(
name = "doc_files",
pkg_files(
name = "protobuf_files",
srcs = glob([
"**/LICENSE",
])
"*.h",
"*.c",
]) + [
"//:LICENSE",
"config.m4",
"wkt.inc",
],
)
pkg_filegroup(
name = "release_files",
srcs = [
":protobuf_files",
":utf8_range_files",
],
)
genrule(
name = "pecl_dist",
srcs = [
":src_files",
":doc_files",
":release_files",
":template_package_xml",
"//:version_json",
],
outs = ["package.xml"],
cmd = """
DATE=$$(date +%Y-%m-%d)
TIME=$$(date +%H:%M:%S)
php_version_json=$$(cat $(location //:version_json) | python -c "import json, sys; versions=json.load(sys.stdin); print(versions.popitem()[1]['languages']['php'])")
php_version_array=($${php_version_json//-rc/ })
api_version=$${php_version_array[0]}
if [ $${#php_version_array[@]} -eq 2 ]; then
rc=$${php_version_array[1]}
release_version=$${api_version}RC$${rc}
stability='beta'
else
release_version=$${api_version}
stability='stable'
fi
FILE='<file baseinstalldir=\"/\" name=\"NAME\" role=\"ROLE\"/>\\n'
files="\\n"
for file in $$(find -L $(locations :src_files) -type f); do
name=$$(echo $$file | sed -e 's|php/ext/google/protobuf/||')
files+=' '$$(echo $$FILE | sed -e "s;NAME;$${name};" | sed -e "s;ROLE;src;")
done
for file in $$(find -L $(locations :doc_files) -type f); do
name=$$(echo $$file | sed -e 's|php/ext/google/protobuf/||')
files+=' '$$(echo $$FILE | sed -e "s;NAME;$${name};" | sed -e "s;ROLE;doc;")
done
cat $(location :template_package_xml) |
sed -e "s;TEMPLATE_DATE;$${DATE};" |
sed -e "s;TEMPLATE_TIME;$${TIME};" |
sed -e "s;TEMPLATE_PHP_RELEASE;$${release_version};" |
sed -e "s;TEMPLATE_PHP_API;$${api_version};" |
sed -e "s;TEMPLATE_PHP_STABILITY;$${stability};" |
sed -e "s;TEMPLATE_FILES;$${files};"
> "$@"
"""
cmd = " ".join([
"$(location :generate_package_xml.sh)",
"$(location :template_package_xml)",
"$(location //:version_json)",
"$$(echo $(locations :release_files) | sed -e 's; ;,;g')",
"$(location package.xml)"
]),
tools = ["generate_package_xml.sh"],
)

@ -0,0 +1,42 @@
#!/bin/bash
template_package_xml=$1
version_json=$2
release_files=$3
out=$4
date=$(date +%Y-%m-%d)
time=$(date +%H:%M:%S)
php_version_json=$(
cat $version_json |
python -c "import json, sys; v=json.load(sys.stdin); print(v.popitem()[1]['languages']['php'])")
php_version_array=(${php_version_json//-rc/ })
api_version=${php_version_array[0]}
if [ ${#php_version_array[@]} -eq 2 ]; then
rc=${php_version_array[1]}
release_version=${api_version}RC${rc}
stability='beta'
else
release_version=${api_version}
stability='stable'
fi
files="\\n"
for file in ${release_files//,/ }; do
name=$(echo $file | sed -e 's;php/ext/google/protobuf/;;')
if [[ $name =~ LICENSE$ ]]; then
role='doc'
else
role='src'
fi
files+=" <file baseinstalldir=\"/\" name=\"${name}\" role=\"${role}\"/>\\n"
done
cat $template_package_xml |
sed -e "s;TEMPLATE_DATE;${date};" |
sed -e "s;TEMPLATE_TIME;${time};" |
sed -e "s;TEMPLATE_PHP_RELEASE;${release_version};" |
sed -e "s;TEMPLATE_PHP_API;${api_version};" |
sed -e "s;TEMPLATE_PHP_STABILITY;${stability};g" |
sed -e "s;TEMPLATE_FILES;${files};" > $out
Loading…
Cancel
Save