From 9a6dbcd5430a810c77d25d75050a03e233fa0002 Mon Sep 17 00:00:00 2001 From: Michal Hrusecky <michal.hrusecky@nic.cz> Date: Tue, 22 Jan 2019 09:41:26 +0100 Subject: [PATCH] pkg_check was merged upstream --- ...-provide-file-checksums-in-package-m.patch | 208 ------------------ 1 file changed, 208 deletions(-) delete mode 100644 patches/openwrt/to-upstream/0002-build-Optionally-provide-file-checksums-in-package-m.patch diff --git a/patches/openwrt/to-upstream/0002-build-Optionally-provide-file-checksums-in-package-m.patch b/patches/openwrt/to-upstream/0002-build-Optionally-provide-file-checksums-in-package-m.patch deleted file mode 100644 index d463b5610..000000000 --- a/patches/openwrt/to-upstream/0002-build-Optionally-provide-file-checksums-in-package-m.patch +++ /dev/null @@ -1,208 +0,0 @@ -From c3868937dfff17c9e715563da23a394736ec1f14 Mon Sep 17 00:00:00 2001 -From: Michal Hrusecky <Michal@Hrusecky.net> -Date: Wed, 17 Jan 2018 13:25:43 +0100 -Subject: [PATCH] build: Optionally provide file checksums in package metadata - -This may be useful if you don't entirely trust your flash and want to be able -to check for corruptions. - -Signed-off-by: Michal Hrusecky <Michal@Hrusecky.net> ---- - config/Config-build.in | 8 ++ - include/package-ipkg.mk | 8 ++ - package/base-files/Makefile | 2 + - package/base-files/files/sbin/pkg_check | 130 ++++++++++++++++++++++++++++++++ - 4 files changed, 148 insertions(+) - create mode 100755 package/base-files/files/sbin/pkg_check - -diff --git a/config/Config-build.in b/config/Config-build.in -index f9987fc..38f725f 100644 ---- a/config/Config-build.in -+++ b/config/Config-build.in -@@ -68,6 +68,14 @@ menu "Global build settings" - This removes all ipkg/opkg status data files from the target directory - before building the root filesystem. - -+ config IPK_FILES_CHECKSUMS -+ bool -+ prompt "Record files checksums in package metadata" -+ default n -+ help -+ This makes file checksums part of package metadata. It increases size -+ but provides you with pkg_check command to check for flash coruptions. -+ - config INCLUDE_CONFIG - bool "Include build configuration in firmware" if DEVEL - default n -diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk -index 9e2717e..358aede 100644 ---- a/include/package-ipkg.mk -+++ b/include/package-ipkg.mk -@@ -194,6 +194,15 @@ $(_endef) - $(CheckDependencies) - - $(RSTRIP) $$(IDIR_$(1)) -+ -+ ifneq ($$(CONFIG_IPK_FILES_CHECKSUMS),) -+ (cd $$(IDIR_$(1)); \ -+ ( \ -+ find . -type f \! -path ./CONTROL/\* -exec sha256sum \{\} \; 2> /dev/null | \ -+ sed 's|\([[:blank:]]\)\./|\1/|' > $$(IDIR_$(1))/CONTROL/files-sha256 \ -+ ) || true \ -+ ) -+ endif - (cd $$(IDIR_$(1))/CONTROL; \ - ( \ - echo "$$$$CONTROL"; \ -diff --git a/package/base-files/Makefile b/package/base-files/Makefile -index 0055474..411ed8e 100644 ---- a/package/base-files/Makefile -+++ b/package/base-files/Makefile -@@ -195,6 +195,8 @@ define Package/base-files/install - mkdir -p $(1)/etc/opkg; \ - $(call FeedSourcesAppend,$(1)/etc/opkg/distfeeds.conf); \ - $(VERSION_SED_SCRIPT) $(1)/etc/opkg/distfeeds.conf) -+ $(if $(CONFIG_IPK_FILES_CHECKSUMS), \ -+ rm -f $(1)/sbin/pkg_check,) - endef - - ifneq ($(DUMP),1) -diff --git a/package/base-files/files/sbin/pkg_check b/package/base-files/files/sbin/pkg_check -new file mode 100755 -index 0000000..9968c9b ---- /dev/null -+++ b/package/base-files/files/sbin/pkg_check -@@ -0,0 +1,130 @@ -+#!/bin/sh -+# -+# Package checksums checking script -+# (C) 2018 CZ.NIC, z.s.p.o. -+# -+# 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/>. -+ -+ -+ERRFATAL="no" -+QUIET="yes" -+MISSING="" -+SUMMARY="" -+NL=" -+" -+ -+# Arguments parsing -+while expr "x$1" : "x-" > /dev/null; do -+ if [ "x$1" = "x-s" ]; then -+ ERRFATAL="yes" -+ shift -+ elif [ "x$1" = "x-v" ]; then -+ QUIET=" no" -+ shift -+ else -+ echo "Usage: $(basename $0) [-s] [-v] [pkg1 pkg2 ...]" -+ echo -+ echo " -s Stop on first change" -+ echo " -v Verbose" -+ if [ "x$1" = "x-h" ]; then -+ exit 0 -+ else -+ echo -+ echo "ERROR: Unknown option '$1'" -+ exit 1 -+ fi -+ fi -+done -+ -+# Check all packages by default -+if [ -z "$1" ]; then -+ set $(cd /usr/lib/opkg/info/; for i in *.files-sha256sum; do basename $i .files-sha256sum; done) -+fi -+ -+# Iterate over packages -+while [ "$1" ]; do -+ if [ \! -f "/usr/lib/opkg/info/$1.files-sha256sum" ]; then -+ if [ "$ERRFATAL" = no ]; then -+ echo " * No checksums for $1 - skipping" -+ echo -+ else -+ echo " * No checksums for $1 - exiting" -+ exit 1 -+ fi -+ if [ -z "$MISSING" ]; then -+ MISSING="$1" -+ else -+ MISSING="$MISSING, $1" -+ fi -+ shift -+ continue -+ fi -+ [ $QUIET = yes ] || echo " * Checking package $1:" -+ ERR="" -+ CHECK="`sha256sum -c /usr/lib/opkg/info/$1.files-sha256sum 2> /dev/null`" -+ -+ # Are the changed files config files? -+ if [ $? -ne 0 ] && [ "`cat "/usr/lib/opkg/info/$1.files-sha256sum"`" ]; then -+ NEWCHECK="`echo "$CHECK" | grep '^.*: OK$'`" -+ for i in `echo "$CHECK" | sed -n 's|^\(.*\): FAILED$|\1|p'`; do -+ if [ "`grep "^$i\$" "/usr/lib/opkg/info/$1.conffiles" 2> /dev/null`" ] || \ -+ [ "`echo "$i" | grep "^/etc/uci-defaults/"`" ]; then -+ NEWCHECK="${NEWCHECK}${NL}${i}: CONFIGURED" -+ else -+ NEWCHECK="${NEWCHECK}${NL}${i}: FAILED" -+ ERR="y" -+ fi -+ done -+ CHECK="$NEWCHECK" -+ fi -+ -+ # Do we have changed files or not? -+ if [ -z "$ERR" ]; then -+ [ $QUIET = yes ] || [ -z "`cat "/usr/lib/opkg/info/$1.files-sha256sum"`" ] || echo "$CHECK" | sed 's|^| - |' -+ [ $QUIET = yes ] || echo " * Package $1 is ok" -+ [ $QUIET = yes ] || echo -+ else -+ if [ $QUIET = yes ]; then -+ echo " * Changes found in package $1:" -+ echo "$CHECK" | sed -n 's|^\(.*:[[:blank:]]*FAILED\)$| - \1|p' -+ else -+ echo "$CHECK" | sed 's|^| - |' -+ echo " * Changes found in package $1!" -+ fi -+ if [ "$ERRFATAL" = yes ]; then -+ echo -+ echo "Exiting on first change found!" -+ exit 1 -+ fi -+ for i in `echo "$CHECK" | sed -n 's|^\(.*\): FAILED$|\1|p'`; do -+ SUMMARY="${SUMMARY}${NL} - $1: $i" -+ done -+ echo -+ fi -+ shift -+done -+ -+# If there are changed files, report them -+if [ "$SUMMARY" ]; then -+ echo "Some packages contain changed files!" -+ echo "Maybe something worth looking into?" -+ echo "Here is the list of packages and changed files:" -+ echo "$SUMMARY" -+fi -+if [ "$MISSING" ]; then -+ echo "Following packages are missing checksums: $MISSING" -+fi -+if [ "$MISSING" ] || [ "$SUMMARY" ]; then -+ exit 1 -+fi --- -2.15.1 - -- GitLab