summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2025-05-07 16:40:33 +0200
committerOliver Reiche <oliver.reiche@huawei.com>2025-05-07 16:40:33 +0200
commit64d89ed40ba6796d0705ded4b1b1526be8476fc4 (patch)
treeb059f673300fc0ee19bcad5cea5038018f2d4f89
parent52ef2939f35f18bcefcf1c3955ef2b653aa0b0d1 (diff)
parentb909c514866f1f0713edd831d183e4fa1e5c91f5 (diff)
downloadrules-cc-64d89ed40ba6796d0705ded4b1b1526be8476fc4.tar.gz
Merge subtree 'rules' into rules-cc
* commit 'b909c514866f1f0713edd831d183e4fa1e5c91f5': Do not assume out_dirs exist rules: Do not assume out_dirs exist
-rw-r--r--rules/CC/foreign/cmake/EXPRESSIONS2
-rw-r--r--rules/CC/foreign/make/EXPRESSIONS2
-rwxr-xr-xrules/CC/include_scan2
-rw-r--r--rules/CC/include_scan.c17
-rwxr-xr-xrules/CC/include_scan.py1
-rwxr-xr-xrules/lint/call_lint1
-rwxr-xr-xrules/lint/call_summary1
7 files changed, 22 insertions, 4 deletions
diff --git a/rules/CC/foreign/cmake/EXPRESSIONS b/rules/CC/foreign/cmake/EXPRESSIONS
index e0ceab2..e8217dd 100644
--- a/rules/CC/foreign/cmake/EXPRESSIONS
+++ b/rules/CC/foreign/cmake/EXPRESSIONS
@@ -302,7 +302,7 @@
{ "type": "++"
, "$1":
[ [ "set -eu"
- , "mkdir scratch"
+ , "mkdir -p scratch install"
, "readonly ROOT=\"$(pwd)\""
, "export TMPDIR=\"$(pwd)/scratch\""
, "export TOOLCHAIN=\"$(pwd)/toolchain\""
diff --git a/rules/CC/foreign/make/EXPRESSIONS b/rules/CC/foreign/make/EXPRESSIONS
index 57b0a94..55d9fa8 100644
--- a/rules/CC/foreign/make/EXPRESSIONS
+++ b/rules/CC/foreign/make/EXPRESSIONS
@@ -277,7 +277,7 @@
{ "type": "++"
, "$1":
[ [ "set -eu"
- , "mkdir scratch"
+ , "mkdir -p scratch install"
, "readonly ROOT=\"$(pwd)\""
, "export TMPDIR=\"$(pwd)/scratch\""
, "export DESTDIR=\"$(pwd)/install\""
diff --git a/rules/CC/include_scan b/rules/CC/include_scan
index b7c1590..aaaa77c 100755
--- a/rules/CC/include_scan
+++ b/rules/CC/include_scan
@@ -30,6 +30,8 @@ set -eu
readonly OUT_DIR="$1"
shift
+mkdir -p "${OUT_DIR}/include"
+
STDOUT="$("$@")" || exit $?
for FILE in $(echo "$STDOUT" | tr ' ' '\n' | sort | uniq); do
FILE="$(realpath -s -m --relative-to=. "${FILE}")"
diff --git a/rules/CC/include_scan.c b/rules/CC/include_scan.c
index ea013ad..8652fc0 100644
--- a/rules/CC/include_scan.c
+++ b/rules/CC/include_scan.c
@@ -94,11 +94,13 @@ int main(int argc, const char *argv[]) {
int retval = 0;
char *path = NULL;
char *prefix;
+ char *outdir;
size_t prefix_len = 0;
+ size_t outdir_len = 0;
struct IncludeList incl;
if (argc < 3) {
- fprintf(stderr, "usage: %s PREFIX FILE ARGV...\n", argv[0]);
+ fprintf(stderr, "usage: %s OUT_DIR ARGV...\n", argv[0]);
fprintf(stderr, "Missing arguments\n");
exit(EXIT_FAILURE);
}
@@ -130,9 +132,20 @@ int main(int argc, const char *argv[]) {
strcat(prefix + prefix_len, "/");
prefix_len += 1;
parse_paths(&incl, fd[0], "include/", prefix);
- free(prefix);
close(fd[0]);
+ /* create output directory "<prefix>/include" */
+ outdir_len = prefix_len + 8 /* strlen("include/") */;
+ outdir = (char *)calloc(outdir_len + 1, sizeof(char));
+ strcat(outdir, prefix);
+ strcat(outdir + prefix_len, "include/");
+ if (helper_mkdir_p(outdir, 0755) != 0) {
+ fprintf(stderr, "Failed to create output directory\n");
+ return 1;
+ }
+ free(prefix);
+ free(outdir);
+
/* wait for child to finish */
while (1) {
if (waitpid(pid, &status, 0) == -1) {
diff --git a/rules/CC/include_scan.py b/rules/CC/include_scan.py
index e169ec5..d99392b 100755
--- a/rules/CC/include_scan.py
+++ b/rules/CC/include_scan.py
@@ -41,6 +41,7 @@ def include_scan(out_dir: str, cmd: list[str]):
paths = {os.path.normpath(i) for i in items.split(' ')}
includes = {p for p in paths if p.startswith('include/')}
+ os.makedirs(os.path.join(out_dir, 'include'), exist_ok=True)
for path in includes:
out_path = os.path.join(out_dir, path)
try:
diff --git a/rules/lint/call_lint b/rules/lint/call_lint
index fd2a244..850812e 100755
--- a/rules/lint/call_lint
+++ b/rules/lint/call_lint
@@ -20,6 +20,7 @@ touch stderr
RESULT=UNKNOWN
echo "${RESULT}" > result
+mkdir -p out
export OUT="$(pwd)/out"
mkdir -p config
export CONFIG="$(pwd)/config"
diff --git a/rules/lint/call_summary b/rules/lint/call_summary
index d4aa8cb..9686d0a 100755
--- a/rules/lint/call_summary
+++ b/rules/lint/call_summary
@@ -19,6 +19,7 @@ touch report
RESULT=UNKNOWN
echo "${RESULT}" > result
+mkdir -p out
export OUT="$(pwd)/out"
cd work