[m-rev.] diff: Update Boehm GC to the leatest version on the release-7_4 branch

Paul Bone paul at bone.id.au
Wed Sep 23 11:01:04 AEST 2015


Branches: upgrade_boehm

Update Boehm GC to the leatest version on the release-7_4 branch

This is the 7.4.2 release plus some bug fixes, such as fixes for the TSX
bug.

.gitmodules:
    Update to the release-7_4 branch

boehm_gc:
libatomic_ops:
    Update submodules.

compiler/notes/upgrade_boehm_gc.html:
    Update documentation.

scripts/prepare_install_dir.in:
    Conform to changes in the boehm_gc repository.
---
 .gitmodules                          |  2 +-
 boehm_gc                             |  2 +-
 compiler/notes/upgrade_boehm_gc.html | 82 ++++++++++++++++++++++++++++--------
 libatomic_ops                        |  2 +-
 scripts/prepare_install_dir.in       |  4 +-
 5 files changed, 70 insertions(+), 22 deletions(-)

diff --git a/.gitmodules b/.gitmodules
index b4e0ce1..e27aaac 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,7 +1,7 @@
 [submodule "boehm_gc"]
 	path = boehm_gc
 	url = ../bdwgc.git
-	branch = mercury7_4_pbone
+	branch = mercury7_4_2
 [submodule "libatomic_ops"]
 	path = libatomic_ops
 	url = ../libatomic_ops.git
diff --git a/boehm_gc b/boehm_gc
index c368235..a16bf06 160000
--- a/boehm_gc
+++ b/boehm_gc
@@ -1 +1 @@
-Subproject commit c368235002c7b98b6391f6058c15b90ebe0ffe58
+Subproject commit a16bf06bdc61e07ae65b431bcce9227f4e2b1f63
diff --git a/compiler/notes/upgrade_boehm_gc.html b/compiler/notes/upgrade_boehm_gc.html
index 7f3b8d3..6b13af9 100644
--- a/compiler/notes/upgrade_boehm_gc.html
+++ b/compiler/notes/upgrade_boehm_gc.html
@@ -157,43 +157,91 @@ The final step is how to update Mercury's copy of the collector when there
 are changes upstream.
 At the time of writing there are some important patches on the collector's
 <code>release-7_4</code> branch (The TSX bug).
-This is done simply creating a new branch and debasing the Mercury project's
-customisations onto that branch:
+Note that I did this before I'd mirrored the bdwgc repository in
+MercuryLanguage on github, so it uses the github-paul and origin remotes as
+follows.
+When reproducing this you will need to make charges occordingly.
 </p>
 
-XXX
+<code><pre>
+$ git remote -v
+github  https://github.com/ivmai/bdwgc.git (fetch)
+github  https://github.com/ivmai/bdwgc.git (push)
+github-paul https://github.com/PaulBone/bdwgc.git (fetch)
+github-paul git at github.com:PaulBone/bdwgc.git (push)
+origin  /srv/scratch/dev/mercury_new/bdwgc.git (fetch)
+origin  /srv/scratch/dev/mercury_new/bdwgc.git (push)
+</pre></code>
+
+<p>
+Starting with libatomic_ops I update the <code>release-7_4</code> branch to
+the latest changes and then rebase Mercury's customisations (in the
+<code>release-7_4-mer</code> branch) on top of those.
+</p>
 
 <code><pre>
-$ git branch mercury7_4_pbone mercury7_4_2
-$ git checkout mercury7_4_pbone
-$ git rebase --onto release-7_4_pbone gc7_4
+$ git checkout release-7_4
+$ git pull github-ivan release-7_4
+$ git push github-paul release-7_4          # Optional
+$ git checkout release-7_4-mer
+$ git pull github-paul release-7_4-mer
+$ git rebase release-7_4
+</code></pre>
+
+<p>
+There is only one Mercury-specific change so this went smoothly.
+Now, publish this change with <code>--force</code> because we are changing
+history.
+</p>
+
+<code><Pre>
+$ git push --force github-paul release-7_4-mer
+$ git push --force origin release-7_4-mer
 </pre></code>
 
 <p>
