tags 507231 patch
thanks

Hi,

Upstream has a few bugs in their make dependencies (see fix_upstream_deps.diff)

Also, the debian makefiles have the same problem spread all over; the following
check:

        test -d somedir || mkdir somedir

is not reentrant.  Directory names are shared a lot between rules, so they will
collide sometimes.  This is fixed by adding -p (see debian_reentrancy.diff).

Manoj, since this looks like a makefile framework that could be being used in
other packages, it'd be nice if you'd also apply the same fix to those.

Thanks!

-- 
Robert Millan

  The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
  how) you may access your data; but nobody's threatening your freedom: we
  still allow you to remove your data and not access it at all."
diff -ur -x Makefile.in flex-2.5.35/tests/test-bison-nr/Makefile.am flex-2.5.35.new/tests/test-bison-nr/Makefile.am
--- flex-2.5.35/tests/test-bison-nr/Makefile.am	2006-11-09 21:14:46.000000000 +0100
+++ flex-2.5.35.new/tests/test-bison-nr/Makefile.am	2008-11-29 21:23:48.000000000 +0100
@@ -34,7 +34,7 @@
 
 testname = test-bison-nr
 
-scanner.c: $(srcdir)/scanner.l
+scanner.c scanner.h: $(srcdir)/scanner.l
 	$(FLEX) $<
 
 parser.c: $(srcdir)/parser.y
