NAME
lab 99 - catching up with inferno-os
NOTES
I had fallen way behind in keeping acme-sac code
up to date with inferno-os. I tried to correct that this
week by merging changes and adding files from inferno-os.
I wrote a script,
part of this labs files, to check the differences
between inferno-os and acme-sac.
I'm hoping by using this script I'll stay up to date
with inferno-os as changes are made.
The script compares sub-trees, such as the limbo
source code hierarchy, the C source code, the manual pages,
and the /lib directory. It prints out commands to
diff the files or copy the file over.
% inf
inferno synchronization:
appl show changed limbo files
sys show changed C source files
man show changed man pages
lib show changed /lib files
cmd show changed sh scripts below /dis
update refresh file tree info for local and remote
adiff adiff selected file with inferno-os equivalent
diff diff selected file with inferno-os equivalent
missing show files missing from local tree
added show files added to local tree
% inf update
% inf sys
diff -u /sys/emu/port/win-x11a.c /n/D/inferno-os/emu/port/win-x11a.c
cp /n/D/inferno-os/emu/port/win-x11a.c /sys/emu/port/win-x11a.c
%
There is a short list of directories I did not synchronize
because I know every file has changed; I consider these a fork,
though the changes to charon are not dramatic,
/appl/acme/ /appl/charon/ /acme/
There is a list of directories acme-sac has removed
from the inferno-os hierarchy:
/FreeBSD/ /libbio/ /utils/
/Hp/ /libdynld/ /appl/alphabet/
/Inferno/ /libkern/ /appl/collab/
/Irix/ /liblogfs/ /appl/demo/
/NetBSD/ /libnandfs/ /appl/ebook/
/OpenBSD/ /libprefab/ /appl/spree/
/Plan9/ /libtk/ /appl/tiny/
/asm/ /tools/ /appl/wm/
And finally there is a sub-tree we need to actually synchronize:
Linux appl/grid lib libkeyring libmp module
Nt appl/lib lib9 libmath libsec
appl appl/math libdraw libmemdraw include
appl/cmd emu libinterp libmemlayer man
After comparing these sub-trees I built a list of files
that were intentionally
removed and files locally
changed.
Any file found "missing", where inferno-os added
new functionality, was copied over. Files that were
not marked as locally changed but nevertheless contained changes
were merged, usually overwritten with the latest from inferno-os.
There is also a list of files
added to acme-sac apart from anything
below /acme.
I found it useful to use the side-by-side
diff functionality from
lab 95.
I added some simple
interactive merge functionality that worked if you start from the
end of the file and stepped backwards through the diffs
using a PrevDiff command on the adiff output and calling
the command Merge to apply the currently highlighted change.
The implementation of this Merge command was pretty simple
because it involved just copying the selected text from the
source file over to the target. Given acme's filesystem interface
this is literally a file copy,
cp /mnt/acme/$b/rdsel /mnt/acme/$a/wrsel
The PrevDiff commands does the work of setting up
the selected texts correctly, properly handling the case
of added, changed, or deleted text.
The list of files in the changed list should be reduced. Some of these are changes that could be pushed to inferno-os. E.g., diff adds the -u flag, os has changes from rog implementing host file name translation.
Some files will need to be continually merged, such as the man page indices.
The list of files and directories removed are mostly just functionality either specific to running inferno as a native os, or the Tk functionality. There shouldn't be anything there people would really miss in an acme-sac environment. Though if there is let me know.
FILES
inferno-lab/99