#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

include /usr/share/dpkg/architecture.mk
include /usr/share/dpkg/pkg-info.mk

VENDOR			?= $(call dpkg_late_eval,VENDOR,dpkg-vendor --derives-from Ubuntu && echo Ubuntu || echo Debian)


include debian/rules.defs
CUDA_ARCH_LIST		?= amd64
CUDA_PATCH_LIST		?=
CUDA_PATCH_LIST_ARCH	?= $(patsubst $(DEB_HOST_ARCH)-%,%,$(filter $(DEB_HOST_ARCH)-%,$(CUDA_PATCH_LIST)))
CUDA_ARCH_LIST_NO_DRIVER?=
CUDA_ARCH_LIST_NO_JAVA	?=
CUDA_VERSION_TOOLKIT	?= $(DEB_VERSION_UPSTREAM)
CUDA_VERSION_MAJOR	?= $(word 1,$(subst ., ,$(CUDA_VERSION_TOOLKIT)))
CUDA_VERSION_MINOR	?= $(word 2,$(subst ., ,$(CUDA_VERSION_TOOLKIT)))
version_driver		 = $(CUDA_VERSION_DRIVER.$(DEB_HOST_ARCH))
watch_url		 = $(CUDA_WATCH_URL)
PACKAGE_LIST		:= $(shell dh_listpackages)
THRUST_VERSION		?= $(or $(strip $(shell perl -ne 'if (/define\s+THRUST_VERSION\s+(\d*)/) { printf "%d.%d.%d\n", $$1 / 100000, $$1 / 100 % 1000, $$1 % 100; }' nvidia-cuda/include/thrust/version.h)),$(error empty THRUST_VERSION))
OPENJDK_VERSION		?= $(or $(strip $(shell nvidia-cuda/jre/bin/java -version 2>&1 | sed -rn '1s/.*"1\.([0-9]*)\.0_(.*)"/\1u\2/p')),$(error empty OPENJDK_VERSION))
CUDA_JAVA_HOME		?= /usr/lib/jvm/nvidia-java-8-openjdk-$(DEB_HOST_ARCH)
jre_pkg			?= $(filter nvidia-openjdk-8-jre,$(PACKAGE_LIST))

package_libcuda1 \
	= libcuda1 (>= $${nvidia:MinVersion}) \
	| libcuda-$${cuda:SoVersion}-1
#ifeq ($(VENDOR),Ubuntu)
package_libcuda1	+= | no-libcuda1 [$${cuda:arch:has-no-driver}]
#endif

# system libdir
libdir			 = usr/lib/$(DEB_HOST_MULTIARCH)

