Skip to content
This repository has been archived by the owner on Mar 12, 2022. It is now read-only.

Commit

Permalink
Merge pull request #21 from pseyfert/dev-0.6
Browse files Browse the repository at this point in the history
merge 0.6 into master
  • Loading branch information
pseyfert authored Aug 9, 2018
2 parents 027518d + b522cc5 commit 1cf5b38
Show file tree
Hide file tree
Showing 9 changed files with 190 additions and 76 deletions.
6 changes: 2 additions & 4 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,12 @@ rootdocker-run:
- sudo apt-get update
- sudo apt-get upgrade -y
- sudo apt-get install -y curl
- set +e
- source thisroot.sh
- set -e
- sudo make install
- mkdir -p test
- (cd test && root -l -b -q -n /usr/local/tutorials/tmva/TMVAClassification.C\(\"MLPBNN\"\) )
- (cd test && root -l -b -q -n /usr/local/share/doc/root/tutorials/tmva/TMVAClassification.C\(\"MLPBNN\"\) )
- INPUTSFILE=$(find . -name tmva_class_example.root)
- WEIGHTFILE=$(find . -name TMVAClassification_MLPBNN.weights.xml)
- echo "$INPUTSFILE" TreeS "$WEIGHTFILE" test/testoutput.root MLPBNN_from_branchadder
- tmva-branch-adder "$INPUTSFILE" TreeS "$WEIGHTFILE" test/testoutput.root MLPBNN_from_branchadder


Expand Down
58 changes: 31 additions & 27 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,46 +1,50 @@
language: c++ # irrelevant afaiu
sudo: required

language: cpp

services:
- docker
#before_install:
# - docker pull rootproject/root-ubuntu16
# - docker run -itd --name ROOTIMAGE -v $(pwd):/repo.git rootproject/root-ubuntu16
#script:
# - docker exec ROOTIMAGE sudo make -C /repo.git/src

# attempting to implement suggestion by
# https://stackoverflow.com/a/50107380
jobs:
include:
- stage: src-subdir
script:
- docker pull rootproject/root-ubuntu16
- docker run -itd --name ROOTIMAGE -v $(pwd):/repo.git rootproject/root-ubuntu16
- docker run -itd --name ROOTIMAGE -v ${TRAVIS_BUILD_DIR}:/repo.git rootproject/root-ubuntu16
- docker exec ROOTIMAGE sudo make -C /repo.git/src
- stage: install-test
script:
- docker pull rootproject/root-ubuntu16
- docker run -itd --name ROOTIMAGE -v $(pwd):/repo.git rootproject/root-ubuntu16
- docker exec ROOTIMAGE sudo apt-get update
- docker exec ROOTIMAGE sudo apt-get upgrade -y
- docker exec ROOTIMAGE sudo apt-get install -y ninja-build iwyu
- docker exec ROOTIMAGE mkdir -p /tmp/build
- docker exec ROOTIMAGE mkdir -p /tmp/install
- docker exec ROOTIMAGE cmake -B/tmp/build -H/repo.git -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/tmp/install -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
- docker exec ROOTIMAGE cmake --build /tmp/build --target install
- docker run -it -v ${TRAVIS_BUILD_DIR}:/repo.git rootproject/root-ubuntu16 /bin/bash -c '
set -e
set -x
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y ninja-build iwyu
cd $(mktemp -d)
cmake ${CI_PROJECT_DIR} -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=$(mktemp -d) -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
cmake --build . --target install'
- stage: runtime-test
script:
- docker pull rootproject/root-ubuntu16
- mkdir -p /tmp/test
- docker run -itd --name ROOTIMAGE -v $(pwd):/repo.git -v /tmp/test:/tmp/test rootproject/root-ubuntu16
- docker exec ROOTIMAGE sudo apt-get update
- docker exec ROOTIMAGE sudo apt-get upgrade -y
- docker exec ROOTIMAGE sudo apt-get install -y curl
- docker exec ROOTIMAGE sudo make -C /repo.git install
- docker exec ROOTIMAGE mkdir -p /tmp/test
- docker exec ROOTIMAGE /bin/bash -c 'cd /tmp/test \
root -l -b -q -n /usr/local/tutorials/tmva/TMVAClassification.C\(\"MLPBNN\"\) \
INPUTSFILE=$(find /tmp/test -name tmva_class_example.root) \
WEIGHTFILE=$(find /tmp/test -name TMVAClassification_MLPBNN.weights.xml) \
tmva-branch-adder "$INPUTSFILE" TreeS "$WEIGHTFILE" test/testoutput.root MLPBNN_from_branchadder'

- docker run -it -v ${TRAVIS_BUILD_DIR}:/repo.git -v /tmp/test:/tmp/test rootproject/root-ubuntu16 /bin/bash -c '
set -e
set -x
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y curl
sudo make install
mkdir -p test
cd test
root -l -b -q -n /usr/local/share/doc/root/tutorials/tmva/TMVAClassification.C\(\"MLPBNN\"\)
cd ..
INPUTSFILE=$(find . -name tmva_class_example.root)
WEIGHTFILE=$(find . -name TMVAClassification_MLPBNN.weights.xml)
echo "$INPUTSFILE" TreeS "$WEIGHTFILE" test/testoutput.root MLPBNN_from_branchadder
tmva-branch-adder "$INPUTSFILE" TreeS "$WEIGHTFILE" test/testoutput.root MLPBNN_from_branchadder '

stages:
- src-subdir
Expand Down
121 changes: 118 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,125 @@
cmake_minimum_required(VERSION 3.3)
project(tmva-branch-adder VERSION 0.5)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wshadow")
project(tmva-branch-adder VERSION 0.6 LANGUAGES CXX)

#### cmake features

include(CMakePackageConfigHelpers)
include(GNUInstallDirs)


#### general compilation

# https://cmake.org/pipermail/cmake/2015-October/061886.html
include(CheckCXXCompilerFlag)
macro(AddCXXFlagIfSupported flag test)
CHECK_CXX_COMPILER_FLAG(${flag} ${test})
if( ${${test}} )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
endif()
endmacro()

AddCXXFlagIfSupported(-Wall COMPILER_SUPPORTS_Wall)
AddCXXFlagIfSupported(-Wextra COMPILER_SUPPORTS_Wextra)
AddCXXFlagIfSupported(-Wshadow COMPILER_SUPPORTS_Wshadow)
AddCXXFlagIfSupported(-Wpedantic COMPILER_SUPPORTS_Wpedantic)

## NB: colorization is a bit of a mess with make vs. ninja vs -v
AddCXXFlagIfSupported(-fcolor-diagnostics COMPILER_SUPPORTS_fcolor-diagnostics) # e.g. clang 3.9
AddCXXFlagIfSupported(--fdiagnostics-color=always COMPILER_SUPPORTS_fdiagnostics-color-always) # e.g. gcc

find_program(iwyu_path NAMES include-what-you-use iwyu)
if(NOT iwyu_path)
message(STATUS "Could not find the program include-what-you-use")
endif()
add_subdirectory(src)


#### dependencies

if(EXISTS $ENV{ROOTSYS}/cmake/ROOTConfig.cmake)
list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
else()
list(APPEND CMAKE_MODULE_PATH $ENV{ROOTSYS}/etc/cmake)
endif()
find_package(ROOT REQUIRED COMPONENTS TMVA XMLIO TreePlayer MathMore Foam)
include(${ROOT_USE_FILE})


#### build exe

add_executable(tmva-branch-adder src/blacklist.cpp src/main.cpp src/reader_wrapper.cpp)
target_link_libraries(tmva-branch-adder TMVA XMLIO TreePlayer Tree RIO Core)
target_include_directories(tmva-branch-adder
PUBLIC
$<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
)

if(iwyu_path)
set_property(TARGET tmva-branch-adder PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${iwyu_path})
endif()


#### build lib

add_library(BranchAdder SHARED src/reader_wrapper.cpp src/blacklist.cpp)
set_target_properties(BranchAdder PROPERTIES VERSION ${PROJECT_VERSION})
set_target_properties(BranchAdder PROPERTIES PUBLIC_HEADER src/reader_wrapper.h)
# semi redundant due to ROOT_USE_FILE
target_include_directories(BranchAdder
SYSTEM PUBLIC
${ROOT_INCLUDE_DIRS}
)
target_include_directories(BranchAdder
PUBLIC
$<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
)
target_link_libraries(BranchAdder
INTERFACE
TMVA XMLIO TreePlayer Tree RIO Core)


#### install exe
install(TARGETS tmva-branch-adder DESTINATION ${CMAKE_INSTALL_BINDIR})

#### install lib
install(TARGETS BranchAdder
EXPORT tmva-branch-adder-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

#### install header
install(FILES src/blacklist.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

#### configure cmake modules
# configure tmva-branch-adder-config.cmake
set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake)
configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/cmake/tmva-branch-adder-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/tmva-branch-adder-config.cmake
INSTALL_DESTINATION ${INSTALL_CONFIGDIR}
)

# configure tmva-branch-adder-targets.cmake
install(EXPORT tmva-branch-adder-targets
FILE tmva-branch-adder-targets.cmake
DESTINATION ${INSTALL_CONFIGDIR}
)

# configure tmva-branch-adder-config-version.cmake
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/tmva-branch-adder-config-version.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY ExactVersion
)


#### install cmake modules
# install tmva-branch-adder-config-version.cmake
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/tmva-branch-adder-config-version.cmake
DESTINATION ${INSTALL_CONFIGDIR})
# install tmva-branch-adder-config.cmake
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/tmva-branch-adder-config.cmake
DESTINATION ${INSTALL_CONFIGDIR})
# install tmva-branch-adder-targets.cmake already done at configuration!
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# tmva-branch-adder
[![DOI](https://zenodo.org/badge/54739571.svg)](https://zenodo.org/badge/latestdoi/54739571)
[![Licence: GPL v3](https://img.shields.io/github/license/pseyfert/tmva-branch-adder.svg)](LICENSE)
[![gitlab CI status](https://gitlab.cern.ch/pseyfert/tmva-branch-adder/badges/master/pipeline.svg)](https://gitlab.cern.ch/pseyfert/tmva-branch-adder/commits/master)
[![travis Status](https://travis-ci.org/pseyfert/tmva-branch-adder.svg?branch=master)](https://travis-ci.org/pseyfert/tmva-branch-adder)
Expand Down
14 changes: 14 additions & 0 deletions cmake/tmva-branch-adder-config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
include(CMakeFindDependencyMacro)
if(EXISTS $ENV{ROOTSYS}/cmake/ROOTConfig.cmake)
list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
else()
list(APPEND CMAKE_MODULE_PATH $ENV{ROOTSYS}/etc/cmake)
endif()
find_package(ROOT @ROOT_VERSION@ EXACT REQUIRED COMPONENTS TMVA XMLIO TreePlayer MathMore Foam)
include(${ROOT_USE_FILE})

get_filename_component(TMVABRANCHADDER_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
if(NOT TARGET BranchAdder)
include("${TMVABRANCHADDER_CMAKE_DIR}/tmva-branch-adder-targets.cmake")
endif()

13 changes: 6 additions & 7 deletions module/example.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
from ROOT import TString
from ROOT import TFile
from ROOT import TTree
from tmva_branch_adder import *
from tmva_branch_adder import reader_wrapper

if __name__ == "__main__":
from sys import argv
import sys
argc = len(argv)
if ("-h" in argv) or (argc not in [5,6]):
print "USAGE: ", argv[0], " <root file> <tree name> <xml file> <output file> [<target branch>]"
if ("-h" in argv) or (argc not in [5, 6]):
print("USAGE: ", argv[0], " <root file> <tree name> <xml file> <output file> [<target branch>]")
sys.exit(1)
xmlfile = TString(argv[3])
infile = TString(argv[1])
Expand All @@ -17,25 +17,24 @@

errorcode = int(0)
wrapper = reader_wrapper()
of = TFile.Open(outfile.Data(),"create")
of = TFile.Open(outfile.Data(), "create")
errorcode |= wrapper.SetTargetFile(of)
if errorcode:
sys.exit(errorcode)
if 6==argc:
if 6 == argc:
errorcode |= wrapper.SetTargetBranch(argv[5])
if errorcode:
sys.exit(errorcode)
errorcode |= wrapper.SetXMLFile(xmlfile)
if errorcode:
sys.exit(errorcode)

if_ = TFile.Open(infile.Data(),"read")
if_ = TFile.Open(infile.Data(), "read")
intree = if_.Get(treename.Data())
errorcode |= wrapper.SetTree(intree)
if errorcode:
sys.exit(errorcode)


errorcode |= wrapper.Process()
if errorcode:
sys.exit(errorcode)
Expand Down
25 changes: 17 additions & 8 deletions module/tmva_branch_adder.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
from ROOT import gInterpreter


def hack_compilation():
from ROOT import gSystem
cmd = gSystem.GetMakeSharedLib()
import subprocess
compiler = subprocess.check_output(["root-config","--cxx"])
compiler=compiler[:-1] # remove trailing line feed
# modern way for python3 to avoid byte vs. string mess
# fallback to python2
try:
compiler = subprocess.getoutput("root-config --cxx")
except AttributeError:
compiler = subprocess.check_output(["root-config", "--cxx"])
compiler = compiler[:-1] # remove trailing line feed
# FIXME: no idea what this if statement was meant to do
if compiler.find(" "):
print "WILL NEED TO FIX BUILD COMMAND"
print "old command:"
print cmd
print("WILL NEED TO FIX BUILD COMMAND")
print("old command:")
print(cmd)
# the GetMakeSharedLib is broken on one of my systems because the
# compiler command contains a white space "ccache g++"
# gInterpreter then uses only the first word "ccache"
cmd = cmd.replace("ccache",compiler)
cmd = cmd.replace("ccache", compiler)
gSystem.SetMakeSharedLib(cmd)
print "new command:"
print cmd
print("new command:")
print(cmd)


hack_compilation()
gInterpreter.LoadMacro("../src/blacklist.cpp+")
Expand Down
26 changes: 0 additions & 26 deletions src/CMakeLists.txt

This file was deleted.

2 changes: 1 addition & 1 deletion src/_tmva-branch-adder
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ _rootfile() {
}

_listtrees() {
_wanted arguments expl "input ttree name" compadd $(python -c "from root_numpy import list_trees;exec '''for t in list_trees('$words[$CURRENT-1]'):\n print t'''")
_wanted arguments expl "input ttree name" compadd $(python -c "from root_numpy import list_trees;exec('''for t in list_trees('$words[$CURRENT-1]'):\n print(t)''')" 2> /dev/null)
}

_arguments "1:input file:_rootfile" "2:input ttree name:_listtrees" "3:xml file:_files -g '*.xml'" "4:output file:_rootfile" "5:output branch name:"

0 comments on commit 1cf5b38

Please sign in to comment.