Thursday, December 1, 2011
Saturday, September 3, 2011
1) I used John Albin's instructions on converting a Subversion repository to Git. It provided the most complete way of doing it. I had to do some detective work to figure out the names and emails of some previous committers, but in the end I had a repository with all the data I wanted including all branches and tags.
2) Getting all branches to the remote was not obvious, so I just did some rectangle editing in Emacs:
git checkout AUTOCONF_TWO git checkout CONSTANTS git checkout FLOATSUSPEND git checkout HEAD -> origin/master git checkout INLINEPC git checkout UNSAFE_OPTS git checkout WAIF git checkout WROGUE git checkout avalon181 git checkout demacrofication git checkout demacrofication@233 git checkout experimental_automake git checkout experimental_reorg git checkout master git checkout pavel3) Then I pushed everything to Google Code:
git push googlecode --all4) I found the tags didn't make it up either. This was another step:
git push --tagsThe one thing I don't like, so far, is I have to maintain a .netrc file with my Google Code password, and when I git clone the repository I have to edit out my username@ from the URL. But after that everything seems to work fine, though git push just returns "Repository up-to-date" without telling me anything happened. So, from the top:
# clone repository created from John Albin's instructions git clone ~/new-bare.git waverous # add the new remote per Google's instructions git remote add googlecode https://code.google.com/p/waverous # check out all branches from my local repository git checkout AUTOCONF_TWO git checkout CONSTANTS git checkout FLOATSUSPEND git checkout HEAD -> origin/master git checkout INLINEPC git checkout UNSAFE_OPTS git checkout WAIF git checkout WROGUE git checkout avalon181 git checkout demacrofication git checkout demacrofication@233 git checkout experimental_automake git checkout experimental_reorg git checkout master git checkout pavel # push all branches to Google Code git push googlecode --all # push all tags to Google Code git push --tags # Clone and push the wiki on Google Code as a new Git repository git clone https://code.google.com/p/waverous.wiki cd waverous.wiki svn export --force http://waverous.googlecode.com/svn/wiki . git add . git commit -m "Conversion of Waverous's wiki documentation to Git." git push origin masterOverall this was a dumb brute force approach, but it got everything done.
Wednesday, August 3, 2011
Now I've returned to an issue I saw a few months back:
bash-3.2$ autoheader autoheader: warning: missing template: BZERO_IN_STDLIB_H autoheader: Use AC_DEFINE([BZERO_IN_STDLIB_H], , [Description]) autoheader: warning: missing template: FSTAT_WORKS_ON_FIFOS autoheader: warning: missing template: NEED_BSDTYPES_H autoheader: warning: missing template: NEED_MALLOC_H autoheader: warning: missing template: NEED_MEMORY_H autoheader: warning: missing template: NEED_SELECT_H autoheader: warning: missing template: POLL_WORKS_ON_FIFOS autoheader: warning: missing template: POSIX_NONBLOCKING_WORKS autoheader: warning: missing template: SELECT_WORKS_ON_FIFOS autoheader: warning: missing template: UNDEF_IO_IN_STROPTS_H autoheader: warning: missing template: USE_OWN_STRING_H autoheader: warning: missing template: _HPUX_SOURCE autoheader: warning: missing template: _NEXT_SOURCE autoheader: warning: missing template: const
I know there are some deprecated macros lurking in configure.ac and I haven't done anything about it yet; high time I took care of this. I am going to strip support for NeXT, SGI and a few other relics too.
Saturday, July 30, 2011
While reorganizing everything I had to think about how to handle 'pgperf', the customized version of GNU gperf that shipped with the original LambdaMOO server. gperf is a "perfect hash generator" that creates a hashing function and a lookup function for the LambdaMOO programming language. It generates the file 'keywords.c' in the project. LambdaMOO came with a hacked version because in 1997 gperf didn't support case-insensitive lookup tables, and the original author of LambdaMOO added this feature and included it with the project.
The idea for the project reorganization I have is at the top level of the Waverous project you will see the standard directories you see in a lot of open source projects:
bash-3.2$ ls -l total 376 -rw-r--r-- 1 swain swain 145516 Jul 29 19:57 ChangeLog -rw-r--r-- 1 swain swain 8605 Jul 29 19:47 LICENSE -rw-r--r-- 1 swain swain 343 Jul 29 19:44 Makefile -rw-r--r-- 1 swain swain 10770 Jul 29 19:47 README -rw-r--r-- 1 swain swain 2907 Jul 29 19:47 README.Minimal -rw-r--r-- 1 swain swain 10121 Jul 29 19:47 README.rX drwxr-xr-x 7 swain swain 238 Jul 29 22:40 databases drwxr-xr-x 8 swain swain 272 Jul 29 19:49 doc drwxr-xr-x 17 swain swain 578 Jul 30 09:19 examples drwxr-xr-x 5 swain swain 170 Jul 29 19:46 extensions drwxr-xr-x 5 swain swain 170 Jul 29 20:00 extras drwxr-xr-x 148 swain swain 5032 Jul 30 09:38 src drwxr-xr-x 8 swain swain 272 Jul 29 19:45 toolsMy goal is to write a Makefile.am that handled the subdirectories that formed "standalone" projects: src (the server), doc (the manual and Doxygen docs), and extras/pgperf.
While waiting for my wife's oil change at the dealership (yay free wi-fi!) I tried to compile 'pgperf' as shipped with the project. Compilation failed due a dependency on varargs.h, "gcc" telling me it was obsolete. This brought to mind a task I've thought about a number of times but hadn't written down: drop pgperf for GNU gperf IFF gperf now supported case-insensitive lookup tables.
GNU gperf added support in 2002 with the flag --ignore-case, so after an afternoon of tinkering, regenerating files, recompiling and testing I've gotten everything working just fine with gperf. I've dropped pgperf entirely from SVN.
On a side note, working with Subversion is so painfully slow now -- I've been using Git for the past six months -- that I'm going to switch the project to Git quite soonish now that Google Code supports Git.
Thursday, July 14, 2011
Someone mentioned my Waverous project on the MOO-talk mailing list back in December 2010, and a followup poster made a disparaging remark about FUP (ext-FUP is the other extension to the server for file manipulation, and they have very different ways of doing it).
I was not sure I had the most recent version of File I/O, which I downloaded from the MOO Resources site. Ken Fox created it originally, but now discourages its use. The person who patched and released it later was Andy Bakun, working at yelp.com these days; he was kind enough to reply to my email that File I/O 1.5p1 was the most recent version to his recollection.
As of now, the version in HEAD of the repository has the configure option --with-fileio and will try to compile File I/O into the server, but it fails quite spectacularly; probably because it won't compile as C++. I have to pick through the errors and fix it up. (addendum, July 2011: it works just fine now. It did need some tweaking so g++ would compile it).
The other task I need to remember -- I should file a ticket -- is if File I/O is compiled in, then there has to be a target directory created to store the files manipulated by the MOO server. The original install instructions call for this directory (simply called "files") to be made in the server directory. I'll have to figure out how to handle this when I get around to developing a proper "install" target to "make."
Thursday, July 7, 2011
I've had troubles for weeks trying to commit changes, getting some 405 error back from Google Code; but I thought today my repository copy might be borked so I checked out a new one and was able to do all my commits just fine. Tho I'm at a library, so that might have made a difference (this 405 issue seems to happen when I'm in a hotel).
Tuesday, June 14, 2011
There are three files with no licenses at all, and those will have to wait for another day. The good news is there's no GPL code being compiled into the server code that I can find. I think anything that is compiled into the server has to be compatible with Xerox's licensing terms, and I doubt the GPL fits.
I've been doing some tinkering with the autoconf stuff too; I changed the configure options from --enable-wooblam to --with-wooblam, which seems more natural-sounding to me.
And I've filed a few tickets. It's progress.
Wednesday, February 2, 2011
Meanwhile... the need for binary distributions of Waverous rears its head. I hadn't really thought about it beyond creating an RPM, and perhaps a DMG.