diff options
| -rw-r--r-- | src/Makefile | 4 | ||||
| -rw-r--r-- | src/fit.c | 62 | ||||
| -rwxr-xr-x | src/mkreleasehdr.sh | 11 | ||||
| -rw-r--r-- | src/release.c | 44 | 
4 files changed, 93 insertions, 28 deletions
| diff --git a/src/Makefile b/src/Makefile index e15b07d..377388c 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,3 +1,5 @@ +release_hdr := $(shell sh -c './mkreleasehdr.sh') +  CFLAGS=-O2 -Wall -g -DSWAP_BYTES  LDLIBS=-lm -lgsl -lgslcblas -lnlopt_cxx -lstdc++ @@ -24,7 +26,7 @@ test-charge: test-charge.o sno_charge.o misc.o vector.o  test-zebra: test-zebra.o zebra.o pack2b.o -fit: fit.o zebra.o likelihood.o pmt.o vector.o misc.o muon.o optics.o quantum_efficiency.o solid_angle.o pdg.o scattering.o zdab_utils.o pack2b.o sno_charge.o db.o dqxx.o dict.o siphash.o path.o pmt_response.o +fit: fit.o zebra.o likelihood.o pmt.o vector.o misc.o muon.o optics.o quantum_efficiency.o solid_angle.o pdg.o scattering.o zdab_utils.o pack2b.o sno_charge.o db.o dqxx.o dict.o siphash.o path.o pmt_response.o release.o  clean:  	rm -f *.o calculate_limits test Makefile.dep @@ -20,6 +20,10 @@  #include "vector.h"  #include "pmt_response.h"  #include <signal.h> /* for signal() */ +#include "release.h" + +char *GitSHA1(void); +char *GitDirty(void);  static int stop = 0;  static nlopt_opt opt; @@ -5428,6 +5432,10 @@ int main(int argc, char **argv)              fprintf(stderr, "failed to open '%s': %s\n", output, strerror(errno));              return 1;          } + +        fprintf(fout, "git_sha1: %s\n", GitSHA1()); +        fprintf(fout, "git_dirty: %s\n", GitDirty()); +        fprintf(fout, "data:\n");      }      load_pmt_info(); @@ -5485,7 +5493,7 @@ int main(int argc, char **argv)          switch (b.name) {          case MAST_RECORD:              /* New event. */ -            if (fout) fprintf(fout, "-\n"); +            if (fout) fprintf(fout, "  -\n");              first_ev = 1;              first_mctk = 1;              first_mcvx = 1; @@ -5494,11 +5502,11 @@ int main(int argc, char **argv)              /* New MC vertex. */              unpack_mcvx(b.data, &bmcvx);              if (fout) { -                if (first_mcvx) fprintf(fout, "  mcvx:\n"); -                fprintf(fout, "    -\n"); -                fprintf(fout, "      posx: %.2f\n", bmcvx.x); -                fprintf(fout, "      posy: %.2f\n", bmcvx.y); -                fprintf(fout, "      posz: %.2f\n", bmcvx.z); +                if (first_mcvx) fprintf(fout, "    mcvx:\n"); +                fprintf(fout, "      -\n"); +                fprintf(fout, "        posx: %.2f\n", bmcvx.x); +                fprintf(fout, "        posy: %.2f\n", bmcvx.y); +                fprintf(fout, "        posz: %.2f\n", bmcvx.z);              }              first_mcvx = 0;              break; @@ -5506,12 +5514,12 @@ int main(int argc, char **argv)              /* New MC track. */              unpack_mctk(b.data, &bmctk);              if (fout) { -                if (first_mctk) fprintf(fout, "  mctk:\n"); -                fprintf(fout, "    -\n"); -                fprintf(fout, "      energy: %.2f\n", bmctk.ene); -                fprintf(fout, "      dirx: %.4f\n", bmctk.drx); -                fprintf(fout, "      diry: %.4f\n", bmctk.dry); -                fprintf(fout, "      dirz: %.4f\n", bmctk.drz); +                if (first_mctk) fprintf(fout, "    mctk:\n"); +                fprintf(fout, "      -\n"); +                fprintf(fout, "        energy: %.2f\n", bmctk.ene); +                fprintf(fout, "        dirx: %.4f\n", bmctk.drx); +                fprintf(fout, "        diry: %.4f\n", bmctk.dry); +                fprintf(fout, "        dirz: %.4f\n", bmctk.drz);              }              first_mctk = 0;              break; @@ -5534,21 +5542,21 @@ int main(int argc, char **argv)              long long elapsed = (tv_stop.tv_sec - tv_start.tv_sec)*1000 + (tv_stop.tv_usec - tv_start.tv_usec)/1000;              if (fout) { -                if (first_ev) fprintf(fout, "  ev:\n"); -                fprintf(fout, "    - gtid: %i\n", ev.gtid); -                fprintf(fout, "      fit:\n"); -                fprintf(fout, "        -\n"); -                fprintf(fout, "          energy: %.2f\n", xopt[0]); -                fprintf(fout, "          posx: %.2f\n", xopt[1]); -                fprintf(fout, "          posy: %.2f\n", xopt[2]); -                fprintf(fout, "          posz: %.2f\n", xopt[3]); -                fprintf(fout, "          theta: %.4f\n", xopt[4]); -                fprintf(fout, "          phi: %.4f\n", xopt[5]); -                fprintf(fout, "          t0: %.2f\n", xopt[6]); -                fprintf(fout, "          z1: %.2f\n", xopt[7]); -                fprintf(fout, "          z2: %.2f\n", xopt[8]); -                fprintf(fout, "          fmin: %.2f\n", fmin); -                fprintf(fout, "          time: %lld\n", elapsed); +                if (first_ev) fprintf(fout, "    ev:\n"); +                fprintf(fout, "      - gtid: %i\n", ev.gtid); +                fprintf(fout, "        fit:\n"); +                fprintf(fout, "          -\n"); +                fprintf(fout, "            energy: %.2f\n", xopt[0]); +                fprintf(fout, "            posx: %.2f\n", xopt[1]); +                fprintf(fout, "            posy: %.2f\n", xopt[2]); +                fprintf(fout, "            posz: %.2f\n", xopt[3]); +                fprintf(fout, "            theta: %.4f\n", xopt[4]); +                fprintf(fout, "            phi: %.4f\n", xopt[5]); +                fprintf(fout, "            t0: %.2f\n", xopt[6]); +                fprintf(fout, "            z1: %.2f\n", xopt[7]); +                fprintf(fout, "            z2: %.2f\n", xopt[8]); +                fprintf(fout, "            fmin: %.2f\n", fmin); +                fprintf(fout, "            time: %lld\n", elapsed);                  fflush(fout);              } diff --git a/src/mkreleasehdr.sh b/src/mkreleasehdr.sh new file mode 100755 index 0000000..85f32b2 --- /dev/null +++ b/src/mkreleasehdr.sh @@ -0,0 +1,11 @@ +#!/bin/sh +GIT_SHA1=`(git show-ref --head --hash=8 2> /dev/null || echo 00000000) | head -n1` +GIT_DIRTY=`git diff --no-ext-diff 2> /dev/null | wc -l` +BUILD_ID=`uname -n`"-"`date +%s` +test -f release.h || touch release.h +(cat release.h | grep SHA1 | grep $GIT_SHA1) && \ +(cat release.h | grep DIRTY | grep $GIT_DIRTY) && exit 0 # Already up-to-date +echo "#define GIT_SHA1 \"$GIT_SHA1\"" > release.h +echo "#define GIT_DIRTY \"$GIT_DIRTY\"" >> release.h +echo "#define BUILD_ID \"$BUILD_ID\"" >> release.h +touch release.c # Force recompile of release.c diff --git a/src/release.c b/src/release.c new file mode 100644 index 0000000..f8dc46f --- /dev/null +++ b/src/release.c @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2009-2012, Salvatore Sanfilippo <antirez at gmail dot com> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + *   * Redistributions of source code must retain the above copyright notice, + *     this list of conditions and the following disclaimer. + *   * Redistributions in binary form must reproduce the above copyright + *     notice, this list of conditions and the following disclaimer in the + *     documentation and/or other materials provided with the distribution. + *   * Neither the name of Redis nor the names of its contributors may be used + *     to endorse or promote products derived from this software without + *     specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* Every time the Redis Git SHA1 or Dirty status changes only this small + * file is recompiled, as we access this information in all the other + * files using this functions. */ + +#include <string.h> + +#include "release.h" + +char *GitSHA1(void) { +    return GIT_SHA1; +} + +char *GitDirty(void) { +    return GIT_DIRTY; +} | 
