[Odcctools-changes] [139] trunk
source_changes at macosforge.org
source_changes at macosforge.org
Sat Sep 9 14:19:03 PDT 2006
Revision: 139
Author: ssen at mit.edu
Date: 2006-09-09 14:19:01 -0700 (Sat, 09 Sep 2006)
Log Message:
-----------
Stop abusing Makefiles and use a shell script to patch
Modified Paths:
--------------
trunk/README
Added Paths:
-----------
trunk/extract.sh
Removed Paths:
-------------
trunk/Makefile
Deleted: trunk/Makefile
===================================================================
--- trunk/Makefile 2006-06-09 04:24:17 UTC (rev 138)
+++ trunk/Makefile 2006-09-09 21:19:01 UTC (rev 139)
@@ -1,137 +0,0 @@
-CCTOOLSNAME=cctools
-CCTOOLSVERS=590.42.1
-CCTOOLSDISTFILE=$(CCTOOLSNAME)-$(CCTOOLSVERS).tar.bz2
-
-LD64NAME=ld64
-LD64VERS=47.2
-LD64DISTFILE=$(LD64NAME)-$(LD64VERS).tar.bz2
-
-DISTDIR=odcctools
-
-TOPSRCDIR=$(shell pwd)
-HOSTKERNEL=$(shell uname -s)
-TARSTRIP=$(TARSTRIP_$(HOSTKERNEL))
-TARSTRIP_Darwin=--strip-path
-TARSTRIP_Linux=--strip-components
-
-PATCHFILESDIR=$(TOPSRCDIR)/patches
-PATCHFILES=as/driver.c ld-Bstatic.diff as/getc_unlocked.diff \
- otool/nolibmstub.diff misc/ranlibname.diff \
- misc/libtool-ldpath.diff ar/ar-ranlibpath.diff \
- otool/noobjc.diff as/input-scrub.diff \
- as/messages.diff ar/contents.diff ar/errno.diff \
- ar/archive.diff misc/libtool-pb.diff ar/ar-printf.diff \
- ld/ld-pb.diff ld-sysroot.diff as/relax.diff \
- as/bignum.diff \
- misc/redo_prebinding.nomalloc.diff include/mach/machine.diff \
- ld/relocate-ld64.diff ld64/Options-stdarg.diff \
- ld64/Options-defcross.diff misc/libtool-relocate-ld64.diff \
- ld/uuid-nonsmodule.diff misc/redo_prebinding.nogetattrlist.diff \
- ld64/Options-ctype.diff ld64/ld64-case-variables.diff \
- ld64/MachOReaderRelocatable-ctz.diff ld64/FileAbstraction-inline.diff
-
-
-ADDEDFILESDIR=$(TOPSRCDIR)/files
-
-default: none
-
-clean:
- rm -rf $(DISTDIR)
- rm -rf .state.*
-
-none:
- @echo "Please choose an action:"
- @echo " extract"
- @echo " patch"
- @echo " regen"
- @echo " clean"
-
-
-extract:
- if [ \! -f .state.extract ]; then \
- if [ \! -d $(DISTDIR) ]; then \
- mkdir -p $(DISTDIR); \
- tar $(TARSTRIP)=1 -jxf $(CCTOOLSDISTFILE) -C $(DISTDIR); \
- mkdir -p $(DISTDIR)/ld64; \
- tar $(TARSTRIP)=1 -jxf $(LD64DISTFILE) -C $(DISTDIR)/ld64; \
- find $(DISTDIR)/ld64/doc/ \
- -type f -exec cp "{}" $(DISTDIR)/man \; ; \
- find $(DISTDIR) -name \*.orig -exec rm -f "{}" \; ; \
- rm -rf $(DISTDIR)/{cbtlibs,dyld,file,gprof,libdyld,mkshlib,profileServer}; \
- cp $(DISTDIR)/include/mach/machine.h $(DISTDIR)/include/mach/machine.h.new; \
- for i in mach architecture i386 libkern; do \
- ditto /Developer/SDKs/MacOSX10.4u.sdk/usr/include/$$i $(DISTDIR)/include/$$i; \
- done; \
- cp $(DISTDIR)/include/mach/machine.h.new $(DISTDIR)/include/mach/machine.h; \
- fi; \
- touch .state.extract; \
- fi
-
-patch: extract
- if [ \! -f .state.patch ]; then \
- for p in $(PATCHFILES); do \
- echo Applying patch $$p; \
- dir=`dirname $$p`; \
- ( cd $(DISTDIR)/$$dir; \
- patch --no-backup-if-mismatch --posix -p0 < $(PATCHFILESDIR)/$$p ); \
- done; \
- tar cf - --exclude=CVS -C $(ADDEDFILESDIR) . | \
- tar xvf - -C $(DISTDIR); \
- find $(DISTDIR) -type f -name \*.[ch] | while read f; do \
- sed -e 's/^#import/#include/' < $$f > $$f.tmp; \
- mv -f $$f.tmp $$f; \
- done; \
- find $(DISTDIR) -type f -name \*.h | while read f; do \
- sed -e 's/^__private_extern__/extern/' < $$f > $$f.tmp; \
- mv -f $$f.tmp $$f; \
- done; \
- perl -pi -e 's/__GNUC__/__GNUC_UNUSED__/g;' $(DISTDIR)/include/libkern/OSByteOrder.h; \
- touch .state.patch; \
- fi
-
-updatepatch: extract
- if [ \! -f .state.patch ]; then \
- for p in $(PATCHFILES); do \
- echo Applying patch $$p; \
- dir=`dirname $$p`; \
- ( cd $(DISTDIR)/$$dir; \
- patch -b --posix -p0 < $(PATCHFILESDIR)/$$p; \
- if [ $$? -eq 1 ]; then \
- exit 1; \
- fi; \
- ( find . -type f | while read f; do \
- if [ -f "$$f.orig" ]; then \
- diff -u -N "$$f.orig" "$$f"; \
- fi; \
- done) > $(PATCHFILESDIR)/$$p; \
- find . -type f -name \*.orig -exec rm -f "{}" \;; \
- ); \
- done; \
- tar cf - --exclude=CVS -C $(ADDEDFILESDIR) . | \
- tar xvf - -C $(DISTDIR); \
- find $(DISTDIR) -type f -name \*.[ch] | while read f; do \
- sed 's/^#import/#include/' < $$f > $$f.tmp; \
- mv -f $$f.tmp $$f; \
- done; \
- touch .state.patch; \
- fi
-
-regen: patch
- if [ \! -f .state.regen ]; then \
- find $(DISTDIR) -name Makefile -exec rm -f "{}" \; ; \
- find $(DISTDIR) -name \*~ -exec rm -f "{}" \; ; \
- find $(DISTDIR) -name .\#\* -exec rm -f "{}" \; ; \
- ( cd $(DISTDIR) && \
- autoheader && \
- autoconf ); \
- rm -rf $(DISTDIR)/autom4te.cache; \
- touch .state.regen; \
- fi
-
-dist: regen
- if [ \! -f .state.dist ]; then \
- ditto $(DISTDIR) $(DISTDIR)-$$(date +%Y%m%d); \
- tar jcf $(DISTDIR)-$$(date +%Y%m%d).tar.bz2 \
- $(DISTDIR)-$$(date +%Y%m%d); \
- touch .state.dist; \
- fi
Modified: trunk/README
===================================================================
--- trunk/README 2006-06-09 04:24:17 UTC (rev 138)
+++ trunk/README 2006-09-09 21:19:01 UTC (rev 139)
@@ -3,11 +3,10 @@
The repository is set up to patch an existing tarball, using a
combination of patch files and copying brand new files. To generate a
-usable source directory, do the following:
+usable source directory based on a subversion checkout, run "./extract.sh".
-% make extract
-% make patch
-% make regen
+The resulting source in "odcctools/" can be distributed and built on
+a variety of platforms and OS versions.
---
Added: trunk/extract.sh
===================================================================
--- trunk/extract.sh (rev 0)
+++ trunk/extract.sh 2006-09-09 21:19:01 UTC (rev 139)
@@ -0,0 +1,149 @@
+#!/bin/sh
+
+set -e
+
+CCTOOLSNAME=cctools
+CCTOOLSVERS=590.42.1
+CCTOOLSDISTFILE=${CCTOOLSNAME}-${CCTOOLSVERS}.tar.bz2
+
+LD64NAME=ld64
+LD64VERS=47.2
+LD64DISTFILE=${LD64NAME}-${LD64VERS}.tar.bz2
+
+DISTDIR=odcctools
+
+TOPSRCDIR=`pwd`
+
+MAKEDISTFILE=0
+UPDATEPATCH=0
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ --distfile)
+ shift
+ MAKEDISTFILE=1
+ ;;
+ --updatepatch)
+ shift
+ UPDATEPATCH=1
+ ;;
+ --help)
+ echo "Usage: $0 [--help] [--distfile] [--updatepatch]" 1>&2
+ exit 0
+ ;;
+ *)
+ echo "Unknown option $1" 1>&2
+ exit 1
+ esac
+done
+
+tar --help | grep -- --strip-components > /dev/null 2>&1
+
+if [ $? -eq 0 ]; then
+ TARSTRIP=--strip-components
+else
+ TARSTRIP=--strip-path
+fi
+
+PATCHFILESDIR=${TOPSRCDIR}/patches
+
+PATCHFILES=`cd "${PATCHFILESDIR}" && find * -type f \! -path \*/.svn\*`
+
+ADDEDFILESDIR=${TOPSRCDIR}/files
+
+if [ -d "${DISTDIR}" ]; then
+ echo "${DISTDIR} already exists. Please move aside before running" 1>&2
+ exit 1
+fi
+
+mkdir -p ${DISTDIR}
+tar ${TARSTRIP}=1 -jxf ${CCTOOLSDISTFILE} -C ${DISTDIR}
+mkdir -p ${DISTDIR}/ld64
+tar ${TARSTRIP}=1 -jxf ${LD64DISTFILE} -C ${DISTDIR}/ld64
+find ${DISTDIR}/ld64/doc/ -type f -exec cp "{}" ${DISTDIR}/man \;
+
+# Clean the source a bit
+find ${DISTDIR} -name \*.orig -exec rm -f "{}" \;
+rm -rf ${DISTDIR}/{cbtlibs,dyld,file,gprof,libdyld,mkshlib,profileServer}
+
+SDKROOT=/Developer/SDKs/MacOSX10.4u.sdk
+echo "Merging content from $SDKROOT"
+if [ ! -d "$SDKROOT" ]; then
+ echo "$SDKROOT must be present" 1>&2
+ exit 1
+fi
+mv ${DISTDIR}/include/mach/machine.h ${DISTDIR}/include/mach/machine.h.new;
+for i in mach architecture i386 libkern; do
+ tar cf - -C "$SDKROOT/usr/include" $i | tar xf - -C ${DISTDIR}/include
+done;
+mv ${DISTDIR}/include/mach/machine.h.new ${DISTDIR}/include/mach/machine.h;
+
+# process source for mechanical substitutions
+echo "Removing #import"
+find ${DISTDIR} -type f -name \*.[ch] | while read f; do
+ sed -e 's/^#import/#include/' < $f > $f.tmp
+ mv -f $f.tmp $f
+done
+
+echo "Removing __private_extern__"
+find ${DISTDIR} -type f -name \*.h | while read f; do
+ sed -e 's/^__private_extern__/extern/' < $f > $f.tmp
+ mv -f $f.tmp $f
+done
+
+for f in ${DISTDIR}/include/libkern/OSByteOrder.h; do
+ sed -e 's/__GNUC__/__GNUC_UNUSED__/g' < $f > $f.tmp
+ mv -f $f.tmp $f
+done
+
+set +e
+
+INTERACTIVE=1
+echo "Applying patches"
+for p in ${PATCHFILES}; do
+ dir=`dirname $p`
+ if [ $INTERACTIVE -eq 1 ]; then
+ read -p "Apply patch $p? " REPLY
+ else
+ echo "Applying patch $p"
+ fi
+ pushd ${DISTDIR}/$dir > /dev/null
+ patch --backup --posix -p0 < ${PATCHFILESDIR}/$p
+ if [ $? -ne 0 ]; then
+ echo "There was a patch failure. Please manually merge and exit the sub-shell when done"
+ $SHELL
+ if [ $UPDATEPATCH -eq 1 ]; then
+ find . -type f | while read f; do
+ if [ -f "$f.orig" ]; then
+ diff -u -N "$f.orig" "$f"
+ fi
+ done > ${PATCHFILESDIR}/$p
+ fi
+ fi
+ find . -type f -name \*.orig -exec rm -f "{}" \;
+ popd > /dev/null
+done
+
+set -e
+
+echo "Adding new files"
+tar cf - --exclude=CVS --exclude=.svn -C ${ADDEDFILESDIR} . | tar xvf - -C ${DISTDIR}
+
+echo "Deleting cruft"
+find ${DISTDIR} -name Makefile -exec rm -f "{}" \;
+find ${DISTDIR} -name \*~ -exec rm -f "{}" \;
+find ${DISTDIR} -name .\#\* -exec rm -f "{}" \;
+
+pushd ${DISTDIR} > /dev/null
+autoheader
+autoconf
+rm -rf autom4te.cache
+popd > /dev/null
+
+if [ $MAKEDISTFILE -eq 1 ]; then
+ DATE=$(date +%Y%m%d)
+ mv ${DISTDIR} ${DISTDIR}-$DATE
+ tar jcf ${DISTDIR}-$DATE.tar.bz2 ${DISTDIR}-$DATE
+fi
+
+exit 0
Property changes on: trunk/extract.sh
___________________________________________________________________
Name: svn:executable
+ *
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/odcctools-changes/attachments/20060909/82692374/attachment-0001.html
More information about the Odcctools-changes
mailing list