[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