ARCH=hurd-i386
BINARY=dists/sid/main/binary-$(ARCH)
D_I=dists/sid/main/debian-installer/binary-$(ARCH)
BINARY2=dists/unreleased/main/binary-$(ARCH)
BINARYA=dists/sid/main/binary-all
D_IA=dists/sid/main/debian-installer/binary-all
BINARY2A=dists/unreleased/main/binary-all
SOURCE=dists/sid/main/source
SOURCE2=dists/unreleased/main/source
BRITNEY_HOME=$(HOME)/hurd/britney
BRITNEY=$(BRITNEY_HOME)/britney
FTP_MASTER=/srv/mirrors/debian
#ARCHIVE_MASTER=/srv/mirrors/debian
ARCHIVE_MASTER=/srv/mirrors/debian-ports
#PORTS_MASTER=ftp.ports.debian.org/debian-ports
PORTS_MASTER=/srv/mirrors/debian-ports
LOCAL=/home/sthibault/local/dists/sid/local
PEOPLE=/home/sthibault/archive/people.debian.org/\~sthibault/hurd-i386

.PHONY: all down-mirror down link merge fixrelease britney dinstall

all: triviallink

#all: down-mirror down link merge fixrelease
#britney dinstall


# Version that just symlinks the debian-ports archive and the installer image
triviallink: down
	rm -fr merge
	mkdir merge
	for i in i386 amd64 ; do \
		mkdir -p merge/dists/unstable/main/installer-hurd-$$i ; \
		ln -s ~/cron-cd/current.hurd-$$i merge/dists/unstable/main/installer-hurd-$$i/current ; \
	done
	ln -s $(ARCHIVE_MASTER)/dists/unstable/main/* merge/dists/unstable/main/
	ln -s $(ARCHIVE_MASTER)/dists/unstable/Contents-hurd* merge/dists/unstable/
	ln -s $(ARCHIVE_MASTER)/dists/unstable/Contents-all* merge/dists/unstable/
	ln -s $(ARCHIVE_MASTER)/dists/unstable/*Release* merge/dists/unstable/
	ln -s unstable merge/dists/sid
	ln -s $(ARCHIVE_MASTER)/dists/unreleased merge/dists/
	ln -s $(ARCHIVE_MASTER)/indices merge/
	ln -s $(ARCHIVE_MASTER)/pool merge/
	ln -s $(ARCHIVE_MASTER)/pool-hurd-i386 merge/
	ln -s $(ARCHIVE_MASTER)/pool-hurd-amd64 merge/
	ln -s $(ARCHIVE_MASTER)/project merge/
	cp -a $(ARCHIVE_MASTER)/doc merge/
	ln -s $(ARCHIVE_MASTER)/README merge/
	ln -s $(LOCAL) merge/dists/unstable/
	rm -f $(LOCAL)/debian-installer/binary-hurd-i386/main/misc
	rm -f $(LOCAL)/debian-installer/binary-hurd-amd64/main/misc
	ln -s $(PEOPLE)/installer/pool/main/misc $(LOCAL)/debian-installer/binary-hurd-i386/main/
	ln -s $(PEOPLE)/installer/pool/main/misc $(LOCAL)/debian-installer/binary-hurd-amd64/main/



# Get debian-ports packages
down-mirror:
	#lftp -f get
	#-rm -f $$(find ftp.ports.debian.org/ -name \*.html\* -o -name Packages\* -o -name Contents\* -o -name Sources\* -o -name Release\*)
	#wget -c -r --no-parent http://ftp.ports.debian.org/debian-ports/pool-$(ARCH)/ -X non-free -X contrib
	#wget -c -r --no-parent http://ftp.ports.debian.org/debian-ports/dists/unreleased/ -X non-free -X 
	#-rmdir -p ftp.ports.debian.org/debian-ports/pool-$(ARCH)/main/*/*

# Get sthibault's fixes
down:
	rm -fr people.debian.org
	wget --no-check-certificate -c -r --no-parent https://people.debian.org/~sthibault/hurd-i386/installer/pool/
	wget --no-check-certificate -c -r --no-parent https://people.debian.org/~sthibault/hurd-i386/installer/dists/
	wget --no-check-certificate -c -r --no-parent https://people.debian.org/~sthibault/hurd-i386/pool/
	wget --no-check-certificate -c -r --no-parent https://people.debian.org/~sthibault/hurd-i386/Packages.gz
	#wget --no-check-certificate -c -r --no-parent -l 1 https://people.debian.org/~sthibault/hurd-i386/

