On Sep 28, 2013, at 8:12 AM, Brice Goglin <brice.gog...@inria.fr> wrote:
>> Let's go through the use cases of what we want: >> >> 1. "make dist" in a developer's git clone. This should make a "hwloc-<git >> describe>.tar.*. > > This is actually the critical point, see below. > >> 2. make a nightly snapshot tarball. The more I think about this, the more I >> think it's the same as #1, right? > > Yes, that's why I didn't understand why the create_tarball script also > modified VERSION to add git describe. These changes should be either > entirely outside of make dist (if we want git describe for nightly but > not for make dist) or entirely inside make dist (if we want for both). Agreed. Let's have distscript.csh be the one that sets the git-describe value in VERSION (more below). >> 3. make a release tarball, "hwloc-major.minor.releasegreek.tar.*". >> >> Are these the three (or two, if #2 is the same as #1) use cases we want? If >> so, I can see about making the code simpler -- e.g., I didn't know about >> overriding the VERSION Makefile macro trick... > > Changing VERSION on the command-line doesn't change the lstopo > --version, so it may not be what we really want. Also, if changing the > suffix is just a sed on VERSION file before autogen or configure, it's > fine too. > > This all depends on what we really want for (1). > * If we don't do (1), we can remove tons of lines of code from the > configury and just have the nightly and release scripts modify VERSION > before running autogen. Easy. > * If we do (1), that needs much more work. I'm not sure I agree. Let me review the 3 scripts and what each does (and why): 1. config/distscript.csh: - Called by "make dist[check]" - Does 3 main things: a) Sets git-describe value in VERSION file (but only if snapshot=1) b) Generates/copies doxygen output files to the dist tree --> We wanted to not require users to have doxygen --> We also wanted to ship final doxygen output in tarballs --> This created quite a bit of complexity in itself c) Get new config.guess and config.sub files from git.savannah.gnu.org --> This code is from when GNU Autotools releases were few and far between; it may not be necessary any more. We might well be able to just remove this code and still be fine. 2. contrib/nightly/make_snapshot_tarball: - Invoked via cron on the build machine - Very specifically written to interact with the web download tree - Generally does the following: a) Gets a new git clone (into a unique directory) b) Compares output from "git describe ..." to latest_snapshot.txt c) If they're the same, exit 0 --> If there are no commits since last tarball, no need to do anything d) Run autogen, configure, make distcheck. e) Move resulting tarballs to the web download directory e) Re-generate md5sums.txt/sha1sums.txt 3. contrib/dist/make_dist_tarball: - Invoked manually by a human when making releases - Generally does the following: a) Check versions of GNU Autotools --> To ensure to use *the same* versions of the Autotools for an entire release series b) Update VERSION file with the release date c) Run autogen + configure, build doxygen docs, build README, run make distcheck d) Remove "greek" value from VERSION and run c) again > I actually don't care much about (1), I am used to tarballs without the > SVN revision suffix (not sure why I didn't always get that suffix). I > agree that it's convenient to have the suffix for developer builds (when > you want to compare several of them, when you distribute that tarball > for some reason, etc). But maybe the nightly script is enough for these > cases? Does it work with locally modified trees? Or trees that contain > additional commits? No, it gets a fresh clone every night. The intent was that this script runs in an automated fashion, and sometimes the build fails. So it leaves the failed clone/build in a place where a human can go post-mortem the tree and figure out why the build failed. But to be fair, this hasn't been a big issue for hwloc (it has with Open MPI -- e.g., "make dist" works for developers, but it failed on the build machine. So it was really helpful to be able to login as mpiteam@build_machine and go look into the build tree and see WTF happened). It also specifically interacts with the web download tree. To be clear: this script is all about deciding whether to make a new snapshot, and if so, run "make dist" to do so, and then copies to results to the web tree. The core of this is: - *all* use cases run "make dist"; config/distscript.csh is used by all of them - make_dist_tarball is some additional accounting surrounding "make dist" - make_snapshot_tarball is some additional (different) accounting surrounding "make dist" All that being said, I think 2 immediate improvements/simplifications are: - have make_snapshot_tarball not set "git describe" in VERSION - remove the config.guess/config.sub fetching from distscript.csh I'll commit those now. However, for the other cases, I think that doxygen is our main culprit for complexity. :-\ Meaning: I'm now not sure how to make them simpler... Thoughts? > By the way, maybe move that script back from nightly to dist. Sure; I don't have much of an opinion here. >> Do you have a favorite git commit emailing script? We can probably use the >> generic github "WebHook URLs" hook (at the top of the list) and host the >> diff-emailing script at IU (or anywhere, actually). > > I use the attached one for Open-MX and KNEM. Not sure I tried many of > them, but this one worked fine so far. It generates messages such as: > > http://lists.gforge.inria.fr/pipermail/knem-commits/2013-July/000465.html > I don't think it truncates the diff yet. We may want some separators > between commits too. All this shouldn't be hard to configure. It looks like github sends an HTTP post with the following information in it: https://help.github.com/articles/post-receive-hooks Do you have an easy place to host your script to try it out? Or do you want to wait for IU to host it (i.e., tomorrow)? -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/