###############################################################################
#                                                                             #
# IPFire.org - A linux based firewall                                         #
# 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        #
# 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/>.       #
#                                                                             #
###############################################################################

###############################################################################
# Definitions
###############################################################################

include Config

VER = ipfire

THISAPP     = core-updates
TARGET      = $(DIR_INFO)/$(THISAPP)

###############################################################################
# Top-level Rules
###############################################################################

install : $(TARGET)

check :

download :

md5 :

###############################################################################
# Installation Details
###############################################################################

CORE = $(patsubst $(DIR_SRC)/config/rootfiles/%,%,$(wildcard $(DIR_SRC)/config/rootfiles/core/*))

$(TARGET) : $(CORE)

.PHONY:
core/%:
	rm -rf /install/packages/package /tmp/*
	mkdir -p /install/packages/package
	eval $$(cat /usr/src/config/rootfiles/$@/meta)

	#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 $(TAR_OPTIONS) -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 $(TAR_OPTIONS) -p --numeric-owner -x  -C /tmp -f /$(SNAME).tar
	rm -f /$(SNAME).tar
	cd /tmp && XZ_OPT="$(XZ_OPT)" tar $(TAR_OPTIONS) -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
	#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.tar.xz ROOTFILES
	rm -rf /install/packages/package
	sed -e "s/NAME/core-upgrade/g" \
		-e "s/VER/$(VERSION)/g" \
		-e "s/RELEASE/$$(basename $@)/g" \
		-e "s/DEPS/$(DEPS)/g" \
		-e "s/SIZE/`ls -l \/install\/packages\/core-upgrade-$(VERSION)-$$(basename $@).ipfire | awk '{ print $$5 }'`/g" \
		< /usr/src/src/pakfire/meta > /install/packages/meta-core-upgrade-$$(basename $@)