# symlink or copy over files into the merge/ directory
link:
	rm -fr merge
	mkdir -p merge/pool/main
	cd merge/pool/main ; mkdir -p $$( cd $(ARCHIVE_MASTER)/pool/main ; echo */* ; cd $(PORTS_MASTER)/pool-$(ARCH)/main ; echo */* )
	rm -f srv
	ln -s /srv srv
	#for i in merge/pool/main/*/* ; do ln srv $$i/srv ; done
	$$HOME/bin/lnm srv merge/pool/main/*/*
	mln -s '$(ARCHIVE_MASTER)/pool/main/*/*/*deb' merge/pool/main/'#1/#2/#3deb'
	mln -sd '$(PORTS_MASTER)/pool-$(ARCH)/main/*/*/*deb' merge/pool/main/'#1/#2/#3deb'
	cp -a $(FTP_MASTER)/README* merge/
	cp -a $(FTP_MASTER)/doc merge/
	ln -s $(FTP_MASTER)/tools merge/
	mkdir merge/dists
	cp -as $(ARCHIVE_MASTER)/dists/unstable merge/dists/
	ln -s unstable merge/dists/sid
	mkdir merge/dists/unreleased
	sed -ne '0,/^Version: /p' < $(PORTS_MASTER)/dists/unreleased/Release > merge/dists/unreleased/Release
	rm -fr merge/dists/sid/main/installer-$(ARCH)
	mkdir -p merge/dists/sid/main/installer-$(ARCH)
	ln -s ~/cron-cd/current.$(ARCH) merge/dists/sid/main/installer-$(ARCH)/
	cp -fal people.debian.org/~sthibault/hurd-i386/installer/pool/* merge/pool/
	cp -fal people.debian.org/~sthibault/hurd-i386/pool/* merge/pool/

# Merge Packages and Sources files
merge-binary:
	# *_$(ARCH).deb packages
	echo -n > merge/$(BINARY)/Packages.new
	gunzip < people.debian.org/~sthibault/hurd-i386/Packages.gz >> merge/$(BINARY)/Packages.new
	gunzip < $(PORTS_MASTER)/$(BINARY2)/Packages.gz | sed -e 's/pool-$(ARCH)/pool/g' >> merge/$(BINARY)/Packages.new
	gunzip < $(ARCHIVE_MASTER)/$(BINARY)/Packages.gz | sed -e 's/pool-$(ARCH)/pool/g' >> merge/$(BINARY)/Packages.new
	# Fix vim installability
	grep-dctrl --not -FSource vim --or \( --not -FVersion 2:8.1.0875-2 -a --not -FVersion 2:8.1.0089-1 \) < merge/$(BINARY)/Packages.new > merge/$(BINARY)/Packages.new2
	# Fix emacs installability
	grep-dctrl --not -FPackage emacs --or \( --not -FVersion 1:26.1+1-3.2 \) < merge/$(BINARY)/Packages.new2 > merge/$(BINARY)/Packages.new
	# Fix libvte installability
	grep-dctrl --not -FPackage libvte-2.91-common --or \( --not -FVersion 0.54.2-2 \) < merge/$(BINARY)/Packages.new > merge/$(BINARY)/Packages.new2
	mv -f merge/$(BINARY)/Packages.new2 merge/$(BINARY)/Packages.new
	sort-dctrl -k Package,Version < merge/$(BINARY)/Packages.new > merge/$(BINARY)/Packages
	mkdir -p merge/$(BINARY)
	rm -f merge/$(BINARY)/Packages.gz
	rm -f merge/$(BINARY)/Packages.bz2
	rm -f merge/$(BINARY)/Packages.xz
	rm -fr merge/$(BINARY)/Packages.diff
	gzip -1 < merge/$(BINARY)/Packages > merge/$(BINARY)/Packages.gz
	#xz -0 < merge/$(BINARY)/Packages > merge/$(BINARY)/Packages.xz

	# *.udeb packages
	echo -n > merge/$(D_I)/Packages.new
	gunzip < people.debian.org/~sthibault/hurd-i386/installer/dists/unstable/main/debian-installer/binary-$(ARCH)/Packages.gz >> merge/$(D_I)/Packages.new
	gunzip < $(PORTS_MASTER)/dists/unreleased/main/debian-installer/binary-$(ARCH)/Packages.gz | sed -e 's/pool-$(ARCH)/pool/g' >> merge/$(D_I)/Packages.new
	gunzip < $(ARCHIVE_MASTER)/$(D_I)/Packages.gz | sed -e 's/pool-$(ARCH)/pool/g' >> merge/$(D_I)/Packages.new
	sort-dctrl -k Package,Version < merge/$(D_I)/Packages.new > merge/$(D_I)/Packages
	mkdir -p merge/$(D_I)
	rm -f merge/$(D_I)/Packages.gz
	rm -f merge/$(D_I)/Packages.bz2
	rm -f merge/$(D_I)/Packages.xz
	rm -fr merge/$(D_I)/Packages.diff
	gzip -1 < merge/$(D_I)/Packages > merge/$(D_I)/Packages.gz
	#xz -0 < merge/$(D_I)/Packages > merge/$(D_I)/Packages.xz

	# Fake stable and testing distributions to make tools happy
	for i in stable testing ; do \
		mkdir -p merge/dists/$$i/main/binary-$(ARCH) ; \
		mkdir -p merge/dists/$$i/main/source ; \
		echo -n | gzip > merge/dists/$$i/main/binary-$(ARCH)/Packages.gz ; \
		echo -n | xz > merge/dists/$$i/main/binary-$(ARCH)/Packages.xz ; \
	done
	#	echo -n | gzip > merge/dists/$$i/main/source/Sources.gz ; \
	#	echo -n | xz > merge/dists/$$i/main/source/Sources.xz ; \

merge-binary-all:
	# *_all.deb packages
	echo -n > merge/$(BINARYA)/Packages.new
	gunzip < people.debian.org/~sthibault/hurd-i386/Packages.gz >> merge/$(BINARYA)/Packages.new
	gunzip < $(PORTS_MASTER)/$(BINARY2A)/Packages.gz | sed -e 's/pool-$(ARCH)/pool/g' >> merge/$(BINARYA)/Packages.new
	gunzip < $(ARCHIVE_MASTER)/$(BINARYA)/Packages.gz | sed -e 's/pool-$(ARCH)/pool/g' >> merge/$(BINARYA)/Packages.new
	# Fix vim installability
	grep-dctrl --not -FSource vim --or \( --not -FVersion 2:8.1.0875-2 -a --not -FVersion 2:8.1.0089-1 \) < merge/$(BINARYA)/Packages.new > merge/$(BINARYA)/Packages.new2
	# Fix emacs installability
	grep-dctrl --not -FPackage emacs --or \( --not -FVersion 1:26.1+1-3.2 \) < merge/$(BINARYA)/Packages.new2 > merge/$(BINARYA)/Packages.new
	# Fix libvte installability
	grep-dctrl --not -FPackage libvte-2.91-common --or \( --not -FVersion 0.54.2-2 \) < merge/$(BINARYA)/Packages.new > merge/$(BINARYA)/Packages.new2
	mv -f merge/$(BINARYA)/Packages.new2 merge/$(BINARYA)/Packages.new
	sort-dctrl -k Package,Version < merge/$(BINARYA)/Packages.new > merge/$(BINARYA)/Packages
	mkdir -p merge/$(BINARYA)
	rm -f merge/$(BINARYA)/Packages.gz
	rm -f merge/$(BINARYA)/Packages.bz2
	rm -f merge/$(BINARYA)/Packages.xz
	rm -fr merge/$(BINARYA)/Packages.diff
	gzip -1 < merge/$(BINARYA)/Packages > merge/$(BINARYA)/Packages.gz
	#xz -0 < merge/$(BINARYA)/Packages > merge/$(BINARYA)/Packages.xz

	# *_all.udeb packages
	echo -n > merge/$(D_IA)/Packages.new
	gunzip < people.debian.org/~sthibault/hurd-i386/installer/dists/unstable/main/debian-installer/binary-all/Packages.gz >> merge/$(D_IA)/Packages.new
	gunzip < $(ARCHIVE_MASTER)/$(D_IA)/Packages.gz >> merge/$(D_IA)/Packages.new
	sort-dctrl -k Package,Version < merge/$(D_IA)/Packages.new > merge/$(D_IA)/Packages
	mkdir -p merge/$(D_IA)
	rm -f merge/$(D_IA)/Packages.gz
	rm -f merge/$(D_IA)/Packages.bz2
	rm -f merge/$(D_IA)/Packages.xz
	rm -fr merge/$(D_IA)/Packages.diff
	gzip -1 < merge/$(D_IA)/Packages > merge/$(D_IA)/Packages.gz
	#xz -0 < merge/$(D_IA)/Packages > merge/$(D_IA)/Packages.xz

	## Sources
	# FIXME: need to take from ftp-master
	#echo -n > merge/$(SOURCE)/Sources.new
	#gunzip < $(ARCHIVE_MASTER)/$(SOURCE)/Sources.gz >> merge/$(SOURCE)/Sources.new
	##gunzip < $(PORTS_MASTER)/$(SOURCE2)/Sources.gz >> merge/$(SOURCE)/Sources.new
	#sort-dctrl -k Package,Version < merge/$(SOURCE)/Sources.new > merge/$(SOURCE)/Sources
	#mkdir -p merge/$(SOURCE)
	#rm -f merge/$(SOURCE)/Sources.gz
	#rm -f merge/$(SOURCE)/Sources.bz2
	#rm -fr merge/$(SOURCE)/Sources.diff
	#gzip -1 < merge/$(SOURCE)/Sources > merge/$(SOURCE)/Sources.gz
	##xz -0 < merge/$(SOURCE)/Sources > merge/$(SOURCE)/Sources.xz

merge: merge-binary merge-binary-all

fixrelease:
	# Drop official Release file, we will create our (unsigned) own
	rm -f merge/dists/sid/InRelease
	rm -f merge/dists/sid/Release
	rm -f merge/dists/sid/Release.gpg
	cp $(ARCHIVE_MASTER)/dists/sid/Release merge/dists/sid/Release

	# Drop official Packages files
	sed -i \
		-e '/main\/binary-$(ARCH)\/Packages/d' \
		-e '/main\/binary-all\/Packages/d' \
		-e '/main\/debian-installer\/binary-$(ARCH)\/Packages/d' \
		-e '/main\/debian-installer\/binary-all\/Packages/d' \
		-e '/main\/source\/Sources/d' \
		merge/dists/sid/Release

	# Put our own Packages files instead
	#
	sum=$$(sha512sum merge/$(BINARY)/Packages | cut -d ' ' -f 1) ; \
	size=$$(stat -c %s merge/$(BINARY)/Packages) ; \
	echo " $$sum $$size main/binary-$(ARCH)/Packages" >> merge/dists/sid/Release

	sum=$$(sha512sum merge/$(BINARYA)/Packages | cut -d ' ' -f 1) ; \
	size=$$(stat -c %s merge/$(BINARYA)/Packages) ; \
	echo " $$sum $$size main/binary-all/Packages" >> merge/dists/sid/Release

	sum=$$(sha512sum merge/$(D_I)/Packages | cut -d ' ' -f 1) ; \
	size=$$(stat -c %s merge/$(D_I)/Packages) ; \
	echo " $$sum $$size main/debian-installer/binary-$(ARCH)/Packages" >> merge/dists/sid/Release

	sum=$$(sha512sum merge/$(D_IA)/Packages | cut -d ' ' -f 1) ; \
	size=$$(stat -c %s merge/$(D_IA)/Packages) ; \
	echo " $$sum $$size main/debian-installer/binary-all/Packages" >> merge/dists/sid/Release

	#sum=$$(sha512sum merge/$(SOURCE)/Sources | cut -d ' ' -f 1) ; \
	#size=$$(stat -c %s merge/$(SOURCE)/Sources) ; \
	#echo " $$sum $$size main/source/Sources" >> merge/dists/sid/Release

britney:
	$(BRITNEY) bugs
	$(BRITNEY) pkg-lists
	$(BRITNEY) run > /dev/null

dinstall:
	gzip -1 < $(BRITNEY_HOME)/var/data/testing/Packages_$(ARCH) > merge/dists/testing/main/binary-$(ARCH)/Packages.gz
	#xz -0 < $(BRITNEY_HOME)/var/data/testing/Packages_$(ARCH) > merge/dists/testing/main/binary-$(ARCH)/Packages.xz
