diff --git a/uhal/config/install.sh b/uhal/config/install.sh new file mode 100755 index 000000000..aeffd9744 --- /dev/null +++ b/uhal/config/install.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# +# Written by XDAQ Team (xdaq.cern.ch) +# +# install.sh RPM_BUILD_ROOT PACKAGEDIR PACKAGENAME VERSION INCLUDEPREFIX INCLUDEDIRS +# +SRC=$1 +DST=$2 +PERM=$3 +RPM_BUILD_ROOT=$4 +PKGDIR=$5 +NAME=$6 +VERSION=$7 +INCLUDEPREFIX=$8 +INCLUDEDIRS=$9 + +# Symbolic link +if [ -h "$SRC" ]; then + DSTPARENT=`echo $DST | sed -r 's/^(.*\/).*$/\1/'` + #mkdir -p ${DSTPARENT} + cp -d $SRC $RPM_BUILD_ROOT/$DST +else + # Regular file + if [ -f "$SRC" ]; then + install -D -m $PERM $SRC $RPM_BUILD_ROOT/$DST + + MIME=`file -ib $SRC` + REGEX="application/(x-executable|x-sharedlib).*" + if [[ "$MIME" =~ $REGEX ]]; then +# set -x + # If there is already a debug file copy it instead of creating a new one + if [ -e "$SRC.debug" ]; then + install -D -m $PERM $SRC.debug $RPM_BUILD_ROOT/usr/lib/debug$DST.debug + else + install -D -m $PERM $SRC $RPM_BUILD_ROOT/usr/lib/debug$DST.debug + objcopy --only-keep-debug $RPM_BUILD_ROOT/usr/lib/debug${DST}.debug + fi + # strip normal binary + objcopy -g $RPM_BUILD_ROOT/${DST} + + # rewrite source directories + /usr/lib/rpm/debugedit -b ${PKGDIR} -d /usr/src/debug/${NAME}-${VERSION} -l ${PKGDIR}/rpm/debug.source $RPM_BUILD_ROOT/usr/lib/debug$DST.debug + + # relocate all include files to /opt/xdaq/include + for prefix in $INCLUDEDIRS; do + /usr/lib/rpm/debugedit -b $prefix -d ${INCLUDEPREFIX} $RPM_BUILD_ROOT/usr/lib/debug$DST.debug + done + + objcopy --remove-section .gnu_debuglink --add-gnu-debuglink=$RPM_BUILD_ROOT/usr/lib/debug${DST}.debug $RPM_BUILD_ROOT/${DST} +# set +x + fi + fi +fi diff --git a/uhal/config/mfCommonDefs.mk b/uhal/config/mfCommonDefs.mk new file mode 100644 index 000000000..90e4002c0 --- /dev/null +++ b/uhal/config/mfCommonDefs.mk @@ -0,0 +1,17 @@ +# Sanitize BUILD_HOME +BUILD_HOME := $(shell cd $(BUILD_HOME); pwd) + +$(info Using BUILD_HOME=${BUILD_HOME}) + +# Compilers +CPP = g++ +LD = g++ + +# Compiler flags +CXXFLAGS = -g -Wall -pedantic -O3 -MMD -MP -fPIC +# -fprofile-arcs -ftest-coverages +LDFLAGS = -Wall -g -O3 -fPIC +# -lgcov -coverage + +# Tools +MakeDir = mkdir -p diff --git a/uhal/config/mfPythonRPMRules.mk b/uhal/config/mfPythonRPMRules.mk new file mode 100644 index 000000000..cd5784a6c --- /dev/null +++ b/uhal/config/mfPythonRPMRules.mk @@ -0,0 +1,48 @@ +RPMBUILD_DIR=${PackagePath}/rpm/RPMBUILD +# +ifndef PythonModules + $(error Python module names missing "PythonModules") +endif +PackageScripts ?= [] + + +.PHONY: rpm _rpmall +rpm: _rpmall +_rpmall: _all _setup_update _rpmbuild + +# Copy the package skeleton +# Insure the existence of the module directory +# Copy the libraries into python module +.PHONY: _rpmbuild +_rpmbuild: _setup_update + # Change directory into pkg and copy everything into rpm/pkg + cd pkg && \ + find . -name "*" -exec install -D \{\} ${RPMBUILD_DIR}/\{\} \; + # Add a manifest file + echo "include */*.so" > ${RPMBUILD_DIR}/MANIFEST.in + # Change into rpm/pkg to finally run the customized setup.py + if [ -f setup.cfg ]; then cp setup.cfg ${RPMBUILD_DIR}/ ; fi + cd ${RPMBUILD_DIR} && CACTUS_ROOT=${CACTUS_ROOT} python ${PackageName}.py bdist_rpm \ + --release ${PACKAGE_RELEASE}.${CACTUS_OS}.python${PYTHON_VERSION} \ + --binary-only --force-arch=`uname -m` + # Harvest the crop + find rpm -name "*.rpm" -exec cp -a \{\} rpm/ \; + + +.PHONY: _setup_update +_setup_update: + ${MakeDir} ${RPMBUILD_DIR} + cp ${BUILD_HOME}/uhal/config/setupTemplate.py ${RPMBUILD_DIR}/${PackageName}.py + sed -i 's#__python_packages__#${PythonModules}#' ${RPMBUILD_DIR}/${PackageName}.py + sed -i 's#__packagename__#${PackageName}#' ${RPMBUILD_DIR}/${PackageName}.py + sed -i 's#__version__#$(PACKAGE_VER_MAJOR).$(PACKAGE_VER_MINOR).$(PACKAGE_VER_PATCH)#' ${RPMBUILD_DIR}/${PackageName}.py + sed -i 's#__author__#${Packager}#' ${RPMBUILD_DIR}/${PackageName}.py + sed -i 's#__description__#${PackageDescription-None}#' ${RPMBUILD_DIR}/${PackageName}.py + sed -i 's#__url__#${PackageURL-None}#' ${RPMBUILD_DIR}/${PackageName}.py + sed -i 's#__scripts__#${PackageScripts}#' ${RPMBUILD_DIR}/${PackageName}.py + + +.PHONY: cleanrpm _cleanrpm +cleanrpm: _cleanrpm +_cleanrpm: + -rm -r rpm diff --git a/uhal/config/mfRPMRules.mk b/uhal/config/mfRPMRules.mk new file mode 100644 index 000000000..c2ec92772 --- /dev/null +++ b/uhal/config/mfRPMRules.mk @@ -0,0 +1,48 @@ +RPMBUILD_DIR=${PackagePath}/rpm/RPMBUILD + + +BuildDebuginfoRPM ?= 1 +IncludePaths := $(if ${IncludePaths}, ${IncludePaths}, %{nil}) +BUILD_REQUIRES_TAG = $(if ${PackageBuildRequires} ,BuildRequires: ${PackageBuildRequires} ,\# No BuildRequires tag ) +REQUIRES_TAG = $(if ${PackageRequires} ,Requires: ${PackageRequires} ,\# No Requires tag ) + +export BUILD_HOME + +.PHONY: rpm _rpmall +rpm: _rpmall +_rpmall: _all _spec_update _rpmbuild + +.PHONY: _rpmbuild +_rpmbuild: _spec_update + mkdir -p ${RPMBUILD_DIR}/{RPMS/{i386,i586,i686,x86_64},SPECS,BUILD,SOURCES,SRPMS} + rpmbuild --quiet -bb -bl --buildroot=${RPMBUILD_DIR}/BUILD --define "_topdir ${RPMBUILD_DIR}" rpm/${PackageName}.spec + find ${RPMBUILD_DIR} -name "*.rpm" -exec mv {} $(PackagePath)/rpm \; + +.PHONY: _spec_update +_spec_update: + mkdir -p ${PackagePath}/rpm + cp ${BUILD_HOME}/uhal/config/specTemplate.spec ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__package__#${Package}#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__packagename__#${PackageName}#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__version__#$(PACKAGE_VER_MAJOR).$(PACKAGE_VER_MINOR).$(PACKAGE_VER_PATCH)#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__release__#${PACKAGE_RELEASE}.${CACTUS_OS}#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__prefix__#${CACTUS_ROOT}#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__sources_dir__#${RPMBUILD_DIR}/SOURCES#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__packagedir__#${PackagePath}#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__os__#${CACTUS_OS}#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__platform__#None#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__project__#${Project}#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__author__#${Packager}#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__summary__#None#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__description__#None#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__url__#${PackageURL}#' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's#__includedirs__#${IncludePaths}#' $(PackagePath)/rpm/$(PackageName).spec + sed -i 's|^.*__build_requires__.*|${BUILD_REQUIRES_TAG}|' ${PackagePath}/rpm/${PackageName}.spec + sed -i 's|^.*__requires__.*|${REQUIRES_TAG}|' ${PackagePath}/rpm/${PackageName}.spec + if [ "${BuildDebuginfoRPM}" == "1" ]; then sed -i '1 i\%define _build_debuginfo_package %{nil}' ${PackagePath}/rpm/${PackageName}.spec; fi + +.PHONY: cleanrpm _cleanrpm +cleanrpm: _cleanrpm +_cleanrpm: + -rm -r rpm + diff --git a/uhal/config/mfRules.mk b/uhal/config/mfRules.mk new file mode 100644 index 000000000..6b734d985 --- /dev/null +++ b/uhal/config/mfRules.mk @@ -0,0 +1,87 @@ +# Sanitize package path +PackagePath := $(shell cd ${PackagePath}; pwd) + +# Library sources +LibrarySources = $(wildcard src/common/*.cpp) $(wildcard src/common/**/*.cpp) +# Filter undesired files +LibrarySourcesFiltered = $(filter-out ${IgnoreSources}, ${LibrarySources}) +# Turn them into objects +LibraryObjectFiles = $(patsubst src/common/%.cpp,${PackagePath}/obj/%.o,${LibrarySourcesFiltered}) + +ExecutableSources = $(wildcard src/common/*.cxx) +# Filter undesired files +ExecutableSourcesFiltered = $(filter-out ${IgnoreSources}, ${ExecutableSources}) +# Turn them into objects +ExecutableObjectFiles = $(patsubst src/common/%.cxx,${PackagePath}/obj/%.o,${ExecutableSourcesFiltered}) +# And binaries +Executables = $(patsubst src/common/%.cxx,${PackagePath}/bin/%.exe,${ExecutableSourcesFiltered}) + +# $(info LibrarySourcesFiltered = ${LibrarySourcesFiltered}) +# $(info ExecutableSourcesFiltered = ${ExecutableSourcesFiltered}) +# $(info ExecutableObjectFiles = ${ExecutableObjectFiles}) +# $(info Executables = ${Executables}) + +# Compiler Flags +IncludePaths := $(addprefix -I,${IncludePaths}) + + +# Library dependencies +DependentLibraries += $(addprefix -L,${LibraryPaths}) +DependentLibraries += $(addprefix -l,${Libraries}) + +# Executable dependencies +ExecutableDependentLibraries += $(addprefix -L,${LibraryPaths}) +ExecutableDependentLibraries += $(addprefix -l,${ExecutableLibraries}) + + +ifeq ("${Library}","") + LibraryTarget ?= +else + LibraryTarget ?= lib/lib${Library}.so +endif + +.PHONY: default +default: build + +.PHONY: clean _cleanall +clean: _cleanall +_cleanall: + rm -rf obj + rm -rf bin + rm -rf lib + +.PHONY: all _all build buildall +all: _all +build: _all +buildall: _all +_all: ${LibraryTarget} ${Executables} ${ExtraTargets} + +.PHONY: objects +objects: ${LibraryObjectFiles} ${ExecutableObjectFiles} + + +# Implicit rule for .cpp -> .o +${PackagePath}/obj/%.o : ${PackagePath}/src/common/%.cpp + ${MakeDir} $(@D) + ${CPP} -c ${CXXFLAGS} ${IncludePaths} $< -o $@ + +# Implicit rule for .cxx -> .o +${PackagePath}/obj/%.o : ${PackagePath}/src/common/%.cxx + ${MakeDir} $(@D) + ${CPP} -c ${CXXFLAGS} ${IncludePaths} $< -o $@ + +# Main target: shared library +${LibraryTarget}: ${LibraryObjectFiles} + ${MakeDir} $(@D) + ${LD} -shared ${LDFLAGS} ${DependentLibraries} ${LibraryObjectFiles} -o $@ + +# Include automatically generated dependencies +-include $(LibraryObjectFiles:.o=.d) + +# Static Pattern rule for binaries +${Executables} : ${PackagePath}/bin/%.exe : ${PackagePath}/obj/%.o ${LibraryTarget} + ${MakeDir} $(@D) + ${LD} ${LDFLAGS} ${ExecutableDependentLibraries} $< -o $@ + +# Include automatically generated dependencies +-include $(ExecutableObjectFiles:.o=.d) diff --git a/uhal/config/setupTemplate.py b/uhal/config/setupTemplate.py new file mode 100644 index 000000000..0a723a840 --- /dev/null +++ b/uhal/config/setupTemplate.py @@ -0,0 +1,27 @@ +import os, sys +from distutils.core import setup +from os.path import join + +_rpmVersion='__version__' +_name='__packagename__' +_author='__author__' +_author_email='' +_description='__description__' +_url='__url__' +_packages=__python_packages__ +_scripts=__scripts__ + + +setup(name=_name, + version = _rpmVersion, + description = _description, + author = _author, + author_email = _author_email, + url = _url, + + packages = _packages, + package_dir = {'' : ''}, + package_data = dict((pkg,['*.so']) for pkg in _packages), + scripts = _scripts + ) + diff --git a/uhal/config/specTemplate.spec b/uhal/config/specTemplate.spec new file mode 100644 index 000000000..deeb663f6 --- /dev/null +++ b/uhal/config/specTemplate.spec @@ -0,0 +1,148 @@ +%define _package __package__ +%define _packagename __packagename__ +%define _version __version__ +%define _release __release__ +%define _prefix __prefix__ +%define _sources_dir __sources_dir__ +%define _tmppath /tmp +%define _packagedir __packagedir__ +%define _os __os__ +%define _platform __platform__ +%define _project __project__ +%define _author __author__ +%define _summary __summary__ +%define _url __url__ +#%define _buildarch __buildarch__ +#%define _includedirs __includedirs__ + +# +# SWATCH Specfile template +# References: +# cmsos template file: https://svnweb.cern.ch/trac/cmsos/browser/trunk/config/spec.template +# cmsos RPM rules: https://svnweb.cern.ch/trac/cmsos/browser/trunk/config/mfRPM.rules +# Notice the _require and __require__ interplay with PACKAGE_REQUIRED_PACKAGE_LIST +# +Name: %{_packagename} +Version: %{_version} +Release: %{_release} +Packager: %{_author} +Summary: %{_summary} +License: GPLv3 +Group: CACTUS +Source: %{_source} +URL: %{_url} +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot +Prefix: %{_prefix} + +# Dependencies +BuildRequires: __build_requires__ +Requires: __requires__ + + +%description +__description__ + +# +# Devel RPM specified attributes (extension to binary rpm with include files) +# +%if %{defined _build_debuginfo_package} +%package -n %{_packagename}-debuginfo +Summary: Debuginfo package for %{_summary} +Group: Applications/XDAQ + +%description -n %{_packagename}-debuginfo +__description__ +%endif + +#%prep + +#%build + +%install +# copy files to RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/%{_prefix}/{bin,lib,include,etc} +mkdir -p $RPM_BUILD_ROOT/usr/lib/debug%{_prefix}/{bin,lib} +mkdir -p $RPM_BUILD_ROOT/usr/src/debug/%{_packagename}-%{_version}/ + +PKGDIR=%{_packagedir} +%if %{defined _build_debuginfo_package} +DEBUGDIR=/usr/src/debug/%{_packagename}-%{_version} +if [ "${#DEBUGDIR}" -gt "${#PKGDIR}" ]; then + (>&2 echo "ERROR : Debuginfo destination directory path '${DEBUGDIR}' is shorter than source code directory path '${PKGDIR}'.") + (>&2 echo " Please make base directory path of source code $(expr ${#DEBUGDIR} - ${#PKGDIR}) characters longer in order to build RPMs.") + exit 1 +fi +%endif + +if [ -d %{_packagedir}/bin ]; then + cd %{_packagedir}/bin; \ +# find . -name "*" -exec install -D -m 755 {} $RPM_BUILD_ROOT/%{_prefix}/bin/{} \; + find . -name "*" -exec $BUILD_HOME/uhal/config/install.sh {} %{_prefix}/bin/%{_project}/{} 755 $RPM_BUILD_ROOT %{_packagedir} %{_packagename} %{_version} %{_prefix}/include '%{_includedirs}' \; +fi + +if [ -d %{_packagedir}/scripts ]; then + cd %{_packagedir}/scripts; \ + find . -name ".svn" -prune -o -name "*" -exec install -D -m 755 {} $RPM_BUILD_ROOT/%{_prefix}/bin/%{_project}/{} \; +fi + +if [ -d %{_packagedir}/lib ]; then + cd %{_packagedir}/lib; \ +# find . -name ".svn" -prune -o -name "*" -exec install -D -m 644 {} $RPM_BUILD_ROOT/%{_prefix}/lib/{} \; + find . -name "*" -exec $BUILD_HOME/uhal/config/install.sh {} %{_prefix}/lib/{} 655 $RPM_BUILD_ROOT %{_packagedir} %{_packagename} %{_version} %{_prefix}/include '%{_includedirs}' \; +fi + + +if [ -d %{_packagedir}/include ]; then + cd %{_packagedir}/include; \ + find . \( -name "*.hpp" -o -name "*.hxx" \) -exec install -D -m 644 {} $RPM_BUILD_ROOT/%{_prefix}/include/{} \; +fi + + +if [ -d %{_packagedir}/etc ]; then + cd %{_packagedir}/etc; \ + find . -name ".svn" -prune -o -name "*" -exec install -D -m 644 {} $RPM_BUILD_ROOT/%{_prefix}/etc/{} \; +fi + +#cp -rp %{_sources_dir}/* $RPM_BUILD_ROOT%{_prefix}/. + + +#create debug.source - SLC6 beardy wierdo "feature" +%if %{defined _build_debuginfo_package} +cd %{_packagedir} +#find src -name '*.cpp' -o -name '*.cxx' -fprintf rpm/debug.source "%p\0" +#find src include -name '*.h' -print > rpm/debug.source -o -name '*.cc' -print > rpm/debug.source + +cat %{_packagedir}/rpm/debug.source | sort -z -u | egrep -v -z '(|)$' | egrep -v -z %{_packagedir} > %{_packagedir}/rpm/debug.source.clean +# Copy all sources and include files for debug RPMs +cat %{_packagedir}/rpm/debug.source.clean | ( cpio -pd0mL --quiet "$RPM_BUILD_ROOT/usr/src/debug/%{_packagename}-%{_version}" ) + +#cat %{_packagedir}/rpm/debug.source | sort -z -u | egrep -v -z '(|)$' | ( cpio -pd0mL --quiet "$RPM_BUILD_ROOT/usr/src/debug/%{_packagename}-%{_version}" ) +#cat %{_packagedir}/rpm/debug.include | sort -z -u | egrep -v -z '(|)$' | ( cpio -pd0mL --quiet "$RPM_BUILD_ROOT/usr/src/debug/%{_packagename}-%{_version}" ) +# correct permissions on the created directories +cd "$RPM_BUILD_ROOT/usr/src/debug/" +find ./ -type d -exec chmod 755 {} \; +%endif + + +%clean + +%post + +%postun + +%files +%defattr(-, root, root, -) +%{_prefix}/bin +%{_prefix}/lib +%{_prefix}/etc +%{_prefix}/include + +# +# Files that go in the debuginfo RPM +# +%if %{defined _build_debuginfo_package} +%files -n %{_packagename}-debuginfo +%defattr(-,root,root,-) +/usr/lib/debug +/usr/src/debug +%endif \ No newline at end of file diff --git a/uhal/grammars/Makefile b/uhal/grammars/Makefile index 7e6a97bd8..ae3ce06ba 100644 --- a/uhal/grammars/Makefile +++ b/uhal/grammars/Makefile @@ -1,11 +1,13 @@ BUILD_HOME = $(shell pwd)/../.. include $(BUILD_HOME)/config/Makefile.macros +include $(BUILD_HOME)/uhal/config/mfCommonDefs.mk Project = uhal Package = uhal/grammars PackagePath = $(CACTUS_RPM_ROOT)/${Package} PackageName = cactuscore-uhal-grammars +PackageURL = https://ipbus.web.cern.ch/ipbus Packager = Andrew Rose, Tom Williams @@ -14,48 +16,16 @@ PACKAGE_VER_MINOR = 5 PACKAGE_VER_PATCH = 0 PACKAGE_RELEASE = 1 -LIBRARY = cactus_uhal_grammars +Library = cactus_uhal_grammars -INCLUDE_PATH = include \ +IncludePaths = include \ ${EXTERN_BOOST_INCLUDE_PREFIX} \ ${UHAL_LOG_INCLUDE_PREFIX} -LIBRARY_PATH = ${UHAL_LOG_LIB_PREFIX} +LibraryPaths = ${UHAL_LOG_LIB_PREFIX} -LIBRARIES = cactus_uhal_log - - - -#################################### -### COMMON DERIVED VARIABLES ### - - -LIBRARY := lib/lib${LIBRARY}.so - -LIBRARY_SOURCES = $(wildcard src/common/*.cpp) -LIBRARY_OBJECT_FILES = $(patsubst src/common/%.cpp,obj/%.o,${LIBRARY_SOURCES}) - -EXECUTABLE_SOURCES = $(wildcard src/common/*.cxx) -EXECUTABLE_OBJECT_FILES = $(patsubst src/common/%.cxx,obj/%.o,${EXECUTABLE_SOURCES}) -EXECUTABLES = $(patsubst src/common/%.cxx,bin/%.exe,${EXECUTABLE_SOURCES}) - -INCLUDE_PATH := $(addprefix -I,$(INCLUDE_PATH)) -LIBRARY_PATH := $(addprefix -L,$(LIBRARY_PATH)) -LIBRARIES := $(addprefix -l,$(LIBRARIES)) - -CPP_FLAGS = -g -Wall -pedantic -O3 -MMD -MP -fPIC \ -# -fprofile-arcs -ftest-coverage -LINK_LIBRARY_FLAGS = -shared -fPIC -Wall -g -O3 \ -# -lgcov -coverage -LINK_EXECUTABLE_FLAGS = -Wall -g -O3 \ -# -lgcov -coverage - -RPMBUILD_DIR = ${PackagePath}/RPMBUILD - - -####################################### -### PACKAGE-SPECIFIC EXTENSIONS ### +Libraries = cactus_uhal_log # Hide c++11-extensions warning when building on osx @@ -64,48 +34,6 @@ CPP_FLAGS += -Wno-c++11-extensions endif -######################## -### COMMON RULES ### - - -.PHONY: all _all clean _cleanall build _buildall install _installall rpm _rpmall test _testall spec_update - -default: build - -clean: _cleanall -_cleanall: - rm -rf ${RPMBUILD_DIR} - rm -rf obj - rm -rf lib - -all: _all -build: _all -buildall: _all -_all: ${LIBRARY} - -${LIBRARY}: ${OBJECT_FILES} - g++ ${LINK_LIBRARY_FLAGS} ${LIBRARY_PATH} ${LIBRARIES} ${OBJECT_FILES} -o $@ - -${LIBRARY_OBJECT_FILES}: obj/%.o : src/common/%.cpp ${INCLUDES} - mkdir -p {lib,obj} - g++ ${INCLUDE_PATH} -c $< ${CPP_FLAGS} -o $@ - --include $(OBJECT_FILES:.o=.d) - -rpm: _rpmall -_rpmall: - mkdir -p ${RPMBUILD_DIR}/{RPMS/{i386,i586,i686,x86_64},SPECS,BUILD,SOURCES,SRPMS} - mkdir -p ${RPMBUILD_DIR}/SOURCES/{lib,include/${Package}} - cp -p lib/*.so ${RPMBUILD_DIR}/SOURCES/lib/. - cp -p include/${Package}/*.hpp ${RPMBUILD_DIR}/SOURCES/include/${Package}/. - - rpmbuild -bb -bl --buildroot=${RPMBUILD_DIR}/BUILD \ - --define "_topdir ${RPMBUILD_DIR}" \ - --define "_prefix ${CACTUS_ROOT}" \ - --define "sources_dir ${RPMBUILD_DIR}/SOURCES" \ - --define "name ${PackageName}" \ - --define "version ${PACKAGE_VER_MAJOR}.${PACKAGE_VER_MINOR}.${PACKAGE_VER_PATCH}" \ - --define "release ${PACKAGE_RELEASE}.${CACTUS_OS}" \ - --define "packager ${Packager}" \ - ${PackageName}.spec +include $(BUILD_HOME)/uhal/config/mfRules.mk +include $(BUILD_HOME)/uhal/config/mfRPMRules.mk \ No newline at end of file diff --git a/uhal/grammars/cactuscore-uhal-grammars.spec b/uhal/grammars/cactuscore-uhal-grammars.spec deleted file mode 100644 index b92fea871..000000000 --- a/uhal/grammars/cactuscore-uhal-grammars.spec +++ /dev/null @@ -1,48 +0,0 @@ -# -# spefile for uHAL Boost Spirit Grammars -# -Name: %{name} -Version: %{version} -Release: %{release} -Packager: %{packager} -Summary: uHAL Boost Spirit Grammars -License: BSD License -Group: CACTUS -Source: https://svnweb.cern.ch/trac/cactus/browser/trunk/uhal/grammars -URL: https://svnweb.cern.ch/trac/cactus -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot -Prefix: %{_prefix} - -%description -uHAL Boost Spirit Grammars - -%prep - -%build - - -%install - -# copy includes to RPM_BUILD_ROOT and set aliases -mkdir -p $RPM_BUILD_ROOT%{_prefix}/include -cp -rp %{sources_dir}/include/* $RPM_BUILD_ROOT%{_prefix}/include/. - -# copy libs to RPM_BUILD_ROOT and set aliases -mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib -cp -rp %{sources_dir}/lib/* $RPM_BUILD_ROOT%{_prefix}/lib/. - -#Change access rights -chmod -R 755 $RPM_BUILD_ROOT%{_prefix}/lib -chmod -R 755 $RPM_BUILD_ROOT%{_prefix}/include - -%clean - -%post - -%postun - -%files -%defattr(-, root, root) -%{_prefix}/lib/* -%{_prefix}/include/* - diff --git a/uhal/gui/Makefile b/uhal/gui/Makefile index 90af7c79d..43b4b1718 100644 --- a/uhal/gui/Makefile +++ b/uhal/gui/Makefile @@ -1,40 +1,29 @@ BUILD_HOME = $(shell pwd)/../.. include $(BUILD_HOME)/config/Makefile.macros +include $(BUILD_HOME)/uhal/config/mfCommonDefs.mk + +Project = uhal +Package = uhal/gui +PackagePath = $(CACTUS_RPM_ROOT)/${Package} +PackageName = cactuscore-uhal-gui +PackageURL = https://ipbus.web.cern.ch/ipbus +PackageDescription = Python GUI for uTCA HW access based on uHAL +PythonModules = ["uhal.gui","uhal.gui.guis","uhal.gui.customguis","uhal.gui.utilities","uhal.gui.test"] +PackageScripts = ["uhal_gui.exe"] + +Packager = Carlos Ghabrous Larrea, Tom Williams PACKAGE_VER_MAJOR = 2 PACKAGE_VER_MINOR = 3 PACKAGE_VER_PATCH = 0 PACKAGE_RELEASE = 0 -export CACTUS_ROOT -export PACKAGE_VER_MAJOR PACKAGE_VER_MINOR PACKAGE_VER_PATCH - -PYTHON_VERSION = $(shell python -c "import sys; print str(sys.version_info[0]) + '.' + str(sys.version_info[1])") - -.PHONY: all _all clean _cleanall build _buildall install _installall rpm _rpmall test _testall - -default: build - -clean: _cleanall -_cleanall: - rm -rf ${RPMBUILD_DIR} - rm -rf build dist MANIFEST - -all: _all -build: _all -buildall: _all - -all: - -rpm: _rpmall -_rpmall: - rm -rf /var/tmp/cactus* - python setup.py bdist_rpm --release ${PACKAGE_RELEASE}.${CACTUS_OS}.python${PYTHON_VERSION} --binary-only --force-arch=`uname -m` +.PHONY: _all build clean +clean: ; +_all: ; +build: ; -install: _install -_install: - sudo rpm -ev cactuscore-uhal-gui &>/dev/null; exit 0 - find . -name "*.rpm" -exec sudo rpm -iv {} \; +include $(BUILD_HOME)/uhal/config/mfPythonRPMRules.mk \ No newline at end of file diff --git a/uhal/gui/uhal/gui/__init__.py b/uhal/gui/pkg/uhal/gui/__init__.py similarity index 100% rename from uhal/gui/uhal/gui/__init__.py rename to uhal/gui/pkg/uhal/gui/__init__.py diff --git a/uhal/gui/uhal/gui/bin/uhalgui.exe b/uhal/gui/pkg/uhal/gui/bin/uhalgui.exe similarity index 100% rename from uhal/gui/uhal/gui/bin/uhalgui.exe rename to uhal/gui/pkg/uhal/gui/bin/uhalgui.exe diff --git a/uhal/gui/uhal/gui/customguis/__init__.py b/uhal/gui/pkg/uhal/gui/customguis/__init__.py similarity index 100% rename from uhal/gui/uhal/gui/customguis/__init__.py rename to uhal/gui/pkg/uhal/gui/customguis/__init__.py diff --git a/uhal/gui/uhal/gui/customguis/customwindow1.py b/uhal/gui/pkg/uhal/gui/customguis/customwindow1.py similarity index 100% rename from uhal/gui/uhal/gui/customguis/customwindow1.py rename to uhal/gui/pkg/uhal/gui/customguis/customwindow1.py diff --git a/uhal/gui/uhal/gui/customguis/customwindow2.py b/uhal/gui/pkg/uhal/gui/customguis/customwindow2.py similarity index 100% rename from uhal/gui/uhal/gui/customguis/customwindow2.py rename to uhal/gui/pkg/uhal/gui/customguis/customwindow2.py diff --git a/uhal/gui/uhal/gui/guiloader.py b/uhal/gui/pkg/uhal/gui/guiloader.py similarity index 100% rename from uhal/gui/uhal/gui/guiloader.py rename to uhal/gui/pkg/uhal/gui/guiloader.py diff --git a/uhal/gui/uhal/gui/guis/__init__.py b/uhal/gui/pkg/uhal/gui/guis/__init__.py similarity index 100% rename from uhal/gui/uhal/gui/guis/__init__.py rename to uhal/gui/pkg/uhal/gui/guis/__init__.py diff --git a/uhal/gui/uhal/gui/guis/defaultgui.py b/uhal/gui/pkg/uhal/gui/guis/defaultgui.py similarity index 100% rename from uhal/gui/uhal/gui/guis/defaultgui.py rename to uhal/gui/pkg/uhal/gui/guis/defaultgui.py diff --git a/uhal/gui/uhal/gui/guis/hardware_table_panel.py b/uhal/gui/pkg/uhal/gui/guis/hardware_table_panel.py similarity index 100% rename from uhal/gui/uhal/gui/guis/hardware_table_panel.py rename to uhal/gui/pkg/uhal/gui/guis/hardware_table_panel.py diff --git a/uhal/gui/uhal/gui/guis/hardware_tree.py b/uhal/gui/pkg/uhal/gui/guis/hardware_tree.py similarity index 100% rename from uhal/gui/uhal/gui/guis/hardware_tree.py rename to uhal/gui/pkg/uhal/gui/guis/hardware_tree.py diff --git a/uhal/gui/uhal/gui/guis/plotreg.py b/uhal/gui/pkg/uhal/gui/guis/plotreg.py similarity index 100% rename from uhal/gui/uhal/gui/guis/plotreg.py rename to uhal/gui/pkg/uhal/gui/guis/plotreg.py diff --git a/uhal/gui/uhal/gui/guis/refresh_buttons_panel.py b/uhal/gui/pkg/uhal/gui/guis/refresh_buttons_panel.py similarity index 100% rename from uhal/gui/uhal/gui/guis/refresh_buttons_panel.py rename to uhal/gui/pkg/uhal/gui/guis/refresh_buttons_panel.py diff --git a/uhal/gui/uhal/gui/guis/regvalues.py b/uhal/gui/pkg/uhal/gui/guis/regvalues.py similarity index 100% rename from uhal/gui/uhal/gui/guis/regvalues.py rename to uhal/gui/pkg/uhal/gui/guis/regvalues.py diff --git a/uhal/gui/uhal/gui/test/__init__.py b/uhal/gui/pkg/uhal/gui/test/__init__.py similarity index 100% rename from uhal/gui/uhal/gui/test/__init__.py rename to uhal/gui/pkg/uhal/gui/test/__init__.py diff --git a/uhal/gui/uhal/gui/test/connections/docu_examples_address.xml b/uhal/gui/pkg/uhal/gui/test/connections/docu_examples_address.xml similarity index 100% rename from uhal/gui/uhal/gui/test/connections/docu_examples_address.xml rename to uhal/gui/pkg/uhal/gui/test/connections/docu_examples_address.xml diff --git a/uhal/gui/uhal/gui/test/connections/docu_examples_mymodule.xml b/uhal/gui/pkg/uhal/gui/test/connections/docu_examples_mymodule.xml similarity index 100% rename from uhal/gui/uhal/gui/test/connections/docu_examples_mymodule.xml rename to uhal/gui/pkg/uhal/gui/test/connections/docu_examples_mymodule.xml diff --git a/uhal/gui/uhal/gui/test/connections/dummy_address.xml b/uhal/gui/pkg/uhal/gui/test/connections/dummy_address.xml similarity index 100% rename from uhal/gui/uhal/gui/test/connections/dummy_address.xml rename to uhal/gui/pkg/uhal/gui/test/connections/dummy_address.xml diff --git a/uhal/gui/uhal/gui/test/connections/dummy_connections.xml b/uhal/gui/pkg/uhal/gui/test/connections/dummy_connections.xml similarity index 100% rename from uhal/gui/uhal/gui/test/connections/dummy_connections.xml rename to uhal/gui/pkg/uhal/gui/test/connections/dummy_connections.xml diff --git a/uhal/gui/uhal/gui/test/connections/dummy_level2_address.xml b/uhal/gui/pkg/uhal/gui/test/connections/dummy_level2_address.xml similarity index 100% rename from uhal/gui/uhal/gui/test/connections/dummy_level2_address.xml rename to uhal/gui/pkg/uhal/gui/test/connections/dummy_level2_address.xml diff --git a/uhal/gui/uhal/gui/test/connections/dummy_level3_address.xml b/uhal/gui/pkg/uhal/gui/test/connections/dummy_level3_address.xml similarity index 100% rename from uhal/gui/uhal/gui/test/connections/dummy_level3_address.xml rename to uhal/gui/pkg/uhal/gui/test/connections/dummy_level3_address.xml diff --git a/uhal/gui/uhal/gui/test/test_uhal_gui.py b/uhal/gui/pkg/uhal/gui/test/test_uhal_gui.py similarity index 100% rename from uhal/gui/uhal/gui/test/test_uhal_gui.py rename to uhal/gui/pkg/uhal/gui/test/test_uhal_gui.py diff --git a/uhal/gui/uhal/gui/utilities/__init__.py b/uhal/gui/pkg/uhal/gui/utilities/__init__.py similarity index 100% rename from uhal/gui/uhal/gui/utilities/__init__.py rename to uhal/gui/pkg/uhal/gui/utilities/__init__.py diff --git a/uhal/gui/uhal/gui/utilities/hardware.py b/uhal/gui/pkg/uhal/gui/utilities/hardware.py similarity index 100% rename from uhal/gui/uhal/gui/utilities/hardware.py rename to uhal/gui/pkg/uhal/gui/utilities/hardware.py diff --git a/uhal/gui/uhal/gui/utilities/hardware_monitoring.py b/uhal/gui/pkg/uhal/gui/utilities/hardware_monitoring.py similarity index 100% rename from uhal/gui/uhal/gui/utilities/hardware_monitoring.py rename to uhal/gui/pkg/uhal/gui/utilities/hardware_monitoring.py diff --git a/uhal/gui/uhal/gui/utilities/utilities.py b/uhal/gui/pkg/uhal/gui/utilities/utilities.py similarity index 100% rename from uhal/gui/uhal/gui/utilities/utilities.py rename to uhal/gui/pkg/uhal/gui/utilities/utilities.py diff --git a/uhal/gui/uhal_gui.exe b/uhal/gui/pkg/uhal_gui.exe similarity index 100% rename from uhal/gui/uhal_gui.exe rename to uhal/gui/pkg/uhal_gui.exe diff --git a/uhal/gui/setup.py b/uhal/gui/setup.py deleted file mode 100644 index a3420b917..000000000 --- a/uhal/gui/setup.py +++ /dev/null @@ -1,16 +0,0 @@ -import os -import sys -from distutils.core import setup - -VERSION_STRING = ( os.environ['PACKAGE_VER_MAJOR'] + '.' + os.environ['PACKAGE_VER_MINOR'] + '.' + os.environ['PACKAGE_VER_PATCH'] ) - - -setup(name = 'cactuscore-uhal-gui', - version = VERSION_STRING, - description = 'Python GUI for uTCA HW access based on uHAL', - author = 'Carlos Ghabrous Larrea', - author_email = 'carlos.ghabrous@cern.ch', - url = 'http://cactus.web.cern.ch/cactus', - packages = ['uhal.gui','uhal.gui.guis','uhal.gui.customguis','uhal.gui.utilities','uhal.gui.test'], - scripts = ['uhal_gui.exe'] - ) diff --git a/uhal/pycohal/MANIFEST.in b/uhal/pycohal/MANIFEST.in deleted file mode 100644 index 5e2527a5e..000000000 --- a/uhal/pycohal/MANIFEST.in +++ /dev/null @@ -1,7 +0,0 @@ - -# This file is needed due to bug in Python 2.4 version of distutils -# (Specifically, scripts and package_data files in setup.py are not automatically shipped) - -include test_pycohal -include pkg/uhal/*.so - diff --git a/uhal/pycohal/Makefile b/uhal/pycohal/Makefile index 99d8ca180..2fda2ed22 100644 --- a/uhal/pycohal/Makefile +++ b/uhal/pycohal/Makefile @@ -1,105 +1,80 @@ BUILD_HOME = $(shell pwd)/../.. include $(BUILD_HOME)/config/Makefile.macros +include $(BUILD_HOME)/uhal/config/mfCommonDefs.mk + +Project = uhal +Package = uhal/pycohal +PackagePath = $(CACTUS_RPM_ROOT)/${Package} +PackageName = cactuscore-uhal-pycohal +PackageURL = https://ipbus.web.cern/ipbus +PackageDescription = Python bindings for the CACTUS uhal library +PythonModules = ["uhal"] + +Packager = Tom Williams PACKAGE_VER_MAJOR = 2 PACKAGE_VER_MINOR = 5 PACKAGE_VER_PATCH = 1 PACKAGE_RELEASE = 1 -PYTHON_VERSION = $(shell python -c "import sys; print str(sys.version_info[0]) + '.' + str(sys.version_info[1])") - -PYTHON_LIB=python${PYTHON_VERSION} +LibraryTarget = pkg/uhal/_core.so -export CACTUS_ROOT -export PACKAGE_VER_MAJOR PACKAGE_VER_MINOR PACKAGE_VER_PATCH +IncludePaths = include \ + ${EXTERN_BOOST_INCLUDE_PREFIX} \ + ${PYTHON_INCLUDE_PREFIX} \ + ${EXTERN_PUGIXML_INCLUDE_PREFIX} \ + ${UHAL_UHAL_INCLUDE_PREFIX} \ + ${UHAL_LOG_INCLUDE_PREFIX} \ + ${UHAL_GRAMMARS_INCLUDE_PREFIX} -BINDINGS_SOURCES = $(wildcard src/common/*.cpp) -BINDINGS_OBJECT_FILES = $(patsubst src/common/%.cpp,obj/%.o,${BINDINGS_SOURCES}) -BINDINGS_LIB = pkg/uhal/_core.so - -LIBRARY_PATH = \ +LibraryPaths = \ ${EXTERN_BOOST_LIB_PREFIX} \ ${EXTERN_PUGIXML_LIB_PREFIX} \ ${UHAL_UHAL_LIB_PREFIX} \ ${UHAL_LOG_LIB_PREFIX} \ ${UHAL_GRAMMARS_LIB_PREFIX} \ ${PYTHON_LIB_PREFIX} -LIBRARY_PATH := $(addprefix -L,$(LIBRARY_PATH)) - - -BINDING_LIBRARIES = \ - -lpthread \ - -ldl \ - -lutil \ - -l${PYTHON_LIB} \ - \ - -lboost_filesystem \ - -lboost_python \ - -lboost_regex \ - -lboost_system \ - -lboost_thread \ - \ - -l${PUGIXML_LIB_NAME} \ - -lcactus_uhal_grammars \ - -lcactus_uhal_log \ - -lcactus_uhal_uhal - - -INCLUDE_PATH = include \ - ${EXTERN_BOOST_INCLUDE_PREFIX} \ - ${PYTHON_INCLUDE_PREFIX} \ - ${EXTERN_PUGIXML_INCLUDE_PREFIX} \ - ${UHAL_UHAL_INCLUDE_PREFIX} \ - ${UHAL_LOG_INCLUDE_PREFIX} \ - ${UHAL_GRAMMARS_INCLUDE_PREFIX} -INCLUDE_PATH := $(addprefix -I,$(INCLUDE_PATH)) - -CPP_FLAGS = -g -Wall -pedantic -MMD -MP -fPIC ${INCLUDE_PATH} - -LINK_BINDINGS_FLAGS_COMMON = -shared -fPIC -Wall -g ${LIBRARY_PATH} ${BINDING_LIBRARIES} + +Libraries = \ + pthread \ + dl \ + util \ + ${PYTHON_LIB} \ + \ + boost_filesystem \ + boost_python \ + boost_regex \ + boost_system \ + boost_thread \ + \ + ${PUGIXML_LIB_NAME} \ + cactus_uhal_grammars \ + cactus_uhal_log \ + cactus_uhal_uhal + + +CXXFLAGS += -ftemplate-depth-128 -O0 -rdynamic -finline-functions -Wno-inline -DNDEBUG ifeq (${CACTUS_OS},osx) - LINK_BINDINGS_FLAGS = ${LINK_BINDINGS_FLAGS_COMMON} - CPP_FLAGS += -Wno-c++11-extensions + CXXFLAGS += -Wno-c++11-extensions else - LINK_BINDINGS_FLAGS = ${LINK_BINDINGS_FLAGS_COMMON} -Wl,-h -Wl,-Bstatic -Wl,-Bdynamic + LDFLAGS += -Wl,-h -Wl,-Bstatic -Wl,-Bdynamic endif -.PHONY: all _all clean _cleanall build _buildall install _installall rpm _rpmall test _testall spec_update generator - -default: build - -clean: _cleanall -_cleanall: - rm -rf ${RPMBUILD_DIR} - rm -rf obj - rm -rf ${BINDINGS_LIB} - rm -rf build dist MANIFEST - -all: _all -build: _all -buildall: _all -_all: ${BINDINGS_LIB} - -#Library will be compiled and will be packaged -${BINDINGS_LIB}: ${BINDINGS_OBJECT_FILES} - g++ ${LINK_BINDINGS_FLAGS} ${BINDINGS_OBJECT_FILES} -o $@ - -${BINDINGS_OBJECT_FILES}: obj/%.o : src/common/%.cpp - mkdir -p obj - g++ -c ${CPP_FLAGS} -ftemplate-depth-128 -O0 -rdynamic -finline-functions -Wno-inline -DNDEBUG $< -o $@ --include $(BINDINGS_OBJECT_FILES:.o=.d) +include $(BUILD_HOME)/uhal/config/mfRules.mk +include $(BUILD_HOME)/uhal/config/mfPythonRPMRules.mk -rpm: _rpmall -_rpmall: ${BINDINGS_LIB} - rm -rf /var/tmp/cactus* - $(eval LIB_DEPENDENCIES := $(shell ldd ${BINDINGS_LIB} | sed -n 's/\s*\(libboost_python.so[^ ]*\).*/\1()(64bit)/p')) - $(eval LIB_DEPENDENCIES += $(shell ldd ${BINDINGS_LIB} | sed -n 's/\s*\(libcactus_uhal_uhal.so[^ ]*\).*/\1()(64bit)/p')) - $(info LIB_DEPENDENCIES=${LIB_DEPENDENCIES}) - python setup.py bdist_rpm --binary-only --force-arch=`uname -m` --requires "${LIB_DEPENDENCIES}" \ - --release ${PACKAGE_RELEASE}.${CACTUS_OS}.python${PYTHON_VERSION} +# FIXME: Add missing lib dependencies (hopefully in a generic way) ... +# rpm: _rpmall +# _rpmall: ${BINDINGS_LIB} +# rm -rf /var/tmp/cactus* +# $(eval LIB_DEPENDENCIES := $(shell ldd ${BINDINGS_LIB} | sed -n 's/\s*\(libboost_python.so[^ ]*\).*/\1()(64bit)/p')) +# $(eval LIB_DEPENDENCIES += $(shell ldd ${BINDINGS_LIB} | sed -n 's/\s*\(libcactus_uhal_uhal.so[^ ]*\).*/\1()(64bit)/p')) +# $(info LIB_DEPENDENCIES=${LIB_DEPENDENCIES}) +# python setup.py bdist_rpm --binary-only --force-arch=`uname -m` --requires "${LIB_DEPENDENCIES}" \ +# --release ${PACKAGE_RELEASE}.${CACTUS_OS}.python${PYTHON_VERSION} diff --git a/uhal/pycohal/setup.py b/uhal/pycohal/setup.py deleted file mode 100644 index 9bd333eb4..000000000 --- a/uhal/pycohal/setup.py +++ /dev/null @@ -1,20 +0,0 @@ - -import os, sys -from distutils.core import setup -from os.path import join - -PYCOHAL_VERSION = (os.environ['PACKAGE_VER_MAJOR']+'.'+os.environ['PACKAGE_VER_MINOR']+'.'+os.environ['PACKAGE_VER_PATCH']) - -setup(name='cactuscore-uhal-pycohal', - version = PYCOHAL_VERSION, - description = 'Python bindings for the CACTUS uhal libraries.', - author = 'Tom Williams', - author_email = 'T.Williams@cern.ch', - url = 'http://cactus.web.cern.ch/cactus', - - packages = ['uhal'], - package_dir = {'' : 'pkg'}, - package_data = {'uhal' : ['*.so']} - - ) - diff --git a/uhal/tests/Makefile b/uhal/tests/Makefile index 2344736d2..bf74ac529 100644 --- a/uhal/tests/Makefile +++ b/uhal/tests/Makefile @@ -1,11 +1,13 @@ BUILD_HOME = $(shell pwd)/../.. include $(BUILD_HOME)/config/Makefile.macros +include $(BUILD_HOME)/uhal/config/mfCommonDefs.mk Project = uhal Package = uhal/tests PackagePath = $(CACTUS_RPM_ROOT)/${Package} PackageName = cactuscore-uhal-tests +PackageURL = https://ipbus.web.cern.ch/ipbus Packager = Andrew Rose, Marc Magrans de Arbil, Tom Williams @@ -14,24 +16,24 @@ PACKAGE_VER_MINOR = 5 PACKAGE_VER_PATCH = 1 PACKAGE_RELEASE = 1 -LIBRARY = cactus_uhal_tests +Library = cactus_uhal_tests -INCLUDE_PATH = include \ +IncludePaths = include \ ${UHAL_LOG_INCLUDE_PREFIX} \ ${UHAL_GRAMMARS_INCLUDE_PREFIX} \ ${EXTERN_BOOST_INCLUDE_PREFIX} \ ${EXTERN_PUGIXML_INCLUDE_PREFIX} \ ${UHAL_UHAL_INCLUDE_PREFIX} -LIBRARY_PATH = ${EXTERN_BOOST_LIB_PREFIX} \ +LibraryPaths = ${EXTERN_BOOST_LIB_PREFIX} \ ${EXTERN_PUGIXML_LIB_PREFIX} \ ${UHAL_LOG_LIB_PREFIX} \ ${UHAL_GRAMMARS_LIB_PREFIX} \ ${UHAL_UHAL_LIB_PREFIX} \ lib -LIBRARIES = \ +Libraries = \ cactus_uhal_uhal \ cactus_uhal_grammars \ cactus_uhal_log \ @@ -47,103 +49,15 @@ LIBRARIES = \ \ pthread \ -EXECUTABLE_LIBRARIES = -lcactus_uhal_tests ${LIBRARIES} - - - -#################################### -### COMMON DERIVED VARIABLES ### - - -LIBRARY := lib/lib${LIBRARY}.so - -LIBRARY_SOURCES = $(wildcard src/common/*.cpp) -LIBRARY_OBJECT_FILES = $(patsubst src/common/%.cpp,obj/%.o,${LIBRARY_SOURCES}) - -EXECUTABLE_SOURCES = $(wildcard src/common/*.cxx) -EXECUTABLE_OBJECT_FILES = $(patsubst src/common/%.cxx,obj/%.o,${EXECUTABLE_SOURCES}) -EXECUTABLES = $(patsubst src/common/%.cxx,bin/%.exe,${EXECUTABLE_SOURCES}) - -INCLUDE_PATH := $(addprefix -I,$(INCLUDE_PATH)) -LIBRARY_PATH := $(addprefix -L,$(LIBRARY_PATH)) -LIBRARIES := $(addprefix -l,$(LIBRARIES)) - -CPP_FLAGS = -g -Wall -pedantic -O3 -MMD -MP -fPIC \ -# -fprofile-arcs -ftest-coverage -LINK_LIBRARY_FLAGS = -shared -g -Wall -O3 -fPIC \ -# -lgcov -coverage -LINK_EXECUTABLE_FLAGS = -g -Wall -O3 \ -# -lgcov -coverage - -RPMBUILD_DIR = ${PackagePath}/RPMBUILD - - -####################################### -### PACKAGE-SPECIFIC EXTENSIONS ### +ExecutableLibraries = cactus_uhal_tests ${Libraries} # Hide c++11-extensions warning when building on osx ifeq ($(CACTUS_OS),osx) -CPP_FLAGS += -Wno-c++11-extensions +CXXFLAGS += -Wno-c++11-extensions endif -######################## -### COMMON RULES ### - - -.PHONY: all _all clean _cleanall build _buildall install _installall rpm _rpmall test _testall spec_update - -default: build - -clean: _cleanall -_cleanall: - rm -rf ${RPMBUILD_DIR} - rm -rf obj - rm -rf bin - rm -rf lib - -all: _all -build: _all -buildall: _all -_all: ${LIBRARY} ${EXECUTABLES} - - -${EXECUTABLES}: bin/%.exe: obj/%.o ${EXECUTABLE_OBJECT_FILES} - g++ ${LINK_EXECUTABLE_FLAGS} $< ${LIBRARY_PATH} ${EXECUTABLE_LIBRARIES} -o $@ - -${EXECUTABLE_OBJECT_FILES}: obj/%.o : src/common/%.cxx - mkdir -p {bin,obj,lib} - g++ -c ${CPP_FLAGS} ${INCLUDE_PATH} $< -o $@ - --include $(EXECUTABLE_OBJECT_FILES:.o=.d) - -${LIBRARY}: ${LIBRARY_OBJECT_FILES} - g++ ${LINK_LIBRARY_FLAGS} ${LIBRARY_PATH} ${LIBRARIES} ${LIBRARY_OBJECT_FILES} -o $@ - -${LIBRARY_OBJECT_FILES}: obj/%.o : src/common/%.cpp - mkdir -p {bin,obj,lib} - g++ -c ${CPP_FLAGS} ${INCLUDE_PATH} $< -o $@ - --include $(LIBRARY_OBJECT_FILES:.o=.d) - -rpm: _rpmall -_rpmall: - mkdir -p ${RPMBUILD_DIR}/{RPMS/{i386,i586,i686,x86_64},SPECS,BUILD,SOURCES,SRPMS} - mkdir -p ${RPMBUILD_DIR}/SOURCES/{bin/${Package},lib,include/${Package},etc/${Package}} - cp -p include/${Package}/*.hpp ${RPMBUILD_DIR}/SOURCES/include/${Package}/. - cp -p bin/*.exe ${RPMBUILD_DIR}/SOURCES/bin/${Package}/. - cp -p src/python/test_pycohal ${RPMBUILD_DIR}/SOURCES/bin/${Package}/. - cp -p scripts/* ${RPMBUILD_DIR}/SOURCES/bin/${Package}/. - cp -p lib/*.so ${RPMBUILD_DIR}/SOURCES/lib/. - cp -p etc/${Package}/*.xml ${RPMBUILD_DIR}/SOURCES/etc/${Package} - rpmbuild -bb -bl --buildroot=${RPMBUILD_DIR}/BUILD \ - --define "_topdir ${RPMBUILD_DIR}" \ - --define "_prefix ${CACTUS_ROOT}" \ - --define "sources_dir ${RPMBUILD_DIR}/SOURCES" \ - --define "name ${PackageName}" \ - --define "version ${PACKAGE_VER_MAJOR}.${PACKAGE_VER_MINOR}.${PACKAGE_VER_PATCH}" \ - --define "release ${PACKAGE_RELEASE}.${CACTUS_OS}" \ - --define "packager ${Packager}" \ - ${PackageName}.spec +include $(BUILD_HOME)/uhal/config/mfRules.mk +include $(BUILD_HOME)/uhal/config/mfRPMRules.mk \ No newline at end of file diff --git a/uhal/tests/cactuscore-uhal-tests.spec b/uhal/tests/cactuscore-uhal-tests.spec deleted file mode 100644 index 76f13fa41..000000000 --- a/uhal/tests/cactuscore-uhal-tests.spec +++ /dev/null @@ -1,47 +0,0 @@ -# -# spefile for uHAL Library Tests -# -Name: %{name} -Version: %{version} -Release: %{release} -Packager: %{packager} -Summary: uHAL Library Tests -License: BSD License -Group: CACTUS -Source: https://svnweb.cern.ch/trac/cactus/browser/trunk/uhal/tests -URL: https://svnweb.cern.ch/trac/cactus -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot -Prefix: %{_prefix} - -%description -uHAL Library Tests - -%prep - -%build - - -%install - -# copy includes to RPM_BUILD_ROOT and set aliases -mkdir -p $RPM_BUILD_ROOT%{_prefix} -cp -rp %{sources_dir}/* $RPM_BUILD_ROOT%{_prefix}/. - -#Change access rights -chmod -R 755 $RPM_BUILD_ROOT%{_prefix}/lib -chmod -R 755 $RPM_BUILD_ROOT%{_prefix}/bin -chmod -R 755 $RPM_BUILD_ROOT%{_prefix}/include - - -%clean - -%post - -%postun - -%files -%defattr(-, root, root,-) -%{_prefix}/bin/* -%{_prefix}/lib/* -%{_prefix}/etc/* -%{_prefix}/include/* diff --git a/uhal/tools/Makefile b/uhal/tools/Makefile index 8888817e2..846cd0ebc 100644 --- a/uhal/tools/Makefile +++ b/uhal/tools/Makefile @@ -1,11 +1,13 @@ BUILD_HOME = $(shell pwd)/../.. include $(BUILD_HOME)/config/Makefile.macros +include #(BUILD_HOME)/config/Makefile.macros Project = uhal Package = uhal/tools PackagePath = $(CACTUS_RPM_ROOT)/${Package} PackageName = cactuscore-uhal-tools +PackageURL = https://ipbus.web.cern.ch/ipbus Packager = Kristian Harder, Dave Newbold, Tom Williams @@ -15,37 +17,12 @@ PACKAGE_VER_PATCH = 1 PACKAGE_RELEASE = 1 -RPMBUILD_DIR = ${PackagePath}/RPMBUILD +.PHONY: _all build clean +clean: ; +_all: ; +build: ; -.PHONY: all _all clean _cleanall build _buildall install _installall rpm _rpmall test _testall spec_update - -default: build - -clean: _cleanall -_cleanall: - rm -rf ${RPMBUILD_DIR} - - -all: _all -build: _all -buildall: _all -_all: ${LIBRARY} ${EXECUTABLES} - - -rpm: _rpmall -_rpmall: - mkdir -p ${RPMBUILD_DIR}/{RPMS/{i386,i586,i686,x86_64},SPECS,BUILD,SOURCES,SRPMS} - mkdir -p ${RPMBUILD_DIR}/SOURCES/{bin/${Package},etc/${Package}} - cp -p scripts/* ${RPMBUILD_DIR}/SOURCES/bin/${Package}/. - cp -p etc/${Package}/* ${RPMBUILD_DIR}/SOURCES/etc/${Package} - rpmbuild -bb -bl --buildroot=${RPMBUILD_DIR}/BUILD \ - --define "_topdir ${RPMBUILD_DIR}" \ - --define "_prefix ${CACTUS_ROOT}" \ - --define "sources_dir ${RPMBUILD_DIR}/SOURCES" \ - --define "name ${PackageName}" \ - --define "version ${PACKAGE_VER_MAJOR}.${PACKAGE_VER_MINOR}.${PACKAGE_VER_PATCH}" \ - --define "release ${PACKAGE_RELEASE}.${CACTUS_OS}" \ - --define "packager ${Packager}" \ - ${PackageName}.spec +BuildDebuginfoRPM = 0 +include $(BUILD_HOME)/uhal/config/mfRPMRules.mk \ No newline at end of file diff --git a/uhal/uhal/Makefile b/uhal/uhal/Makefile index 5141981e9..de07a5fc1 100644 --- a/uhal/uhal/Makefile +++ b/uhal/uhal/Makefile @@ -1,6 +1,7 @@ BUILD_HOME = $(shell pwd)/../.. include $(BUILD_HOME)/config/Makefile.macros +include $(BUILD_HOME)/uhal/config/mfCommonDefs.mk Project = uhal Package = uhal/uhal @@ -14,21 +15,21 @@ PACKAGE_VER_MINOR = 5 PACKAGE_VER_PATCH = 1 PACKAGE_RELEASE = 1 -LIBRARY = cactus_uhal_uhal +Library = cactus_uhal_uhal -INCLUDE_PATH = include \ +IncludePaths = include \ ${UHAL_GRAMMARS_INCLUDE_PREFIX} \ ${UHAL_LOG_INCLUDE_PREFIX} \ ${EXTERN_BOOST_INCLUDE_PREFIX} \ ${EXTERN_PUGIXML_INCLUDE_PREFIX} -LIBRARY_PATH = ${EXTERN_BOOST_LIB_PREFIX} \ +LibraryPaths = ${EXTERN_BOOST_LIB_PREFIX} \ ${EXTERN_PUGIXML_LIB_PREFIX} \ ${UHAL_GRAMMARS_LIB_PREFIX} \ ${UHAL_LOG_LIB_PREFIX} -LIBRARIES = pthread \ +Libraries = pthread \ \ ${PUGIXML_LIB_NAME} \ \ @@ -43,38 +44,7 @@ LIBRARIES = pthread \ - -#################################### -### COMMON DERIVED VARIABLES ### - - -LIBRARY := lib/lib${LIBRARY}.so - -LIBRARY_SOURCES = $(wildcard src/common/*.cpp) -LIBRARY_OBJECT_FILES = $(patsubst src/common/%.cpp,obj/%.o,${LIBRARY_SOURCES}) - -EXECUTABLE_SOURCES = $(wildcard src/common/*.cxx) -EXECUTABLE_OBJECT_FILES = $(patsubst src/common/%.cxx,obj/%.o,${EXECUTABLE_SOURCES}) -EXECUTABLES = $(patsubst src/common/%.cxx,bin/%.exe,${EXECUTABLE_SOURCES}) - -INCLUDE_PATH := $(addprefix -I,$(INCLUDE_PATH)) -LIBRARY_PATH := $(addprefix -L,$(LIBRARY_PATH)) -LIBRARIES := $(addprefix -l,$(LIBRARIES)) - -CPP_FLAGS = -g -Wall -pedantic -O3 -MMD -MP -fPIC \ -# -fprofile-arcs -ftest-coverage -LINK_LIBRARY_FLAGS = -shared -fPIC -Wall -g -O3 \ -# -lgcov -coverage -LINK_EXECUTABLE_FLAGS = -Wall -g -O3 \ -# -lgcov -coverage - -RPMBUILD_DIR = ${PackagePath}/RPMBUILD - - -####################################### -### PACKAGE-SPECIFIC EXTENSIONS ### - -CPP_FLAGS += -DDISABLE_PACKET_COUNTER_HACK\ +CXXFLAGS += -DDISABLE_PACKET_COUNTER_HACK\ -DRUN_ASIO_MULTITHREADED # \ # -DNO_PREEMPTIVE_DISPATCH @@ -90,48 +60,6 @@ CPP_FLAGS += -Wno-c++11-extensions -fdelayed-template-parsing endif -######################## -### COMMON RULES ### - - -.PHONY: all _all clean _cleanall build _buildall install _installall rpm _rpmall test _testall - -default: build -clean: _cleanall -_cleanall: - rm -rf ${RPMBUILD_DIR} - rm -rf obj - rm -rf lib - -all: _all -build: _all -buildall: _all -_all: ${LIBRARY} - - -${LIBRARY}: ${OBJECT_FILES} - g++ ${LINK_LIBRARY_FLAGS} ${LIBRARY_PATH} ${LIBRARIES} ${OBJECT_FILES} -o $@ - -${OBJECT_FILES}: obj/%.o : src/common/%.cpp - mkdir -p {lib,obj} - g++ ${CPP_FLAGS} ${INCLUDE_PATH} -c $< -o $@ - --include $(OBJECT_FILES:.o=.d) - -rpm: _rpmall -_rpmall: - mkdir -p ${RPMBUILD_DIR}/{RPMS/{i386,i586,i686,x86_64},SPECS,BUILD,SOURCES,SRPMS} - mkdir -p ${RPMBUILD_DIR}/SOURCES/{lib,include/uhal,include/uhal/TemplateDefinitions} - cp -p lib/*.so ${RPMBUILD_DIR}/SOURCES/lib/. - cp -p include/uhal/*.hpp ${RPMBUILD_DIR}/SOURCES/include/uhal/. - cp -p include/uhal/TemplateDefinitions/*.hxx ${RPMBUILD_DIR}/SOURCES/include/uhal/TemplateDefinitions/. - rpmbuild -bb -bl --buildroot=${RPMBUILD_DIR}/BUILD \ - --define "_topdir ${RPMBUILD_DIR}" \ - --define "_prefix ${CACTUS_ROOT}" \ - --define "sources_dir ${RPMBUILD_DIR}/SOURCES" \ - --define "name ${PackageName}" \ - --define "version ${PACKAGE_VER_MAJOR}.${PACKAGE_VER_MINOR}.${PACKAGE_VER_PATCH}" \ - --define "release ${PACKAGE_RELEASE}.${CACTUS_OS}" \ - --define "packager ${Packager}" \ - ${PackageName}.spec +include $(BUILD_HOME)/uhal/config/mfRules.mk +include $(BUILD_HOME)/uhal/config/mfRPMRules.mk \ No newline at end of file diff --git a/uhal/uhal/cactuscore-uhal-uhal.spec b/uhal/uhal/cactuscore-uhal-uhal.spec deleted file mode 100644 index a0e67b86d..000000000 --- a/uhal/uhal/cactuscore-uhal-uhal.spec +++ /dev/null @@ -1,48 +0,0 @@ -# -# spefile for uHAL Library -# -Name: %{name} -Version: %{version} -Release: %{release} -Packager: %{packager} -Summary: uHAL Library -License: BSD License -Group: CACTUS -Source: https://svnweb.cern.ch/trac/cactus/browser/trunk/uhal/uhal -URL: https://svnweb.cern.ch/trac/cactus -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot -Prefix: %{_prefix} - -%description -uHAL Library - -%prep - -%build - - -%install - -# copy includes to RPM_BUILD_ROOT and set aliases -mkdir -p $RPM_BUILD_ROOT%{_prefix}/include -cp -rp %{sources_dir}/include/* $RPM_BUILD_ROOT%{_prefix}/include/. - -# copy libs to RPM_BUILD_ROOT and set aliases -mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib -cp -rp %{sources_dir}/lib/* $RPM_BUILD_ROOT%{_prefix}/lib/. - -#Change access rights -chmod -R 755 $RPM_BUILD_ROOT%{_prefix}/lib -chmod -R 755 $RPM_BUILD_ROOT%{_prefix}/include - -%clean - -%post - -%postun - -%files -%defattr(-, root, root) -%{_prefix}/lib/* -%{_prefix}/include/* -