qoriq: add kernel 6.1 support
[openwrt/openwrt.git] / include / rootfs.mk
index c014b1d14ab0963687417809431abc0bf314830c..2128aefc2abda82d6f36bf7278a580ddb3922655 100644 (file)
@@ -1,5 +1,3 @@
-include $(INCLUDE_DIR)/feeds.mk
-
 ifdef CONFIG_USE_MKLIBS
   define mklibs
        rm -rf $(TMP_DIR)/mklibs-progs $(TMP_DIR)/mklibs-out
@@ -49,21 +47,29 @@ TARGET_DIR_ORIG := $(TARGET_ROOTFS_DIR)/root.orig-$(BOARD)
 
 ifdef CONFIG_CLEAN_IPKG
   define clean_ipkg
-       -find $(1)/usr/lib/opkg -type f -and -not -name '*.control' | $(XARGS) rm -rf
+       -find $(1)/usr/lib/opkg/info -type f -and -not -name '*.control' -delete
        -sed -i -ne '/^Require-User: /p' $(1)/usr/lib/opkg/info/*.control
-       -find $(1)/usr/lib/opkg -empty | $(XARGS) rm -rf
+       awk ' \
+               BEGIN { conffiles = 0; print "Conffiles:" } \
+               /^Conffiles:/ { conffiles = 1; next } \
+               !/^ / { conffiles = 0; next } \
+               conffiles == 1 { print } \
+       ' $(1)/usr/lib/opkg/status >$(1)/usr/lib/opkg/status.new
+       mv $(1)/usr/lib/opkg/status.new $(1)/usr/lib/opkg/status
+       -find $(1)/usr/lib/opkg -empty -delete
   endef
 endif
 
 define prepare_rootfs
-       @if [ -d $(TOPDIR)/files ]; then \
-               $(call file_copy,$(TOPDIR)/files/.,$(1)); \
-       fi
+       $(if $(2),@if [ -d '$(2)' ]; then \
+               $(call file_copy,$(2)/.,$(1)); \
+       fi)
        @mkdir -p $(1)/etc/rc.d
+       @mkdir -p $(1)/var/lock
        @( \
                cd $(1); \
                for script in ./usr/lib/opkg/info/*.postinst; do \
-                       IPKG_INSTROOT=$(1) $$(which bash) $$script; \
+                       IPKG_INSTROOT=$(1) $$(command -v bash) $$script; \
                        ret=$$?; \
                        if [ $$ret -ne 0 ]; then \
                                echo "postinst script $$script has failed with exit code $$ret" >&2; \
@@ -72,17 +78,29 @@ define prepare_rootfs
                done; \
                for script in ./etc/init.d/*; do \
                        grep '#!/bin/sh /etc/rc.common' $$script >/dev/null || continue; \
-                       IPKG_INSTROOT=$(1) $$(which bash) ./etc/rc.common $$script enable; \
+                       if ! echo " $(3) " | grep -q " $$(basename $$script) "; then \
+                               IPKG_INSTROOT=$(1) $$(command -v bash) ./etc/rc.common $$script enable; \
+                               echo "Enabling" $$(basename $$script); \
+                       else \
+                               IPKG_INSTROOT=$(1) $$(command -v bash) ./etc/rc.common $$script disable; \
+                               echo "Disabling" $$(basename $$script); \
+                       fi; \
                done || true \
        )
+       awk -i inplace \
+               '/^Status:/ { \
+                       if ($$3 == "user") { $$3 = "ok" } \
+                       else { sub(/,\<user\>|\<user\>,/, "", $$3) } \
+               }1' $(1)/usr/lib/opkg/status
        $(if $(SOURCE_DATE_EPOCH),sed -i "s/Installed-Time: .*/Installed-Time: $(SOURCE_DATE_EPOCH)/" $(1)/usr/lib/opkg/status)
-       @-find $(1) -name CVS   | $(XARGS) rm -rf
-       @-find $(1) -name .svn  | $(XARGS) rm -rf
-       @-find $(1) -name .git  | $(XARGS) rm -rf
-       @-find $(1) -name '.#*' | $(XARGS) rm -f
-       rm -f $(1)/usr/lib/opkg/lists/*
-       rm -f $(1)/usr/lib/opkg/info/*.postinst*
-       rm -f $(1)/usr/lib/opkg/info/*.prerm*
+       @-find $(1) -name CVS -o -name .svn -o -name .git -o -name '.#*' | $(XARGS) rm -rf
+       rm -rf \
+               $(1)/boot \
+               $(1)/tmp/* \
+               $(1)/usr/lib/opkg/info/*.postinst* \
+               $(1)/usr/lib/opkg/lists/* \
+               $(1)/var/lock/*.lock
        $(call clean_ipkg,$(1))
        $(call mklibs,$(1))
+       $(if $(SOURCE_DATE_EPOCH),find $(1)/ -mindepth 1 -execdir touch -hcd "@$(SOURCE_DATE_EPOCH)" "{}" +)
 endef