@@ -50,4 +50,5 @@
 	$(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $<
 
 parser.h: parser.c
-scanner.c main.o: parser.h
+scanner.o: parser.h
+main.o: parser.h scanner.h
diff -ur -x Makefile.in flex-2.5.35/tests/test-bison-yylloc/Makefile.am flex-2.5.35.new/tests/test-bison-yylloc/Makefile.am
--- flex-2.5.35/tests/test-bison-yylloc/Makefile.am	2006-11-09 21:14:46.000000000 +0100
+++ flex-2.5.35.new/tests/test-bison-yylloc/Makefile.am	2008-11-29 21:23:57.000000000 +0100
@@ -34,7 +34,7 @@
 
 testname = test-bison-yylloc
 
-scanner.c: $(srcdir)/scanner.l
+scanner.c scanner.h: $(srcdir)/scanner.l
 	$(FLEX) $<
 
 parser.c: $(srcdir)/parser.y
@@ -50,4 +50,5 @@
 	$(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $<
 
 parser.h: parser.c
-scanner.c main.o: parser.h
+scanner.o: parser.h
+main.o: parser.h scanner.h
diff -ur -x Makefile.in flex-2.5.35/tests/test-bison-yylval/Makefile.am flex-2.5.35.new/tests/test-bison-yylval/Makefile.am
--- flex-2.5.35/tests/test-bison-yylval/Makefile.am	2006-11-09 21:14:46.000000000 +0100
+++ flex-2.5.35.new/tests/test-bison-yylval/Makefile.am	2008-11-29 21:06:39.000000000 +0100
@@ -34,7 +34,7 @@
 
 testname = test-bison-yylval
 
-scanner.c: $(srcdir)/scanner.l
+scanner.c scanner.h: $(srcdir)/scanner.l
 	$(FLEX) $<
 
 parser.c: $(srcdir)/parser.y
@@ -50,4 +50,4 @@
 	$(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $<
 
 parser.h: parser.c
-main.o: parser.h
+main.o: parser.h scanner.h
diff -ur -x Makefile.in flex-2.5.35/debian/common/targets.mk flex-2.5.35.new/debian/common/targets.mk
--- flex-2.5.35/debian/common/targets.mk	2008-11-29 21:26:12.000000000 +0100
+++ flex-2.5.35.new/debian/common/targets.mk	2008-11-29 21:14:05.000000000 +0100
@@ -84,20 +84,20 @@
 # Just a dummy target to make sure that the stamp directory exists
 debian/stamp/dummy-config-common:
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 # Configuration tasks common to arch and arch indep packages go here
 debian/stamp/pre-config-common: debian/stamp/dummy-config-common
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 # Do not add dependencies to this rule
 debian/stamp/do-pre-config-common: debian/stamp/dummy-config-common
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	$(MAKE) -f debian/rules debian/stamp/pre-config-common
 	@echo done > $@
 
@@ -105,13 +105,13 @@
 debian/stamp/pre-config-arch:	debian/stamp/do-pre-config-common
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 # Do not add dependencies to this rule
 debian/stamp/do-pre-config-arch:	debian/stamp/do-pre-config-common
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	$(MAKE) -f debian/rules debian/stamp/pre-config-arch
 	@echo done > $@
 
@@ -119,13 +119,13 @@
 debian/stamp/pre-config-indep: debian/stamp/do-pre-config-common
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 # Do not add dependencies to this rule
 debian/stamp/do-pre-config-indep: debian/stamp/do-pre-config-common
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	$(MAKE) -f debian/rules debian/stamp/pre-config-indep
 	@echo done > $@
 
@@ -138,29 +138,29 @@
 $(patsubst %,debian/stamp/CONFIG/%,$(DEB_INDEP_PACKAGES)) : debian/stamp/CONFIG/% : debian/stamp/do-pre-config-indep
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp/CONFIG || mkdir debian/stamp/CONFIG
+	@test -d debian/stamp/CONFIG || mkdir -p debian/stamp/CONFIG
 	@echo done > $@
 
 # Do not add dependencies to this rule
 debian/stamp/dep-configure-arch: debian/stamp/do-pre-config-arch $(patsubst %,debian/stamp/CONFIG/%,$(DEB_ARCH_PACKAGES)) 
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 # Do not add dependencies to this rule
 debian/stamp/dep-configure-indep: debian/stamp/do-pre-config-indep $(patsubst %,debian/stamp/CONFIG/%,$(DEB_INDEP_PACKAGES))
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 debian/stamp/do-configure-arch: debian/stamp/do-pre-config-arch
 	$(REASON)
-	@test -d debian/stamp/CONFIG || mkdir debian/stamp/CONFIG
+	@test -d debian/stamp/CONFIG || mkdir -p debian/stamp/CONFIG
 	$(MAKE) -f debian/rules debian/stamp/dep-configure-arch
 	@echo done > $@
 debian/stamp/do-configure-indep: debian/stamp/do-pre-config-indep
 	$(REASON)
-	@test -d debian/stamp/CONFIG || mkdir debian/stamp/CONFIG
+	@test -d debian/stamp/CONFIG || mkdir -p debian/stamp/CONFIG
 	$(MAKE) -f debian/rules debian/stamp/dep-configure-indep
 	@echo done > $@
 
@@ -181,19 +181,19 @@
 debian/stamp/pre-build-common:
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 # Arch specific and arch independent tasks go here
 debian/stamp/pre-build-arch:  debian/stamp/do-configure-arch
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 debian/stamp/do-pre-build-arch:  debian/stamp/do-configure-arch
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@test -e debian/stamp/pre-build-common || $(MAKE) -f debian/rules debian/stamp/pre-build-common
 	$(MAKE) -f debian/rules debian/stamp/pre-build-arch
 	@echo done > $@
@@ -201,12 +201,12 @@
 debian/stamp/pre-build-indep: debian/stamp/do-configure-indep
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 debian/stamp/do-pre-build-indep: debian/stamp/do-configure-indep
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@test -e debian/stamp/pre-build-common || $(MAKE) -f debian/rules debian/stamp/pre-build-common
 	$(MAKE) -f debian/rules debian/stamp/pre-build-indep
 	@echo done > $@
@@ -230,12 +230,12 @@
 # package target dependencies are run.
 debian/stamp/dep-build-arch: debian/stamp/do-pre-build-arch $(patsubst %,debian/stamp/BUILD/%,$(DEB_ARCH_PACKAGES)) 
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 debian/stamp/dep-build-indep: debian/stamp/do-pre-build-indep $(patsubst %,debian/stamp/BUILD/%,$(DEB_INDEP_PACKAGES))
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 debian/stamp/do-build-arch: debian/stamp/do-pre-build-arch
@@ -262,21 +262,21 @@
 # Work here
 debian/stamp/post-build-arch: debian/stamp/do-build-arch
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 debian/stamp/do-post-build-arch: debian/stamp/do-build-arch
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	$(MAKE) -f debian/rules debian/stamp/post-build-arch
 	@echo done > $@
 
 debian/stamp/post-build-indep: debian/stamp/do-build-indep
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 debian/stamp/do-post-build-indep: debian/stamp/do-build-indep
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	$(MAKE) -f debian/rules debian/stamp/post-build-indep
 	@echo done > $@
 
@@ -289,19 +289,19 @@
 debian/stamp/pre-inst-common:
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 # Arch specific and arch independent tasks go here
 debian/stamp/pre-inst-arch:  debian/stamp/do-post-build-arch
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 debian/stamp/do-pre-inst-arch:  debian/stamp/do-post-build-arch
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@test -e debian/stamp/INST-common || $(MAKE) -f debian/rules debian/stamp/pre-inst-common
 	$(MAKE) -f debian/rules debian/stamp/pre-inst-arch
 	@echo done > $@
@@ -309,12 +309,12 @@
 debian/stamp/pre-inst-indep: debian/stamp/do-post-build-indep
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 debian/stamp/do-pre-inst-indep: debian/stamp/do-post-build-indep
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@test -e debian/stamp/INST-common || $(MAKE) -f debian/rules debian/stamp/pre-inst-common
 	$(MAKE) -f debian/rules debian/stamp/pre-inst-indep
 	@echo done > $@
@@ -324,12 +324,12 @@
 $(patsubst %,debian/stamp/INST/%,$(DEB_ARCH_PACKAGES))	: debian/stamp/INST/% : debian/stamp/do-pre-inst-arch
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp/INST || mkdir debian/stamp/INST
+	@test -d debian/stamp/INST || mkdir -p debian/stamp/INST
 	@echo done > $@
 $(patsubst %,debian/stamp/INST/%,$(DEB_INDEP_PACKAGES)) : debian/stamp/INST/% : debian/stamp/do-pre-inst-indep
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp/INST || mkdir debian/stamp/INST
+	@test -d debian/stamp/INST || mkdir -p debian/stamp/INST
 	@echo done > $@
 
 # These do targeta make sure all the per package configuration is
@@ -338,25 +338,25 @@
 # package target dependencies are run.
 debian/stamp/dep-install-arch: debian/stamp/do-pre-inst-arch $(patsubst %,debian/stamp/INST/%,$(DEB_ARCH_PACKAGES))
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 debian/stamp/dep-install-indep: debian/stamp/do-pre-inst-indep $(patsubst %,debian/stamp/INST/%,$(DEB_INDEP_PACKAGES))
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 
 debian/stamp/do-install-arch: debian/stamp/do-pre-inst-arch
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	$(MAKE) -f debian/rules debian/stamp/dep-install-arch
 	@echo done > $@
 debian/stamp/do-install-indep:  debian/stamp/do-pre-inst-indep
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	$(MAKE) -f debian/rules debian/stamp/dep-install-indep
 	@echo done > $@
 
@@ -380,19 +380,19 @@
 debian/stamp/pre-bin-common:
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 # Arch specific and arch independent tasks go here
 debian/stamp/pre-bin-arch:  debian/stamp/do-install-arch
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 debian/stamp/do-pre-bin-arch:  debian/stamp/do-install-arch
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@test -e debian/stamp/BIN-common || $(MAKE) -f debian/rules debian/stamp/pre-bin-common
 	$(MAKE) -f debian/rules debian/stamp/pre-bin-arch
 	@echo done > $@
@@ -400,12 +400,12 @@
 debian/stamp/pre-bin-indep: debian/stamp/do-install-indep
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 debian/stamp/do-pre-bin-indep: debian/stamp/do-install-indep
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@test -e debian/stamp/BIN-common || $(MAKE) -f debian/rules debian/stamp/pre-bin-common
 	$(MAKE) -f debian/rules debian/stamp/pre-bin-indep
 	@echo done > $@
@@ -414,13 +414,13 @@
 $(patsubst %,debian/stamp/BIN/%,$(DEB_ARCH_PACKAGES))  : debian/stamp/BIN/% : debian/stamp/do-pre-bin-arch
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp/BIN || mkdir debian/stamp/BIN
+	@test -d debian/stamp/BIN || mkdir -p debian/stamp/BIN
 	@echo done > $@
 
 $(patsubst %,debian/stamp/BIN/%,$(DEB_INDEP_PACKAGES)) : debian/stamp/BIN/% : debian/stamp/do-pre-bin-indep
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp/BIN || mkdir debian/stamp/BIN
+	@test -d debian/stamp/BIN || mkdir -p debian/stamp/BIN
 	@echo done > $@
 
 # These do targeta make sure all the per package work is done, but is
@@ -429,24 +429,24 @@
 # target dependencies are run.
 debian/stamp/dep-binary-arch: debian/stamp/pre-bin-arch $(patsubst %,debian/stamp/BIN/%,$(DEB_ARCH_PACKAGES))
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 debian/stamp/dep-binary-indep: debian/stamp/pre-bin-indep $(patsubst %,debian/stamp/BIN/%,$(DEB_INDEP_PACKAGES))
 	$(REASON)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	@echo done > $@
 
 debian/stamp/do-binary-arch:  debian/stamp/do-pre-bin-arch 
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	$(MAKE) -f debian/rules debian/stamp/dep-binary-arch
 	@echo done > $@
 debian/stamp/do-binary-indep: debian/stamp/do-pre-bin-indep 
 	$(REASON)
 	$(checkdir)
-	@test -d debian/stamp || mkdir debian/stamp
+	@test -d debian/stamp || mkdir -p debian/stamp
 	$(MAKE) -f debian/rules debian/stamp/dep-binary-indep
 	@echo done > $@
 # required
diff -ur -x Makefile.in flex-2.5.35/debian/local.mk flex-2.5.35.new/debian/local.mk
--- flex-2.5.35/debian/local.mk	2008-11-29 21:26:12.000000000 +0100
+++ flex-2.5.35.new/debian/local.mk	2008-11-29 21:21:04.000000000 +0100
@@ -42,7 +42,7 @@
 debian/stamp/conf/flex:
 	$(checkdir)
 	$(REASON)
-	@test -d debian/stamp/conf || mkdir debian/stamp/conf
+	@test -d debian/stamp/conf || mkdir -p debian/stamp/conf
 	if ! which flex >/dev/null 2>&1; then                              \
            if [ -e debian/scan.l.md5sum ] &&                               \
               [ "`md5sum scan.l`" = "`cat debian/scan.l.md5sum`" ]; then   \
@@ -60,7 +60,7 @@
 	$(checkdir)
 	$(REASON)
 	$(CHECKPO)
-	@test -d debian/stamp/build || mkdir debian/stamp/build
+	@test -d debian/stamp/build || mkdir -p debian/stamp/build
 	bash -n debian/doc.postinst
 	bash -n debian/doc.prerm
 	bash -n debian/postinst
@@ -75,7 +75,7 @@
 debian/stamp/build/flex-doc:
 	$(checkdir)
 	$(REASON)
-	@test -d debian/stamp/build || mkdir debian/stamp/build
+	@test -d debian/stamp/build || mkdir -p debian/stamp/build
 	$(MAKE) -C doc flex.info flex.html
 	@echo done > $@
 
@@ -96,7 +96,7 @@
 	$(install_file)     doc/flex.html/*         $(DOCDIR)/html/
 	ln -s               NEWS.gz                 $(DOCDIR)/changelog.gz 
 	$(install_file)     debian/docentry         $(DOCBASEDIR)/$(package)
-	@test -d debian/stamp/install || mkdir debian/stamp/install
+	@test -d debian/stamp/install || mkdir -p debian/stamp/install
 	@echo done > $@
 
 debian/stamp/install/flex:
@@ -155,7 +155,7 @@
 	ln -s                flex.1.gz              $(MAN1DIR)/flex++.1.gz
 	ln -s                flex                   $(BINDIR)/lex
 	ln -s                libfl.a                $(LIBDIR)/libl.a
-	@test -d debian/stamp/install || mkdir debian/stamp/install
+	@test -d debian/stamp/install || mkdir -p debian/stamp/install
 	@echo done > $@
 
 debian/stamp/binary/flex-doc:
@@ -171,7 +171,7 @@
 	chown -R root:root   $(TMPTOP)
 	chmod -R u+w,go=rX   $(TMPTOP)
 	dpkg --build         $(TMPTOP) ..
-	@test -d debian/stamp/binary || mkdir debian/stamp/binary
+	@test -d debian/stamp/binary || mkdir -p debian/stamp/binary
 	@echo done > $@
 
 debian/stamp/binary/flex:
@@ -191,5 +191,5 @@
 	chown -R root:root   $(TMPTOP)
 	chmod -R u+w,go=rX   $(TMPTOP)
 	dpkg --build         $(TMPTOP) ..
-	@test -d debian/stamp/binary || mkdir debian/stamp/binary
+	@test -d debian/stamp/binary || mkdir -p debian/stamp/binary
 	@echo done > $@

Reply via email to