###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
+# Copyright (C) 2007-2018 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 #
VER = ipfire
-THISAPP = core-updates
-TARGET = $(DIR_INFO)/$(THISAPP)
+THISAPP = core-updates
+TARGET = $(DIR_INFO)/$(THISAPP)
+TAR_OPTIONS = --xz
###############################################################################
# Top-level Rules
$(TARGET) : $(CORE)
+.PHONY:
core/%:
- rm -rf /install/packages/package
+ rm -rf /install/packages/package /tmp/*
mkdir -p /install/packages/package
eval $$(cat /usr/src/config/rootfiles/$@/meta)
- cp -f /usr/src/config/rootfiles/$@/update.sh /install/packages/package
- cp -f /usr/src/config/rootfiles/$@/files /install/packages/package/ROOTFILES
- sed -e 's/KVER/$(KVER)/g' -i /install/packages/package/ROOTFILES
+
+ #Generate ROOTFILES from filelists
+ BUILD_ARCH=$(BUILD_ARCH) BUILDTARGET=$(BUILDTARGET) KVER=$(KVER) \
+ $(DIR_SRC)/src/scripts/archive.files \
+ $(DIR_SRC)/config/rootfiles/$@/filelists \
+ $(DIR_SRC)/config/rootfiles/$@/files \
+ $(DIR_SRC)/config/rootfiles/$@/files.$(BUILD_ARCH) \
+ > /tmp/ROOTFILES.tmp
+
+ #remove excluded files from ROOTFILES
+ grep -f $(DIR_SRC)/config/rootfiles/$@/exclude -v /tmp/ROOTFILES.tmp > /tmp/ROOTFILES
+ rm -rf /tmp/ROOTFILES.tmp
+
+ #Change KVER to Kernelversion
+ sed -e "s/KVER/$(KVER)/g" -i /tmp/ROOTFILES
+
+ #Remove doubled files with tar/untar/tar to save space
+ tar -c --exclude='proc/*' --exclude='tmp/ROOTFILES' --exclude='__pycache__' --exclude='#*' --exclude='dev/pts/*' \
+ --exclude-from=$(DIR_SRC)/config/rootfiles/$@/exclude \
+ -C / --files-from=/tmp/ROOTFILES -f /$(SNAME).tar
+ mv -f /tmp/ROOTFILES /install/packages/package/ROOTFILES
+ tar -p --numeric-owner -x -C /tmp -f /$(SNAME).tar
+ rm -f /$(SNAME).tar
+ cd /tmp && XZ_OPT="$(XZ_OPT)" tar cJf /install/packages/package/files.tar.xz $(TAR_OPTIONS) * && rm -rf *
+ cat /install/packages/package/ROOTFILES | grep -v "#" > /install/packages/package/ROOTFILES.tmp
+ rm /install/packages/package/ROOTFILES
+ mv /install/packages/package/ROOTFILES.tmp /install/packages/package/ROOTFILES
+
+ #build package
+ cp -f $(DIR_SRC)/config/rootfiles/$@/update.sh /install/packages/package
chmod 755 /install/packages/package/update.sh
- cd / && tar cf /install/packages/package/files --files-from=/install/packages/package/ROOTFILES --exclude='#*'
- -cat /install/packages/package/ROOTFILES | grep -v "#" > /install/packages/package/ROOTFILES
+ #Change xxxKVERxxx to Kernelversion
+ sed -e "s/xxxKVERxxx/$(KVER)/g" -i /install/packages/package/update.sh
+
cd /install/packages/package && tar cf ../core-upgrade-$(VERSION)-$$(basename $@).ipfire \
- update.sh files ROOTFILES
+ update.sh files.tar.xz ROOTFILES
rm -rf /install/packages/package
sed -e "s/NAME/core-upgrade/g" \
-e "s/VER/$(VERSION)/g" \