Author: ivucica
Date: Tue May 6 03:29:07 2014
New Revision: 37841
URL: http://svn.gna.org/viewcvs/gnustep?rev=37841&view=rev
Log:
Tweaks to making a source tarball from SVN (both for gnustep-make and other
dependant packages), allowing revision-based and time-based version stamps.
Tweaks to producing Debian packages switching to a multistep procedure that
requries: making a source tarball, making debfiles, then finally making the
deb source and binary package.
Modified:
tools/make/trunk/ChangeLog
tools/make/trunk/GNUmakefile.in
tools/make/trunk/Master/deb.make
tools/make/trunk/Master/source-distribution.make
tools/make/trunk/bake_debian_files.sh
Modified: tools/make/trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/ChangeLog?rev=37841&r1=37840&r2=37841&view=diff
==============================================================================
--- tools/make/trunk/ChangeLog (original)
+++ tools/make/trunk/ChangeLog Tue May 6 03:29:07 2014
@@ -1,3 +1,40 @@
+2014-05-06 Ivan Vucica <[email protected]>
+
+ * GNUmakefile.in: Tarball may now have the SVN revision and
+ date appended to its version. This is done for svn-snapshot
+ and svn-export targets to ensure we have a 'unique' .orig.tar.gz
+ for uploading to the Launchpad PPA. The full name of the tarball
+ will be saved in a text file usable by scripts.
+ Tarball also has to be explicitly and separately produced and
+ optionally specifying DEB_TARBALL_VERSION when building a Debian
+ package.
+ Debian control files now can (and need to) be separately built
+ using the target debfiles.
+ * Master/source-distribution.make: Similarly to how gnustep-make
+ can export working copy as a tarball, the target svn-export has
+ been added to other GNUmakefiles.
+ Introduced TARBALL_VERSION as an overridable version string in
+ the tarball name.
+ Environment variables TARBALL_VERSION_INCLUDE_SVN_REVISION and
+ TARBALL_VERSION_INCLUDE_DATE_TIME now allow expanding the
+ tarball version with the svn revision and date+time.
+ Instead of EXPORT_SVN_NAME, now specifying entire EXPORT_SVN_URL
+ so that svn-export can specify '.'.
+ * Master/deb.make: Switched to use of TARBALL_VERSION as the
+ definitive version string in tarball name.
+ Added debclean target.
+ User now has to explicitly make a choice how the dist tarball
+ will be produced.
+ Depending on the method, tarball may be placed in the current
+ or parent directory, so we detect that (and prefer the current
+ directory).
+ * bake_debian_files: Now defaulting to target_arch=any so that
+ the package gets built on all platforms when uploaded on Launchpad,
+ instead of detecting an arch from gnustep-make and burning that
+ arch into the source package.
+ Added support for TARBALL_VERSION.
+ Fixed a 'command not found' error.
+
2014-05-05 Ivan Vucica <[email protected]>
* GNUmakefile.in: Separately building source and binary package,
Modified: tools/make/trunk/GNUmakefile.in
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/GNUmakefile.in?rev=37841&r1=37840&r2=37841&view=diff
==============================================================================
--- tools/make/trunk/GNUmakefile.in (original)
+++ tools/make/trunk/GNUmakefile.in Tue May 6 03:29:07 2014
@@ -167,6 +167,18 @@
DEBUILD_ARGS = -nc
else
DEBUILD_ARGS = -us -uc -nc
+endif
+
+# Version code that will be used in 'svn-export' target. Expand immediately;
+# it should be constant in the script.
+DATE_TIME_VERSION := $(shell date +%Y.%m.%d.%H.%M)
+
+# Revision; potentially expensive so expand when used.
+SVN_REVISION = $(shell svn info . | sed -ne 's/^Revision: //p')
+
+# Used to override version of .tar.gz that will be copied and used as
.orig.tar.gz.
+ifeq ($(DEB_TARBALL_VERSION), )
+DEB_TARBALL_VERSION = $(GNUSTEP_MAKE_VERSION)
endif
all: generated-files
@@ -374,18 +386,18 @@
svn-snapshot:
svn export $(SVNPREFIX)/trunk \
- gnustep-make-$(GNUSTEP_MAKE_VERSION)
- tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz
gnustep-make-$(GNUSTEP_MAKE_VERSION)
- rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)
+ gnustep-make-$(GNUSTEP_MAKE_VERSION).$(SVN_REVISION)
+ tar --gzip -cf
gnustep-make-$(GNUSTEP_MAKE_VERSION).$(SVN_REVISION).tar.gz
gnustep-make-$(GNUSTEP_MAKE_VERSION).$(SVN_REVISION)
+ echo $(GNUSTEP_MAKE_VERSION).$(SVN_REVISION) >
svn-snapshot-tarball-version
+ rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION).$(SVN_REVISION)
svn-export:
@echo Note: any local changes are included.
svn export . \
- gnustep-make-$(GNUSTEP_MAKE_VERSION)
- tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz
gnustep-make-$(GNUSTEP_MAKE_VERSION)
- rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)
-
-dist: svn-export
+
gnustep-make-$(GNUSTEP_MAKE_VERSION).$(SVN_REVISION).$(DATE_TIME_VERSION)
+ tar --gzip -cf
gnustep-make-$(GNUSTEP_MAKE_VERSION).$(SVN_REVISION).$(DATE_TIME_VERSION).tar.gz
gnustep-make-$(GNUSTEP_MAKE_VERSION).$(SVN_REVISION).$(DATE_TIME_VERSION)
+ echo $(GNUSTEP_MAKE_VERSION).$(SVN_REVISION).$(DATE_TIME_VERSION) >
svn-export-tarball-version
+ rm -rf
gnustep-make-$(GNUSTEP_MAKE_VERSION).$(SVN_REVISION).$(DATE_TIME_VERSION)
cvs-tag:
cvs -z3 rtag make-$(VERTAG) make
@@ -429,18 +441,33 @@
fi; \
$${rpmbuild} -ba gnustep-make.spec
-deb: debian_dist/gnustep-make_$(GNUSTEP_MAKE_VERSION)_all.deb
-
-debian_dist/gnustep-make_$(GNUSTEP_MAKE_VERSION)_all.deb: dist
+debclean:
-rm -rf debian_dist
+
+deb: debian_dist/gnustep-make_$(DEB_TARBALL_VERSION)_any.deb
+
+debian_dist/gnustep-make_$(DEB_TARBALL_VERSION)_any.deb: debfiles
+ cd debian_dist/gnustep-make-$(DEB_TARBALL_VERSION)/ && EDITOR=/bin/true
dpkg-source --commit -q . gnustep-make-automatic
+ cd debian_dist/gnustep-make-$(DEB_TARBALL_VERSION)/ && debuild
$(DEBUILD_ARGS) -S
+ cd debian_dist/gnustep-make-$(DEB_TARBALL_VERSION)/ && debuild
$(DEBUILD_ARGS) -b
+
+debfiles: debian_dist/gnustep-make_$(DEB_TARBALL_VERSION).orig.tar.gz
+ cd debian_dist && tar xfz
gnustep-make_$(DEB_TARBALL_VERSION).orig.tar.gz
+ PACKAGE_NAME="gnustep-make" VERSION=$(DEB_TARBALL_VERSION)
DEB_MAINTAINER="GNUstep Developers <[email protected]>" DEB_ARCHITECTURE=any
/bin/bash bake_debian_files.sh debian_dist/gnustep-make-$(DEB_TARBALL_VERSION)/
+
+# Manual export is required to permit user to override .orig.tar.gz during the
build process.
+# We also allow user to make a choice of where to grab .orig.tar.gz from.
+debian_dist/gnustep-make_$(DEB_TARBALL_VERSION).orig.tar.gz:
+ $(EC)(if [ ! -e gnustep-make-$(DEB_TARBALL_VERSION).tar.gz ] ; then \
+ echo "Please manually create
gnustep-make-$(DEB_TARBALL_VERSION).tar.gz." ; \
+ echo "Some available make targets:" ; \
+ echo " * svn-dist" ; \
+ echo " * svn-snapshot" ; \
+ echo " * svn-export" ; \
+ fi)
+
mkdir -p debian_dist
- cp gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz
debian_dist/gnustep-make_$(GNUSTEP_MAKE_VERSION).orig.tar.gz
- cd debian_dist && tar xfz
gnustep-make_$(GNUSTEP_MAKE_VERSION).orig.tar.gz
- PACKAGE_NAME="gnustep-make" VERSION=$(GNUSTEP_MAKE_VERSION)
DEB_MAINTAINER="GNUstep Developers <[email protected]>" DEB_ARCHITECTURE=all
/bin/bash bake_debian_files.sh debian_dist/gnustep-make-$(GNUSTEP_MAKE_VERSION)/
- cd debian_dist/gnustep-make-$(GNUSTEP_MAKE_VERSION)/ && dpkg-source
--commit -q
- cd debian_dist/gnustep-make-$(GNUSTEP_MAKE_VERSION)/ && debuild
$(DEBUILD_ARGS) -S
- cd debian_dist/gnustep-make-$(GNUSTEP_MAKE_VERSION)/ && debuild
$(DEBUILD_ARGS) -b
- # rm -rf debian_dist/gnustep-make-$(GNUSTEP_MAKE_VERSION)
+ cp gnustep-make-$(DEB_TARBALL_VERSION).tar.gz
debian_dist/gnustep-make_$(DEB_TARBALL_VERSION).orig.tar.gz
generated-files: GNUmakefile GNUstep.sh GNUstep.csh fixpath.sh
config-noarch.make config.make \
openapp opentool gnustep-make.spec executable.template
gnustep-config \
Modified: tools/make/trunk/Master/deb.make
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/Master/deb.make?rev=37841&r1=37840&r2=37841&view=diff
==============================================================================
--- tools/make/trunk/Master/deb.make (original)
+++ tools/make/trunk/Master/deb.make Tue May 6 03:29:07 2014
@@ -54,7 +54,10 @@
_DEB_ARCH=$(GNUSTEP_TARGET_CPU) # $(shell (/bin/bash -c "$(CC) -dumpmachine |
sed -e 's,\\([^-]*\\).*,\\1,g'"))
_DEB_LOWERCASE_PACKAGE_NAME=$(shell (echo $(PACKAGE_NAME) | sed -e
's/\(.*\)/\L\1/'))
-_DEB_VERSION=$(PACKAGE_VERSION)
+_DEB_VERSION=$(TARBALL_VERSION)
+ifeq ($(_DEB_VERSION), )
+ _DEB_VERSION=$(PACKAGE_VERSION)
+endif
ifeq ($(_DEB_VERSION), )
_DEB_VERSION=$(VERSION)
endif
@@ -77,6 +80,8 @@
DEBUILD_ARGS = -us -uc -nc
endif
+_DEB_TARBALL = $(shell (test -e $(VERSION_NAME).tar.gz && echo
$(VERSION_NAME).tar.gz) || \
+ (test -e ../$(VERSION_NAME).tar.gz && echo
../$(VERSION_NAME).tar.gz))
###
@@ -88,11 +93,16 @@
-rm _debenv
_DEB_SHOULD_EXPORT=1 make _debenv
-# Order is important; we want debfiles to be done first so ./configure
-# is not unnecessarily run during submake.
-../$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz: | _debenv.phony dist
+debclean::
+ -rm _debenv
+ -rm -rf $(_ABS_OBJ_DIR)/debian_dist
-deb-prep:: ../$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz
+debfiles:: _debenv.phony
+ $(ECHO_NOTHING)(if [ -z "$(_DEB_TARBALL)" ] || [ ! -e "$(_DEB_TARBALL)"
] ; then \
+ echo "No tarball found. Please produce it manually using a target
such as dist, svn-dist, " ; \
+ echo "svn-bugfix, svn-snapshot or svn-export." ; \
+ exit 1 ; \
+ fi)$(END_ECHO)
$(ECHO_NOTHING)echo "Baking deb control files
("$(GNUSTEP_TARGET_CPU)")..."$(END_ECHO)
/bin/bash -c ". _debenv && mkdir -p $(_ABS_OBJ_DIR)/debian_files &&
$(GNUSTEP_MAKEFILES)/bake_debian_files.sh $(_ABS_OBJ_DIR)/debian_files"
-rm _debenv
@@ -100,18 +110,17 @@
$(ECHO_NOTHING)echo "Preparing directory layout for building deb
package..."$(END_ECHO)
-rm -rf $(_ABS_OBJ_DIR)/debian_dist
mkdir -p $(_ABS_OBJ_DIR)/debian_dist
- cp ../$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz
$(_ABS_OBJ_DIR)/debian_dist/$(_DEB_ORIGTARNAME).orig.tar.gz
+ cp $(_DEB_TARBALL)
$(_ABS_OBJ_DIR)/debian_dist/$(_DEB_ORIGTARNAME).orig.tar.gz
cd $(_ABS_OBJ_DIR)/debian_dist && tar xfz
$(_DEB_ORIGTARNAME).orig.tar.gz
- mkdir -p
$(_ABS_OBJ_DIR)/debian_dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)/debian
- mv $(_ABS_OBJ_DIR)/debian_files/debian/*
$(_ABS_OBJ_DIR)/debian_dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)/debian
+ mkdir -p $(_ABS_OBJ_DIR)/debian_dist/$(VERSION_NAME)/debian
+ mv $(_ABS_OBJ_DIR)/debian_files/debian/*
$(_ABS_OBJ_DIR)/debian_dist/$(VERSION_NAME)/debian
-rm -rf $(_ABS_OBJ_DIR)/debian_files
-
-deb:: deb-prep
+deb:: debfiles
$(ECHO_NOTHING)echo "Building Debian package..."$(END_ECHO)
- cd $(_ABS_OBJ_DIR)/debian_dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)/ &&
debuild $(DEBUILD_ARGS) -S
- cd $(_ABS_OBJ_DIR)/debian_dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)/ &&
debuild $(DEBUILD_ARGS) -b
+ cd $(_ABS_OBJ_DIR)/debian_dist/$(VERSION_NAME)/ && debuild
$(DEBUILD_ARGS) -S
+ cd $(_ABS_OBJ_DIR)/debian_dist/$(VERSION_NAME)/ && debuild
$(DEBUILD_ARGS) -b
#
else
Modified: tools/make/trunk/Master/source-distribution.make
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/Master/source-distribution.make?rev=37841&r1=37840&r2=37841&view=diff
==============================================================================
--- tools/make/trunk/Master/source-distribution.make (original)
+++ tools/make/trunk/Master/source-distribution.make Tue May 6 03:29:07 2014
@@ -137,7 +137,26 @@
endif # COMPRESSION
-VERSION_NAME = $(PACKAGE_NAME)-$(PACKAGE_VERSION)
+# Due to peculiarities of some packaging systems or package distribution
+# systems, we may want to permit customization of tarball version string.
+
+ifeq ($(TARBALL_VERSION), )
+TARBALL_VERSION := $(PACKAGE_VERSION)
+endif
+
+ifeq ($(TARBALL_VERSION_INCLUDE_SVN_REVISION), yes)
+# Revision; potentially expensive so expand when used.
+SVN_REVISION = $(shell svn info . | sed -ne 's/^Revision: //p')
+TARBALL_VERSION := $(TARBALL_VERSION).$(SVN_REVISION)
+endif
+
+ifeq ($(TARBALL_VERSION_INCLUDE_DATE_TIME), yes)
+# Expand immediately; it should be constant in the script.
+DATE_TIME_VERSION := $(shell date +%Y.%m.%d.%H.%M)
+TARBALL_VERSION := $(TARBALL_VERSION).$(DATE_TIME_VERSION)
+endif
+
+VERSION_NAME = $(PACKAGE_NAME)-$(TARBALL_VERSION)
ARCHIVE_FILE = $(VERSION_NAME).tar$(COMPRESSION_EXT)
@@ -207,21 +226,27 @@
# Build a .tar.gz from the SVN sources using revision/tag
# $(SVN_TAG_NAME)-$(VERTAG) as for a new release of the package.
#
-svn-dist: EXPORT_SVN_NAME = tags/$(SVN_TAG_NAME)-$(VERTAG)
+svn-dist: EXPORT_SVN_URL =
$(SVN_BASE_URL)/$(SVN_MODULE_NAME)/tags/$(SVN_TAG_NAME)-$(VERTAG)
svn-dist: internal-svn-export
#
# Build a .tar.gz from the SVN source from the stable branch
# as a bugfix release.
#
-svn-bugfix: EXPORT_SVN_NAME = branches/stable
+svn-bugfix: EXPORT_SVN_URL = $(SVN_BASE_URL)/$(SVN_MODULE_NAME)/branches/stable
svn-bugfix: internal-svn-export
#
# Build a .tar.gz from the SVN source as they are now
#
-svn-snapshot: EXPORT_SVN_NAME = trunk
+svn-snapshot: EXPORT_SVN_URL = $(SVN_BASE_URL)/$(SVN_MODULE_NAME)/trunk
svn-snapshot: internal-svn-export
+
+#
+# Build a .tar.gz from the local SVN tree
+#
+svn-export: EXPORT_SVN_URL = .
+svn-export: internal-svn-export
internal-svn-export:
$(ECHO_NOTHING)echo "Exporting from module $(SVN_MODULE_NAME) on
SVN..."; \
@@ -229,7 +254,7 @@
echo "*Error* cannot export: $(VERSION_NAME) already exists"; \
exit 1; \
fi; \
- $(SVN) export $(SVN_BASE_URL)/$(SVN_MODULE_NAME)/$(EXPORT_SVN_NAME)
$(VERSION_NAME); \
+ $(SVN) export $(EXPORT_SVN_URL) $(VERSION_NAME); \
echo "Generating $(ARCHIVE_FILE)"; \
if [ -f $(ARCHIVE_FILE) ]; then \
echo "$(ARCHIVE_FILE) already exists:"; \
Modified: tools/make/trunk/bake_debian_files.sh
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/bake_debian_files.sh?rev=37841&r1=37840&r2=37841&view=diff
==============================================================================
--- tools/make/trunk/bake_debian_files.sh (original)
+++ tools/make/trunk/bake_debian_files.sh Tue May 6 03:29:07 2014
@@ -39,11 +39,18 @@
if [[ "${distrib_id}" == "Ubuntu" ]] ; then
default_distribution=$(grep DISTRIB_CODENAME /etc/lsb-release | sed
's/DISTRIB_CODENAME=//')
fi
-target_arch=${GNUSTEP_TARGET_CPU:-any}
-if [[ "${target_arch}" == "i686" ]] ; then
- target_arch=i386
-elif [[ "${target_arch}" == "x86_64" ]] ; then
- target_arch=amd64
+
+if true ; then
+ # Forcing 'any' as we'd like Launchpad to build packages for all
architectures.
+ # DEB_ARCHITECTURE can still be overridden.
+ target_arch=any
+else
+ target_arch=${GNUSTEP_TARGET_CPU:-any}
+ if [[ "${target_arch}" == "i686" ]] ; then
+ target_arch=i386
+ elif [[ "${target_arch}" == "x86_64" ]] ; then
+ target_arch=amd64
+ fi
fi
PACKAGE_VERSION=${PACKAGE_VERSION:-${VERSION}}
@@ -53,7 +60,7 @@
DEB_SECTION=${DEB_SECTION:-gnustep}
DEB_PRIORITY=${DEB_PRIORTY:-optional}
DEB_VCS_SVN=${DEB_VCS_SVN:-${svn_path}}
-DEB_VERSION=${DEB_VERSION:-${PACKAGE_VERSION}}
+DEB_VERSION=${DEB_VERSION:-${TARBALL_VERSION:-${PACKAGE_VERSION}}}
if [ -z "${DEB_BUILD_DEPENDS}" ] ; then
DEB_BUILD_DEPENDS="debhelper (>= 9), cdbs"
else
@@ -319,12 +326,13 @@
ifneq (\$(GNUSTEP_MAKEFILES), )
DEB_MAKE_ENVVARS += \$(shell sh -c ". \$(GNUSTEP_MAKEFILES)/GNUstep.sh &&
env |grep GNUSTEP")
else
- $(error Failed to get GNUSTEP_MAKEFILES variable. Is gnustep-config
properly installed?)
+ \$(error Failed to get GNUSTEP_MAKEFILES variable. Is gnustep-config
properly installed?)
exit 1
endif
endif
_EOF
+
chmod 755 "${destination}"/rules
##########
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs