[Unison-hackers] [unison-svn] r328 - in trunk: . src src/uimacnew/uimacnew.xcodeproj tools

Benjamin C. Pierce bcpierce at seas.upenn.edu
Tue May 5 13:06:30 EDT 2009


Author: bcpierce
Date: 2009-05-05 13:06:29 -0400 (Tue, 05 May 2009)
New Revision: 328

Modified:
   trunk/Makefile
   trunk/src/Makefile
   trunk/src/Makefile.OCaml
   trunk/src/RECENTNEWS
   trunk/src/mkProjectInfo.ml
   trunk/src/uimacnew/uimacnew.xcodeproj/project.pbxproj
   trunk/tools/Makefile
Log:
* Incorporate Makefile improvements from Martin von Gagern


Modified: trunk/Makefile
===================================================================
--- trunk/Makefile	2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/Makefile	2009-05-05 17:06:29 UTC (rev 328)
@@ -13,10 +13,10 @@
 -include src/Makefile.ProjectInfo
 
 src/Makefile.ProjectInfo: src/mkProjectInfo
-	src/mkProjectInfo > $@
+	$(MAKE) -C src Makefile.ProjectInfo
 
 src/mkProjectInfo: src/mkProjectInfo.ml
-	ocamlc -o $@ $^
+	$(MAKE) -C src mkProjectInfo
 
 docs:
 	$(MAKE) -C src UISTYLE=text

Modified: trunk/src/Makefile
===================================================================
--- trunk/src/Makefile	2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/src/Makefile	2009-05-05 17:06:29 UTC (rev 328)
@@ -37,6 +37,16 @@
 
 all:: INSTALL
 
+.PHONY: all clean install doinstall installtext text \
+	setupdemo-old setupdemo modifydemo demo \
+	run runbatch runt rundebug runp runtext runsort runprefer \
+	prefsdocs runtest repeattest \
+	selftest selftestdebug selftestremote testmerge \
+	checkin installremote
+
+.DELETE_ON_ERROR:
+# to avoid problems when e.g. mkProjectInfo fails to run
+
 INSTALL: $(NAME)$(EXEC_EXT)
 # file isn't made for OS X, so check that it's there first
 	(if [ -f $(NAME) ]; then ./$(NAME) -doc install > INSTALLATION; fi)
@@ -50,11 +60,11 @@
 # NAME, VERSION, and MAJORVERSION, automatically generated
 -include Makefile.ProjectInfo
 
-Makefile.ProjectInfo: mkProjectInfo
+Makefile.ProjectInfo: mkProjectInfo $(wildcard ../.bzr/branch/last-revision)
 	./mkProjectInfo > $@
 
 mkProjectInfo: mkProjectInfo.ml
-	ocamlc -o $@ $^
+	ocamlc -o $@ unix.cma str.cma $^
 
 clean::
 	$(RM) mkProjectInfo

Modified: trunk/src/Makefile.OCaml
===================================================================
--- trunk/src/Makefile.OCaml	2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/src/Makefile.OCaml	2009-05-05 17:06:29 UTC (rev 328)
@@ -125,6 +125,7 @@
   endif
 endif
 
+.PHONY: buildexecutable
 buildexecutable::
 	@echo NATIVE = $(NATIVE)
 	@echo THREADS = $(THREADS)
@@ -132,7 +133,7 @@
 	@echo OSTYPE = $(OSTYPE)
 	@echo OSARCH = $(OSARCH)
 
-ubase/projectInfo.ml: mkProjectInfo
+ubase/projectInfo.ml: Makefile.ProjectInfo
 	echo 'let myName = "'$(NAME)'";;' > $@
 	echo 'let myVersion = "'$(VERSION)'";;' >> $@
 	echo 'let myMajorVersion = "'$(MAJORVERSION)'";;' >> $@
@@ -160,6 +161,7 @@
 # NOTE: the OCAMLLIBDIR is not getting passed correctly?
 # The two cases for cltool are needed because Xcode 2.1+
 # builds in build/Default/, and earlier versions use build/
+.PHONY: macexecutable
 macexecutable: $(NAME)-blob.o
 #	sed -e's/@@VERSION@@/$(VERSION)/' $(UIMACDIR)/Info.plist.template > $(UIMACDIR)/Info.plist
 	(cd $(UIMACDIR); xcodebuild OCAMLLIBDIR="$(OCAMLLIBDIR)" SYMROOT=build)
@@ -388,6 +390,7 @@
 	-$(RM) -r *.obj *.lib *.exp
 	-$(RM) -r *.tmp *.bak?.tmp .*.bak?.tmp
 
+.PHONY: paths
 paths:
 	@echo PATH = $(PATH)
 	@echo OCAMLLIBDIR = $(OCAMLLIBDIR)

Modified: trunk/src/RECENTNEWS
===================================================================
--- trunk/src/RECENTNEWS	2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/src/RECENTNEWS	2009-05-05 17:06:29 UTC (rev 328)
@@ -1,3 +1,8 @@
+CHANGES FROM VERSION 2.33.2
+
+* Incorporate Makefile improvements from Martin von Gagern
+
+-------------------------------
 CHANGES FROM VERSION 2.33.1
 
 * Incorporate recent change from 2.32 branch.

