Reworking build.xml

Jeff Allen <[email protected]>
Newsgroups gmane.comp.lang.jython.devel
Message-ID <[email protected]>
There are swathes of build.xml I've never really understood. Many are 
bits that have to work to make a release (full-build). A lot of this is 
good, but somewhat buggy, and it has been "particularised" to releases 
in the past, by which I mean what might have been general-purpose logic 
has become hard-coding of the answer for that particular release, 
presumably to work around some shortcoming in the logic.

It is difficult to debug the full-build target because it checks out a 
fresh copy of the repo and works on that. This is slow, and in my 
experience frail. It also means that when testing some hacky idea, it 
(or parts of it) have to be pushed to the official repo. I think this is 
how the particularisations got into the official copy.

So I'm trying the idea of full-build without the checkout. It's quite a 
big change to build.xml. Building a release from the directory where you 
do development is a bad idea, I know, because there are always extra 
files lying around that can get incorporated, or might be necessary to 
make it work, but you didn't check in. For the same reason, it is good 
routinely to have an integration workspace to which you pull before you 
push: with git it is a topic branch of your personal repo.

I think that for a release, one would always check out to a clean 
workspace, so it is not necessary to have the script do it. I have 
incorporated tests to warn us when it is not clean (hg status, etc.), 
and then one can only build a "SNAPSHOT". Apart from these tests, the 
whole script gets somewhat simpler. Or maybe I just understand it better.

I may have missed an important reason why we did the checkout elsewhere: 
do say if you know it.

As always, this is turning up lots of things I never knew or noticed. 
E.g. have you noticed "ant clean" doesn't do a complete job these days? 
Not for me, anyway. I'm left with some editor droppings that have 
accumulated in my build/dist directories. They prevent a complete clean 
because of https://ant.apache.org/manual/dirtasks.html#defaultexcludes . 
And I have figured out the intended template processing of README.txt so 
it need not be kept in sync manually.

I just thought I'd say on the list what I'm up to.

-- 
Jeff Allen
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.