From 1e6d80d47f07f5d1404b01ee71cb0f9cf098c430 Mon Sep 17 00:00:00 2001
From: Gennady Pospelov <g.pospelov@fz-juelich.de>
Date: Wed, 30 Jul 2014 14:27:53 +0200
Subject: [PATCH] On the way to new release script.

---
 CMakeLists.txt                             |   1 +
 cmake/modules/BornAgainConfiguration.cmake |  16 +-
 dev-tools/git-utils/lines_of_code.png      | Bin 20560 -> 20943 bytes
 dev-tools/git-utils/lines_of_code.py       | 303 ---------------------
 dev-tools/release/make_release.py          |  67 +++++
 dev-tools/release/make_release.sh          |  39 +--
 6 files changed, 99 insertions(+), 327 deletions(-)
 delete mode 100644 dev-tools/git-utils/lines_of_code.py
 create mode 100644 dev-tools/release/make_release.py

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5e008214509..933dc818d6d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,6 +19,7 @@ option(BORNAGAIN_MAN "Build a user manual" OFF)
 option(BUILD_DEBIAN "Build a debian package" OFF)
 option(ROOT_SUPPORT "Build with dependencies from ROOT" ON)
 option(BORNAGAIN_OPENMPI "Build with OpenMPI support" OFF)
+option(BORNAGAIN_RELEASE "Special option for making release" OFF)
 
 
 # --- Path for additional cmake modules ---
diff --git a/cmake/modules/BornAgainConfiguration.cmake b/cmake/modules/BornAgainConfiguration.cmake
index c43049cef6d..b913f04d86b 100644
--- a/cmake/modules/BornAgainConfiguration.cmake
+++ b/cmake/modules/BornAgainConfiguration.cmake
@@ -40,18 +40,20 @@ configure_file(
   "${CMAKE_SOURCE_DIR}/Core/Samples/inc/BAVersion.h"
 )
 
-# --- configure deployment script for release
-configure_file("${CMAKE_SOURCE_DIR}/cmake/scripts/release.sh.in" "${CMAKE_BINARY_DIR}/bin/release.sh")
-
 # --- configure user setup script
 configure_file("${CMAKE_SOURCE_DIR}/cmake/scripts/thisbornagain.sh.in" "${CMAKE_BINARY_DIR}/bin/thisbornagain.sh" @ONLY)
 configure_file("${CMAKE_SOURCE_DIR}/cmake/scripts/thisbornagain.csh.in" "${CMAKE_BINARY_DIR}/bin/thisbornagain.csh" @ONLY)
 
-# --- configure project paths
-configure_file("${CMAKE_SOURCE_DIR}/cmake/scripts/BAConfigure.h.in" "${CMAKE_SOURCE_DIR}/Core/Tools/inc/BAConfigure.h" @ONLY)
+if(BORNAGAIN_RELEASE)
+    # --- configure deployment script for release
+    configure_file("${CMAKE_SOURCE_DIR}/cmake/scripts/release.sh.in" "${CMAKE_BINARY_DIR}/bin/release.sh")
+
+    # --- configure project paths
+    configure_file("${CMAKE_SOURCE_DIR}/cmake/scripts/BAConfigure.h.in" "${CMAKE_SOURCE_DIR}/Core/Tools/inc/BAConfigure.h" @ONLY)
 
-# --- configure Doxyfile
-configure_file("${CMAKE_SOURCE_DIR}/Doc/Doxygen/Doxyfile.in" "${CMAKE_SOURCE_DIR}/Doc/Doxygen/Doxyfile" @ONLY)
+    # --- configure Doxyfile
+    configure_file("${CMAKE_SOURCE_DIR}/Doc/Doxygen/Doxyfile.in" "${CMAKE_SOURCE_DIR}/Doc/Doxygen/Doxyfile" @ONLY)
+endif()
 
 # --- installation
 if(NOT WIN32)
diff --git a/dev-tools/git-utils/lines_of_code.png b/dev-tools/git-utils/lines_of_code.png
index ad533579d0fc32b7e1e47de00d5bcd13e4a162bc..cf5f7540478ab6840d8bc14feae481a8e6664ca5 100644
GIT binary patch
literal 20943
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
B6OI4?

literal 20560
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

diff --git a/dev-tools/git-utils/lines_of_code.py b/dev-tools/git-utils/lines_of_code.py
deleted file mode 100644
index 0be19b7ee82..00000000000
--- a/dev-tools/git-utils/lines_of_code.py
+++ /dev/null
@@ -1,303 +0,0 @@
-#!/usr/bin/env python
-
-# calculate number of lines of code in BornAgain project as a function of time
-#
-# should be executed either from parent directory
-# "python Macros/GitUtils/git_loc_history.py"
-# or from local one
-# "python git_loc_history ../.."
-#
-# based on 'git-loc' from from https://github.com/ITikhonov/git-loc
-#
-# ROOT graphics added
-# see http://root.cern.ch/drupal/content/how-use-use-python-pyroot-interpreter
-
-import re
-from email.utils import parsedate
-from time import mktime
-from datetime import datetime
-from os import popen
-import os
-from sys import argv,stderr,stdout
-import getopt
-from array import array
-
-opts, args = getopt.getopt(argv[1:],None)
-extfolder = False
-if len(args) == 1:
-    extfolder = True
-    targetfolder = args[0]
-
-fc=0
-locs=0
-locs_type=[0,0,0,0,0,0,0,0,0]
-#       0      1                  2            3      4        5      6     7       8
-descr=["Core","Functional Tests","Unit Tests","*.py","macros","GUI", "PythonAPI","Third","Undef"]
-adds=None
-cmt=None
-prev_time = datetime(2000,1,1)
-
-history=[]
-
-def pop():
-    if adds is not None:
-        pstr="%s %8u %5s %5s %7s %s \t%s"%(d,locs,'+'+str(adds),'-'+str(dels),hsh,who,cmt.strip())
-        print pstr
-        atmp = []
-        for x in locs_type:
-            atmp.append(x)
-        history.append((d,locs,atmp,adds,dels,hsh,who,cmt))
-
-def filePython(x):
-    if ".py" in x and not ".pypp." in x: return True
-    return False
-
-def fileCpp(x):
-    if ".h" in x or ".cpp" in x: return True
-    return False
-
-def dirCore(x):
-    if "/Core/Algorithms" in x: return True
-    if "/Core/FormFactors" in x: return True
-    if "/Core/Samples" in x: return True
-    if "/Core/Tools" in x: return True
-    if "/Core/Fitting" in x: return True
-    if "/Core/inc" in x: return True
-    if "/Core/src" in x: return True
-    if "/Fit/Factory" in x: return True
-    if "/Core/Geometry" in x: return True
-    return False
-
-def dirPyAPI(x):
-    if "/Core/PythonAPI" in x: return True
-    if "/Fit/PythonAPI" in x: return True
-    return False
-
-def dirFuncTest(x):
-    if "/App/" in x: return True
-    if "/Tests/FunctionalTests/TestCore" in x: return True
-    if "/Tests/FunctionalTests/TestFit" in x: return True
-    if "/Tests/FunctionalTests/TestPyCore" in x: return True
-    if "/Tests/FunctionalTests/TestPyFit" in x: return True
-    return False
-
-def dirGUI(x):
-    if "/GUI/coregui" in x  and not "widgetbox" in x and not "qttools" in x: return True
-    if "/AppGUI/coregui" in x: return True
-    if "/BASuite" in x: return True
-    return False
-
-def dirThirdParty(x):
-    if "/ThirdParty" in x: return True
-    return False
-
-def dirSkip(x):
-    if "/pub/core" in x: return True
-    return False
-
-def dirUnitTests(x):
-    if "/UnitTests/" in x: return True
-    if "/Tests/UnitTests/TestCore/" in x: return True
-    return False
-
-
-# ------------------------------------------------------------------------------
-def filetype(x):
-    file_type=8
-
-    if dirSkip(x): return file_type
-
-    if fileCpp(x) and dirCore(x):
-        file_type = 0
-    elif (fileCpp(x) or filePython(x)) and dirFuncTest(x):
-        file_type = 1
-
-    elif dirUnitTests(x):
-        file_type = 2
-
-    elif dirGUI(x):
-        file_type = 5
-
-    elif dirPyAPI(x):
-        file_type = 6
-
-    elif dirThirdParty(x):
-        file_type = 7
-    return file_type
-
-
-# ------------------------------------------------------------------------------
-prevfolder = os.getcwd()
-if extfolder: os.chdir(targetfolder)
-
-# parsing output of git log 
-file_type_ppp = 8
-file_type_mmm = 8
-for x in popen('git log develop --reverse -p'):
-    if x.startswith('commit'):
-        pop()
-        hsh=x[7:14];
-    if x.startswith('Author'):
-        who=x.replace("Author: ",'').replace('\n','');
-        who=re.sub(">.*","",who);
-        who=re.sub(".*<","",who);
-    if x.startswith('Date'):
-        fc=1
-        d=datetime(*parsedate(x[5:])[:7])
-        t=mktime(parsedate(x[5:]))
-        adds=0
-        dels=0
-        print x
-    if fc==2:
-        cmt=x[:-1]
-        fc=0
-    if fc==1:
-        if len(x)==1: fc=2
-    if x.startswith('+++'):
-        file_type_ppp = filetype(x)
-
-    if x.startswith('---'):
-        file_type_mmm = filetype(x)
-
-    if x.startswith('+') and not x.startswith('+++'):
-        locs_type[file_type_ppp] += 1
-        if file_type_ppp <6:
-            adds+=1
-            locs+=1
-    if x.startswith('-') and not x.startswith('---'):
-        locs_type[file_type_mmm] -= 1
-        if file_type_mmm <6:
-            dels+=1
-            locs-=1
-
-pop()
-os.chdir(prevfolder)
-
-
-# --------------------------------------------------------
-# making ROOT plot - number of lines of code .vs. time
-# --------------------------------------------------------
-from ROOT import *
-
-# beginning of coding (first commit) to set beginning of time x-scale
-c=history[0]
-td_first=TDatime(c[0].year, c[0].month, c[0].day, c[0].hour, c[0].minute, c[0].second)
-c=history[-1]
-td_last=TDatime(c[0].year, c[0].month, c[0].day, c[0].hour, c[0].minute, c[0].second)
-time_offset = int(td_first.Convert()) - 7*24.*3600 # one week before first commit
-
-ntimebins = 4*int((td_last.Convert() - time_offset)/3600./24)
-
-
-#print "ntimebins", ntimebins
-hist_ncommits = TH1D("ncommits", "ncommits", ntimebins, td_first.Convert() - time_offset, td_last.Convert() - time_offset)
-
-
-# ---------------------------------
-# creating histograms
-# ---------------------------------
-selected_hist = [0,1,2,5,6]
-
-a_histograms = []
-hstack = THStack("hstack","Number of Lines of Code")
-hstack.SetTitle("");
-
-a_colors=[kAzure+1, kOrange, kRed, kGreen, kYellow-7, kAzure, kGray+1]
-legend = TLegend(0.15,0.65,0.49,0.84)
-legend.SetBorderSize(1);
-#legend.SetFillStyle(1);
-for i in range(0, len(selected_hist) ):
-    i_hist = selected_hist[i]
-    #hist = TH1D(descr[i_hist],descr[i_hist],len(xtmp)-1,xtmp)
-    hist = TH1D(descr[i_hist],descr[i_hist], ntimebins, td_first.Convert() - time_offset, td_last.Convert() - time_offset )
-    
-    hist.GetXaxis().SetTimeDisplay(1)
-    hist.GetXaxis().SetTimeFormat("%d/%m")
-    hist.GetYaxis().SetLabelSize(0.030)
-    hist.GetXaxis().SetLabelSize(0.035)
-    hist.GetXaxis().SetNdivisions(512)
-    hist.GetXaxis().SetTimeOffset(time_offset)
-    hist.SetLineColor(a_colors[i_hist])
-    hist.SetFillColor(a_colors[i_hist])
-    a_histograms.append(hist)
-
-
-# adding histograms to legend in right order
-for i_hist in range(len(a_histograms)-1,-1,-1):
-    legend.AddEntry(a_histograms[i_hist],a_histograms[i_hist].GetTitle(),"f")
-
-# filling histograms
-for c in history:
-    td=TDatime(c[0].year, c[0].month, c[0].day, c[0].hour, c[0].minute, c[0].second)
-    xx = td.Convert() - time_offset
-    hist_ncommits.Fill(xx)
-    for i in range(0, len(selected_hist) ):
-        i_hist = selected_hist[i]
-        yy = c[2][i_hist]
-        a_histograms[i].Fill(xx,yy)
-
-# normalizing bin content on number of entries per bin
-for i_bin in range(1,hist_ncommits.GetNbinsX()+1):
-    nentries = hist_ncommits.GetBinContent(i_bin)
-    for h in a_histograms:
-        current_bin_content = h.GetBinContent(i_bin)
-        if nentries != 0: current_bin_content /= nentries
-        h.SetBinContent(i_bin, current_bin_content)
-
-# filling empty bins with values from previous day
-for h in a_histograms:
-    prev_content = 0
-    for i_bin in range(1,h.GetNbinsX()+1):
-        if h.GetBinContent(i_bin) == 0:
-            h.SetBinContent(i_bin, prev_content)
-        prev_content = h.GetBinContent(i_bin)
-        
-    
-
-
-
-
-
-
-
-#preparing canvas
-c1 = TCanvas( 'gisasfw_loc', 'Number of lines of code in BornAgain project', 800, 800)
-c1.cd()
-gPad.SetGrid()
-gPad.SetBottomMargin(0.10)
-gPad.SetLeftMargin(0.10)
-gPad.SetTopMargin(0.10)
-gPad.SetRightMargin(0.10)
-
-# drawing
-for h in a_histograms:
-    hstack.Add(h,"][")
-hstack.Draw()
-hstack.GetXaxis().SetTimeDisplay(1)
-#hstack.GetXaxis().SetTimeFormat("%d/%m")
-hstack.GetXaxis().SetTimeFormat("#splitline{%d/%m}{%Y}")
-hstack.GetXaxis().SetLabelSize(0.03)
-hstack.GetYaxis().SetLabelSize(0.035)
-hstack.GetXaxis().SetLabelOffset(0.02)
-hstack.GetXaxis().SetNdivisions(512)
-hstack.GetXaxis().SetTimeOffset(time_offset)
-
-legend.Draw()
-c1.Modified()
-c1.Modified()
-c1.Update()
-gPad.RedrawAxis()
-gPad.RedrawAxis("G")
-
-c1.Print("lines_of_code.png")
-
-
-
-# wait for input to keep the GUI (which lives on a ROOT event dispatcher) alive
-if __name__ == '__main__':
-   rep = ''
-   while not rep in [ 'q', 'Q' ]:
-      rep = raw_input( 'enter "q" to quit: ' )
-      if 1 < len(rep):
-         rep = rep[0]
-
diff --git a/dev-tools/release/make_release.py b/dev-tools/release/make_release.py
new file mode 100644
index 00000000000..c325f8e0b16
--- /dev/null
+++ b/dev-tools/release/make_release.py
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+
+import sys
+import os
+import subprocess
+
+
+def run_process(command, working_directory):
+    p = subprocess.Popen(command, cwd=working_directory, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    p.wait()
+    if p.returncode:
+        for line in iter(p.stderr.readline, b''):
+            print line
+        exit("Error while running the command '"+" ".join(command)+"'")
+    return not p.returncode
+
+
+def git_clone(branch_name, working_directory):
+    print "Cloning BornAgain repository ... ",
+    cmd = ['git', 'clone', 'git@apps.jcns.fz-juelich.de:BornAgain.git']
+    run_process(cmd, working_directory)
+    print " OK."
+    cmd = ['git', 'checkout', branch_name]
+    print "XXX", cmd, working_directory
+    run_process(cmd, working_directory)
+
+
+def parse_release_name(release_branch_name):
+    name, version = release_branch_name.split("-")
+    version_major, version_minor, version_patch = version.split(".")
+    print version_major, version_minor, version_patch
+    return version_major, version_minor, version_patch
+
+
+def prepare_release(release_branch_name, release_working_directory):
+    print "Preparing release working directory '%s'." % release_working_directory
+    # making directories
+    os.makedirs(release_working_directory)
+    os.makedirs(release_working_directory+"/build")
+    os.makedirs(release_working_directory+"/upload")
+
+    # cloning git
+    #git_clone(release_branch_name, release_working_directory)
+    git_clone("develop", release_working_directory)
+
+
+
+def main():
+    if len(sys.argv) != 2:
+        print "Please specify the name of the release branch."
+        print "Usage: python make_release.py release-0.9.3"
+        exit()
+
+    release_branch_name = sys.argv[1]
+
+    release_working_directory = os.getcwd() + "/" + release_branch_name
+
+    if os.path.exists(release_working_directory):
+        print "Directory %s exists, continuing release process." % release_working_directory
+    else:
+        prepare_release(release_branch_name, release_working_directory)
+
+
+
+
+if __name__ == '__main__':
+    main()
diff --git a/dev-tools/release/make_release.sh b/dev-tools/release/make_release.sh
index 2e548998e62..8b8a79b30c8 100755
--- a/dev-tools/release/make_release.sh
+++ b/dev-tools/release/make_release.sh
@@ -3,23 +3,28 @@
 
 set -e
 
-mkdir BornAgain-release
-cd BornAgain-release
 
-git clone git@apps.jcns.fz-juelich.de:BornAgain.git
-cd BornAgain
-git checkout PreRelease
 
-cd ..
-mkdir build
-cd build
 
-cmake ../BornAgain
-
-./bin/release.sh
-
-echo " "
-echo "1) Modify BornAgain-release/build/RELEASE/CHANGELOG"
-echo "2) Copy new Windows build into BornAgain-release/build/RELEASE"
-echo "3) Run BornAgain-release/build/bin/release.sh with menu option #2 (upload on apps)"
-echo "4) Run BornAgain-release/build/bin/release.sh with menu option #3 (finalize git)"
+# set -e
+# 
+# mkdir BornAgain-release
+# cd BornAgain-release
+# 
+# git clone git@apps.jcns.fz-juelich.de:BornAgain.git
+# cd BornAgain
+# git checkout PreRelease
+# 
+# cd ..
+# mkdir build
+# cd build
+# 
+# cmake ../BornAgain
+# 
+# ./bin/release.sh
+# 
+# echo " "
+# echo "1) Modify BornAgain-release/build/RELEASE/CHANGELOG"
+# echo "2) Copy new Windows build into BornAgain-release/build/RELEASE"
+# echo "3) Run BornAgain-release/build/bin/release.sh with menu option #2 (upload on apps)"
+# echo "4) Run BornAgain-release/build/bin/release.sh with menu option #3 (finalize git)"
-- 
GitLab