exit 1
fi
-if test $# -ne 1; then
- echo 1>&2 "merge.sh: Usage: merge.sh mercurial-repository"
+rev=weekly
+case $# in
+1) ;;
+2) rev=$2 ;;
+*)
+ echo 1>&2 "merge.sh: Usage: merge.sh mercurial-repository [revision]"
exit 1
-fi
+ ;;
+esac
repository=$1
hg clone -r ${old_rev} ${repository} ${OLDDIR}
rm -rf ${NEWDIR}
-hg clone -u weekly ${repository} ${NEWDIR}
+hg clone -u ${rev} ${repository} ${NEWDIR}
-new_rev=`cd ${NEWDIR} && hg log -r weekly | sed 1q | sed -e 's/.*://'`
+new_rev=`cd ${NEWDIR} && hg log -r ${rev} | sed 1q | sed -e 's/.*://'`
merge() {
name=$1
fi
}
-(cd ${NEWDIR}/src/pkg && find . -name '*.go' -print) | while read f; do
- if test `dirname $f` = "./syscall"; then
- continue
+merge_c() {
+ from=$1
+ to=$2
+ oldfile=${OLDDIR}/src/pkg/runtime/$from
+ if test -f ${oldfile}; then
+ sed -e 's/·/_/g' < ${oldfile} > ${oldfile}.tmp
+ oldfile=${oldfile}.tmp
+ newfile=${NEWDIR}/src/pkg/runtime/$from
+ sed -e 's/·/_/g' < ${newfile} > ${newfile}.tmp
+ newfile=${newfile}.tmp
+ libgofile=runtime/$to
+ merge $from ${oldfile} ${newfile} ${libgofile}
fi
+}
+
+(cd ${NEWDIR}/src/pkg && find . -name '*.go' -print) | while read f; do
oldfile=${OLDDIR}/src/pkg/$f
newfile=${NEWDIR}/src/pkg/$f
libgofile=go/$f
done
done
-runtime="goc2c.c mcache.c mcentral.c mfinal.c mfixalloc.c mgc0.c mheap.c msize.c malloc.h malloc.goc mprof.goc"
+runtime="chan.c cpuprof.c lock_futex.c lock_sema.c mcache.c mcentral.c mfinal.c mfixalloc.c mgc0.c mheap.c msize.c proc.c runtime.c runtime.h signal_unix.c malloc.h malloc.goc mprof.goc runtime1.goc sema.goc sigqueue.goc string.goc time.goc"
for f in $runtime; do
- oldfile=${OLDDIR}/src/pkg/runtime/$f
- newfile=${NEWDIR}/src/pkg/runtime/$f
- libgofile=runtime/$f
- merge $f ${oldfile} ${newfile} ${libgofile}
+ merge_c $f $f
done
+merge_c thread_linux.c thread-linux.c
+merge_c mem_linux.c mem.c
+
(cd ${OLDDIR}/src/pkg && find . -name '*.go' -print) | while read f; do
oldfile=${OLDDIR}/src/pkg/$f
newfile=${NEWDIR}/src/pkg/$f