Re: [hwloc-devel] git / nightly builds
Sorry for the delay in replying. On Sep 29, 2013, at 10:32 AM, Brice Goglinwrote: > Now why do we still need a call to git-describe in get_version.sh? Isn't > this script supposed to just read what distscript.csh did? (which would > mean that "if test -z "$HWLOC_SNAPSHOT_VERSION" is useless). Or do you > need that as a fallback for when we compile instead of doing make dist? > In one case, we force the snapshot by modifying VERSION (make dist), in > the other case we git describe at runtime (make). It would be good to > merge these two cases somehow. Basically, there's a (possibly artificial?) disparity between: 1. running "make dist" from a developer clone 2. pre-processing VERSION to put in the describe version and then running "make dist" (i.e., the make_*_tarball scripts) Specifically, VERSION in the repo has: snapshot=1 snapshot_version= Ie., snapshot_version is blank. Which is why get_version.sh will fill in the current "git describe" value if snapshot_version is blank. But you're right -- this is putting "git describe" in two places. What if VERSION in the repo has: snapshot=1 snapshot_version=gitclone And therefore get_version.sh always just uses the snapshot_version value (because it will never be blank). The downside of this is that "make dist" from a dev clone won't accurately represent the tree, but that's probably ok. *** If you're kosher with this, I'll remove that extra logic from get_version.sh. Maybe I'll make it error if "snapshot_version" is empty, or something. >> 2. contrib/nightly/make_snapshot_tarball: >> - Invoked via cron on the build machine >> [snip] > > Ok I didn't know that there was so website-specific things in that > script. I assumed it was mainly a make distcheck (if so, I would have > tried to reuse it in the regression testing tool). K. I think "make dist[check]" is the heart of everything (and the thing that is "re-used", so to speak everywhere); the rest is processing that we do for whatever reason that the tarball is being built. Any other thoughts on how we can simplify things? -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
Re: [hwloc-devel] git / nightly builds
On Sun, Sep 29, 2013 at 5:20 AM, Jeff Squyres (jsquyres)wrote: [snip] > The only branch that didn't have any tags at all was master, so I just > created a "dev" tag on master, and that was sufficient. Right, we plan to use the gitflow model in which master contains released code and a "develop" branch serves the role of the svn trunk or cvs head as the target for 99% of commits. Since as I understand it, "git describe" counts from the most recent tag, if we used git describe for tarballs we probably apply a tag to the develop branch which names the upcoming release. Perhaps "v1.7.3devel". Even if master is your development branch, applying a more descriptive tag is something you might consider. [snip] > That being said, when we tell users to get a nightly tarball (e.g., to get > a bug fix), my experience is that they don't know/care about the nightly > tarball numbering scheme: they always just get the most recent version. The advantage isn't only for the user. When somebody reports "I found a bug when trying nightly tarball .tar.gz" it seems useful to me to (without leaving my email client) know "that was 8 days ago and I *know* we fixed since then". With just a hash I am likely to defer my response until I have a moment to correlate the hash to a date. This is NOT a big deal, just an observation that having the date in the filename makes talking about "it" more meaningful. Who knows, maybe we'll just end up using git describe for its simplicity. -Paul -- Paul H. Hargrove phhargr...@lbl.gov Future Technologies Group Computer and Data Sciences Department Tel: +1-510-495-2352 Lawrence Berkeley National Laboratory Fax: +1-510-486-6900
Re: [hwloc-devel] git / nightly builds
Le 29/09/2013 14:00, Jeff Squyres (jsquyres) a écrit : > Agreed. Let's have distscript.csh be the one that sets the > git-describe value in VERSION (more below) Ok thanks, much better. Now why do we still need a call to git-describe in get_version.sh? Isn't this script supposed to just read what distscript.csh did? (which would mean that "if test -z "$HWLOC_SNAPSHOT_VERSION" is useless). Or do you need that as a fallback for when we compile instead of doing make dist? In one case, we force the snapshot by modifying VERSION (make dist), in the other case we git describe at runtime (make). Itwould be good to merge these two cases somehow. > 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 Ok I didn't know that there was so website-specific things in that script. I assumed it was mainly a make distcheck (if so, I would have tried to reuse it in the regression testing tool). > 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... Yes, there's likely no way to simplify that much. Brice
Re: [hwloc-devel] git / nightly builds
On Sep 28, 2013, at 4:47 PM, Paul Hargrovewrote: > I am watching with intense interest, as GASNet will be moving to git on Nov 1. > Could you give me a pointer to where I can get copies all the scripts that > you guys use for nightly tarballs, commit emails and such? > I'll want to have look after you have all the wrinkles ironed out to your > satisfaction. FWIW, I think we're generally reviewing these scripts mainly because they seem to have become too complicated. Moving to adapt them to use git was probably the catalyst for the review; not really the reason. But the 3 scripts are located in the hwloc master branch (I just described them in my prior mail): config/distscript.csh contrib/nightly/make_snapshot_tarball contrib/dist/make_dist_tarball > FWIW: a viewpoint from somebody who has yet to actually try to implement his > ideas: > > We have PLANNED to script our nightlies to be named with a date stamp and 6 > or 8 chars of the SHA1. > The format would be something like PROJECT-BRANCH-20130928-12abcdef.tar.gz > Where BRANCH=v. for the UPCOMING release in most scenarios (but > could be a named feature branch like "oshmem") > That way directory listings would sort by branch and date (simple for mere > humans) while the SHA1 would allow fetching the corresponding version from > git. The full SHA1 would, of course, also be in a file in the tarball > (actual filename TBD). FWIW: I talked to Dave Goodell about this quite a bit before going with "git describe". I think I mentioned that our prior tarballs used the SVN r number, which therefore made it quite easy to order the tarballs; the git hash obviously doesn't provide this ordering. "git describe" provides a convenient mechanism, IMHO, and does all the work for you. It tells you exactly how many commits you are beyond the last tag on that branch. hwloc's tags conveniently imply exactly which branch you're on, so it all worked out (i.e., each release series has its own branch -- the 1.7.x releases are on the v1.7 branch, the 1.6.x releases are on the v1.6 branch, and so on). The only branch that didn't have any tags at all was master, so I just created a "dev" tag on master, and that was sufficient. Two other minor points contributed to my decision: 1. Dave indicated that both MPICH and other open source projects use the "git describe" scheme for their nightly tarballs 2. Using "git describe", I didn't have to muck with the date, branch, etc. > I don't think we consider "git describe" to be a useful naming mechanism for > nightlies, though for other snapshots it might be useful. > For RCs, we pan to tag something like "1.7.3RC" at the start of the RC cycle > to get "git describe" to give names containing "1.7.3RC--" which > make some sense at a glance, even though N is incremented with every commit > and may grow much higher than a contentional RC number would. Again, "1.7.3" > in this example is the UPCOMING release rather than the previous one. > > For a developer's "make dist" from a developer's clone, however, I think we > agree "git describe" is as good as anything else readily available. > > So, in short: I think our plan aligns with yours on scenarios #1 ("make dist" > by Jane Developer) and #3 (official releases), but we wanted something more > people-friendly for #2 (nightly tarballs). Fair enough. That being said, when we tell users to get a nightly tarball (e.g., to get a bug fix), my experience is that they don't know/care about the nightly tarball numbering scheme: they always just get the most recent version. -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
Re: [hwloc-devel] git / nightly builds
On Sep 28, 2013, at 8:12 AM, Brice Goglinwrote: >> 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-> 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
Re: [hwloc-devel] git / nightly builds
Jeff, I am watching with intense interest, as GASNet will be moving to git on Nov 1. Could you give me a pointer to where I can get copies all the scripts that you guys use for nightly tarballs, commit emails and such? I'll want to have look after you have all the wrinkles ironed out to your satisfaction. FWIW: a viewpoint from somebody who has yet to actually try to implement his ideas: We have PLANNED to script our nightlies to be named with a date stamp and 6 or 8 chars of the SHA1. The format would be something like PROJECT-BRANCH-20130928-12abcdef.tar.gz Where BRANCH=v. for the UPCOMING release in most scenarios (but could be a named feature branch like "oshmem") That way directory listings would sort by branch and date (simple for mere humans) while the SHA1 would allow fetching the corresponding version from git. The full SHA1 would, of course, also be in a file in the tarball (actual filename TBD). I don't think we consider "git describe" to be a useful naming mechanism for nightlies, though for other snapshots it might be useful. For RCs, we pan to tag something like "1.7.3RC" at the start of the RC cycle to get "git describe" to give names containing "1.7.3RC--" which make some sense at a glance, even though N is incremented with every commit and may grow much higher than a contentional RC number would. Again, "1.7.3" in this example is the UPCOMING release rather than the previous one. For a developer's "make dist" from a developer's clone, however, I think we agree "git describe" is as good as anything else readily available. So, in short: I think our plan aligns with yours on scenarios #1 ("make dist" by Jane Developer) and #3 (official releases), but we wanted something more people-friendly for #2 (nightly tarballs). -Paul On Sat, Sep 28, 2013 at 4:30 AM, Jeff Squyres (jsquyres)wrote: > On Sep 28, 2013, at 4:41 AM, Brice Goglin wrote: > > > I am having lots of problems when switching the regression testing stuff > > (jenkins) to git, mostly because of make dist. Actually it worked 2 days > > ago, no it breaks because hwloc-unknown.tar.* remain after make > distcheck. > > This means the versions junk still isn't right yet. :-\ > > > 1) There's something I don't understand in the dist scripts. > > config/distscript.csh is only called the top-level Makefile.am, with 4th > > argument = HWLOC_SVN_R, which is never set. So we always fallback to > > git-describe. When building from a tarball, you get "unknown". That > > seems to break make distcheck. We need to pass something in that > > argument, but I don't see what. > > Good catch; sorry about that. HWLOC_SVN_R no longer exists (as you > noted). I just removed that 4th argument to distscript.csh. Now, > distscript (on master and v1.7) only edits VERSION if snapshot=1 and > snapshot_version is empty (i.e., if you do "make dist" in a git clone > instead of running contrib/nightly/make_nightly_snapshot, which will edit > VERSION before running "make distcheck"). > > > 2) VPATH dist support is more fragile than before (I always build under > > $srcdir/build). In the past, we could do a VPATH make dist by just > > symlinking srcdir/doc/doxygen-doc to builddir/doc/doxygen-doc. This now > > generates "unknown" tarballs because we check for .git existence > > explicitly. I fixed my own case by checking for ../.git as well but > > that's not satisfying. > > Mmm. I preserved your ../.git check in > https://github.com/open-mpi/hwloc/commit/c2b7f3d3c713feadb1d2c5a7ccd747cb6673d249 > . > > I don't think I knew/realized you were doign VPATH dist builds by doing > the sym link. > > > It looks like we can fix this by checking for $srcdir/.git instead. If > > we want VPATH support where $builddir isn't a child of $srcdir, we'll > > have to set GIT_DIR=$srcdir/.git before calling git-describe too. > > > > I think this is becoming way too complicated. Nobody won't be able to > > maintain that code in a couple years. Worse, what if you leave Cisco and > > stop working on hwloc one day? In my other projects, I would just > > override the VERSION makefile variable on the make command-line to > > change the tarball name (you won't get that VERSION in lstopo --version, > > but you would still see 1.8a1 from configure). We should rethink what we > > actually need here. > > Yes, these are good points. I agree: the system is too complicated right > now. :-\ > > 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- describe>.tar.*. > > 2. make a nightly snapshot tarball. The more I think about this, the more > I think it's the same as #1, right? > > 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... > > > For instance if
Re: [hwloc-devel] git / nightly builds
Le 28/09/2013 13:30, Jeff Squyres (jsquyres) a écrit : > Good catch; sorry about that. HWLOC_SVN_R no longer exists (as you > noted). I just removed that 4th argument to distscript.csh. Now, > distscript (on master and v1.7) only edits VERSION if snapshot=1 and > snapshot_version is empty (i.e., if you do "make dist" in a git clone > instead of running contrib/nightly/make_nightly_snapshot, which will > edit VERSION before running "make distcheck"). Thanks, things look better now. > Yes, these are good points. I agree: the system is too complicated right > now. :-\ > > 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- 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). > 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 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? By the way, maybe move that script back from nightly to dist. > Yeah, I'm a bit disappointed by the github email service hook (the config is > here: https://github.com/open-mpi/hwloc/settings/hooks; scroll down to > "Email"). There's *very* little configuration available: > > - the address to send to > - an email address secret > - what address to send from > > There's no option for diffs (!), and no option to customize the mail/subject. > :-\ > > 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. Brice #!/bin/sh # # Copyright (c) 2007 Andy Parkins # # An example hook script to mail out commit update information. This hook # sends emails listing new revisions to the repository introduced by the # change being reported. The rule is that (for branch updates) each commit # will appear on one email and one email only. # # This hook is stored in the contrib/hooks directory. Your distribution # will have put this somewhere standard. You should make this script # executable then link to it in the repository you would like to use it in. # For example, on debian the hook is stored in # /usr/share/doc/git-core/contrib/hooks/post-receive-email: # # chmod a+x post-receive-email # cd /path/to/your/repository.git # ln -sf /usr/share/doc/git-core/contrib/hooks/post-receive-email hooks/post-receive # # This hook script assumes it is enabled on the central repository of a # project, with all users pushing only to it and not between each other. It # will still work if you don't operate in that style, but it would become # possible for the email to be from someone other than the person doing the # push. # # To help with debugging and use on pre-v1.5.1 git servers, this script will # also obey the interface of hooks/update, taking its arguments on the # command line. Unfortunately, hooks/update is called once for each ref. # To avoid firing one email per ref, this script just prints its output to # the screen when used in this mode. The output can then be redirected if # wanted. # # Config # -- # hooks.mailinglist # This is the list that all pushes will go to; leave it blank to
Re: [hwloc-devel] git / nightly builds
On Sep 28, 2013, at 4:41 AM, Brice Goglinwrote: > I am having lots of problems when switching the regression testing stuff > (jenkins) to git, mostly because of make dist. Actually it worked 2 days > ago, no it breaks because hwloc-unknown.tar.* remain after make distcheck. This means the versions junk still isn't right yet. :-\ > 1) There's something I don't understand in the dist scripts. > config/distscript.csh is only called the top-level Makefile.am, with 4th > argument = HWLOC_SVN_R, which is never set. So we always fallback to > git-describe. When building from a tarball, you get "unknown". That > seems to break make distcheck. We need to pass something in that > argument, but I don't see what. Good catch; sorry about that. HWLOC_SVN_R no longer exists (as you noted). I just removed that 4th argument to distscript.csh. Now, distscript (on master and v1.7) only edits VERSION if snapshot=1 and snapshot_version is empty (i.e., if you do "make dist" in a git clone instead of running contrib/nightly/make_nightly_snapshot, which will edit VERSION before running "make distcheck"). > 2) VPATH dist support is more fragile than before (I always build under > $srcdir/build). In the past, we could do a VPATH make dist by just > symlinking srcdir/doc/doxygen-doc to builddir/doc/doxygen-doc. This now > generates "unknown" tarballs because we check for .git existence > explicitly. I fixed my own case by checking for ../.git as well but > that's not satisfying. Mmm. I preserved your ../.git check in https://github.com/open-mpi/hwloc/commit/c2b7f3d3c713feadb1d2c5a7ccd747cb6673d249. I don't think I knew/realized you were doign VPATH dist builds by doing the sym link. > It looks like we can fix this by checking for $srcdir/.git instead. If > we want VPATH support where $builddir isn't a child of $srcdir, we'll > have to set GIT_DIR=$srcdir/.git before calling git-describe too. > > I think this is becoming way too complicated. Nobody won't be able to > maintain that code in a couple years. Worse, what if you leave Cisco and > stop working on hwloc one day? In my other projects, I would just > override the VERSION makefile variable on the make command-line to > change the tarball name (you won't get that VERSION in lstopo --version, > but you would still see 1.8a1 from configure). We should rethink what we > actually need here. Yes, these are good points. I agree: the system is too complicated right now. :-\ 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-.tar.*. 2. make a nightly snapshot tarball. The more I think about this, the more I think it's the same as #1, right? 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... > For instance if we can simpify things by not > building 1.8-final when we build 1.8-rcX, that'd be fine with me. I think that part is actually fairly simple; it just runs "make dist", strips out the greek value from VERSION, and runs "make dist" again. > Random other questions: > * where do you configure commit emails? can we drop/change the > open-mpi/hwloc subject prefix? I removed the hwloc-svn prefix from > mailman to avoid double-prefixing for now > * can we get commit diffs in email, with some truncation limit to 50kB > or so? Yeah, I'm a bit disappointed by the github email service hook (the config is here: https://github.com/open-mpi/hwloc/settings/hooks; scroll down to "Email"). There's *very* little configuration available: - the address to send to - an email address secret - what address to send from There's no option for diffs (!), and no option to customize the mail/subject. :-\ 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). -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
Re: [hwloc-devel] git / nightly builds
Jeff, I am having lots of problems when switching the regression testing stuff (jenkins) to git, mostly because of make dist. Actually it worked 2 days ago, no it breaks because hwloc-unknown.tar.* remain after make distcheck. 1) There's something I don't understand in the dist scripts. config/distscript.csh is only called the top-level Makefile.am, with 4th argument = HWLOC_SVN_R, which is never set. So we always fallback to git-describe. When building from a tarball, you get "unknown". That seems to break make distcheck. We need to pass something in that argument, but I don't see what. 2) VPATH dist support is more fragile than before (I always build under $srcdir/build). In the past, we could do a VPATH make dist by just symlinking srcdir/doc/doxygen-doc to builddir/doc/doxygen-doc. This now generates "unknown" tarballs because we check for .git existence explicitly. I fixed my own case by checking for ../.git as well but that's not satisfying. It looks like we can fix this by checking for $srcdir/.git instead. If we want VPATH support where $builddir isn't a child of $srcdir, we'll have to set GIT_DIR=$srcdir/.git before calling git-describe too. I think this is becoming way too complicated. Nobody won't be able to maintain that code in a couple years. Worse, what if you leave Cisco and stop working on hwloc one day? In my other projects, I would just override the VERSION makefile variable on the make command-line to change the tarball name (you won't get that VERSION in lstopo --version, but you would still see 1.8a1 from configure). We should rethink what we actually need here. For instance if we can simpify things by not building 1.8-final when we build 1.8-rcX, that'd be fine with me. Random other questions: * where do you configure commit emails? can we drop/change the open-mpi/hwloc subject prefix? I removed the hwloc-svn prefix from mailman to avoid double-prefixing for now * can we get commit diffs in email, with some truncation limit to 50kB or so? Le 27/09/2013 15:36, Jeff Squyres (jsquyres) a écrit : > I'd say that git and the new Trac are now fully open for business. I might > still do some shifting around of tags (see below), but otherwise, I think > everything is just about ready. > > I'm revamping make_dist_script and the nightly build script; I should finally > be able to commit those today, if all goes well. However, I had to make some > changes to VERSION and some other surrounding infrastructure to make it all > work. Specifically: git just does some things *differently* than SVN, so it > required some changes in the way that hwloc does things, infrastructure-wise. > > > Two things: > > 1. I'm not excited about back-porting these changes all the way back to > hwloc-1.0 just so that we can make nightly tarballs for these branches which > aren't used any more. I'm thinking that I should definitely make these > changes for master and the v1.7 branch. Should I also do the v1.6 branch? > > I'm thinking that back-porting further is useless; we should just stop making > nightlies for all the older branches. > > To clarify: with SVN, we still checked all the older branches every night and > would make a new tarball if there was ever a change. We never made changes > in those older branches, so we never made new nightlies. But we *would > have*, if a change had every been committed on those branches. > > 2. With SVN, adding the r number in the tarball version was sufficient to > observe ordering of the tarballs. For example: > >hwloc-1.8r1234.tar.bz2 >hwloc-1.8r1240.tar.bz2 >hwloc-1.8r1255.tar.bz2 >...etc. > > With git, we only have a hash number. So there's no obvious ordering of the > tarballs. For example: > >hwloc-1.8git11223344.tar.bz2 >hwloc-1.8git00aa3344.tar.bz2 >hwloc-1.8git99aa2277.tar.bz2 >...etc. > > However, there is "git describe" functionality which, in our case, can show > you how many commits you are beyond a given tag. For example, I added a > "dev" tag on the master branch for the first pure-git commit (i.e., 1 beyond > the last SVN commit). For example: > > $ git clone g...@github.com:open-mpi/hwloc.git > ...clone completes successfully... > $ cd hwloc > $ git checkout master > $ git describe --always > dev-3-g51efdd1 > > Where the "3" represents that we're 3 commits beyond the "dev" tag. The "g" > just means "git", and the "51efdd1" is the hash of that commit. > > Hence, if we use that as our version string, we get tarballs named something > like this: > > hwloc-dev-3-g51efdd1.tar.bz2 > hwloc-dev-10-gf50a385.tar.bz2 > ...etc. > > For the master branch, I think that's fine. However, note that ***THIS IS > DIFFERENT THAN WHAT WE HAVE PREVIOUSLY DONE ON RELEASE BRANCHES!*** > > For example, if you checkout the v1.7 branch: > > $ git checkout v1.7 > $ git describe --always > hwloc-1.7.2-4-g3a6f84c > > *** NOTE THE DIFFERENCE HERE: > > a) The
Re: [hwloc-devel] git / nightly builds
On Sep 27, 2013, at 9:43 AM, Brice Goglinwrote: > I don't think so. I am planning to only update the regression testing > for v1.7 as well. K. > BUT what if the stable OMPI 1.6 needs a hwloc fix? Should we keep the > hwloc v1.5 branch open? E... let's cross that bridge when/if we need to. :-) >> 2. With SVN, adding the r number in the tarball version was sufficient to >> observe ordering of the tarballs. For example: >> [snip] >> I think that this is ok (other projects use this "git describe" kind of >> behavior for their nightly snapshots), but this is a change from what we >> used to do, so I wanted to call it out specifically. >> >> Are you guys ok with this? > > That'll work for me. > > What about when we are actually doing a release where we don't want a > git-describe suffix ? Does the above apply to contrib/make_dist_tarball > in general? Or only to when it runs at night (in make dist only?) ? There are actually 2 scripts: contrib/dist/make_dist_tarball contrib/nightly/make_snapshot_tarball (currently called create_tarball.sh) The former works largely as it did before: it'll make hwloc-.tar.*. The latter is being heavily updated to basically use "git describe". -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
Re: [hwloc-devel] git / nightly builds
Jeff Squyres (jsquyres), le Fri 27 Sep 2013 15:36:33 +0200, a écrit : > a) The last SVN nightly snapshot on the v1.7 branch was named >hwloc-1.7.3rc1r5779.tar.bz2. > b) The first git nightly snapshot on the v1.7 branch will be named >hwloc-1.7.2-4-g3a6f84c.tar.bz2. > > Note "1.7.3rc1..." vs. "1.7.2...". I.e., the git name will say "we're X > commits beyond the 1.7.2 tag", but the old SVN name was "we're at this > *upcoming* version". I'm fine with it. Samuel
Re: [hwloc-devel] git / nightly builds
Le 27/09/2013 15:36, Jeff Squyres (jsquyres) a écrit : > I'd say that git and the new Trac are now fully open for business. I might > still do some shifting around of tags (see below), but otherwise, I think > everything is just about ready. > > I'm revamping make_dist_script and the nightly build script; I should finally > be able to commit those today, if all goes well. However, I had to make some > changes to VERSION and some other surrounding infrastructure to make it all > work. Specifically: git just does some things *differently* than SVN, so it > required some changes in the way that hwloc does things, infrastructure-wise. > > > Two things: > > 1. I'm not excited about back-porting these changes all the way back to > hwloc-1.0 just so that we can make nightly tarballs for these branches which > aren't used any more. I'm thinking that I should definitely make these > changes for master and the v1.7 branch. Should I also do the v1.6 branch? I don't think so. I am planning to only update the regression testing for v1.7 as well. BUT what if the stable OMPI 1.6 needs a hwloc fix? Should we keep the hwloc v1.5 branch open? > 2. With SVN, adding the r number in the tarball version was sufficient to > observe ordering of the tarballs. For example: > >hwloc-1.8r1234.tar.bz2 >hwloc-1.8r1240.tar.bz2 >hwloc-1.8r1255.tar.bz2 >...etc. > > With git, we only have a hash number. So there's no obvious ordering of the > tarballs. For example: > >hwloc-1.8git11223344.tar.bz2 >hwloc-1.8git00aa3344.tar.bz2 >hwloc-1.8git99aa2277.tar.bz2 >...etc. > > However, there is "git describe" functionality which, in our case, can show > you how many commits you are beyond a given tag. For example, I added a > "dev" tag on the master branch for the first pure-git commit (i.e., 1 beyond > the last SVN commit). For example: > > $ git clone g...@github.com:open-mpi/hwloc.git > ...clone completes successfully... > $ cd hwloc > $ git checkout master > $ git describe --always > dev-3-g51efdd1 > > Where the "3" represents that we're 3 commits beyond the "dev" tag. The "g" > just means "git", and the "51efdd1" is the hash of that commit. > > Hence, if we use that as our version string, we get tarballs named something > like this: > > hwloc-dev-3-g51efdd1.tar.bz2 > hwloc-dev-10-gf50a385.tar.bz2 > ...etc. > > For the master branch, I think that's fine. However, note that ***THIS IS > DIFFERENT THAN WHAT WE HAVE PREVIOUSLY DONE ON RELEASE BRANCHES!*** > > For example, if you checkout the v1.7 branch: > > $ git checkout v1.7 > $ git describe --always > hwloc-1.7.2-4-g3a6f84c > > *** NOTE THE DIFFERENCE HERE: > > a) The last SVN nightly snapshot on the v1.7 branch was named >hwloc-1.7.3rc1r5779.tar.bz2. > b) The first git nightly snapshot on the v1.7 branch will be named >hwloc-1.7.2-4-g3a6f84c.tar.bz2. > > Note "1.7.3rc1..." vs. "1.7.2...". I.e., the git name will say "we're X > commits beyond the 1.7.2 tag", but the old SVN name was "we're at this > *upcoming* version". > > I think that this is ok (other projects use this "git describe" kind of > behavior for their nightly snapshots), but this is a change from what we used > to do, so I wanted to call it out specifically. > > Are you guys ok with this? > That'll work for me. What about when we are actually doing a release where we don't want a git-describe suffix ? Does the above apply to contrib/make_dist_tarball in general? Or only to when it runs at night (in make dist only?) ? Brice
[hwloc-devel] git / nightly builds
I'd say that git and the new Trac are now fully open for business. I might still do some shifting around of tags (see below), but otherwise, I think everything is just about ready. I'm revamping make_dist_script and the nightly build script; I should finally be able to commit those today, if all goes well. However, I had to make some changes to VERSION and some other surrounding infrastructure to make it all work. Specifically: git just does some things *differently* than SVN, so it required some changes in the way that hwloc does things, infrastructure-wise. Two things: 1. I'm not excited about back-porting these changes all the way back to hwloc-1.0 just so that we can make nightly tarballs for these branches which aren't used any more. I'm thinking that I should definitely make these changes for master and the v1.7 branch. Should I also do the v1.6 branch? I'm thinking that back-porting further is useless; we should just stop making nightlies for all the older branches. To clarify: with SVN, we still checked all the older branches every night and would make a new tarball if there was ever a change. We never made changes in those older branches, so we never made new nightlies. But we *would have*, if a change had every been committed on those branches. 2. With SVN, adding the r number in the tarball version was sufficient to observe ordering of the tarballs. For example: hwloc-1.8r1234.tar.bz2 hwloc-1.8r1240.tar.bz2 hwloc-1.8r1255.tar.bz2 ...etc. With git, we only have a hash number. So there's no obvious ordering of the tarballs. For example: hwloc-1.8git11223344.tar.bz2 hwloc-1.8git00aa3344.tar.bz2 hwloc-1.8git99aa2277.tar.bz2 ...etc. However, there is "git describe" functionality which, in our case, can show you how many commits you are beyond a given tag. For example, I added a "dev" tag on the master branch for the first pure-git commit (i.e., 1 beyond the last SVN commit). For example: $ git clone g...@github.com:open-mpi/hwloc.git ...clone completes successfully... $ cd hwloc $ git checkout master $ git describe --always dev-3-g51efdd1 Where the "3" represents that we're 3 commits beyond the "dev" tag. The "g" just means "git", and the "51efdd1" is the hash of that commit. Hence, if we use that as our version string, we get tarballs named something like this: hwloc-dev-3-g51efdd1.tar.bz2 hwloc-dev-10-gf50a385.tar.bz2 ...etc. For the master branch, I think that's fine. However, note that ***THIS IS DIFFERENT THAN WHAT WE HAVE PREVIOUSLY DONE ON RELEASE BRANCHES!*** For example, if you checkout the v1.7 branch: $ git checkout v1.7 $ git describe --always hwloc-1.7.2-4-g3a6f84c *** NOTE THE DIFFERENCE HERE: a) The last SVN nightly snapshot on the v1.7 branch was named hwloc-1.7.3rc1r5779.tar.bz2. b) The first git nightly snapshot on the v1.7 branch will be named hwloc-1.7.2-4-g3a6f84c.tar.bz2. Note "1.7.3rc1..." vs. "1.7.2...". I.e., the git name will say "we're X commits beyond the 1.7.2 tag", but the old SVN name was "we're at this *upcoming* version". I think that this is ok (other projects use this "git describe" kind of behavior for their nightly snapshots), but this is a change from what we used to do, so I wanted to call it out specifically. Are you guys ok with this? (note: I'm still mucking with the final tag names, so some of the above may change slightly) -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/