Modified: trunk/src/mkProjectInfo.ml
===================================================================
--- trunk/src/mkProjectInfo.ml	2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/src/mkProjectInfo.ml	2009-05-05 17:06:29 UTC (rev 328)
@@ -42,10 +42,47 @@
 (* ---------------------------------------------------------------------- *)
 (* You shouldn't need to edit below. *)
 
-let revisionString = "$Rev$";;
-let revision = Scanf.sscanf revisionString "$Rev: %d " (fun x -> x);;
-let pointVersion = revision - pointVersionOrigin;;
+(* run the bzr tool to get version information for bzr branches *)
+exception BzrException of Unix.process_status;;
+let bzr args =
+  let bzr = (try Sys.getenv "BZR" with Not_found -> "bzr") in
+  let cmd = bzr ^ " " ^ args in
+  let inc = Unix.open_process_in cmd in
+  let buf = Buffer.create 16 in
+  (try
+     while true do
+       Buffer.add_channel buf inc 1
+     done
+   with End_of_file -> ());
+  let status = Unix.close_process_in inc in
+  match status with
+    Unix.WEXITED 0 -> Buffer.contents buf
+  | _ -> raise (BzrException status);;
 
+(* extract a substring using a regular expression *)
+let extract_str re str =
+  let _ = Str.search_forward (Str.regexp re) str 0 in
+  Str.matched_group 1 str;;
+let extract_int re str = int_of_string (extract_str re str);;
+
+let revisionString = "$Rev: 327$";;
+let pointVersion = if String.length revisionString > 5
+then Scanf.sscanf revisionString "$Rev: %d " (fun x -> x) - pointVersionOrigin
+else (* Determining the pointVersionOrigin in bzr is kind of tricky:
+        - The mentioned revision number might not be part of this branch
+        - The mentioned revision number might be rhs of some merge
+        - The bzr-svn plugin might be outdated or not installed at all
+
+        On the whole, getting this to work seems too much effort for now.
+        So we'll simply use the revno as is as the point version,
+        and revisit offsetting them if unison should ever move its trunk to bzr.
+
+       let pvo = extract_int "^revno:[ \t]*\\([0-9]+\\)[ \t]*$"
+                           (bzr ("log -r svn:" ^
+                                 string_of_int pointVersionOrigin)) in
+      *)
+     extract_int "^\\([0-9]+\\)$" (bzr "revno") (* - pvo *);;
+
 Printf.printf "MAJORVERSION=%d.%d\n" majorVersion minorVersion;;
 Printf.printf "VERSION=%d.%d.%d\n" majorVersion minorVersion pointVersion;;
 Printf.printf "NAME=%s\n" projectName;;
@@ -107,3 +144,4 @@
 
 
 
+

Modified: trunk/src/uimacnew/uimacnew.xcodeproj/project.pbxproj
===================================================================
--- trunk/src/uimacnew/uimacnew.xcodeproj/project.pbxproj	2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/src/uimacnew/uimacnew.xcodeproj/project.pbxproj	2009-05-05 17:06:29 UTC (rev 328)
@@ -461,7 +461,7 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "if [ -x /usr/libexec/path_helper ]; then\n  eval `/usr/libexec/path_helper -s`\nfi\nif [ ! -x ${PROJECT_DIR}/../Makefile.ProjectInfo ]; then\n  if [ ! -x ${PROJECT_DIR}/../mkProjectInfo ]; then\n    cd ${PROJECT_DIR}/..; ocamlc -o mkProjectInfo mkProjectInfo.ml\n  fi\n  cd ${PROJECT_DIR}/..; ./mkProjectInfo > Makefile.ProjectInfo\nfi\nOCAMLLIBDIR=`ocamlc -v | tail -n -1 | sed -e 's/.* //g' | sed -e 's/\\\\\\/\\\\//g' | tr -d '\\r'`\nsource ${PROJECT_DIR}/../Makefile.ProjectInfo\necho MARKETING_VERSION = $VERSION > ${PROJECT_DIR}/ExternalSettings.xcconfig\necho OCAMLLIBDIR = $OCAMLLIBDIR >> ${PROJECT_DIR}/ExternalSettings.xcconfig";
+			shellScript = "if [ -x /usr/libexec/path_helper ]; then\n  eval `/usr/libexec/path_helper -s`\nfi\nif [ ! -x ${PROJECT_DIR}/../Makefile.ProjectInfo ]; then\n  if [ ! -x ${PROJECT_DIR}/../mkProjectInfo ]; then\n    cd ${PROJECT_DIR}/..; ocamlc -o mkProjectInfo unix.cma str.cma mkProjectInfo.ml\n  fi\n  cd ${PROJECT_DIR}/..; ./mkProjectInfo > Makefile.ProjectInfo\nfi\nOCAMLLIBDIR=`ocamlc -v | tail -n -1 | sed -e 's/.* //g' | sed -e 's/\\\\\\/\\\\//g' | tr -d '\\r'`\nsource ${PROJECT_DIR}/../Makefile.ProjectInfo\necho MARKETING_VERSION = $VERSION > ${PROJECT_DIR}/ExternalSettings.xcconfig\necho OCAMLLIBDIR = $OCAMLLIBDIR >> ${PROJECT_DIR}/ExternalSettings.xcconfig";
 		};
 		2E282CBA0D9AE17300439D01 /* Run Script (make unison-blob.o) */ = {
 			isa = PBXShellScriptBuildPhase;

Modified: trunk/tools/Makefile
===================================================================
--- trunk/tools/Makefile	2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/tools/Makefile	2009-05-05 17:06:29 UTC (rev 328)
@@ -18,7 +18,7 @@
 	date | ./ask
 
 ../src/Makefile.ProjectInfo: ../src/mkProjectInfo
-	../src/mkProjectInfo > $@
+	$(MAKE) -C ../src Makefile.ProjectInfo
 
 ../src/mkProjectInfo: ../src/mkProjectInfo.ml
-	ocamlc -o $@ $^
+	$(MAKE) -C ../src mkProjectInfo



More information about the Unison-hackers mailing list