# Make several Debian tasks for the SkoleLinux project

ARCH     = i386
CODENAME = woody

CD1DIR=/skolelinux/developer/local0/ftp/tmp/$(CODENAME)-$(ARCH)/CD1

LISTS = \
	lists/common.txt \
	lists/networked.txt \
	lists/main-server.txt \
	lists/workstation.txt \
	lists/thin-client-server.txt \
	lists/standalone.txt \
	lists/standalone-extras.txt \
	lists/laptop.txt \
	lists/extra.txt

TASKS = \
	education-common \
	education-networked \
	education-main-server \
	education-workstation \
	education-thin-client-server \
	education-standalone \
	education-standalone-extras \
	education-laptop

all: pkgwishlist.txt

# The packages we want on the CD
pkgwishlist.txt: $(LISTS) tools/extract-packages.pl .DUMMY
	tools/extract-packages.pl -m $(LISTS) > $@

pkgexcludelist.txt: $(LISTS) tools/extract-packages.pl .DUMMY
	@tools/extract-packages.pl -e $(LISTS) > $@

pkgwishlist-sorted.txt: $(LISTS) tools/extract-packages.pl .DUMMY
	@tools/extract-packages.pl -m $(LISTS) | sort -u > $@

pkgwishlist-complete.txt: $(LISTS) tools/extract-packages.pl .DUMMY
	@tools/extract-packages.pl -a $(LISTS) > $@

# The deb packages on the CD
pkgdeblist.txt: $(CD1DIR) .DUMMY
	@tools/list-debs.sh $(CD1DIR) |sort > pkgdeblist.txt

dist: debian/control
	debuild -us -uc

clean:
	$(RM) distdiff.html update_excuses.html update_excuses.html.gz
	$(RM) pkglist.txt pkgwishlist.txt pkgexcludelist.txt
	$(RM) local-doc.txt local-sl.txt local-src.txt sl-packages.txt
#	fakeroot debian/rules clean

debian/control: debian/control.in tools/mkdebcontrol.sh $(LISTS) .DUMMY
	tools/mkdebcontrol.sh
.DUMMY:
.PHONY : .DUMMY

baselist.txt: .DUMMY
	@/usr/sbin/debootstrap --arch $(ARCH) --print-debs $(CODENAME) | \
		tr " " "\n" | sort -u > $@

check: cd-filelist.txt pkgwishlist-sorted.txt pkgdeblist.txt distdiff.html distdiff-all.html pkgdiskusage.txt baselist.txt pkgexcludelist.txt
	@tools/check-cd.sh pkgwishlist-sorted.txt pkgdeblist.txt
	#
	# Non-free packages on the CD:
	#
	@grep ^Package: $(CD1DIR)/dists/$(CODENAME)/non-free/binary-$(ARCH)/Packages | sed 's/Package:/ /'
	#
	# Make sure we didn't exclude packages required by debootstrap.
	# There should be no packages listed here!
	#
	@comm -12 baselist.txt pkgexcludelist.txt
	#
	# End of list
	#
	# task install size including all their dependencies (kb)
	#
	@tools/pkgdisksize $(TASKS) 2>/dev/null
	#
	# Number of packages on the CD
	#
	@wc -l pkgdeblist.txt
	#
	# Changes in package list since last release
	#
	@tools/pkgdiff-summary.sh
	#
	# Current image size
	#
	du -sh /local/ftp/debian-cd/*.raw

# Generate complete list of files and symlinks on first CD
cd-filelist.txt: .DUMMY
	@(cd $(CD1DIR); find . -type f -o -type l|sort|xargs ls --full-time -lGk|cut -c17-) > $@

pkgdiskusage.txt: tools/get_diskusage.pl .DUMMY
	@tools/get_diskusage.pl > $@

# Reformat the list to match the popularity-contest data format.
pkgdeblist-popcontest.txt: pkgdeblist.txt
	cut -d_ -f1 pkgdeblist.txt | \
	  sed 's/^/0 0 /'| sed 's/$$/ <UNKNOWN>/' > $@

buglist.txt.new: tools/popbugs pkgdeblist-popcontest.txt
	LANG=C tools/popbugs pkgdeblist-popcontest.txt > $@
buglist.txt: buglist.txt.new
	mv $@.new $@

pkgwanted.txt: lists/*.txt
	tools/extract-packages.pl -a lists/*.txt > $@
wnpp.txt: pkgwanted.txt tools/listwnpp
	./tools/listwnpp pkgwanted.txt > wnpp.txt.new 2> wnpp-bad.txt.new && \
		mv wnpp.txt.new wnpp.txt && mv wnpp-bad.txt.new wnpp-bad.txt

update_excuses.html.gz: .DUMMY
	@$(RM) $@
	@wget --timeout=15 http://ftp-master.debian.org/testing/update_excuses.html.gz > /dev/null 2>&1

update_excuses.html: update_excuses.html.gz
	@rm -f $@
	@gunzip update_excuses.html.gz

distdiff.html: pkgdeblist.txt pkgwishlist-complete.txt update_excuses.html tools/distdiff-testing-unstable.pl
	@tools/distdiff-testing-unstable.pl pkgdeblist.txt:pkgwishlist-complete.txt > $@

# Extract list of all pachages with testing/unstable diffs
allpackages.txt: update_excuses.html
	grep 'a id=' $^ | cut -d\" -f2| sed 's/^-//'| sort -u > $@

distdiff-all.html: allpackages.txt update_excuses.html
	@tools/distdiff-testing-unstable.pl allpackages.txt > $@

.PHONY : sl-packages.txt
sl-packages.txt:
	rm -f $@
	wget --timeout=15 http://developer.skolelinux.no/info/cdbygging/sl-packages.txt
	touch $@
local-sl.txt: sl-packages.txt
	( \
	  echo "  0_in_doc" ; \
	  echo "  0_in_both" ; \
	  grep '^  [a-z]' sl-packages.txt | awk '{ print " ",$$1 }' ; \
	) | LANG=C sort -u > $@

local-src.txt:
	( \
	  echo "  0_in_cd" ; \
	  echo "  0_in_both" ; \
	  LANG=C ./tools/local-src.sh ; \
	) | LANG=C sort -u > $@

local-doc.txt: local-sl.txt local-src.txt
	comm local-sl.txt local-src.txt > $@

.PHONY : bts-reports.txt
bts-reports.txt:
	rm -f $@
	wget --timeout=15 http://developer.skolelinux.no/info/cdbygging/bts-reports.txt
	touch $@

bts-reports.html: tools/btssummary bts-reports.txt
	tools/btssummary  bts-reports.txt > $@.new && mv $@.new $@
