1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
# vim:noexpandtab:autoindent:tabstop=8:shiftwidth=8:filetype=make:nocindent:tw=0:
# This is a template of all of the 'Standard' stuff that we use in all our
# projects.
CLEANFILES=$(PACKAGE_NAME)-*.tar.gz $(PACKAGE_NAME)-*.tar.bz2 $(PACKAGE_NAME)-*.rpm _buildtemp version
DISTCLEANFILES=*~
EXTRA_DIST =
EXTRA_PROGRAMS=
CLEANFILES += $(EXTRA_PROGRAMS)
CLEANFILES += *.pyc */*.pyc */*/*.pyc */*/*/*.pyc
DISTCLEANFILES += pkg/$(PACKAGE).spec
clean-local:
-test -z "$(CLEANFILES)" || rm -rf $(CLEANFILES)
distclean-local:
-test -z "$(DISTCLEANFILES)" || rm -rf $(DISTCLEANFILES)
.PHONY: git-tag
git-tag:
git tag -u libsmbios -m "tag for official release: $(PACKAGE_STRING)" v$(PACKAGE_VERSION)
.PHONY: get-version
get-version:
@echo 'PACKAGE_STRING="$(PACKAGE_STRING)"'
@echo 'PACKAGE_VERSION="$(PACKAGE_VERSION)"'
@echo 'PACKAGE="$(PACKAGE)"'
ChangeLog:
(GIT_DIR=$(top_srcdir)/.git git log > .changelog.tmp && mv .changelog.tmp ChangeLog; rm -f .changelog.tmp) || (touch ChangeLog; echo 'git directory not found: installing possibly empty changelog.' >&2)
AUTHORS:
(GIT_DIR=$(top_srcdir)/.git git log | grep ^Author | sort |uniq > .authors.tmp && mv .authors.tmp AUTHORS; rm -f .authors.tmp) || (touch AUTHORS; echo 'git directory not found: installing possibly empty AUTHORS.' >&2)
REPLACE_VARS=GETTEXT_PACKAGE PACKAGE_VERSION PACKAGE localedir libdir libexecdir datadir sysconfdir pythondir pkgpythondir pkgdatadir pkgconfdir pkggladedir pkglibexecdir
export $(REPLACE_VARS)
# compat for RHEL3, dont ask
export GETTEXT_PACKAGE
DATA_HOOK_REPLACE=
install-data-hook:
for i in $(DATA_HOOK_REPLACE); do \
file=$(DESTDIR)/$$i ;\
for var in $(REPLACE_VARS) ;\
do \
perl -p -i -e "s|^$$var\s*=.*|$$var=\"$${!var}\"|" $$file;\
done ;\
done
EXEC_HOOK_REPLACE=
install-exec-hook:
for i in $(EXEC_HOOK_REPLACE); do \
file=$(DESTDIR)/$$i ;\
for var in $(REPLACE_VARS) ;\
do \
perl -p -i -e "s|^$$var\s*=.*|$$var=\"$${!var}\"|" $$file;\
done ;\
done
# set default project. can be overridden on cmdline with 'make -e ...'
PROJECT=home:$(USER)
.PHONY: upload_buildservice
upload_buildservice: dist
[ -n "$(PROJECT)" ] || (echo "Must specify PROJECT"; exit 1)
osc co $(PROJECT) $(PACKAGE)
rm -f $(PROJECT)/$(PACKAGE)/*
cp ${PACKAGE}*.tar.bz2 $(PROJECT)/$(PACKAGE)
cp */${PACKAGE}.spec $(PROJECT)/$(PACKAGE)
cd $(PROJECT)/$(PACKAGE); osc addremove
cd $(PROJECT)/$(PACKAGE); yes | osc updatepacmetafromspec
cd $(PROJECT)/$(PACKAGE); osc ci -m "scripted source update"
TOPDIR := $(shell cd $(top_builddir);pwd)
BUILDDIR = $(TOPDIR)/_rpmbuild
RPMDIR = $(TOPDIR)
SOURCEDIR = $(TOPDIR)
SPECFILE= $(TOPDIR)/pkg/$(PACKAGE_NAME).spec
SPECDIR = $(TOPDIR)/pkg
SRCRPMDIR = $(TOPDIR)
AM_RPM_DEFINES = --define "_topdir $(TOPDIR)" \
--define "_builddir $(BUILDDIR)" \
--define "_rpmdir $(RPMDIR)" \
--define "_sourcedir $(SOURCEDIR)" \
--define "_specdir $(SPECDIR)" \
--define "_srcrpmdir $(SRCRPMDIR)" \
$(RPM_DEFINES)
.PHONY: rpm srpm
rpm: pkg/$(PACKAGE_NAME).spec dist
mkdir -p $(BUILDDIR)
rpmbuild $(AM_RPM_DEFINES) -ba --nodeps $(SPECFILE)
rm -rf $(BUILDDIR)
srpm: pkg/$(PACKAGE_NAME).spec dist
mkdir -p $(BUILDDIR)
rpmbuild $(AM_RPM_DEFINES) -bs --nodeps $(SPECFILE)
rm -rf $(BUILDDIR)
# This updates the debian version information, similar to how specfile for RPM
# is updated. It has to be manually invoked becuase it wont work for rpm builds.
CHANGELOG=pkg/debian/changelog
CHANGELOG_TEXT="Placeholder changelog entry. Please update this for release."
changelog: $(CHANGELOG)
.PHONY: $(CHANGELOG)
$(CHANGELOG): version.mk
cd pkg/ && fakeroot debchange -v $(PACKAGE_VERSION)-$(DEB_RELEASE) $(CHANGELOG_TEXT)
TARBALL=$(PACKAGE_STRING).tar.gz
debmagic:
[ -n "$$DEB_TMP_BUILDDIR" ] || (echo "Must set DEB_TMP_BUILDDIR=/tmp/... for deb and sdeb targets"; exit 1)
[ -n "$$DIST" ] || (echo "Must set DIST={gutsy,hardy,sid,...} for deb and sdeb targets"; exit 1)
[ -n "$$DIST" ] || echo "Remember to set DISTTAG='~gutsy1' for deb and sdeb targets for backports"
mkdir -p dist/$(DIST)
cp $(TARBALL) $(DEB_TMP_BUILDDIR)/$(PACKAGE_NAME)_$(PACKAGE_VERSION).orig.tar.gz
tar -C $(DEB_TMP_BUILDDIR) -xzf $(TARBALL)
cp -ar pkg/debian $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING)/debian
chmod +x $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING)/debian/rules
sed -e "s/#DISTTAG#/$(DISTTAG)/g" -e "s/#DIST#/$(DIST)/g" $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING)/debian/changelog.in > $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING)/debian/changelog
rm $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING)/debian/changelog.in
cd $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING) ; \
./configure ; \
pdebuild --use-pdebuild-internal --buildresult $(TOPDIR)/dist/$(DIST) ; \
dpkg-buildpackage -D -S -sa -rfakeroot ; \
mv ../$(PACKAGE_NAME)_* $(TOPDIR)/dist/$(DIST) ; \
cd -
debs:
tmp_dir=`mktemp -d /tmp/firmware-tools.XXXXXXXX` ; \
make debmagic DEB_TMP_BUILDDIR=$${tmp_dir} DIST=$(DIST) DISTTAG=$(DISTTAG) ; \
rm -rf $${tmp_dir}
|