From: Michael Tremer Date: Fri, 28 May 2021 16:38:01 +0000 (+0000) Subject: scripts: Add FHS check X-Git-Tag: 0.9.28~1285^2~51 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2504194a4a44a21d4fc31a88dba4e8e461192f75;p=pakfire.git scripts: Add FHS check Signed-off-by: Michael Tremer --- diff --git a/Makefile.am b/Makefile.am index 3dc8ca15a..1d49a48cd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -555,6 +555,7 @@ libpakfire_preload_la_LIBADD = \ dist_scripts_SCRIPTS = \ src/scripts/check-buildroot \ + src/scripts/check-fhs \ src/scripts/check-hardening \ src/scripts/check-include \ src/scripts/check-libraries \ diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index 212d57ec6..16d0a7c54 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -346,6 +346,7 @@ static const char* post_build_scripts[] = { "check-buildroot", "check-include", "check-hardening", + "check-fhs", "compress-man-pages", "strip", NULL, diff --git a/src/scripts/check-fhs b/src/scripts/check-fhs new file mode 100644 index 000000000..873147d97 --- /dev/null +++ b/src/scripts/check-fhs @@ -0,0 +1,68 @@ +#!/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 "${0#/}: $@" >&2 +} + +main() { + local buildroot="${1}" + shift + + # Check if BUILDROOT exists + if [ ! -d "${buildroot}" ]; then + error "BUILDROOT does not exist" + return 1 + fi + + local illegal_directories=( + "/bin" + "/etc/init.d" + "/etc/rc.d" + "/lib" + "/lib64" + "/lib/pkgconfig" + "/sbin" + "/usr/etc" + "/usr/libexec" + "/usr/local" + "/usr/man" + "/usr/usr" + "/usr/var" + "${buildroot}" + ) + + local r=0 + + local path + for path in "${illegal_directories[@]}"; do + path="${buildroot}${path}" + + if [ -d "${path}" -a ! -L "${path}" ]; then + error "Illegal directory found: ${path/${buildroot}/}" + r=1 + fi + done + + return "${r}" +} + +main "$@" || exit $?