[Debian-med-packaging] Core Wrapper patches
Laszlo Kajan
lkajan at rostlab.org
Thu Aug 16 17:53:33 UTC 2012
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Dear Vladimir!
With the help you gave me earlier, I have now created a Debian package out of Core Wrapper.
It passes the test 'CorePyWrapTests.py' (the only one I downloaded data for) after installation. This means that the shared library (I created
one for all /but/ the python wrapper) and the python wrapper (this links with the shared library) probably function well.
In the process I have created several patches - I attach them to this email.
There is one notable issue left: the call of exit() in -
* (generated) ./cif-parser/src/DICScanner.c ./cif-parser/src/CifScanner.c
* ./cif-file/src/ParentChild.C
The library should rather return an error code or throw an exception.
Thank you for developing and releasing these tools for the bioinformatics community.
Best regards,
Laszlo Kajan
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iQIcBAEBAgAGBQJQLTOcAAoJEJvS1kCaDFL6TbMP+wb5kQArBjt7ZPy2sXjlt8tB
XPwLzeEpFeIKmdby+wy7H1ZTYDxoJsXcRXCS6PQX0q5nGtqeJlOelOWb1ERxbizB
tKp8njwuPujstrmc8EhVkZ6xUqJi/qI3+cxr5KPqtkaq5uFw15hME8AzOVapGMb7
UkFvyOiu6x32qyukbvYuXCbRGu0VGFqrDPsAS3w63ISfPIaR3kUbaPrtCDbLgtHl
PmsGsOSo2awFqEzSH8qHHrNtZsyAprUQU+fuDJEEBuk0Kdm38XquR3NEIl4qpIpt
f7jhBcmtMD4R6uhCybmJitgxjAt5hKGr1dswjY/NCRRvgLTwHnU0YDDIFdI1ksG2
Z5O3Bj4aBNcFU/v+Pn7sOCM5+ehjXt0dATobMORJBIrB1vxZUHoWuW8iePRCSl8h
7r3wd7hu0jzWz+sHzLBBrOcp6zzftxI5mBlcdF1IclKuxW5pnTrAX/IESLaChGUR
6hHKlDioH2gK5cVy/9KSPk2g+bOXkkDf3Ep4bstSeyTabakbf4ZTGk4fhkcO/T2D
GxL4wcKK5tBYRnZbTB7mmQsMCys7siTKgifVM0loj7sWOLYWypIAzbi7Y3uk1HEq
pBFlePmMoVX/fzlAsGNpqUVBcN0w0UErNnsG4tT5vpSq8GdAJKrX/HDjPYuCqUia
nKAmeycCsYPa24lCpayR
=mjrD
-----END PGP SIGNATURE-----
-------------- next part --------------
--- a/common/src/mapped_ptr_vector.C
+++ b/common/src/mapped_ptr_vector.C
@@ -20,7 +20,7 @@
using std::string;
using std::vector;
using std::pair;
-
+using std::make_pair;
template <typename T, typename StringCompareT>
mapped_ptr_vector<T, StringCompareT>::mapped_ptr_vector()
-------------- next part --------------
--- a/pdbml-parser/src/misc_util.C
+++ b/pdbml-parser/src/misc_util.C
@@ -1,5 +1,6 @@
#include <string>
#include <algorithm>
+#include <unistd.h>
#include "CifString.h"
#include "ISTable.h"
-------------- next part --------------
--- a/local/modules.txt
+++ b/local/modules.txt
@@ -9,4 +9,3 @@
svn https://svn-dev.wwpdb.org/svn-rcsb/pdbml/modules/pdbml-parser pdbml-parser Latest
svn https://svn-dev.wwpdb.org/svn-rcsb/pdbml/modules/pdbml-parser pdbml-parser Latest
svn https://svn-dev.wwpdb.org/svn-wwpdb/third-party/cctbx cctbx Latest
-svn https://svn-dev.wwpdb.org/svn-wwpdb/core/wrapper wrapper Latest
-------------- next part --------------
--- a/cif-parser/Makefile
+++ b/cif-parser/Makefile
@@ -167,7 +167,7 @@
@rm -f $(M_AGR_LIB)
-$(L_MOD_LIB): $(OBJ_FILES)
+$(L_MOD_LIB): $(addprefix obj/,$(OBJ_FILES))
# Create module library
@cd $(OBJ_DIR); $(AR) $(AR_PUTFLAGS) ../$@ $(OBJ_FILES)
$(RANLIB) $@
@@ -175,18 +175,18 @@
# Specific rules for making object files
-$(OBJ_DIR)/%Parser.o: $(SRC_DIR)/%Parser.y
+obj/%Parser.o: $(SRC_DIR)/%Parser.y
@sh -c 'cd $(SRC_DIR); $(YACC) $(${^F:.y=_YACC_FLAGS}) ../$<'
mv $(^:.y=.tab.c) $(^:.y=.c)
mv $(^:.y=.tab.h) $(^:.y=.h)
$(CC) $(CFLAGS_NONANSI) -c $(^:.y=.c) -o $@
-%Scanner.o: $(SRC_DIR)/%Scanner.l $(OBJ_DIR)/%Parser.o
- $(LEX) $($(@F:.o=_LEX_FLAGS)) -t $(SRC_DIR)/$(@:.o=.l) > $(SRC_DIR)/$(@F:.o=.c)
- $(CC) $(CFLAGS_NONANSI) -c $(SRC_DIR)/$(@F:.o=.c) -o $(OBJ_DIR)/$@
+obj/%Scanner.o: $(SRC_DIR)/%Scanner.l $(OBJ_DIR)/%Parser.o
+ $(LEX) $($(@F:.o=_LEX_FLAGS)) -t $(SRC_DIR)/$(@F:.o=.l) > $(SRC_DIR)/$(@F:.o=.c)
+ $(CC) $(CFLAGS_NONANSI) -c $(SRC_DIR)/$(@F:.o=.c) -o $(OBJ_DIR)/$(@F)
# Rule for making other object files
-%.o: $(SRC_DIR)/%.C
- $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+obj/%.o: $(SRC_DIR)/%.C
+ $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$(@F)
--- a/dict-obj-file/Makefile
+++ b/dict-obj-file/Makefile
@@ -111,7 +111,10 @@
# Installation
-install: $(TARGETS)
+install: $(TARGETS) $(M_BIN_DIR)/$(TARGET_SCRIPTS)
+
+$(M_BIN_DIR)/$(TARGET_SCRIPTS): $(L_BIN_DIR)/$(TARGET_SCRIPTS)
+ cp -f $(L_BIN_DIR)/$(TARGET_SCRIPTS) $(M_BIN_DIR)/$(TARGET_SCRIPTS)
# Test
@@ -141,7 +144,6 @@
%: $(OBJ_DIR)/%.o $(M_MOD_LIB) $(ALL_DEP_LIBS)
$(CCC) $(LDFLAGS) $< $(M_MOD_LIB) $(ALL_DEP_LIBS) $(MALLOCLIB) -lm -o $(L_BIN_DIR)/$@
@cp -f $(L_BIN_DIR)/$@ $(M_BIN_DIR)/$@
- @cp -f $(L_BIN_DIR)/$(TARGET_SCRIPTS) $(M_BIN_DIR)/$(TARGET_SCRIPTS)
# Rule for build cleaning
-------------- next part --------------
--- a/local/modules.txt
+++ b/local/modules.txt
@@ -7,5 +7,4 @@
svn https://svn-dev.wwpdb.org/svn-rcsb/core/modules/cif-file-util cif-file-util Latest
svn https://svn-dev.wwpdb.org/svn-rcsb/core/modules/dict-obj-file dict-obj-file Latest
svn https://svn-dev.wwpdb.org/svn-rcsb/pdbml/modules/pdbml-parser pdbml-parser Latest
-svn https://svn-dev.wwpdb.org/svn-rcsb/pdbml/modules/pdbml-parser pdbml-parser Latest
svn https://svn-dev.wwpdb.org/svn-wwpdb/third-party/cctbx cctbx Latest
-------------- next part --------------
--- a/Makefile
+++ b/Makefile
@@ -12,9 +12,7 @@
CLEAN_DOC_SCRIPT = clean_doc.sh
EXPORT_SCRIPT = export.sh
-all:
- @echo
- @echo ------- compile targets are compile_lnx_38, compile_lnx_41, and compile_osx -------
+all: compile_lnx_41
compile:
@echo
@@ -69,16 +67,10 @@
./$(COMPILE_SCRIPT)'
compile_lnx_41:
- @sh -c 'cd ./$(UTIL_MODULE); \
+ + at sh -c 'cd ./$(UTIL_MODULE); \
export PIC=-fPIC; \
- export WWPDB_PYTHON_INC=/apps/python/include/python2.5; \
- export WWPDB_PYTHON_LIB_DIR=/apps/python/lib; \
- export WWPDB_PYTHON_LIB=python2.5; \
- export WWPDB_BOOST_INC=/apps/boost/include/boost-1_41; \
- export WWPDB_BOOST_PYTHON_LIB_DIR=/apps/boost/lib; \
- export WWPDB_BOOST_PYTHON_LIB=boost_python-gcc41-mt-1_41; \
- export WWPDB_XERCESC_INC=/apps/xerces-3.0.1/include; \
- export WWPDB_XERCESC_LIB_DIR=/apps/xerces-3.0.1/lib; \
+ export WWPDB_XERCESC_INC=/usr/include; \
+ export WWPDB_XERCESC_LIB_DIR=/usr/lib; \
export WWPDB_XERCESC_LIB=xerces-c; \
./$(COMPILE_SCRIPT)'
-------------- next part --------------
--- a/cif-file/Makefile
+++ b/cif-file/Makefile
@@ -133,11 +133,13 @@
$(L_MOD_LIB): $(OBJ_FILES)
# Create module library
@cd $(OBJ_DIR); $(AR) $(AR_PUTFLAGS) ../$@ $(OBJ_FILES)
+ cp -f -t $(M_LIB_DIR) $(addprefix $(OBJ_DIR)/,$(OBJ_FILES) $(OBJ_FILES:.o=.lo))
+ mkdir -p $(M_LIB_DIR)/.libs && cp -f -t $(M_LIB_DIR)/.libs $(addprefix $(OBJ_DIR)/.libs/,$(OBJ_FILES))
$(RANLIB) $@
@echo $@ " is up to date."
# Rule for making object files
%.o: $(SRC_DIR)/%.C
- $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/cif-file-util/Makefile
+++ b/cif-file-util/Makefile
@@ -133,11 +133,13 @@
$(L_MOD_LIB): $(OBJ_FILES)
# Create module library
@cd $(OBJ_DIR); $(AR) $(AR_PUTFLAGS) ../$@ $(OBJ_FILES)
+ cp -f -t $(M_LIB_DIR) $(addprefix $(OBJ_DIR)/,$(OBJ_FILES) $(OBJ_FILES:.o=.lo))
+ mkdir -p $(M_LIB_DIR)/.libs && cp -f -t $(M_LIB_DIR)/.libs $(addprefix $(OBJ_DIR)/.libs/,$(OBJ_FILES))
$(RANLIB) $@
@echo $@ " is up to date."
# Rule for making object files
%.o: $(SRC_DIR)/%.C
- $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/cif-parser/Makefile
+++ b/cif-parser/Makefile
@@ -170,6 +170,8 @@
$(L_MOD_LIB): $(addprefix obj/,$(OBJ_FILES))
# Create module library
@cd $(OBJ_DIR); $(AR) $(AR_PUTFLAGS) ../$@ $(OBJ_FILES)
+ cp -f -t $(M_LIB_DIR) $(addprefix $(OBJ_DIR)/,$(OBJ_FILES) $(OBJ_FILES:.o=.lo))
+ mkdir -p $(M_LIB_DIR)/.libs && cp -f -t $(M_LIB_DIR)/.libs $(addprefix $(OBJ_DIR)/.libs/,$(OBJ_FILES))
$(RANLIB) $@
@echo $@ " is up to date."
@@ -179,14 +181,14 @@
@sh -c 'cd $(SRC_DIR); $(YACC) $(${^F:.y=_YACC_FLAGS}) ../$<'
mv $(^:.y=.tab.c) $(^:.y=.c)
mv $(^:.y=.tab.h) $(^:.y=.h)
- $(CC) $(CFLAGS_NONANSI) -c $(^:.y=.c) -o $@
+ libtool --mode=compile $(CC) $(CFLAGS_NONANSI) -c $(^:.y=.c) -o $@
obj/%Scanner.o: $(SRC_DIR)/%Scanner.l $(OBJ_DIR)/%Parser.o
$(LEX) $($(@F:.o=_LEX_FLAGS)) -t $(SRC_DIR)/$(@F:.o=.l) > $(SRC_DIR)/$(@F:.o=.c)
- $(CC) $(CFLAGS_NONANSI) -c $(SRC_DIR)/$(@F:.o=.c) -o $(OBJ_DIR)/$(@F)
+ libtool --mode=compile $(CC) $(CFLAGS_NONANSI) -c $(SRC_DIR)/$(@F:.o=.c) -o $(OBJ_DIR)/$(@F)
# Rule for making other object files
obj/%.o: $(SRC_DIR)/%.C
- $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$(@F)
+ libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$(@F)
--- a/common/Makefile
+++ b/common/Makefile
@@ -145,11 +145,13 @@
$(L_MOD_LIB): $(OBJ_FILES)
# Create module library
@cd $(OBJ_DIR); $(AR) $(AR_PUTFLAGS) ../$@ $(OBJ_FILES)
+ cp -f -t $(M_LIB_DIR) $(addprefix $(OBJ_DIR)/,$(OBJ_FILES) $(OBJ_FILES:.o=.lo))
+ mkdir -p $(M_LIB_DIR)/.libs && cp -f -t $(M_LIB_DIR)/.libs $(addprefix $(OBJ_DIR)/.libs/,$(OBJ_FILES))
$(RANLIB) $@
@echo $@ " is up to date."
# Rule for making object files
%.o: $(SRC_DIR)/%.C
- $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/dict-obj-file/Makefile
+++ b/dict-obj-file/Makefile
@@ -195,6 +195,8 @@
$(L_MOD_LIB): $(OBJ_OTHER_FILES)
# Create module library
@cd $(OBJ_DIR); $(AR) $(AR_PUTFLAGS) ../$@ $(OBJ_OTHER_FILES)
+ cp -f -t $(M_LIB_DIR) $(addprefix $(OBJ_DIR)/,$(OBJ_OTHER_FILES) $(OBJ_OTHER_FILES:.o=.lo))
+ mkdir -p $(M_LIB_DIR)/.libs && cp -f -t $(M_LIB_DIR)/.libs $(addprefix $(OBJ_DIR)/.libs/,$(OBJ_OTHER_FILES))
$(RANLIB) $@
@echo $@ " is up to date."
@@ -206,5 +208,5 @@
# Phony rule for making object files
%.o: $(SRC_DIR)/%.C
- $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/pdbml-parser/Makefile
+++ b/pdbml-parser/Makefile
@@ -211,6 +211,8 @@
$(L_MOD_LIB): $(OBJ_OTHER_FILES)
# Create module library
@cd $(OBJ_DIR); $(AR) $(AR_PUTFLAGS) ../$@ $(OBJ_OTHER_FILES)
+ cp -f -t $(M_LIB_DIR) $(addprefix $(OBJ_DIR)/,$(OBJ_OTHER_FILES) $(OBJ_OTHER_FILES:.o=.lo))
+ mkdir -p $(M_LIB_DIR)/.libs && cp -f -t $(M_LIB_DIR)/.libs $(addprefix $(OBJ_DIR)/.libs/,$(OBJ_OTHER_FILES))
$(RANLIB) $@
@echo $@ " is up to date."
@@ -225,5 +227,5 @@
# Phony rule for making object files
%.o: $(SRC_DIR)/%.C
- $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/regex/Makefile
+++ b/regex/Makefile
@@ -144,13 +144,15 @@
$(L_MOD_LIB): $(OBJ_FILES)
# Create module library
@cd $(OBJ_DIR); $(AR) $(AR_PUTFLAGS) ../$@ $(OBJ_FILES)
+ cp -f -t $(M_LIB_DIR) $(addprefix $(OBJ_DIR)/,$(OBJ_FILES) $(OBJ_FILES:.o=.lo))
+ mkdir -p $(M_LIB_DIR)/.libs && cp -f -t $(M_LIB_DIR)/.libs $(addprefix $(OBJ_DIR)/.libs/,$(OBJ_FILES))
$(RANLIB) $@
@echo $@ " is up to date."
# Rule for making object files
%.o: $(SRC_DIR)/%.c
- $(CC) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CC) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $< -o $(OBJ_DIR)/$@
# Extra, non-used in PDB build
@@ -181,7 +183,7 @@
$(CC) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $(SRC_DIR)/main.c -o $@
$(OBJ_DIR)/split.o: $(H) $(HEADER_FILES) $(SRC_DIR)/split.c
- $(CC) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $(SRC_DIR)/split.c -o $@
+ libtool --mode=compile $(CC) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $(SRC_DIR)/split.c -o $@
debug.o: $(H) $(HEADER_FILES) $(SRC_DIR)/debug.c $(L_INCL_DIR)/debug.ih
$(CC) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $(SRC_DIR)/debug.c -o $(OBJ_DIR)/$@
--- a/tables/Makefile
+++ b/tables/Makefile
@@ -130,11 +130,13 @@
$(L_MOD_LIB): $(OBJ_FILES)
# Create module library
@cd $(OBJ_DIR); $(AR) $(AR_PUTFLAGS) ../$@ $(OBJ_FILES)
+ cp -f -t $(M_LIB_DIR) $(addprefix $(OBJ_DIR)/,$(OBJ_FILES) $(OBJ_FILES:.o=.lo))
+ mkdir -p $(M_LIB_DIR)/.libs && cp -f -t $(M_LIB_DIR)/.libs $(addprefix $(OBJ_DIR)/.libs/,$(OBJ_FILES))
$(RANLIB) $@
@echo $@ " is up to date."
# Rule for making object files
%.o: $(SRC_DIR)/%.C
- $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,4 @@
# Top level Makefile
-
UTIL_LOC = https://svn-dev.wwpdb.org/svn-rcsb/build/util
UTIL_MODULE = util
CHECKOUT_SCRIPT = checkout.sh
@@ -66,19 +65,37 @@
export WWPDB_XERCESC_LIB=xerces-c; \
./$(COMPILE_SCRIPT)'
-compile_lnx_41:
+# lkajan: the reason for this is that I do not want to set prerequisites here just now, so I make it made always
+.PHONY: lib/librcsb-core-wrapper.la
+lib/librcsb-core-wrapper.la:
+ +sh -c '\
+ export PIC=-fPIC; \
+ export WWPDB_PYTHON_INC=/apps/python/include/python2.5; \
+ export WWPDB_PYTHON_LIB_DIR=/apps/python/lib; \
+ export WWPDB_PYTHON_LIB=python2.5; \
+ export WWPDB_BOOST_INC=/apps/boost/include/boost-1_41; \
+ export WWPDB_BOOST_PYTHON_LIB_DIR=/apps/boost/lib; \
+ export WWPDB_BOOST_PYTHON_LIB=boost_python-gcc41-mt-1_41; \
+ export WWPDB_XERCESC_INC=/apps/xerces-3.0.1/include; \
+ export WWPDB_XERCESC_LIB_DIR=/apps/xerces-3.0.1/lib; \
+ export WWPDB_XERCESC_LIB=xerces-c; \
+ ( cd ./$(UTIL_MODULE); ./$(COMPILE_SCRIPT) ); \
+ libtool --mode=link $(CXX) -version-info 0:0:0 -rpath /usr/lib $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -l$${WWPDB_XERCESC_LIB} -o lib/librcsb-core-wrapper.la lib/*.lo'
+
+compile_lnx_41: lib/librcsb-core-wrapper.la
+ at sh -c 'cd ./$(UTIL_MODULE); \
export PIC=-fPIC; \
export WWPDB_XERCESC_INC=/usr/include; \
export WWPDB_XERCESC_LIB_DIR=/usr/lib; \
export WWPDB_XERCESC_LIB=xerces-c; \
- ./$(COMPILE_SCRIPT)'
+ exit 0;'
debug:
@sh -c 'cd ./$(UTIL_MODULE); ./$(COMPILE_SCRIPT) debug'
clean_build:
@sh -c 'cd ./$(UTIL_MODULE); ./$(CLEAN_SCRIPT)'
+ @rm -rf lib/* lib/.??*
test: test-all
-------------- next part --------------
--- a/Makefile
+++ b/Makefile
@@ -90,6 +90,22 @@
export WWPDB_XERCESC_LIB=xerces-c; \
exit 0;'
+# lkajan: for testing
+.PHONY: wrapper
+wrapper:
+ + at sh -c 'cd ./$(UTIL_MODULE); \
+ export PIC=-fPIC; \
+ export WWPDB_PYTHON_INC=/usr/include/python2.7; \
+ export WWPDB_PYTHON_LIB_DIR=/apps/python/lib; \
+ export WWPDB_PYTHON_LIB=python2.7; \
+ export WWPDB_BOOST_INC=/apps/boost/include/boost-1_41; \
+ export WWPDB_BOOST_PYTHON_LIB_DIR=/apps/boost/lib; \
+ export WWPDB_BOOST_PYTHON_LIB=boost_python-mt-py27; \
+ export WWPDB_XERCESC_INC=/apps/xerces-3.0.1/include; \
+ export WWPDB_XERCESC_LIB_DIR=/apps/xerces-3.0.1/lib; \
+ export WWPDB_XERCESC_LIB=xerces-c; \
+ ( cd ../wrapper && make OPT=-O install );'
+
debug:
@sh -c 'cd ./$(UTIL_MODULE); ./$(COMPILE_SCRIPT) debug'
--- a/wrapper/Makefile
+++ b/wrapper/Makefile
@@ -140,7 +140,7 @@
$(L_MOD_LIB): $(OBJ_FILES) $(ALL_DEP_LIBS)
# Create module library
- @cd $(OBJ_DIR); $(CCC) $(LINK_METHOD) $(EXT_LIBS_DIRS) $(OBJ_FILES) $(ALL_DEP_LIBS) $(EXT_LIBS) $(SYS_LIBS) -o ../$@
+ cd $(OBJ_DIR); $(CCC) $(LINK_METHOD) $(EXT_LIBS_DIRS) $(OBJ_FILES) -L../../lib/.libs -lrcsb-core-wrapper $(EXT_LIBS) $(SYS_LIBS) -o ../$@
# Rule for making object files
-------------- next part --------------
--- /dev/null
+++ b/wrapper/python/setup.py.in
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+
+from distutils import sysconfig
+from distutils.core import setup, Extension
+import os
+import platform
+import sys
+
+# lkajan: we follow the example of libtorrent-rasterbar here - thank you very much for that!
+def parse_cmd(cmdline, prefix, keep_prefix = False):
+ ret = []
+ for token in cmdline.split():
+ if token[:len(prefix)] == prefix:
+ if keep_prefix:
+ ret.append(token)
+ else:
+ ret.append(token[len(prefix):])
+ return ret
+
+config_vars = sysconfig.get_config_vars()
+if "CFLAGS" in config_vars and "-Wstrict-prototypes" in config_vars["CFLAGS"]:
+ config_vars["CFLAGS"] = config_vars["CFLAGS"].replace("-Wstrict-prototypes", " ")
+if "OPT" in config_vars and "-Wstrict-prototypes" in config_vars["OPT"]:
+ config_vars["OPT"] = config_vars["OPT"].replace("-Wstrict-prototypes", " ")
+
+source_list = os.listdir(os.path.join(os.path.dirname(__file__), "src"))
+source_list = [os.path.join("src", s) for s in source_list if s.endswith(".C")]
+
+# g++ -O -fPIC -ansi -Werror -Wall -Wno-deprecated -DHAVE_STRCASECMP -DINCL_TEMPLATE_SRC -DHAVE_PLACEMENT_NEW -I./include -I../include -I/usr/include/python2.7 -I/apps/boost/include/boost-1_41 -ftemplate-depth-128 -fno-inline -Wall -c src/TypeCodePyWrap.C -o ./obj/TypeCodePyWrap.o
+# g++ -shared -L/apps/boost/lib -L/apps/xerces-3.0.1/lib TypeCodePyWrap.o StlPyWrap.o CharPyWrap.o RcsbFilePyWrap.o ISTablePyWrap.o TableFilePyWrap.o CifFilePyWrap.o DicFilePyWrap.o DictObjFilePyWrap.o DataInfoPyWrap.o CifDataInfoPyWrap.o DictDataInfoPyWrap.o PdbMlFilePyWrap.o CorePyWrap.o -L../../lib/.libs -lrcsb-core-wrapper -lboost_python-mt-py27 -lxerces-c -lutil -lpthread -ldl -o ../lib/CorePyWrap.so
+extra_cmd = '@DEFINES@'
+
+setup( name='python-librcsb-core-wrapper',
+ version='1.000',
+ author = 'RCSB PDB Software Team',
+ author_email='sw-help at rcsb.rutgers.edu',
+ description = 'Python bindings for librcsb-core-wrapper',
+ long_description = 'Python bindings for librcsb-core-wrapper',
+ url = 'http://sw-tools.rcsb.org/apps/CORE-WRAPPER/index.html',
+ platforms = 'any',
+ license = 'RCSB PDB SOFTWARE LICENSE AGREEMENT',
+ ext_modules = [Extension('CorePyWrap',
+ sources = source_list,
+ language='c++',
+ include_dirs = ['../../include'] + parse_cmd(extra_cmd, '-I'),
+ library_dirs = ['../../lib/.libs'] + parse_cmd(extra_cmd, '-L'),
+ extra_compile_args = parse_cmd(extra_cmd, '-D', True),
+ libraries = ['rcsb-core-wrapper', 'boost_python-py%1d%1d' % ( sys.version_info[0], sys.version_info[1] )] + parse_cmd(extra_cmd, '-l'))],
+)
--- a/wrapper/Makefile
+++ b/wrapper/Makefile
@@ -101,11 +101,16 @@
.PHONY: ../etc/Makefile.platform all install export clean clean_build
-all: install
+all: build
+.PHONY: build
+build: python/setup.py
install: $(M_MOD_LIB)
+python/setup.py: python/setup.py.in
+ sed -e 's!@C++FLAGS@!$(C++FLAGS)!g; s!@DEFINES@!$(DEFINES)!g; s!@EXT_COMP_OPT@!$(EXT_COMP_OPT)!; s!@EXT_LIBS_DIRS@!$(EXT_LIBS_DIRS)!g; s!@EXT_LIBS@!$(EXT_LIBS)!g;' < "$<" > "$@"
+ ln -sf ../src python/src
export:
mkdir -p $(EXPORT_DIR)
@@ -135,6 +140,7 @@
@rm -f $(M_MOD_LIB)
@rm -f $(M_AGR_LIB)
@rm -f *.pyc
+ @rm -f python/setup.py
$(L_MOD_LIB): $(OBJ_FILES) $(ALL_DEP_LIBS)
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@
CLEAN_DOC_SCRIPT = clean_doc.sh
EXPORT_SCRIPT = export.sh
-all: compile_lnx_41
+all: wrapper
compile:
@echo
@@ -92,7 +92,7 @@
# lkajan: for testing
.PHONY: wrapper
-wrapper:
+wrapper: lib/librcsb-core-wrapper.la
+ at sh -c 'cd ./$(UTIL_MODULE); \
export PIC=-fPIC; \
export WWPDB_PYTHON_INC=/usr/include/python2.7; \
@@ -104,7 +104,7 @@
export WWPDB_XERCESC_INC=/apps/xerces-3.0.1/include; \
export WWPDB_XERCESC_LIB_DIR=/apps/xerces-3.0.1/lib; \
export WWPDB_XERCESC_LIB=xerces-c; \
- ( cd ../wrapper && make OPT=-O install );'
+ ( cd ../wrapper && make OPT=-O );'
debug:
@sh -c 'cd ./$(UTIL_MODULE); ./$(COMPILE_SCRIPT) debug'
-------------- next part --------------
--- a/wrapper/src/DataInfoPyWrap.C
+++ b/wrapper/src/DataInfoPyWrap.C
@@ -31,23 +31,23 @@
}
virtual ::std::vector< std::string > const & GetCatAttribute( ::std::string const & catName, ::std::string const & refCatName, ::std::string const & refAttribName ){
- throw std::logic_error("warning W1049: This method could not be overriden in Python - method returns reference to local variable!");
+ throw std::logic_error("warning W1049: This method could not be overridden in Python - method returns reference to local variable!");
}
virtual ::std::vector< std::string > const & GetCatKeys( ::std::string const & catName ){
- throw std::logic_error("warning W1049: This method could not be overriden in Python - method returns reference to local variable!");
+ throw std::logic_error("warning W1049: This method could not be overridden in Python - method returns reference to local variable!");
}
virtual ::std::vector< std::string > const & GetCatNames( ){
- throw std::logic_error("warning W1049: This method could not be overriden in Python - method returns reference to local variable!");
+ throw std::logic_error("warning W1049: This method could not be overridden in Python - method returns reference to local variable!");
}
virtual ::std::vector< std::string > const & GetItemAttribute( ::std::string const & itemName, ::std::string const & refCatName, ::std::string const & refAttribName ){
- throw std::logic_error("warning W1049: This method could not be overriden in Python - method returns reference to local variable!");
+ throw std::logic_error("warning W1049: This method could not be overridden in Python - method returns reference to local variable!");
}
virtual ::std::vector< std::string > const & GetItemsNames( ){
- throw std::logic_error("warning W1049: This method could not be overriden in Python - method returns reference to local variable!");
+ throw std::logic_error("warning W1049: This method could not be overridden in Python - method returns reference to local variable!");
}
virtual void GetItemsTypes( ::std::vector< eTypeCode > & attribsTypes, ::std::string const & catName, ::std::vector< std::string > const & attribsNames ) {
-------------- next part --------------
--- a/cif-file/src/ParentChild.C
+++ b/cif-file/src/ParentChild.C
@@ -287,7 +287,7 @@
#ifdef VLAD_FIX
if (parKeys.empty())
{
- cout << "EMPTY PARENT KEYS !!!" << endl;
+ cerr << "EMPTY PARENT KEYS !!!" << endl;
exit(1);
}
#endif
-------------- next part --------------
--- a/cif-file/Makefile
+++ b/cif-file/Makefile
@@ -141,5 +141,5 @@
# Rule for making object files
%.o: $(SRC_DIR)/%.C
- libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(CPPFLAGS) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/cif-file-util/Makefile
+++ b/cif-file-util/Makefile
@@ -141,5 +141,5 @@
# Rule for making object files
%.o: $(SRC_DIR)/%.C
- libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(CPPFLAGS) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/cif-parser/Makefile
+++ b/cif-parser/Makefile
@@ -181,14 +181,14 @@
@sh -c 'cd $(SRC_DIR); $(YACC) $(${^F:.y=_YACC_FLAGS}) ../$<'
mv $(^:.y=.tab.c) $(^:.y=.c)
mv $(^:.y=.tab.h) $(^:.y=.h)
- libtool --mode=compile $(CC) $(CFLAGS_NONANSI) -c $(^:.y=.c) -o $@
+ libtool --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS_NONANSI) -c $(^:.y=.c) -o $@
obj/%Scanner.o: $(SRC_DIR)/%Scanner.l $(OBJ_DIR)/%Parser.o
$(LEX) $($(@F:.o=_LEX_FLAGS)) -t $(SRC_DIR)/$(@F:.o=.l) > $(SRC_DIR)/$(@F:.o=.c)
- libtool --mode=compile $(CC) $(CFLAGS_NONANSI) -c $(SRC_DIR)/$(@F:.o=.c) -o $(OBJ_DIR)/$(@F)
+ libtool --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS_NONANSI) -c $(SRC_DIR)/$(@F:.o=.c) -o $(OBJ_DIR)/$(@F)
# Rule for making other object files
obj/%.o: $(SRC_DIR)/%.C
- libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$(@F)
+ libtool --mode=compile $(CCC) $(CPPFLAGS) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$(@F)
--- a/common/Makefile
+++ b/common/Makefile
@@ -153,5 +153,5 @@
# Rule for making object files
%.o: $(SRC_DIR)/%.C
- libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(CPPFLAGS) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/dict-obj-file/Makefile
+++ b/dict-obj-file/Makefile
@@ -142,7 +142,7 @@
# Rule for making executables
%: $(OBJ_DIR)/%.o $(M_MOD_LIB) $(ALL_DEP_LIBS)
- $(CCC) $(LDFLAGS) $< $(M_MOD_LIB) $(ALL_DEP_LIBS) $(MALLOCLIB) -lm -o $(L_BIN_DIR)/$@
+ $(CCC) $(CPPFLAGS) $(LDFLAGS) $< $(M_MOD_LIB) $(ALL_DEP_LIBS) $(MALLOCLIB) -lm -o $(L_BIN_DIR)/$@
@cp -f $(L_BIN_DIR)/$@ $(M_BIN_DIR)/$@
@@ -203,10 +203,10 @@
# Rule for making object files
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.C
- $(CCC) $(C++FLAGS) -c $< -o $@
+ $(CCC) $(CPPFLAGS) $(C++FLAGS) -c $< -o $@
# Phony rule for making object files
%.o: $(SRC_DIR)/%.C
- libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(CPPFLAGS) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/etc/make.platform.gnu4
+++ b/etc/make.platform.gnu4
@@ -108,8 +108,8 @@
C_WARNINGS=$(WARNINGS)
# C compiler flags
-CFLAGS=$(OPT) $(ABI) $(PIC) $(ANSI_C_FLAG) $(C_WARNINGS) $(DEFINES) $(INCLUDES)
-CFLAGS_NONANSI=$(OPT) $(ABI) $(PIC) $(NON_ANSI_C_FLAG) $(DEFINES) $(INCLUDES)
+CFLAGS += $(OPT) $(ABI) $(PIC) $(ANSI_C_FLAG) $(C_WARNINGS) $(DEFINES) $(INCLUDES)
+CFLAGS_NONANSI += $(OPT) $(ABI) $(PIC) $(NON_ANSI_C_FLAG) $(DEFINES) $(INCLUDES)
## C++ compiler
## This part defines C++ compiler information
@@ -128,9 +128,9 @@
EXT=C
# C++ compiler flags
-C++FLAGS=$(OPT) $(ABI) $(PIC) $(ANSI_C_PLUS_FLAG) $(C_PLUS_WARNINGS) \
+C++FLAGS= $(CXXFLAGS) $(OPT) $(ABI) $(PIC) $(ANSI_C_PLUS_FLAG) $(C_PLUS_WARNINGS) \
$(DEFINES) $(INCLUDES)
-C++FLAGS_NONANSI=$(OPT) $(ABI) $(PIC) $(NON_ANSI_C_PLUS_FLAG) \
+C++FLAGS_NONANSI= $(CXXFLAGS) $(OPT) $(ABI) $(PIC) $(NON_ANSI_C_PLUS_FLAG) \
$(C_PLUS_WARNINGS) $(DEFINES) $(INCLUDES)
# C++FLAGS_RELAXED should be set to avoid warnings reported by third party
@@ -158,8 +158,8 @@
STATIC_LINKING=-static
# Linker flags
-LDFLAGS=$(ABI) -w $(STATIC_LINKING)
-LDFLAGS_NO_STATIC=$(ABI) -w
+LDFLAGS += $(ABI) -w $(STATIC_LINKING)
+LDFLAGS_NO_STATIC += $(ABI) -w
# Fortran linker
F77_LINKER=f77
--- a/pdbml-parser/Makefile
+++ b/pdbml-parser/Makefile
@@ -157,7 +157,7 @@
# General rule for making executables
%: $(OBJ_DIR)/%.o $(M_MOD_LIB) $(ALL_DEP_LIBS)
- $(CCC) $(LDFLAGS_NO_STATIC) $(EXT_LIBS_DIRS) $< $(M_MOD_LIB) $(ALL_DEP_LIBS) $(EXT_LIBS) $(MALLOCLIB) -lm -o $(L_BIN_DIR)/$@
+ $(CCC) $(CPPFLAGS) $(LDFLAGS_NO_STATIC) $(EXT_LIBS_DIRS) $< $(M_MOD_LIB) $(ALL_DEP_LIBS) $(EXT_LIBS) $(MALLOCLIB) -lm -o $(L_BIN_DIR)/$@
@cp -f $(L_BIN_DIR)/$@ $(M_BIN_DIR)/$@
@@ -222,10 +222,10 @@
# General rule for making object files
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.C
- $(CCC) $(C++FLAGS) -c $< -o $@
+ $(CCC) $(CPPFLAGS) $(C++FLAGS) -c $< -o $@
# Phony rule for making object files
%.o: $(SRC_DIR)/%.C
- libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(CPPFLAGS) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/tables/Makefile
+++ b/tables/Makefile
@@ -138,5 +138,5 @@
# Rule for making object files
%.o: $(SRC_DIR)/%.C
- libtool --mode=compile $(CCC) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CCC) $(CPPFLAGS) $(C++FLAGS) -c $< -o $(OBJ_DIR)/$@
--- a/wrapper/Makefile
+++ b/wrapper/Makefile
@@ -146,10 +146,10 @@
$(L_MOD_LIB): $(OBJ_FILES) $(ALL_DEP_LIBS)
# Create module library
- cd $(OBJ_DIR); $(CCC) $(LINK_METHOD) $(EXT_LIBS_DIRS) $(OBJ_FILES) -L../../lib/.libs -lrcsb-core-wrapper $(EXT_LIBS) $(SYS_LIBS) -o ../$@
+ cd $(OBJ_DIR); $(CCC) $(CPPFLAGS) $(LINK_METHOD) $(EXT_LIBS_DIRS) $(OBJ_FILES) -L../../lib/.libs -lrcsb-core-wrapper $(EXT_LIBS) $(SYS_LIBS) -o ../$@
# Rule for making object files
%.o: $(SRC_DIR)/%.C
- $(CCC) $(C++FLAGS) $(EXT_COMP_OPT) -c $< -o $(OBJ_DIR)/$@
+ $(CCC) $(CPPFLAGS) $(C++FLAGS) $(EXT_COMP_OPT) -c $< -o $(OBJ_DIR)/$@
--- a/regex/Makefile
+++ b/regex/Makefile
@@ -152,7 +152,7 @@
# Rule for making object files
%.o: $(SRC_DIR)/%.c
- libtool --mode=compile $(CC) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $< -o $(OBJ_DIR)/$@
+ libtool --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $< -o $(OBJ_DIR)/$@
# Extra, non-used in PDB build
@@ -180,18 +180,18 @@
$(OBJ_DIR)/main.o: $(H) $(HEADER_FILES) $(SRC_DIR)/main.c $(L_INCL_DIR)/main.ih
- $(CC) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $(SRC_DIR)/main.c -o $@
+ $(CC) $(CPPFLAGS) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $(SRC_DIR)/main.c -o $@
$(OBJ_DIR)/split.o: $(H) $(HEADER_FILES) $(SRC_DIR)/split.c
- libtool --mode=compile $(CC) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $(SRC_DIR)/split.c -o $@
+ libtool --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $(SRC_DIR)/split.c -o $@
debug.o: $(H) $(HEADER_FILES) $(SRC_DIR)/debug.c $(L_INCL_DIR)/debug.ih
- $(CC) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $(SRC_DIR)/debug.c -o $(OBJ_DIR)/$@
+ $(CC) $(CPPFLAGS) $(CFLAGS_NONANSI) -DPOSIX_MISTAKE -c $(SRC_DIR)/debug.c -o $(OBJ_DIR)/$@
# tester
$(TARGET): $(ALLOBJS)
- $(CC) $(CFLAGS) -DPOSIX_MISTAKE $(LDFLAGS) $(ALLOBJS) $(LIBS) -o $@
+ $(CC) $(CPPFLAGS) $(CFLAGS) -DPOSIX_MISTAKE $(LDFLAGS) $(ALLOBJS) $(LIBS) -o $@
# regression test
-------------- next part --------------
--- a/etc/Doxyfile-template
+++ b/etc/Doxyfile-template
@@ -123,7 +123,7 @@
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
-FULL_PATH_NAMES = NO
+FULL_PATH_NAMES = YES
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
@@ -250,7 +250,7 @@
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
-EXTRACT_PRIVATE = YES
+EXTRACT_PRIVATE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
@@ -423,26 +423,26 @@
# The QUIET tag can be used to turn on/off the messages that are generated
# by doxygen. Possible values are YES and NO. If left blank NO is used.
-QUIET = NO
+QUIET = YES
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated by doxygen. Possible values are YES and NO. If left blank
# NO is used.
-WARNINGS = YES
+WARNINGS = NO
# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
# automatically be disabled.
-WARN_IF_UNDOCUMENTED = YES
+WARN_IF_UNDOCUMENTED = NO
# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some
# parameters in a documented function, or documenting parameters that
# don't exist or using markup commands wrongly.
-WARN_IF_DOC_ERROR = YES
+WARN_IF_DOC_ERROR = NO
# This WARN_NO_PARAMDOC option can be abled to get warnings for
# functions that are documented, but have no documentation for their parameters
@@ -798,7 +798,7 @@
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
# generate Latex output.
-GENERATE_LATEX = YES
+GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
--- a/Makefile
+++ b/Makefile
@@ -90,10 +90,19 @@
###
doc:
- @sh -c 'cd ./$(UTIL_MODULE); ./$(DOC_SCRIPT)'
+ rm -rf rcsb && cp -r include rcsb
+ grep -lr '^#include "' rcsb | xargs sed -i -e '/^#include "/{ s/#include "\([^"]\+\)"/#include <rcsb\/\1>/; }'
+ mkdir -p docs/doxyfiles
+ echo PROJECT_NAME = librcsb-core-wrapper > docs/doxyfiles/Doxyfile
+ echo PROJECT_NUMBER = $(shell dpkg-parsechangelog | grep '^Version' | sed -e 's/Version: \(.*\)-[^-]\+$$/\1/g;') >> docs/doxyfiles/Doxyfile
+ echo OUTPUT_DIRECTORY = docs >> docs/doxyfiles/Doxyfile
+ echo INPUT = rcsb >> docs/doxyfiles/Doxyfile
+ cat etc/Doxyfile-template >> docs/doxyfiles/Doxyfile
+ doxygen docs/doxyfiles/Doxyfile
clean_doc:
- @sh -c 'cd ./$(UTIL_MODULE); ./$(CLEAN_DOC_SCRIPT)'
+ rm -rf docs
+ rm -rf rcsb
export: clean
@sh -c 'cd ./$(UTIL_MODULE); ./$(EXPORT_SCRIPT)'
-------------- next part --------------
--- a/util/compile.sh
+++ b/util/compile.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# This script builds dependent modules
--- a/etc/createdoc.sh
+++ b/etc/createdoc.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# File: createdoc.sh
#
--- a/etc/platform.sh
+++ b/etc/platform.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# File: platform.sh
# Date: 6-Aug-97 J. Westbrook
More information about the Debian-med-packaging
mailing list