about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2004-09-22 21:26:44 +0000
committerRoland McGrath <roland@gnu.org>2004-09-22 21:26:44 +0000
commitee414d57cfe8222f920662d5288c295a503e9970 (patch)
treed40fa0b3ec6377e5bf67df3aefe4bcef6fdda128
parentb5707b44d25d7af61b0338c2a2206c036eaf7337 (diff)
downloadglibc-ee414d57cfe8222f920662d5288c295a503e9970.tar.gz
glibc-ee414d57cfe8222f920662d5288c295a503e9970.tar.xz
glibc-ee414d57cfe8222f920662d5288c295a503e9970.zip
Untested first draft of makefile magic to maintain the branch.
-rw-r--r--fedora/Makefile107
-rw-r--r--fedora/branch.mk4
2 files changed, 111 insertions, 0 deletions
diff --git a/fedora/Makefile b/fedora/Makefile
new file mode 100644
index 0000000000..ed748245bc
--- /dev/null
+++ b/fedora/Makefile
@@ -0,0 +1,107 @@
+# Makefile for maintaining glibc fedora-branch and creating Fedora source RPMs.
+
+tag-prefix := fedora-
+
+.PHONY: update commit-merge commit patch tag archive finish_archive srpm rpm
+FORCE:
+
+snapshot-date-fmt := +'%Y-%m-%d %H:%M %Z'
+snapshot-name-fmt := +'%Y%m%dT%H%M'
+
+include branch.mk
+
+
+on-branch = $(filter-out HEAD,$(glibc-base))
+
+snapshot-date := $($(glibc-branch)-sync-date)
+snapshot-name := $(shell date -u -d '$(snapshot-date)' $(snapshot-name-fmt))
+
+ifeq ($(glibc-base),HEAD)
+tar-name := glibc
+select-snapshot = -D '$(snapshot-date)'
+snapshot-id = $(glibc-base):$(snapshot-date)
+else
+tar-name := glibc-$(subst _,.,$(patsubst glibc-%-branch,%,$(glibc-base)))
+select-snapshot = -r '$($(glibc-branch)-sync-tag)'
+snapshot-id = $($(glibc-branch)-sync-tag)
+endif
+
+
+update:
+	now=`date -u -d $(snapshot-date-fmt)`; \
+	name=date -u -d "$$now" $(snapshot-name-fmt)`; \
+	$(if $(on-branch),\
+	  old="$(tag-prefix)$(tar-name)-$$name; \
+	  new="$(tag-prefix)$(tar-name)$(snapshot-name)"; \
+	  cvs -Q rtag -r $(glibc-base) $$new libc; \
+	, old="$(glibc-base):$(snapshot-date)"; \
+	  new="$(glibc-base):$$now"; \
+	) \
+	(echo '# This file is updated automatically by Makefile.'; \
+	 echo 'glibc-branch := $(glibc-branch)'; \
+	 echo 'glibc-base := $(glibc-base)'; \
+	 echo "$(glibc-branch)-sync-date := $$now"; \
+	 $(if $(on-branch),echo "$(glibc-branch)-sync-tag := $$new";) \
+	) > branch.mk; \
+	cd ..; cvs -q update -d -P -j"$$old" -j"$$new" \
+		   2>&1 | tee redhat/update.log
+
+commit-merge:
+	cd ..; cvs -Q commit -m"Updated to $(snapshot-id)"
+
+glibc.spec: glibc.spec.in ../version.h branch.mk
+	(echo '%define glibcdate $(snapshot-name);' \
+	 sed -n '/VERSION/s/^.*"\([^"]*\)"$/%define glibcversion \1/p' \
+	     ../version.h; \
+	 cat $<) > $@.new
+	mv -f $@.new $@
+
+spec-nvr := $(shell rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}\n' \
+			--specfile glibc.spec)
+spec-tag = $(subst .,_,$(spec-nvr))
+
+tag: glibc.spec
+	cd ..; cvs -Q tag -c $(tag-prefix)$(spec-tag)
+
+$(tar-name)-$(snapshot-name)-$(glibc-branch).patch: makepatch.awk glibc.spec \
+						    FORCE
+	(cd ..; cvs -q diff -upN \
+		    $(select-snapshot) -r $(tag-prefix)$(spec-tag)) | \
+	awk -v OLDVER=$(tar-name)-$(snapshot-name) \
+	    -v NEWVER=$(tar-name)-$(snapshot-name)-$(glibc-branch) \
+	    -f $< > patch.tmp
+	mv -f patch.tmp
+
+# makepatch.awk omits these files from the patch; we put them in a tar file.
+outside-patch = redhat c_stubs rtkaio glibc-compat \
+		localedata/charmaps/GB18030 iconvdata/gb18030.c
+
+$(tar-name)-$(glibc-branch)-$(snapshot-name).tar.bz2: FORCE
+	@rm -rf libc
+	cvs -Q export -r$(tag-prefix)$(spec-tag) \
+		      $(addprefix libc/,$(outside-patch))
+	tar cf - -C libc $(outside-patch) | bzip2 -9 > $@.new
+	rm -rf libc
+	mv -f $@.new $@
+
+$(tar-name)-$(snapshot-name).tar.bz2: FORCE
+	@rm -rf $(tar-name)-$(snapshot-name)
+	cvs -Q export -d $(tar-name)-$(snapshot-name) $(select-snapshot) libc
+	tar cf - $(tar-name)-$(snapshot-name) | bzip2 -9 > $@.new
+	rm -rf $(tar-name)-$(snapshot-name)
+	mv -f $@.new $@
+
+archives = $(tar-name)-$(snapshot-name).tar.bz2 \
+	   $(tar-name)-$(glibc-branch)-$(snapshot-name).tar.bz2 \
+	   $(tar-name)-$(snapshot-name)-$(glibc-branch).patch
+finish_archive: $(archives)
+
+archive: glibc.spec
+	$(MAKE) tag finish_archive
+
+rpm srpm: $(spec-nvr).src.rpm
+$(spec-nvr).src.rpm: glibc.spec $(archives)
+	rpmbuild --define "_sourcedir `pwd`" \
+		 --define "_specdir `pwd`" \
+		 --define "_srcrpmdir `pwd`" \
+		 --nodeps -bs $<
diff --git a/fedora/branch.mk b/fedora/branch.mk
new file mode 100644
index 0000000000..4cdca39426
--- /dev/null
+++ b/fedora/branch.mk
@@ -0,0 +1,4 @@
+glibc-branch := fedora
+glibc-base   := HEAD
+
+fedora-sync-date := 2004-09-22 05:52 UTC