From: Siddharth P. <si...@cs...> - 2008-03-17 05:37:36
|
Hi Ted, Actually, I think it is "more standard" for the tar-gz to unpack to a directory with a version number attached to it. I'm not sure where I read this, but I see this trend with most well-maintained open source packages -- i.e. ungzipping + untarring a package usually results in a directory *with* the version number attached. Indeed, this directory is different from the CVS working directory. And I think it should be... since the CVS working directory is really just the development directory, while the released version directory is more like a snapshot of the CVS working directory at the time of the release. So, I think it is better to have the version number attached to any released versions (so as to avoid any mixup with the CVS directory or any other released versions). Also, sometimes (though this is not true for any of our projects) there are some things in the CVS working directory required only by the developers, and are not put into the official releases. In such cases, the "make dist" target in the Makefile is appropriately modified to take care of such situations. For our projects... WordNet-Similarity and TargetWord, I make releases by running these commands from within my CVS working directory: (First, optionally, 'cvs commit' all local changes) perl Makefile.PL make make test (or test_all) make dist mv WordNet-Similarity-2.03.tar.gz /home/sid/ make distclean (And then a "cvs update" to make sure the above steps didn't change anything that's been committed. Then, a "cvs tag v2_03" to tag the released version in the CVS repository... though usually I'd do the "cvs tag" only after the release has been put out on CPAN, etc.) The 'make dist' target takes care of all the 'CVS' directories automatically. But it is always best to then unpack the generated distribution and check it thoroughly before releasing. If things are missing or not as expected, then the right thing to do would be to to fix the Makefile 'make dist' target and redo the above steps. Anyway... this is what I've been doing for WordNet-Similarity, and I've been under the impression that that's the standard way to do it. But there could be situations that I'm unaware of, where cvs export would be the better way to go. I guess we should settle on a "proper" release process, and put it up on a website so we don't forget later. Thanks! -- Sid. On Sun, 2008-03-16 at 23:30 -0500, Ted Pedersen wrote: > Hi Sid, > > Yes, I think 'make dist' would keep me from forgetting to update > MANIFEST, which is something I'm well known for doing. :) The only > reason I don't use 'make dist' is kind of strange, and maybe it's good > we talk about this.... > > Normally when I release something on CPAN I think that I pack up the > tar file with a version number on it, but then when the user unpacks > it goes into a name without a version number. I think make dist gives > you a version number form by default. > > In other words, what I did with SenseRelate was ... > > tar -cvf WordNet-SenseRelate-AllWords-0.07.tar WordNet-SenseRelate-AllWords > > So the user unpacks to WordNet-SenseRelate-AllWords....but, the tar > file has 0.07 on it so CPAN can index it properly.... > > I think with make dist you would unpack to > WordNet-SenseRelate-AllWords-0.07, and the only thing I don't like > about that is the the directory name is not the same as what we use in > CVS, which is just WordNet-SenseRelate-AllWords....and I thought that > was important because .... I'm not sure how I got that idea. > > So ... As I write this I start to feel like I'm sounding crazy. :) > > Anyway, I think it would probably be helpful to standardize these > release steps, and I think you are right 'make dist' is definitely > much more standard, and avoids lots of problems with getting tar file > names wrong (when you key in the tar file name manually as I do). > > Do you export from CVS before you do all this, or do you do that from > within CVS (and does make dist know not to include the CVS files?) > > Thanks! > Ted > > On Sun, Mar 16, 2008 at 9:47 PM, Siddharth Patwardhan <si...@cs...> wrote: > > I usually, do a 'perl Makefile.PL', 'make', 'make test' and then > > 'make dist' to generate the tar.gz. I *think* that's the more standard > > way of creating distributions. > > > > -- Sid. > > > > > > > > On Sun, 2008-03-16 at 18:33 -0500, Ted Pedersen wrote: > > > The very last steps before any release are > > > > > > 1) run make test, to make sure test cases are all still working > > > 2) update MANIFEST by running make manifest > > > 3) tag the version in cvs via "cvs -q tag v0_0X', where X is the version number > > > > > > Then, when doing the release, make sure to export from cvs, rather > > > than checkout. > > > If you just checkout you will include CVS directories in the release, > > > which is not > > > what we want. > > > > > > And then, upload to CPAN and sourceforge! > > > > > > That's all it takes at the very end... > > > > > > Thanks! > > > Ted > > > > > > > > > > |