From: Michael Tremer Date: Sat, 4 Jan 2025 15:28:15 +0000 (+0000) Subject: build: Implement buildroot check X-Git-Tag: 0.9.30~537 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=43bb9169dfccf065e3f28ff385230000aea3e35a;p=pakfire.git build: Implement buildroot check Signed-off-by: Michael Tremer --- diff --git a/src/pakfire/build.c b/src/pakfire/build.c index 88169e81b..47b76587c 100644 --- a/src/pakfire/build.c +++ b/src/pakfire/build.c @@ -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 index e95ca3236..000000000 --- a/src/scripts/check-buildroot +++ /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 . # -# # -############################################################################### - -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 $?