Different approaches are currently in the works
- Native Win32 port.
See Johannes Port for the Win32 branches of hackerlab, tla and package-framework (to adjust for cross compilation).
Lode Leroy's path compression functions using a mapping onto numbers to use with Cygwin (http://www.geocities.com/lode_leroy/arch/).
It seems to me that this approach is more usable because it allows you to manipulate the checked out trees with normal file utilities from cygwin and also with normal windows file managers. You have to set the default file open mode to binary to make it work correctly. However tla is very slow on cygwin.
Lode Leroy's path compression functions using DOS 8.3 style filenames to use with Cygwin (http://www.geocities.com/lode_leroy/arch/).
John Meinel's cygwin version, using short paths in working directories. The code is available in john@arbash-meinel.com--tla-2004.
A binary version is available at http://ct.radiology.uiowa.edu/~jfmeinel/tla-short-path/. There are 3 files there. The first is just a compressed form of the executable, as compiled on cygwin. If you are running cygwin, you should be able to download this, and simply decompress it and put it into /usr/bin. The tarball and the zip file contain the same data, which should be the executable, along with all the other dependent executables and libraries. If you unpack these, and put the files into your path, you should be able to run tla.
- This method filters the input and output of tar to generate short paths in the working directory, while making them the same in the archive. This also has the advantages that the paths are generally short (meaning you can still use Explorer), and performance is improved. It's not as fast as tla on linux, but that is a windows and cygwin issue (forking is more expensive on windows.) The other advantage over Lode's cygwin port is that it doesn't require custom versions of diff, diff3, patch, and tar. Lode's port has the advantage that it compresses the paths more than John's does. The dirname code compresses all directories to 1 character, while the dos8.3 treats them all as 11 characters. John's port leaves them as long as each individual portion. This mostly only causes problems during the 'get' phase, as there are some long temporary paths created.
Compiling and running tla on MSFU (Microsoft Services For Unix). (Win32 SFU Compile)
The plan currently is to merge the first two into something that is usable across all win32 systems starting at Win95. If you want to help with this effort, please see tla win32 todo.
Arch binaries for win32
Lode Leroy offers some for cygwin http://www.geocities.com/lode_leroy/arch/. Please see Cygwin Users.
Johannes Berg offers some native ones, see Johannes Port.
Notes on arch win32
Arch was never intended to run on a non POSIX system. Don't expect to have a full-blown arch on your Microsoft computer.
A native code port is not the only means of using Arch in a Windows environment. In particular, Samba mounts allow Linux hosted source trees to be accessed, and judicious use of SSH clients allow Arch commands to be invoked with a double-click. A future release of the Setview scripts will try to facilitate this approach.
- A fork of this approach is to use a Linux filesystem driver. Some of my notes investigating this option are on Ext2Windows.
Other programs that you need
POSIX shell
Really only needed for building, you can use cmd.exe for daily use if you want to. These POSIX compliant command line interpreters are available for WIN32.
zsh, it is available together with the unxutils (in the unxupdates package)
diff, patch, tar and others
Arch depends on these tools, they have to be available in your path:
tar and gzip from the unxutils do not interoperate, so you cannot use them to create a .tar.gz on the fly.
- This is an item that must be fixed, until then you can find a wrapper in my tla tree (that so far can only extract). -- Johannes Berg
By now we have ported all the required tools (besides diff3 I think) to use hackerlab.
Microsoft Services For Unix
Microsoft provides gratis SFU (Services For Unix), visit http://www.microsoft.com/windows/sfu/default.asp for more information.
Build issues
On cygwin the default shell (/bin/sh) is a the lightweight shell ash. This shell does not implement all of the Posix standard, specifically it doesn't implement $(()) or expanding ~/. So to run make test and have it succeed, simply copy /bin/bash.exe over /bin/sh.exe. Note that if you re-install (or upgrade) ash in the future, you will need to do this again.
Doesn't "make SHELL=/bin/bash" work? It does on Solaris, where sh isn't bash. No, it does not, because what fails is the test scripts and these are run using #!/bin/sh, so it won't help.
- The option "--config-shell bash" should fix this
Good design! http://soft-toys.wyger.com http://soft-toys01.wyger.com http://parfume.wyger.com http://parfume01.wyger.com http://hotsources.wyger.com http://hotsouces01.wyger.com http://uniforms01.wyger.nl http://uniforms02.wyger.nl http://uniforms03.wyger.nl http://uniforms04.wyger.nl http://z00.wyger.com http://z01.wyger.com http://z02.wyger.com http://z03.wyger.com http://z04.wyger.com http://z05.wyger.com http://z06.wyger.com http://z07.wyger.com http://z08.wyger.com http://z09.wyger.com http://z10.wyger.com http://z11.wyger.com http://z12.wyger.com http://z13.wyger.com http://z14.wyger.com http://zt00.wyger.com http://zt01.wyger.com http://zt02.wyger.com http://zt03.wyger.com http://zt04.wyger.com http://zt05.wyger.com
