pypi2deb.mk 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. PYPI2DEB_BUILD_STAMP_PREFIX = $(DIR_PYPI2DEB_BUILD)/.stamp
  2. PYPI2DEB_BUILD_STAMPS = $(patsubst %,$(PYPI2DEB_BUILD_STAMP_PREFIX)-%,$(PYPI2DEB_PACKAGES))
  3. # options: python or python3 (for package names: python-foo or python3-foo)
  4. PYPI2DEB_PYTHON_PREFIX ?= python3
  5. PYPI2DEB_SIMPLIFIED_PACKAGE_FILES = $(patsubst %,$(DIR_DEBIAN_SIMPLIFIED_PACKAGE_FILES)/$(PYPI2DEB_PYTHON_PREFIX)-%.deb,$(PYPI2DEB_PACKAGES))
  6. .PHONY: help
  7. help: help-pypi2deb
  8. .PHONY: help-pypi2deb
  9. help-pypi2deb:
  10. @echo "Debian-specific packaging targets:"
  11. @echo " dist-pypi2deb"
  12. @echo " upload-pypi2deb"
  13. @echo
  14. .PHONY: dist
  15. dist: dist-pypi2deb
  16. .PHONY: dist-pypi2deb
  17. dist-pypi2deb: $(PYPI2DEB_BUILD_STAMPS)
  18. # create a deb package via py2dsp (requires "pypi2deb")
  19. $(PYPI2DEB_BUILD_STAMP_PREFIX)-%:
  20. py2dsp --root "$(DIR_PYPI2DEB_BUILD)" --distribution unstable --build "$*"
  21. ls -tr "$(DIR_PYPI2DEB_BUILD)" | grep "^$*_.*~pypi2deb_$(DEBIAN_BUILD_ARCH)\.changes$$" | tail -n 1 >"$@.new"
  22. # fail if no "changes" file was created by py2dsp
  23. [ -s "$@.new" ]
  24. mv "$@.new" "$@"
  25. .PHONY: dist-deb-packages-directory
  26. dist-deb-packages-directory: $(PYPI2DEB_SIMPLIFIED_PACKAGE_FILES)
  27. # copy packages created via pypi2deb to the simplified debian export directory
  28. $(PYPI2DEB_SIMPLIFIED_PACKAGE_FILES): $(DIR_DEBIAN_SIMPLIFIED_PACKAGE_FILES)/$(PYPI2DEB_PYTHON_PREFIX)-%.deb: $(PYPI2DEB_BUILD_STAMP_PREFIX)-%
  29. @mkdir -p "$(DIR_DEBIAN_SIMPLIFIED_PACKAGE_FILES)"
  30. deb_name="$$(sed -n '/^Files:$$/,$$p' "$(DIR_PYPI2DEB_BUILD)/$$(cat "$<")" \
  31. | grep -E "$(PYPI2DEB_PYTHON_PREFIX)-$*_.*pypi2deb_($(DEBIAN_BUILD_ARCH)|all)\.deb$$" \
  32. | awk '{print $$5}')"; cp "$(DIR_PYPI2DEB_BUILD)/$$deb_name" "$@"
  33. .PHONY: upload
  34. upload: upload-pypi2deb
  35. .PHONY: upload-pypi2deb
  36. upload-pypi2deb: dist-pypi2deb check-dput-config
  37. @# make sure that 'cat' is not called without arguments (it would read from stdin)
  38. [ -z "$(PYPI2DEB_BUILD_STAMPS)" ] || for changes_file in $$(cat $(PYPI2DEB_BUILD_STAMPS)); do \
  39. dput "$(DEBIAN_UPLOAD_TARGET)" "$(DIR_PYPI2DEB_BUILD)/$$changes_file"; \
  40. done
  41. .PHONY: clean
  42. clean: clean-pypi2deb
  43. .PHONY: clean-pypi2deb
  44. clean-pypi2deb:
  45. $(RM) -r "$(DIR_PYPI2DEB_BUILD)"