<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>UsingArch &lt; Sacsiii &lt; TWiki</title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<link rel="alternate" type="application/rss+xml" title="RSS Feed" href="https://www.cideas.us/cgi-bin/twiki/view/Sacsiii/WebRss?skin=rss&amp;contenttype=text/xml">
<!-- base href="https://www.cideas.us/cgi-bin/twiki/view/Sacsiii/UsingArch" -->
<style type="text/css" media="all">
        /* Default TWiki layout */
        @import url("https://www.cideas.us/twiki/pub/TWiki/PatternSkin/layout.css");
        /* Default TWiki style */
        @import url("https://www.cideas.us/twiki/pub/TWiki/PatternSkin/style.css");
        /* Custom overriding layout per web or per topic */
        @import url("%USERLAYOUTURL%");
        /* Custom overriding style per web or per topic */
        @import url("%USERSTYLEURL%");
        .twikiToc li {
                list-style-image:url(https://www.cideas.us/twiki/pub/TWiki/PatternSkin/i_arrow_down.gif);
        }                
        .twikiWebIndicator {
                background-color:#A1D6A0;
        }
</style>
<style type="text/css" media="all"></style>
<script type="text/javascript">
<!-- HIDE
function initPage() { }

/*****************************/
/*      openPopupWin         */
/*****************************/
var popupWin;
function openPopupWin(addr)
{ if(popupWin)
         popupWin.close();
  var chasm = screen.availWidth;
  var mount = screen.availHeight;
  var w = 240;
  var h = 420;
                                                                                                                                                                                                                                                                                                                                                          
  popupWin=window.open(addr,'popupWin','status=no, width=' + w + ',height=' + h + ',left='
                                                                        + ((chasm - w - 10) * .5) + ',top=' + ((mount - h - 30) * .5));
}
-->
</script></head>

<body class="twikiViewPage twikiPrintPage">
<div class="twikiMiddleContainer"><div class="twikiMain"><div class="twikiTopic">
<h1><a name="Using_http_www_gnu_org_software"> </a><a name="_Using_http_www_gnu_org_software"> </a>  <center> Using <a href="http://www.gnu.org/software/gnu-arch/" target="_top">ARCH</a> </center> </h1>
<p>
</p><div class="twikiToc">
<ul>
<li> <a href="#Trivia">Trivia:</a>
</li>
<li> <a href="#Creating_a_new_U_Boot_mirror_arc">Creating a new U-Boot mirror archive with ARCH</a>
</li>
<li> <a href="#U_Boot_problem_files_for_http_ww">U-Boot problem files for ARCH import</a>
</li>
<li> <a href="#Extracting_a_working_copy_of_U_B">Extracting a working copy of U-Boot from ARCH</a>
</li>
<li> <a href="#Creating_an_Archive_for_CI_Modif">Creating an Archive for CI Modifications</a>
</li>
<li> <a href="#Mirroring_an_Archive_via_the_Web">Mirroring an Archive via the Web Server</a>
</li>
<li> <a href="#Updating_a_Mirrored_Archive">Updating a Mirrored Archive</a>
</li>
<li> <a href="#Accessing_the_Mirrored_Archive_v">Accessing the Mirrored Archive via HTTP</a>
</li>
<li> <a href="#Fetching_Changesets_from_the_Arc">Fetching Changesets from the Archive</a>
</li>
<li> <a href="#Getting_a_Changeset_and_Applying">Getting a Changeset and Applying it</a>
</li>
<li> <a href="#Updating_the_ARCH_mirror_from_so">Updating the ARCH mirror from sourceforge CVS</a>
</li>
<li> <a href="#GNU_style_Changelog">GNU-style Changelog</a>
</li>
<li> <a href="#Error_Botched_Invariant">Error: Botched Invariant</a>
</li>
<li> <a href="#Removing_http_www_gnu_org_softwa">Removing ARCH artifacts</a>
</li>
</ul>
</div>
<p>
</p><h3><a name="Trivia"> </a><a name="Trivia_"> </a> Trivia: </h3>
<p>
</p><ul>
<li> Our arch archives are in <code>/opt/{archives}</code>
</li>
<li> The techniques here were gleaned from <a href="http://www.gnu.org/software/gnu-arch/tutorial/arch.html" target="_top">arch Meets hello-world</a> <a href="http://www.cideas.us/doc/tla-doc/html/arch.html" target="_top">(local copy)</a>
</li>
<li> Wiki reference <a href="http://wiki.gnuarch.org/" target="_top">http://wiki.gnuarch.org/</a>
</li>
</ul>
<p>
</p><h3><a name="Creating_a_new_U_Boot_mirror_arc"> </a> Creating a new U-Boot mirror archive with <a href="http://www.gnu.org/software/gnu-arch/" target="_top">ARCH</a> </h3>
<p>
</p><blockquote><pre><tt>
tla my-default-archive vanbaren@cideas.com--u-boot-denx
tla archive-setup u-boot-denx--mirror--1.1.2
tla init-tree u-boot-denx--mirror--1.1.2
tla add `find . -type d`                    # Add directories
tla add `tla inventory --names --source`    # Add source files
vi `tla make-log`                           # Edit the log appropriately
tla import
</tt></pre></blockquote>
<p>
</p><h3><a name="U_Boot_problem_files_for_http_ww"> </a> U-Boot problem files for <a href="http://www.gnu.org/software/gnu-arch/" target="_top">ARCH</a> import </h3>
<p>
Due to violation of ARCH naming conventions, ARCH has problems importing the following U-Boot files/directories:
</p><blockquote><pre><tt>
board/MAI/bios_emulator/scitech/lib/debug/linux/gcc/glibc.so
board/MAI/bios_emulator/scitech/lib/debug/linux/gcc/libc.so
board/MAI/bios_emulator/scitech/lib/release/linux/gcc/glibc.so
board/MAI/bios_emulator/scitech/lib/release/linux/gcc/libc.so
</tt></pre></blockquote>
...for now, I'll simply ignore them.  The problem appears to be that these are directories but have a <code>.so</code> extension.  To ignore them, I tried to use <code>tla delete &lt;file&gt;</code> on the above files but that didn't work.  Instead, I renamed them with a leading "," (arch ignores files with leading commas).
<p>
</p><h3><a name="Extracting_a_working_copy_of_U_B"> </a> Extracting a working copy of U-Boot from <a href="http://www.gnu.org/software/gnu-arch/" target="_top">ARCH</a> </h3>
<p>
To get a working copy and put it in the new subdirectory <code>u-boot</code>
</p><blockquote><pre><tt>
vanbaren@dellserver:~/tmp/u-boot$ tla get u-boot-denx--mirror--1.1.2 u-boot
</tt></pre></blockquote>
<p>
We want to create a <a class="twikiLink" href="https://www.cideas.us/cgi-bin/twiki/view/Main/CiGroup">CI</a> mirror of the u-boot-denx mirror and then put our changes in our <a class="twikiLink" href="https://www.cideas.us/cgi-bin/twiki/view/Main/CiGroup">CI</a> mirror.
</p><p>
Current plans:
</p><ul>
<li> <code>/opt/u-boot-denx/u-boot/u-boot</code> - CVS + ARCH combined archive that tracks the official <a href="http://sourceforge.net/projects/u-boot" target="_top">u-boot</a> tree
<ul>
<li> Archive: <code>vanbaren@cideas.com--u-boot-denx</code> -&gt; <code>/opt/{archives}/u-boot-denx</code>
</li>
</ul>
</li>
</ul>
<blockquote><blockquote><pre><tt>
$ tla my-default-archive vanbaren@cideas.com--u-boot-denx
$ tla categories
u-boot-denx
$ tla branches u-boot-denx
u-boot-denx--mirror
$ tla versions u-boot-denx--mirror
u-boot-denx--mirror--1.1.2
</tt></pre></blockquote></blockquote>
<ul>
<li> Branch with the CI modifications
<ul>
<li> Archive <code>vanbaren@cideas.com--u-boot-ci</code> -&gt; <code>/opt/{archives}/u-boot-ci</code>
</li>
</ul>
</li>
</ul>
<p>
</p><h3><a name="Creating_an_Archive_for_CI_Modif"> </a> Creating an Archive for CI Modifications </h3>
<p>
Based on <a href="http://www.cideas.us/doc/tla-doc/html/elementary-branches.html" target="_top">Elementary Branches</a>
</p><blockquote><pre><tt>
tla make-archive vanbaren@cideas.com--u-boot-ci /opt/{archives}/u-boot-ci
tla my-default-archive vanbaren@cideas.com--u-boot-ci
tla archive-setup u-boot-ci--vanbaren--0.1
# Create/populate a branch (normally would leave off the "--base-0" to take top of the tree)
tla tag vanbaren@cideas.com--u-boot-denx/u-boot-denx--mirror--1.1.2--base-0 u-boot-ci--vanbaren--0.1
# Optional: check the operation
tla revisions --summary u-boot-ci--vanbaren--0.1
# Get a working copy
tla get u-boot-ci--vanbaren--0.1 u-boot
# (edit files -- or, in my case, apply 041104a.patch)
# Create a log file
vi `tla make-log`
tla commit
</tt></pre></blockquote>
<p>
</p><h3><a name="Mirroring_an_Archive_via_the_Web"> </a> Mirroring an Archive via the Web Server </h3>
<p>
</p><blockquote><pre><tt>
# The --listing is for HTML access (it has to come before the --mirror?)
tla make-archive --listing --mirror vanbaren@cideas.com--u-boot-ci /var/www/external/arch/u-boot-ci
tla archive-mirror vanbaren@cideas.com--u-boot-ci
# In the project tree, run the following to make a GNU-style changelog for the web page
tla changelog &gt; /var/www/external/arch/u-boot-ci/changelog
</tt></pre></blockquote>
<p>
</p><h3><a name="Updating_a_Mirrored_Archive"> </a> Updating a Mirrored Archive </h3>
<p>
</p><blockquote><pre><tt>
# This updates the already existing mirror vanbaren@cideas.com--u-boot-ci-MIRROR
tla archive-mirror vanbaren@cideas.com--u-boot-ci
# In the project tree, run the following to make a GNU-style changelog for the web page
tla changelog &gt; /var/www/external/arch/u-boot-ci/changelog
</tt></pre></blockquote>
<p>
</p><h3><a name="Accessing_the_Mirrored_Archive_v"> </a> Accessing the Mirrored Archive via HTTP </h3>
<p>
</p><blockquote><pre><tt>
# Reference: http://www.cideas.us/doc/tla-doc/html/introducing-yourself.html
$ tla my-id "Jerry Van Baren &lt;vanbaren@cideas.com&gt;"    # Obviously, fill in your name
# Register the remote archive for HTTP access
# Reference: http://www.cideas.us/doc/tla-doc/html/shared-and-public-archives.html
$ tla register-archive vanbaren@cideas.com--u-boot-ci http://www.cideas.us/arch/u-boot-ci
$ tla my-default-archive vanbaren@cideas.com--u-boot-ci
#
# Example archive information and get
# Notes
#  * The archive is remotely accessed via HTTP, not copied locally
#
$ tla categories
u-boot-ci
$ tla branches u-boot-ci
u-boot-ci--vanbaren
$ tla versions u-boot-ci--vanbaren
u-boot-ci--vanbaren--0.1
$ tla revisions u-boot-ci--vanbaren--0.1
base-0
patch-1
patch-2
patch-3
patch-4
$ tla get u-boot-ci--vanbaren--0.1 u-boot
* from archive cached: vanbaren@cideas.com--u-boot-ci/u-boot-ci--vanbaren--0.1--base-0
* patching for revision: vanbaren@cideas.com--u-boot-ci/u-boot-ci--vanbaren--0.1--patch-1
* patching for revision: vanbaren@cideas.com--u-boot-ci/u-boot-ci--vanbaren--0.1--patch-2
* patching for revision: vanbaren@cideas.com--u-boot-ci/u-boot-ci--vanbaren--0.1--patch-3
* patching for revision: vanbaren@cideas.com--u-boot-ci/u-boot-ci--vanbaren--0.1--patch-4
* making pristine copy
* tree version set vanbaren@cideas.com--u-boot-ci/u-boot-ci--vanbaren--0.1
</tt></pre></blockquote>
<p>
</p><h3><a name="Fetching_Changesets_from_the_Arc"> </a> Fetching Changesets from the Archive </h3>
<p>
</p><blockquote><pre><tt>
$ tla missing
patch-5
# See also http://www.cideas.us/doc/tla-doc/html/update-commit.html
$ tla missing --summary
$ tla cat-archive-log u-boot-ci--vanbaren--0.1--patch-5.patches
# For full details
$ ls u-boot-ci--vanbaren--0.1--patch-5
mod-dirs-index              new-files-archive  original-only-dir-metadata
mod-files-index             orig-dirs-index    patches
modified-only-dir-metadata  orig-files-index   removed-files-archive
# To get a copy of a specific changeset
$ tla get-changeset u-boot-ci--vanbaren--0.1--patch-4
# To update the local tree with the archive changes
$ tla update
</tt></pre></blockquote>
<p>
</p><h3><a name="Getting_a_Changeset_and_Applying"> </a> Getting a Changeset and Applying it </h3>
<p>
OK, Wolfgang has updated the official CVS archive.  I did a <code>cvs update</code> to get his changes and created a new arch changeset.  Fetch the changeset.
</p><p>
</p><blockquote><pre><tt>
# In the u-boot (source) directory:
tla get-changeset -A vanbaren@cideas.com--u-boot-denx u-boot-denx--mirror--1.1.2--patch-1 ../denx-patch-1
tla apply-changeset ../denx-patch-1/ .
</tt></pre></blockquote>
<p>
It appears <code>tla replay</code> should do this without the intermediate directory step, but it wasn't working for me.
</p><p>
</p><h3><a name="Updating_the_ARCH_mirror_from_so"> </a> Updating the ARCH mirror from sourceforge CVS </h3>
<p>
</p><pre><tt>
# In the u-boot-denx directory update to the latest CVS
cvs update -Pd
# Create a new changeset
vi `tla make-log`
tla commit
# Oh-oh, got a lot of errors 
#   "These files would be source but lack inventory ids"
# and
#   "These explicit ids have no corresponding file:"
# ...files were added and deleted.  I piped the output to a
# file and then turned it into a script to do tla add/delete
# on the files in question.
tla commit 2&gt; ,,x
vi x # prepend lines with new files with tla add
     # prepend deleted files with tla delete and edit to transform
     # the ID files to the now gone original file
. ,,x  # run the script
tla commit 2&gt; ,,x
# OK, files in the new subdirectories were not added.
#   Do another round of creating ,,x and add them
. ,,x
vi `tla make-log`
tla commit
</tt></pre>
<p>
</p><h3><a name="GNU_style_Changelog"> </a> GNU-style Changelog </h3>
<p>
To automatically create a GNU-style changelog, very handy for figuring out what is in the various patches.
</p><blockquote><pre><tt>
tla changelog
</tt></pre></blockquote>
<p>
</p><h3><a name="Error_Botched_Invariant"> </a> Error: Botched Invariant </h3>
<p>
I attempted to check for changes and got an error.
</p><p>

vanbaren@dellserver:/opt/u-boot-ci/u-boot$ tla changes
* looking for vanbaren@cideas.com--u-boot-ci/u-boot-ci--vanbaren--0.1--patch-9 to compare with
* comparing to vanbaren@cideas.com--u-boot-ci/u-boot-ci--vanbaren--0.1--patch-9
/home/asuffield/arch/dists/tla/tla-1.3/src/tla/libarch/invent.c:916:botched invariant
    *a &lt; *b
PANIC: exiting on botched invariant

</p><p>
Ran <code>strace tla tree-lint</code> to find the breakage point
</p><p>
</p><blockquote><pre><tt>
lstat64("./tools/updater/utils.c", {st_mode=S_IFREG|0644, st_size=2986, ...}) = 0
open("./tools/updater/.arch-ids/utils.c.id", O_RDONLY) = 4
read(4, "Jerry Van Baren <vanbaren @cideas="" 1024="74" read(4="" 950="0" close(4="0" ./{arch="" {st_mode="S_IFDIR|0755," st_size="4096," lstat64="" ./{arch}/{arch="" 0xbfffd9fc="-1" enoent="" (no="" such="" file="" or="" directory="" .="" 63/home/asuffield/arch/dists/tla/tla-1.3/src/tla/libarch/invent.c="63" 916="" 3916="3" :="" 1="1" botched="" invariant\n="" ,="" 22botched="" invariant="" )="22" write(2="" *a="">&lt; *b", 7*a &lt; *b)                  = 7
write(2, "\n", 1
)                       = 1
write(2, "PANIC: ", 7PANIC: )                  = 7
write(2, "exiting on botched invariant", 28exiting on botched invariant) = 28
write(2, "\n", 1
)                       = 1
exit_group(2)                           = ?
</vanbaren></tt></pre></blockquote>
<p>
It isn't clear why it is trying to open <code>{arch}/{arch}</code>
</p><p>
Hmmm, it turns out there was a really funny directory name (8 bit characters) that was messing up tla.
</p><p>
</p><h3><a name="Removing_http_www_gnu_org_softwa"> </a> Removing <a href="http://www.gnu.org/software/gnu-arch/" target="_top">ARCH</a> artifacts </h3>
<p>
To remove arch artifacts from the directory tree (start over from scratch):
</p><blockquote><pre><tt>
rm -rf \{arch\}/ ; find . -name .arch-ids -exec rm -rf \{\} \;
</tt></pre></blockquote>
Note that you will also want to clean out
<ul>
<li> The subdirectory under your archive directory (<em>e.g.</em> <code>/opt/{archive}/&lt;archive-name&gt;</code>)
</li>
<li> Your =~/.arch-params/=locations/&lt;archive-name&gt;
</li>
</ul></div>
<!---->
<!---->
<p>
</p><div class="twikiTopicInfo"><span class="twikiRevInfo twikiGrayText">Revision: r1.22 - 07 Apr 2005 - 22:44 - <a class="twikiLink" href="https://www.cideas.us/cgi-bin/twiki/view/Main/JerryVanBaren">JerryVanBaren</a></span></div>
<div class="twikiTopicFooter"><span class="twikiLeft"><span class="twikiHomePath"><a class="twikiLink" href="https://www.cideas.us/cgi-bin/twiki/view/Sacsiii/WebHome">Sacsiii</a>  <span class="sep">&gt;</span> <a class="twikiLink" href="https://www.cideas.us/cgi-bin/twiki/view/Sacsiii/DeveloperLogBooks">DeveloperLogBooks</a> &gt; <a class="twikiLink" href="https://www.cideas.us/cgi-bin/twiki/view/Sacsiii/LogJerryVanBaren">LogJerryVanBaren</a> <span class="sep">&gt;</span> UsingArch </span></span></div></div></div><div class="twikiBottomBar"><div class="twikiBottomBarContents"><span class="twikiGrayText">Copyright © 1999-2005 by the contributing authors. 
All material on this collaboration platform is the property of the contributing authors. <br> 
Ideas, requests, problems regarding TWiki? <a href="mailto:vanbaren@cideas.com?subject=TWiki%20Feedback%20on%20TWiki.WebBottomBar">Send feedback</a>
</span></div></div>
</body></html>