TEMPLATES	:= $(wildcard debian/*.in debian/patches/*.in)
SOVERTEMPLATES	:= $(wildcard debian/*SOVER*)
AUTOGEN		+= $(patsubst %.in,%,$(TEMPLATES))
AUTOGEN		+= $(subst SOVER,$(CUDA_SOVERSION),$(sort $(patsubst %.in,%,$(SOVERTEMPLATES))))
AUTOGEN		+= debian/g++
AUTOKEEP	 = debian/watch
AUTOCLEAN	 = $(filter-out $(AUTOKEEP),$(AUTOGEN))
AUTOCLEAN	+= debian/shlibs.local


.PHONY: autogen prepare
autogen: $(AUTOGEN)
prepare: autogen unpack-stamp compare-copyright-license


nvidia-cuda-amd64:
	dh_testdir
	$(RM) -r $@ $@.tmp
	sh $(CUDA_FILENAME.amd64) --noexec --keep --target $@.tmp
	mv $@.tmp $@

nvidia-cuda-amd64-patch1: | nvidia-cuda-amd64
	dh_testdir
	$(RM) -r $@ $@.tmp
	sh amd64-patch1/$(CUDA_FILENAME.amd64-patch1) --noexec --keep --target $@.tmp
	mv $@.tmp/payload/cuda-linux64-mixed-rel-nightly/* $@.tmp/
	$(RM) -v $@.tmp/install_patch.pl
	$(RM) -v $@.tmp/payload/install_manifest
	mv $@.tmp $@
	for f in $$(cd $@ && find . ! -type d) ; do test -e nvidia-cuda-amd64/$$f || echo "new file in $@: $$f" ; done

nvidia-cuda-ppc64el:
	dh_testdir
	$(RM) -r $@ $@.tmp
	mkdir $@.tmp
	@set -e -x ; for deb in ppc64el/cuda*.deb ; do dpkg -x $$deb $@.tmp/ubuntutree ; done
	mv $@.tmp/ubuntutree/usr/local/cuda*/* $@.tmp/
	$(RM) -r $@.tmp/ubuntutree/usr/lib/pkgconfig
	$(RM) -r $@.tmp/ubuntutree/usr/share/doc
	$(RM) -r $@.tmp/ubuntutree/usr/share/lintian
	$(RM) -v $@.tmp/ubuntutree/etc/ld.so.conf.d/cuda-$(subst .,-,$(CUDA_SOVERSION)).conf
	$(RM) -v $@.tmp/bin/computeprof
	$(RM) -v $@.tmp/LICENSE
	$(RM) -v $@.tmp/README
	mv $@.tmp/doc/EULA.txt $@.tmp/
	$(RM) $@.tmp/include $@.tmp/lib64
	mv $@.tmp/targets/ppc64le-linux/include $@.tmp/include
	mv $@.tmp/targets/ppc64le-linux/lib $@.tmp/lib64
	mv $@.tmp $@

nvidia-cuda-ppc64el-patch1: | nvidia-cuda-ppc64el
	dh_testdir
	$(RM) -r $@ $@.tmp
	mkdir $@.tmp
	@set -e -x ; for deb in ppc64el-patch1/cuda*.deb ; do dpkg -x $$deb $@.tmp/ubuntutree ; done
	mv $@.tmp/ubuntutree/usr/local/cuda*/* $@.tmp/
	$(RM) -r $@.tmp/ubuntutree/usr/lib/pkgconfig
	$(RM) -r $@.tmp/ubuntutree/usr/share/doc
	$(RM) -r $@.tmp/ubuntutree/usr/share/lintian
	$(RM) -v $@.tmp/ubuntutree/etc/ld.so.conf.d/cuda-$(subst .,-,$(CUDA_SOVERSION)).conf
	cmp -s nvidia-cuda-ppc64el/bin/nvcc.profile $@.tmp/bin/nvcc.profile && $(RM) -v $@.tmp/bin/nvcc.profile
	$(RM) $@.tmp/include $@.tmp/lib64
	mv $@.tmp/targets/ppc64le-linux/include $@.tmp/include
	mv $@.tmp/targets/ppc64le-linux/lib $@.tmp/lib64
	mv $@.tmp $@
	for f in $$(cd $@ && find . ! -type d) ; do test -e nvidia-cuda-ppc64el/$$f || echo "new file in $@: $$f" ; done

unpack-stamp: $(filter debian/patches%,$(AUTOGEN))
unpack-stamp: nvidia-cuda-$(DEB_HOST_ARCH)
unpack-stamp: $(foreach patch,$(CUDA_PATCH_LIST_ARCH),nvidia-cuda-$(DEB_HOST_ARCH)-$(patch))
	$(RM) nvidia-cuda $(foreach patch,$(CUDA_PATCH_LIST_ARCH),nvidia-cuda-$(patch))
	ln -sf nvidia-cuda-$(DEB_HOST_ARCH) nvidia-cuda
	$(foreach patch,$(CUDA_PATCH_LIST_ARCH),ln -sf nvidia-cuda-$(DEB_HOST_ARCH)-$(patch) nvidia-cuda-$(patch) ; )
	QUILT_PATCHES=debian/patches QUILT_SERIES=series-postunpack quilt --quiltrc /dev/null push -a || test $$? = 2
	touch $@

# Reformat the EULA to the format needed for debian/copyright.
nvidia-cuda/EULA.txt: unpack-stamp
EULA.fmt: nvidia-cuda/EULA.txt
	cat $< \
		| fromdos | fromdos | expand \
		| iconv -f UTF-8 -t latin1//TRANSLIT \
		| fold -s -w 80 \
		| sed -e 's/ *$$//;s/^$$/./;s/^/ /;' \
		> $@

# Compare the license in debian/copyright with the EULA shipped in the archive.
compare-copyright-license: EULA.fmt
	sed -e '1,/^License: other-NVIDIA-CUDA-TOOLKIT/d; /^$$/,$$d; /^ .$$/d' debian/copyright > copyright.tmp
	sed -e '/^ .$$/d' EULA.fmt > EULA.tmp
	diff -w copyright.tmp EULA.tmp
	rm -f copyright.tmp EULA.tmp


.PHONY: binary binary-arch binary-indep build build-arch build-indep clean install
binary-arch build build-arch build-indep clean install:
	dh $@

binary binary-indep:
	# the documentation packages must be built on amd64 (otherwise some parts are missing)
	test "$(DEB_HOST_ARCH)" = "amd64"
	dh $@

build-stamp: unpack-stamp
	$(RM) -r build
	cp -al nvidia-cuda-$(DEB_HOST_ARCH)/ build
	$(foreach patch,$(CUDA_PATCH_LIST_ARCH),cp -al nvidia-cuda-$(patch)/* build/ ; )
	$(cleanup-after-merging-patches-into-build/$(CUDA_VERSION_TOOLKIT))
	# fix permissions
	chmod -x build/bin/crt/link.stub
	chmod -x build/bin/crt/prelink.stub
	chmod -x build/libnvvp/*.xpm
	chmod -x build/libnsight/*.xpm
	chmod -x build/nvvm/include/*.h
	chmod -x build/nvvm/libnvvm-samples/build.bat
	# remove java path
	sed -i '/^-vm$$/ d; /^..\/jre\/bin\/java$$/ d' build/libnvvp/nvvp.ini build/libnsight/nsight.ini
ifneq (,$(jre_pkg))
	# these depend on libraries from oldoldstable
	$(RM) -v build/jre/lib/amd64/libavplugin-53.so
	$(RM) -v build/jre/lib/amd64/libavplugin-54.so
endif
	# remove tracking scripts
	find build \( -name google-analytics-tracker.js -o -name google-analytics-write.js -o -name tynt.js \) -exec rm -v {} +
	# remove tracking images
	find \
		build/doc/html \
	    -name '*.html' -exec sed -r -i \
		-e '\,http://omniture.nvidia.com/b/ss/nvidiacudadocs/1/H.17--NS/0, { s,(<noscript>),<!-- \1,; s,img src,img DISABLED,; s,(</noscript>),\1 -->, }' \
		-e 's,(<script type="text/javascript" )src(="http://w.sharethis.com/button/buttons.js"[^>]*></script>),<!-- \1DISABLED\2 -->,' \
		-e 's,(<script type="text/javascript" charset="utf-8" )src(="//assets.adobedtm.com/b92787824f2e0e9b68dc2e993f9bd995339fe417/satelliteLib-7ba51e58dc61bcb0e9311aadd02a0108ab24cc6c.js"[^>]*></script>),<!-- \1DISABLED\2 -->,' \
		{} +
	find \
		build/libnsight \
		build/libnvvp \
	    -name 'license.html' -exec sed -r -i \
		-e 's,(<script type="text/javascript" )src(="http://w.sharethis.com/button/buttons.js"[^>]*></script>),<!-- \1DISABLED\2 -->,' \
		{} +
	# replace embedded javascript libraries
	find build -name html5shiv-printshiv.min.js -exec ln -sfv /usr/share/javascript/html5shiv/html5shiv-printshiv.min.js {} \;
	find build -name jquery.js -exec ln -sfv /usr/share/javascript/jquery/jquery.js {} \;
	find build -name jquery.min.js -exec ln -sfv /usr/share/javascript/jquery/jquery.min.js {} \;
	# reduce 'dh_missing --list-missing' noise
	# remove empty directories
	find build -depth -type d -exec sh -c 'd="{}"; rmdir --ignore-fail-on-non-empty "$$d" ; test -d "$$d" || echo "removed $$d"' \;
	# split arch and indep eclipse plugins
	mkdir build/libnsight/plugins-arch
	mv build/libnsight/plugins/org.eclipse.equinox.launcher.gtk.linux.* build/libnsight/plugins-arch/
	mkdir build/libnvvp/plugins-arch
	mv build/libnvvp/plugins/org.eclipse.equinox.launcher.gtk.linux.* build/libnvvp/plugins-arch/
	touch $@

override_dh_auto_configure: $(AUTOGEN) unpack-stamp

override_dh_auto_build: build-stamp

override_dh_auto_install:
	mkdir debian/tmp
	cp -al build/ debian/tmp/usr

override_dh_installdocs-indep:
	dh_installdocs -pnvidia-cuda-doc --doc-main-package=nvidia-cuda-toolkit
	dh_installdocs --remaining-packages

override_dh_installman:
	dh_installman --language=C

override_dh_missing:
	dh_missing --fail-missing

override_dh_makeshlibs:
	dh_makeshlibs -X/stubs/

override_dh_shlibdeps:
	$(RM) -r libcuda
	mkdir libcuda
	ln -s ../nvidia-cuda/lib64/stubs/libcuda.so libcuda/libcuda.so.1
	echo 'libcuda 1 XXXlibcuda1XXX' > debian/shlibs.local
	dh_shlibdeps -X/stubs/ -- -llibcuda
	$(RM) -r libcuda debian/shlibs.local
	sed -i -r 's/XXXlibcuda1XXX/$${package:libcuda1}/g' debian/*.substvars

# running dh_strip is not permitted by the NVIDIA license
override_dh_dwz:
override_dh_strip:
override_dh_strip_nondeterminism:

override_dh_compress:
	dh_compress -Xusr/share/doc/nvidia-cuda-toolkit/examples -Xusr/share/doc/libcupti-dev/examples

override_dh_gencontrol-indep:
	hardlink -v -t debian/nvidia-cuda-doc/usr/share/doc/nvidia-cuda-toolkit
	dh_gencontrol -plibthrust-dev -- -v$(THRUST_VERSION)~$(DEB_VERSION)
	dh_gencontrol --remaining-packages

override_dh_gencontrol-arch:
ifneq (,$(jre_pkg))
	dh_gencontrol -p$(jre_pkg) -- -v9.+$(OPENJDK_VERSION)~$(DEB_VERSION)
endif
	dh_gencontrol --remaining-packages -- \
		-V'package:libcuda1=$(package_libcuda1)' \
		-V'cuda:SoVersion=$(CUDA_SOVERSION)' \
		-V'nvidia:MinVersion=$(version_driver)' \
		-V'cuda:arch:has-no-driver=$(if $(filter $(DEB_HOST_ARCH),$(CUDA_ARCH_LIST_NO_DRIVER)),,!)$(DEB_HOST_ARCH)' \
		-V'cuda:arch:has-driver=$(if $(filter $(DEB_HOST_ARCH),$(CUDA_ARCH_LIST_NO_DRIVER)),!,)$(DEB_HOST_ARCH)' \
		-V'cuda:arch:has-java=$(if $(filter $(DEB_HOST_ARCH),$(CUDA_ARCH_LIST_NO_JAVA)),!,)$(DEB_HOST_ARCH)' \

override_dh_auto_clean:
	$(RM) -r .pc
	$(RM) -r nvidia-cuda-amd64*
	$(RM) -r nvidia-cuda-ppc64el*
	$(RM) nvidia-cuda*
	$(RM) -r build
	$(RM) -r libcuda
	$(RM) EULA.fmt EULA.tmp copyright.tmp

override_dh_clean:
	dh_clean
	$(RM) $(AUTOCLEAN)
	$(MAKE) -f debian/rules $(AUTOKEEP)


# Generating control files
%:: %.in debian/rules debian/rules.defs
	perl -p \
	-e 's{#VERSION_TOOLKIT#}{$(CUDA_VERSION_TOOLKIT)}g;' \
	-e 's{#SOVERSION#}{$(CUDA_SOVERSION)}g;' \
	-e 's{#CUDA_DOWNLOAD_URL#}{$(watch_url)}g;' \
	-e 's{#LIBDIR#}{$(libdir)}g;' \
	-e 's{#MAN_DATE#}{$(CUDA_MAN_DATE.$(DEB_HOST_ARCH))}g;' \
	-e 's{#!ppc64el#}{$(if $(filter ppc64el,$(DEB_HOST_ARCH)),#)}g;' \
	-e 's{#CUDA_JAVA_HOME#}{$(CUDA_JAVA_HOME)}g;' \
	< $< > $@

lib%$(CUDA_SOVERSION).install:: lib%SOVER.install
	cp $< $@

lib%$(CUDA_SOVERSION).links:: lib%SOVER.links
	cp $< $@

lib%$(CUDA_SOVERSION).lintian-overrides:: lib%SOVER.lintian-overrides
	cp $< $@

lib%$(CUDA_SOVERSION).symbols:: lib%SOVER.symbols
	cp $< $@

debian/g++: debian/gcc
	sed '/prog=/s/gcc-/g++-/g' < $< > $@
	chmod 0755 $@

# only invoked manually
check-whitespace:
	grep -r --exclude-dir=.svn --exclude-dir=.git --exclude '*.patch' -E '\s$$' debian || true

############################################################################

CACHE			?= ../.cache
ORIGDIR			?= nvidia-cuda-toolkit-$(CUDA_VERSION_TOOLKIT).orig
TARBALL_BASE		?= nvidia-cuda-toolkit_$(CUDA_VERSION_TOOLKIT).orig
TARBALL_SUFFIX		?= .tar.gz
TARBALL			?= $(TARBALL_BASE)$(TARBALL_SUFFIX)
ORIGDIR.amd64		?= $(ORIGDIR)
TARBALL.amd64		?= $(TARBALL)

# $1 = arch
get_origdir		 = $(or $(ORIGDIR.$(strip $1)),$(ORIGDIR)-$(strip $1))
get_tarball		 = $(or $(TARBALL.$(strip $1)),$(TARBALL_BASE)-$(strip $1)$(TARBALL_SUFFIX))

CUDA_DL_FILENAME.amd64		?= ???
CUDA_DL_FILENAME.ppc64el	?= ???

CUDA_URL_FILENAME.amd64		?= $(CUDA_DL_FILENAME.amd64)
CUDA_URL_FILENAME.ppc64el	?= $(CUDA_DL_FILENAME.ppc64el)

get-orig-source-prepare:
	$(RM) $(TARBALL_LIST)
	$(RM) -r get-orig-source || true
	mkdir get-orig-source

get-orig-source-download-%: get-orig-source-prepare
	ln -v $(CACHE)/$(CUDA_DL_FILENAME.$*) get-orig-source/ 2>/dev/null || \
		wget $(CUDA_DL_URL_HOST)/$(CUDA_DL_URL_PATH.$*)/$(CUDA_URL_FILENAME.$*) -O get-orig-source/$(CUDA_DL_FILENAME.$*)
	if [ -d $(CACHE) ] && [ ! -f $(CACHE)/$(CUDA_DL_FILENAME.$*) ]; then \
		ln -v get-orig-source/$(CUDA_DL_FILENAME.$*) $(CACHE) ; fi

# unpack the all-in-one .run cuda installer containing toolkit, driver and samples
get-orig-source-run-unpack-%: get-orig-source-download-%
	@set -e -x ; \
	    cd get-orig-source ; \
	    mkdir $(call get_origdir,$*) ; \
	    sh $(CUDA_DL_FILENAME.$*) --noexec --keep --target tmp ; \
	    find tmp -ls ; \
	    if [ -d tmp/run_files ]; then \
	        mv -f tmp/run_files/cuda-linux*.run tmp/run_files/EULA.txt $(call get_origdir,$*)/ ; \
	    else \
	        mv "$(CUDA_DL_FILENAME.$*)" $(call get_origdir,$*)/ ; \
	    fi ; \
	    rm -rf tmp ; \
	    chmod 0755 $(call get_origdir,$*)/*.run

# unpack the all-in-one .deb local-repo installer
get-orig-source-deb-unpack-%: get-orig-source-download-%
	@set -e -x ; \
	    cd get-orig-source ; \
	    mkdir $(call get_origdir,$*) ; \
	    dpkg -X $(CUDA_DL_FILENAME.$*) tmp.$* ; \
	    mv tmp.$*/var/cuda-repo-$(CUDA_VERSION_MAJOR)-$(CUDA_VERSION_MINOR)-*/*.deb $(call get_origdir,$*) ; \
	    rm -rf tmp.$* ; \
	    : "# Remove undistributable files:" ; \
	    rm -fv $(call get_origdir,$*)/cuda-samples-$(CUDA_VERSION_MAJOR)-$(CUDA_VERSION_MINOR)_*.deb ; \
	    : "# Remove driver:" ; \
	    rm -fv $(call get_origdir,$*)/*_$(CUDA_VERSION_DRIVER.$*)-*_*.deb ; \
	    chmod 0644 $(call get_origdir,$*)/*.deb

get-orig-source-unpack-amd64: get-orig-source-run-unpack-amd64
get-orig-source-unpack-ppc64el: get-orig-source-deb-unpack-ppc64el

get-orig-source-unpack-amd64-patch%: get-orig-source-run-unpack-amd64-patch% ;
get-orig-source-unpack-ppc64el-patch%: get-orig-source-deb-unpack-ppc64el-patch% ;

get-orig-source-pack-%: get-orig-source-unpack-%
	@set -e -x ; \
	    cd get-orig-source ; \
	    latestfile=$$(ls -tr $$(find $(call get_origdir,$*) -type f) | tail -n 1) ; \
	    tar cfv - \
	        --clamp-mtime --mtime="./$$latestfile" \
		--sort=name \
		--owner=root --group=src \
		$(call get_origdir,$*) \
		| gzip -n9 > $(call get_tarball,$*); \
	    touch $(call get_tarball,$*) -r $$latestfile
	mv get-orig-source/$(call get_tarball,$*) .

.PHONY: get-orig-source
get-orig-source: $(foreach a,$(CUDA_ARCH_LIST) $(CUDA_PATCH_LIST),get-orig-source-pack-$a)
	rm -rf get-orig-source

############################################################################

# The tarballs are kept in a separate git repository and use the git-lfs
# storage backend. To keep the local disk usage low, this repository is
# checked out sparsely, only tarballs for versions that have been built
# locally will be available locally.

UPSTREAM_NAME		 = nvidia-cuda-toolkit
UPSTREAM_VERSION	 = $(CUDA_VERSION_TOOLKIT)
TARBALL_LIST		 = $(foreach a,$(CUDA_ARCH_LIST) $(CUDA_PATCH_LIST),$(call get_tarball,$a))

GIT			?= git
TARBALL_REPOSITORY	 = https://salsa.debian.org/nvidia-team/tarballs-$(UPSTREAM_NAME).git
TARBALL_TREE		 = ../tarballs-$(UPSTREAM_NAME)

define sparse-checkout-current
	grep '^$(UPSTREAM_VERSION)/' $(TARBALL_TREE)/.git/info/sparse-checkout || \
		echo '$(UPSTREAM_VERSION)/*' >> $(TARBALL_TREE)/.git/info/sparse-checkout

endef

define test-file-exists
	test -f $1

endef

$(TARBALL_TREE):
	$(RM) -r $@.tmp
	$(GIT) clone --no-checkout $(TARBALL_REPOSITORY) $@.tmp
	cd $@.tmp && $(GIT) lfs install --local
	cd $@.tmp && $(GIT) config --local core.sparsecheckout true
	echo .gitattributes >> $@.tmp/.git/info/sparse-checkout
	cd $@.tmp && $(GIT) checkout
	mv $@.tmp $@

$(TARBALL_TREE)/$(UPSTREAM_VERSION): | $(TARBALL_TREE)
	$(sparse-checkout-current)
	cd $(TARBALL_TREE) && $(GIT) pull --ff-only && $(GIT) checkout

tarball-tree: $(TARBALL_TREE)

# only invoked manually
writable-tarball-tree: tarball-tree
	cd $(TARBALL_TREE) && $(GIT) remote set-url origin $(patsubst https://salsa.debian.org/%,git@salsa.debian.org:%,$(TARBALL_REPOSITORY))

# invoked from gbp buildpackage preexport hook
check-current-tarballs: $(TARBALL_TREE)/$(UPSTREAM_VERSION)
	$(foreach t,$(TARBALL_LIST),$(call test-file-exists,$(TARBALL_TREE)/$(UPSTREAM_VERSION)/$t))

# only invoked manually
commit-current-tarballs: get-orig-source
	$(sparse-checkout-current)
	mkdir -p $(TARBALL_TREE)/$(UPSTREAM_VERSION)
	mv $(TARBALL_LIST) $(TARBALL_TREE)/$(UPSTREAM_VERSION)/
	cd $(TARBALL_TREE) && $(GIT) add $(UPSTREAM_VERSION) && if $(GIT) status -s $(UPSTREAM_VERSION) | grep ^A ; then $(GIT) commit -m "add $(UPSTREAM_VERSION) tarballs" $(UPSTREAM_VERSION) ; fi
