Skip to content

Instantly share code, notes, and snippets.

@gdlmx
Last active August 9, 2019 13:53
Show Gist options
  • Save gdlmx/9d57afecb48b3fd45c118a458bf3e7b7 to your computer and use it in GitHub Desktop.
Save gdlmx/9d57afecb48b3fd45c118a458bf3e7b7 to your computer and use it in GitHub Desktop.
HTCondor built with Python3 and Globus GSI
# Used under anaconda environment with the GCC from OS.
# Python 3.6 (Anaconda), CentOS 7
# Required conda packages:
# cmake libtool sasl curl pcre libuuid openldap cyrus-sasl sqlite
# Conflicting packages:
# krb5, py-boost
CONDAHOME?=$(CONDA_PREFIX)
GLOBUSHOME:=$(PWD)/../globus/usr
BoostHOME:=$(PWD)/../boost
CONDORVER:=8.7.9
SRCDIR:=../condor-$(CONDORVER)
export CMAKE_SYSTEM_LIBRARY_PATH:=$(BoostHOME)/lib;$(GLOBUSHOME)/lib64;$(CONDAHOME)/lib
export CMAKE_INCLUDE_PATH:=$(BoostHOME)/include;$(GLOBUSHOME)/include/globus;$(CONDAHOME)/include
export CPATH:=$(subst ;,:,$(CMAKE_INCLUDE_PATH)):$(CPATH)
export LIBRARY_PATH:=$(subst ;,:,$(CMAKE_SYSTEM_LIBRARY_PATH)):$(LIBRARY_PATH)
# LIBRARY_PATH may not affect some versions of GCC
export CONDOR_EXTERNAL_LINK_DIRS:=$(BoostHOME)/lib
export LD_LIBRARY_PATH:=$(LD_LIBRARY_PATH):$(CONDAHOME)/lib
# $(CONDAHOME)/lib is required by linker to find dependencies of the existing lib*.so files
all: cmake.log info
make -j8
make install
cd release_dir/lib/python/ && find . -name '*.so' -exec patchelf --set-rpath '$$ORIGIN/../../condor:$$ORIGIN/../../:/lib64:/usr/lib64' {} \;
.PHONY: info clean
info:
@env | grep -E '(C|LIBRARY_|CMAKE_\w+_)PATH='
@cmake --version
cmake.log: $(SRCDIR)/configure_redhat
$< -DCMAKE_SYSTEM_LIBRARY_PATH='$(CMAKE_SYSTEM_LIBRARY_PATH)' -DCMAKE_INCLUDE_PATH='$(CMAKE_INCLUDE_PATH)' $$(dirname $<) > $@
clean:
[ -d $(SRCDIR) ] && rm -rf *
# Used by conda-build with the Anaconda GCC compilers:
# gcc_linux-64=7 gxx_linux-64 libgcc-ng=7
CONDAHOME?=$(CONDA_PREFIX)
GLOBUSHOME:=$(PWD)/../globus/usr
CONDORVER:=8.7.9
SRCDIR:=../condor-$(CONDORVER)
GCCROOT=$(CONDAHOME)/x86_64-conda_cos6-linux-gnu
export CMAKE_INCLUDE_PATH:=$(CONDAHOME)/include;$(GLOBUSHOME)/include/globus;
export CMAKE_SYSTEM_LIBRARY_PATH:=$(CONDAHOME)/lib;$(GLOBUSHOME)/lib64
export CONDOR_EXTERNAL_LINK_DIRS:=$(CONDAHOME)/lib #;$(GCCROOT)/sysroot/lib;$(GCCROOT)/lib
# Defined in build/cmake/CondorConfigure.cmake
export CPATH:=$(subst ;,:,$(CMAKE_INCLUDE_PATH)):$(CPATH)
#export LIBRARY_PATH:=$(subst ;,:,$(CMAKE_SYSTEM_LIBRARY_PATH)):$(LIBRARY_PATH)
# GCC from anaconda ignores this variable
#export LD_LIBRARY_PATH:=$(LD_LIBRARY_PATH):$(CONDAHOME)/lib
#export PATH:=$(GCCROOT)/bin:$(GCCROOT)/sysroot/usr/bin:$(PATH)
all: cmake.log info
make -j8
.PHONY: info clean
info:
@env | grep -E '(C|LIBRARY_|CMAKE_\w+_)PATH='
@cmake --version
cmake.log: $(SRCDIR)/configure_redhat
$< -DCMAKE_SYSTEM_LIBRARY_PATH='$(CMAKE_SYSTEM_LIBRARY_PATH)' -DCMAKE_INCLUDE_PATH='$(CMAKE_INCLUDE_PATH)' $$(dirname $<) > $@
clean:
[ -d $(SRCDIR) ] && rm -rf *
diff -Naur condor-8.6.11.origin/configure_redhat condor-8.6.11/configure_redhat
--- condor-8.6.11.origin/configure_redhat 2018-05-10 18:39:02.000000000 +0200
+++ condor-8.6.11/configure_redhat 2018-06-06 00:57:27.391013943 +0200
@@ -20,11 +20,12 @@
-DHAVE_HIBERNATION:BOOL=TRUE \
-DWANT_LEASE_MANAGER:BOOL=FALSE \
-DWANT_CONTRIB:BOOL=ON \
+ -DWITH_KRB5:BOOL=FALSE \
-DWANT_MAN_PAGES:BOOL=TRUE \
-DWANT_FULL_DEPLOYMENT:BOOL=FALSE \
-DWANT_GLEXEC:BOOL=FALSE \
-D_VERBOSE:BOOL=TRUE \
-DBUILDID:STRING=RH_development \
- -DWITH_GLOBUS:BOOL=FALSE \
+ -DWITH_GLOBUS:BOOL=TRUE \
-DWITH_VOMS:BOOL=FALSE \
-DCMAKE_INSTALL_PREFIX:PATH=${PWD}/release_dir "$@"
diff -Naur condor-8.6.11.origin/src/python-bindings/classad_python_user.cpp condor-8.6.11/src/python-bindings/classad_python_user.cpp
--- condor-8.6.11.origin/src/python-bindings/classad_python_user.cpp 2018-05-10 18:39:02.000000000 +0200
+++ condor-8.6.11/src/python-bindings/classad_python_user.cpp 2018-06-05 21:23:32.276135706 +0200
@@ -48,7 +48,7 @@
{
if (!Py_IsInitialized())
{
- char pname[] = "htcondor";
+ wchar_t pname[] = L"htcondor";
Py_SetProgramName(pname);
Py_InitializeEx(0);
}
diff -Naur condor-8.6.11.origin/src/python-bindings/collector.cpp condor-8.6.11/src/python-bindings/collector.cpp
--- condor-8.6.11.origin/src/python-bindings/collector.cpp 2018-05-10 18:39:02.000000000 +0200
+++ condor-8.6.11/src/python-bindings/collector.cpp 2018-06-05 21:23:32.280135823 +0200
@@ -79,7 +79,7 @@
m_collectors = CollectorList::create();
m_default = true;
}
- else if (PyString_Check(pool.ptr()) || PyUnicode_Check(pool.ptr()))
+ else if (PyBytes_Check(pool.ptr()) || PyUnicode_Check(pool.ptr()))
{
std::string pool_str = boost::python::extract<std::string>(pool);
if (pool_str.size())
diff -Naur condor-8.6.11.origin/src/python-bindings/collector_plugin.cpp condor-8.6.11/src/python-bindings/collector_plugin.cpp
--- condor-8.6.11.origin/src/python-bindings/collector_plugin.cpp 2018-05-10 18:39:02.000000000 +0200
+++ condor-8.6.11/src/python-bindings/collector_plugin.cpp 2018-06-05 21:23:32.284135940 +0200
@@ -69,7 +69,7 @@
{
if (!Py_IsInitialized())
{
- char pname[] = "condor_collector";
+ wchar_t pname[] = L"condor_collector";
Py_SetProgramName(pname);
Py_InitializeEx(0);
}
globusPkgs="
globus-gss-assist
globus-gass-server-ez
globus-gssapi-gsi
globus-gsi-proxy-core
globus-gsi-credential
globus-gsi-callback
globus-gsi-sysconfig
globus-gsi-cert-utils
globus-openssl-module
globus-gsi-openssl-error
globus-gsi-proxy-ssl
globus-callout
globus-common
globus-gssapi-error
globus-xio
globus-xio-gsi-driver
globus-io
globus-rsl
globus-gass-transfer
globus-gram-client
globus-gram-protocol
globus-ftp-client
globus-ftp-control
"
for i in $globusPkgs ; do
ls $i*.rpm $i-devel*.rpm && continue
if yumdownloader $i $i-devel ; then
( rpm2cpio $i*.rpm | cpio -idmv ) && \
( rpm2cpio $i-devel*.rpm | cpio -idmv )
else
echo $i not found
fi
done
diff -ur origin/src/nordugrid_gahp/CMakeLists.txt new/src/nordugrid_gahp/CMakeLists.txt
--- origin/src/nordugrid_gahp/CMakeLists.txt 2018-05-22 20:29:50.000000000 +0200
+++ new/src/nordugrid_gahp/CMakeLists.txt 2018-06-08 01:37:23.018951944 +0200
@@ -33,7 +33,7 @@
condor_exe( nordugrid_gahp
"${HeaderFiles};${SourceFiles}"
${C_SBIN}
- "${GLOBUS_GRID_UNIVERSE_NORDUGRID};${GLOBUS_GRID_UNIVERSE_COMMON};${GLOBUS_FOUND};${OPENSSL_FOUND};${LDAP_FOUND}"
+ "${GLOBUS_GRID_UNIVERSE_NORDUGRID};${GLOBUS_GRID_UNIVERSE_COMMON};${GLOBUS_FOUND};${OPENSSL_FOUND};${LDAP_FOUND};sasl2"
OFF )
# Check nordugrid_gahp's shared library dependencies and copy a

Removing conflicting files

rm $CONDA_PREFIX/include/gssapi.h

Building Boost with Python 3

echo using python : 3.6 :  $CONDA_PREFIX/bin/python3 : $CONDA_PREFIX/include/python3.6m/ : $CONDA_PREFIX \;  > ~/user-config.jam
./bootstrap.sh --with-python=$CONDA_PREFIX/bin/python3 --with-python-version=3.6 --with-python-root=$CONDA_PREFIX --prefix=boost_release
./b2 --enable-unicode=ucs4 install

Symlink liboost_python

ln -s ./libboost_python36.so libboost_python3.so
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment