#
###############################################################################
+# All supported architectures
+ARCHES=(
+ aarch64
+ riscv64
+ x86_64
+)
+
HOST_ARCH="${HOSTTYPE}"
LC_ALL=POSIX
PS1='\u:\w$ '
"${0}" "${args[@]}" "$@"
}
-check_logfiles() {
- print_headline "Checking Log Files..."
+check_for_missing_rootfiles() {
+ print_headline "Checking for missing rootfiles..."
local file
for file in ${LOG_DIR}/*_missing_rootfile; do
return 0
}
+check_rootfiles_for_arch() {
+ local arch="${1}"
+
+ local args=(
+ # Search path
+ "${BASEDIR}/config/rootfiles"
+
+ # Exclude old core updates
+ "--exclude-dir" "oldcore"
+
+ # Ignore the update scripts
+ "--exclude" "update.sh"
+ )
+
+ # A list of files that are not scanned
+ # because they probably cause some false positives.
+ local excluded_files=(
+ qemu
+ )
+
+ # Exclude any architecture-specific directories
+ local a
+ for a in ${ARCHES[@]}; do
+ args+=( "--exclude-dir" "${a}" )
+ done
+
+ # Exclude all excluded files
+ local x
+ for x in ${excluded_files[@]}; do
+ args+=( "--exclude" "${x}" )
+ done
+
+ # Search for all lines that contain the architecture, but exclude commented lines
+ if grep -r "^[^#].*${arch}" "${args[@]}"; then
+ return 1
+ fi
+
+ return 0
+}
+
+check_rootfiles_for_pattern() {
+ local pattern="${1}"
+ local message="${2}"
+
+ local args=(
+ # Search path
+ "${BASEDIR}/config/rootfiles"
+
+ # Exclude old core updates
+ "--exclude-dir" "oldcore"
+
+ # Ignore the update scripts
+ "--exclude" "update.sh"
+ )
+
+ if grep -r "${pattern}" "${args[@]}"; then
+ if [ -n "${message}" ]; then
+ print_line "${message}"
+ print_status FAIL
+ else
+ print_file "Files matching '${pattern}' have been found in the rootfiles"
+ print_status FAIL
+ fi
+ return 1
+ fi
+
+ return 0
+}
+
+check_rootfiles() {
+ local failed=0
+
+ print_headline "Checking for rootfile consistency..."
+
+ # Check for /etc/init.d
+ if ! check_rootfiles_for_pattern "^etc/init\.d/" \
+ "/etc/init.d/* has been found. Please replace by /etc/rc.d/init.d"; then
+ failed=1
+ fi
+
+ # Check for /var/run
+ if ! check_rootfiles_for_pattern "^var/run/.*" \
+ "You cannot ship files in /var/run as it is a ramdisk"; then
+ failed=1
+ fi
+
+ # Check architectures
+ local arch
+ for arch in ${ARCHES[@]}; do
+ check_rootfiles_for_arch "${arch}" || failed=$?
+ done
+
+ # Return the error
+ return ${failed}
+}
+
# Set BASEDIR
readonly BASEDIR="$(find_base)"
# Build all packages
build_packages
- # Check log files
- check_logfiles
+ # Check for missing rootfiles
+ check_for_missing_rootfiles
- print_headline "Checking Logfiles for new Files"
-
- pushd "${BASEDIR}" &>/dev/null
- tools/checkrootfiles
- popd &>/dev/null
+ # Check for rootfile consistency
+ if ! check_rootfiles; then
+ exiterror "Rootfiles are inconsistent"
+ fi
print_build_summary $(( SECONDS - START_TIME ))
;;
+++ /dev/null
-#!/bin/bash
-###############################################################################
-# #
-# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2023 IPFire Team info@ipfire.org #
-# #
-# 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/>. #
-# #
-###############################################################################
-
-# All supported architectures
-ARCHES=(
- aarch64
- riscv64
- x86_64
-)
-
-# A list of files that are not scanned
-# because they probably cause some false positives.
-EXCLUDED_FILES=(
- qemu
-)
-
-ARGS=(
- # Search path
- "config/rootfiles"
-
- # Exclude old core updates
- "--exclude-dir" "oldcore"
-
- # Ignore the update scripts
- "--exclude" "update.sh"
-)
-
-check_for_arch() {
- local arch="${1}"
-
- local args=(
- "${ARGS[@]}"
- )
-
- # Exclude any architecture-specific directories
- local a
- for a in ${ARCHES[@]}; do
- args+=( "--exclude-dir" "${a}" )
- done
-
- # Exclude all excluded files
- local x
- for x in ${EXCLUDED_FILES[@]}; do
- args+=( "--exclude" "${x}" )
- done
-
- # Search for all lines that contain the architecture, but exclude commented lines
- grep -r "^[^#].*${arch}" "${args[@]}"
-}
-
-check_for_pattern() {
- local pattern="${1}"
- local message="${2}"
-
- local args=(
- "${ARGS[@]}"
- )
-
- if grep -r "${pattern}" "${args[@]}"; then
- if [ -n "${message}" ]; then
- echo "ERROR: ${message}"
- else
- echo "ERROR: Files matching '${pattern}' have been found in the rootfiles"
- fi
- return 1
- fi
-
- return 0
-}
-
-main() {
- local failed=0
-
- # Check for /etc/init.d
- if ! check_for_pattern "^etc/init\.d/" \
- "/etc/init.d/* has been found. Please replace by /etc/rc.d/init.d"; then
- failed=1
- fi
-
- # Check for /var/run
- if ! check_for_pattern "^var/run/.*" \
- "You cannot ship files in /var/run as it is a ramdisk"; then
- failed=1
- fi
-
- # Check architectures
- local arch
- for arch in ${ARCHES[@]}; do
- check_for_arch "${arch}" || failed=$?
- done
-
- # Return the error
- return ${failed}
-}
-
-main "$@" || exit $?