]> git.ipfire.org Git - pakfire.git/commitdiff
build: Implement buildroot check
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 4 Jan 2025 15:28:15 +0000 (15:28 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 4 Jan 2025 15:28:15 +0000 (15:28 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/build.c
src/scripts/check-buildroot [deleted file]

index 88169e81bcfcd0afeb97f80199e14921e26d752d..47b76587ccc1b5303f33ea0cb712e275f21c7267 100644 (file)
@@ -1576,6 +1576,27 @@ static int pakfire_build_fix_script_interpreter(
        return pakfire_file_fix_interpreter(file);
 }
 
+static int pakfire_build_check_buildroot(
+               struct pakfire_ctx* ctx, struct pakfire_file* file, void* data) {
+       struct pakfire_filelist* broken = (struct pakfire_filelist*)data;
+       int r;
+
+#warning We actually need to access the real buildroot here
+       const char* buildroot = "/var/tmp/pakfire-buildroot";
+
+       // Check if the file contains the pattern
+       r = pakfire_file_contains(file, buildroot, -1);
+       if (r <= 0)
+               return r;
+
+       // The file contains the pattern, let's list it as broken
+       r = pakfire_filelist_add(broken, file);
+       if (r < 0)
+               return r;
+
+       return 0;
+}
+
 /*
        File Issues
 */
@@ -1624,6 +1645,13 @@ static int pakfire_build_run_post_build_checks(struct pakfire_build* build) {
        if (r)
                goto ERROR;
 
+       // Check for buildroot
+       r = pakfire_build_post_process_files(
+                       build, filelist, "Files contain the path to the build root:",
+                       pakfire_build_check_buildroot, PAKFIRE_BUILD_ERROR_IF_NOT_EMPTY);
+       if (r < 0)
+               goto ERROR;
+
 ERROR:
        if (filelist)
                pakfire_filelist_unref(filelist);
diff --git a/src/scripts/check-buildroot b/src/scripts/check-buildroot
deleted file mode 100644 (file)
index e95ca32..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash
-###############################################################################
-#                                                                             #
-# Pakfire - The IPFire package management system                              #
-# Copyright (C) 2021 Pakfire development team                                 #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-error() {
-       echo "$@" >&2
-}
-
-main() {
-       local buildroot="${1}"
-       shift
-
-       # Check if BUILDROOT exists
-       if [ ! -d "${buildroot}" ]; then
-               error "BUILDROOT does not exist"
-               return 1
-       fi
-
-       local processors="$(getconf _NPROCESSORS_ONLN)"
-
-       # Find all files that include BUILDROOT
-       local -a files=(
-               $(
-                       find "${buildroot}" -type f -not \( \
-                               -name "*.pyc" -o -name "*.pyo" -o -name ".packlist" \
-                               \) -print0 \
-                       | \
-                       xargs --null --no-run-if-empty --max-procs="${processors}" \
-                               --max-args=16 grep --files-with-matches -F "${buildroot}")
-       )
-
-       if [ "${#files[@]}" -gt 0 ]; then
-               error "BUILDROOT (${buildroot}) was found in installed files:"
-               local file
-               for file in ${files[@]}; do
-                       error "  ${file/${buildroot}/}"
-               done
-
-               return 1
-       fi
-
-       return 0
-}
-
-main "$@" || exit $?