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
*/
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);
+++ /dev/null
-#!/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 $?