-These changes applied cleanly and I didn't need to resolve any merge
-conflicts.
-I sometimes find it useful to use vimdiff to help me merge changes, git can
-call vimdiff for you.
-git can launch a number of different tools depending on your tastes.
+Now do the same for boehm_gc
 </p>
 
 <code><pre>
-$ git mergetool --tool=vimdiff
+$ git checkout release-7_4
+$ git pull github-ivan release-7_4
+$ git push github-paul release-7_4          # Optional
+$ git checkout mercury-7_4_2
+$ git pull github-paul mercury-7_4_2
+$ git rebase release-7_4
 </pre></code>
 
 <p>
-You may also need to update the libatomic_ops directory.
+This rebase hard two merge conflicts however they were simple.
 </p>
 
+<code><Pre>
+$ git push --force github-paul release-7_4-mer
+$ git push --force origin release-7_4-mer
+</pre></code>
+
 <p>
-Now go back to the mercury repository and update the submodule to point to
-the new branch
+Back in the mercury repository I needed to point the boehm_gc submodule to a
+different branch,
+it was pointing to <code>mercury-7_4_pbone</code> but now that the TSX bug
+has been worked around it should point to the <code>mercury-7_4_2</code>
+branch.
+The branch is adjusted by editing .gitmodules
 </p>
 
 <code><pre>
 $ vim .gitmodules
-$ git submodule update --remote
-$ git add .gitmodules boehm_gc
+</pre></code>
+
+<p>
+In any case you will need to tell git that the branches have been updated,
+and these submodules should now refer to different <i>git IDs</i>.
+</p>
+
+<code><pre>
+$ git submodule update --remote --checkout
+$ git add .gitmodules boehm_gc libatomic_ops
 $ git commit
 </pre></code>
 
diff --git a/libatomic_ops b/libatomic_ops
index 7e94926..f754925 160000
--- a/libatomic_ops
+++ b/libatomic_ops
@@ -1 +1 @@
-Subproject commit 7e94926a3e318e3946bff770d998a11aff6fb5fd
+Subproject commit f7549252397e1b315773a5755f0d8fd1c9a284d4
diff --git a/scripts/prepare_install_dir.in b/scripts/prepare_install_dir.in
index b6d4847..7a4ff86 100644
--- a/scripts/prepare_install_dir.in
+++ b/scripts/prepare_install_dir.in
@@ -42,7 +42,6 @@ mkdir ${installdir}/boehm_gc/Mac_files
 mkdir ${installdir}/boehm_gc/cord
 mkdir ${installdir}/boehm_gc/include
 mkdir ${installdir}/boehm_gc/include/private
-mkdir ${installdir}/boehm_gc/src
 mkdir ${installdir}/boehm_gc/tools
 cp boehm_gc/NT_MAKEFILE ${installdir}/boehm_gc
 cp boehm_gc/*.[Mm]ak ${installdir}/boehm_gc
@@ -54,8 +53,9 @@ cp boehm_gc/*.[chsS] ${installdir}/boehm_gc
 cp boehm_gc/cord/*.[ch] ${installdir}/boehm_gc/cord
 cp boehm_gc/include/*.[ch] ${installdir}/boehm_gc/include
 cp boehm_gc/include/private/*.[ch] ${installdir}/boehm_gc/include/private
-cp boehm_gc/src/*.[chsS] ${installdir}/boehm_gc/src
+cp boehm_gc/*.[chsS] ${installdir}/boehm_gc/
 cp boehm_gc/tools/*.[ch] ${installdir}/boehm_gc/tools
+cp boehm_gc/tools/*.sh ${installdir}/boehm_gc/tools
 cp boehm_gc/build_atomic_ops.sh* ${installdir}/boehm_gc
 cp -Rp libatomic_ops ${installdir}
 ln -s ${installdir}/libatomic_ops ${installdir}/boehm_gc
-- 
2.5.0




More information about the reviews mailing list