Using ARCH

Trivia:

Creating a new U-Boot mirror archive with ARCH


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

U-Boot problem files for ARCH import

Due to violation of ARCH naming conventions, ARCH has problems importing the following U-Boot files/directories:


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
...for now, I'll simply ignore them. The problem appears to be that these are directories but have a .so extension. To ignore them, I tried to use tla delete <file> on the above files but that didn't work. Instead, I renamed them with a leading "," (arch ignores files with leading commas).

Extracting a working copy of U-Boot from ARCH

To get a working copy and put it in the new subdirectory u-boot


vanbaren@dellserver:~/tmp/u-boot$ tla get u-boot-denx--mirror--1.1.2 u-boot

We want to create a CI mirror of the u-boot-denx mirror and then put our changes in our CI mirror.

Current plans:

  • /opt/u-boot-denx/u-boot/u-boot - CVS + ARCH combined archive that tracks the official u-boot tree
    • Archive: vanbaren@cideas.com--u-boot-denx -> /opt/{archives}/u-boot-denx

$ 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
  • Branch with the CI modifications
    • Archive vanbaren@cideas.com--u-boot-ci -> /opt/{archives}/u-boot-ci

Creating an Archive for CI Modifications

Based on Elementary Branches


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

Mirroring an Archive via the Web Server


# 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 > /var/www/external/arch/u-boot-ci/changelog

Updating a Mirrored Archive


# 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 > /var/www/external/arch/u-boot-ci/changelog

Accessing the Mirrored Archive via HTTP


# Reference: http://www.cideas.us/doc/tla-doc/html/introducing-yourself.html
$ tla my-id "Jerry Van Baren <vanbaren@cideas.com>"    # 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

Fetching Changesets from the Archive


$ 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

Getting a Changeset and Applying it

OK, Wolfgang has updated the official CVS archive. I did a cvs update to get his changes and created a new arch changeset. Fetch the changeset.


# 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/ .

It appears tla replay should do this without the intermediate directory step, but it wasn't working for me.

Updating the ARCH mirror from sourceforge CVS


# 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> ,,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> ,,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

GNU-style Changelog

To automatically create a GNU-style changelog, very handy for figuring out what is in the various patches.


tla changelog

Error: Botched Invariant

I attempted to check for changes and got an error.

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 < *b PANIC: exiting on botched invariant

Ran strace tla tree-lint to find the breakage point


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 < *b", 7*a < *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)                           = ?

It isn't clear why it is trying to open {arch}/{arch}

Hmmm, it turns out there was a really funny directory name (8 bit characters) that was messing up tla.

Removing ARCH artifacts

To remove arch artifacts from the directory tree (start over from scratch):


rm -rf \{arch\}/ ; find . -name .arch-ids -exec rm -rf \{\} \;
Note that you will also want to clean out
  • The subdirectory under your archive directory (e.g. /opt/{archive}/<archive-name>)
  • Your =~/.arch-params/=locations/<archive-name>

Revision: r1.22 - 07 Apr 2005 - 22:44 - JerryVanBaren
Copyright © 1999-2005 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback