Repository: incubator-hawq Updated Branches: refs/heads/master 14cb8e091 -> 72f5302b0
HAWQ-751. Add plr, pgcrypto, gporca into Apache HAWQ Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/72f5302b Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/72f5302b Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/72f5302b Branch: refs/heads/master Commit: 72f5302b0aa93e93800ccc595da912e6cfc6f97d Parents: 14cb8e0 Author: Paul Guo <[email protected]> Authored: Mon May 23 17:59:00 2016 +0800 Committer: Ruilong Huo <[email protected]> Committed: Wed May 25 10:07:16 2016 +0800 ---------------------------------------------------------------------- .gitmodules | 15 +++++ GNUmakefile.in | 40 ++++--------- configure | 68 ++++++++++++++++++---- configure.in | 34 ++++++++--- contrib/.gitignore | 1 + contrib/Makefile | 26 ++++++++- contrib/pgcrypto | 1 + contrib/pgcrypto.patch | 32 +++++++++++ src/.gitignore | 2 + src/Makefile.global.in | 23 +++++--- src/backend/.gitignore | 4 ++ src/backend/Makefile | 123 ++++++++++++++++++++++++++++++++++++---- src/backend/gp-xerces | 1 + src/backend/gpopt/Makefile | 29 +++++----- src/backend/gpopt/gpopt.mk | 16 ++++-- src/backend/gporca | 1 + src/backend/gpos | 1 + src/bin/Makefile | 2 +- src/pl/Makefile | 22 ++++++- src/pl/plr | 1 + src/pl/plr.patch | 28 +++++++++ src/postgres | 1 + 22 files changed, 378 insertions(+), 93 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/.gitmodules ---------------------------------------------------------------------- diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..40ab4f3 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,15 @@ +[submodule "src/backend/gp-xerces"] + path = src/backend/gp-xerces + url = https://github.com/greenplum-db/gp-xerces.git +[submodule "src/backend/gpos"] + path = src/backend/gpos + url = https://github.com/greenplum-db/gpos.git +[submodule "src/backend/gporca"] + path = src/backend/gporca + url = https://github.com/greenplum-db/gporca.git +[submodule "src/pl/plr"] + path = src/pl/plr + url = https://github.com/jconway/plr.git +[submodule "src/postgres"] + path = src/postgres + url = https://github.com/postgres/postgres.git http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/GNUmakefile.in ---------------------------------------------------------------------- diff --git a/GNUmakefile.in b/GNUmakefile.in index 78a3524..6875cf6 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -9,20 +9,16 @@ top_builddir = . include $(top_builddir)/src/Makefile.global all: -# $(MAKE) -C doc all +# $(MAKE) -C doc $@ # waiting for higher version of gcc ready -#$(MAKE) -C depends/thirdparty/googletest all - $(MAKE) -C depends/thirdparty/thrift/hawqbuild all - $(MAKE) -C depends/libhdfs3 all - $(MAKE) -C depends/libyarn all - $(MAKE) -C src all - $(MAKE) -C config all - $(MAKE) -C contrib/formatter_fixedwidth all - $(MAKE) -C contrib/extprotocol all - $(MAKE) -C contrib/orafce all - $(MAKE) -C contrib/gp_cancel_query all - $(MAKE) -C contrib/hawq-hadoop all - $(MAKE) -C tools all +#$(MAKE) -C depends/thirdparty/googletest $@ + $(MAKE) -C depends/thirdparty/thrift/hawqbuild $@ + $(MAKE) -C depends/libhdfs3 $@ + $(MAKE) -C depends/libyarn $@ + $(MAKE) -C src $@ + $(MAKE) -C config $@ + $(MAKE) -C contrib $@ + $(MAKE) -C tools $@ @echo "All of HAWQ successfully made. Ready to install." install: @@ -34,11 +30,7 @@ install: $(MAKE) -C depends/libyarn $@ $(MAKE) -C src $@ $(MAKE) -C config $@ - $(MAKE) -C contrib/formatter_fixedwidth $@ - $(MAKE) -C contrib/extprotocol $@ - $(MAKE) -C contrib/orafce $@ - $(MAKE) -C contrib/gp_cancel_query $@ - $(MAKE) -C contrib/hawq-hadoop $@ + $(MAKE) -C contrib $@ $(MAKE) -C tools $@ @echo "HAWQ installation complete." @@ -46,11 +38,7 @@ installdirs uninstall: # $(MAKE) -C doc $@ $(MAKE) -C src $@ $(MAKE) -C config $@ - $(MAKE) -C contrib/formatter_fixedwidth $@ - $(MAKE) -C contrib/extprotocol $@ - $(MAKE) -C contrib/orafce $@ - $(MAKE) -C contrib/gp_cancel_query $@ - $(MAKE) -C contrib/hawq-hadoop $@ + $(MAKE) -C contrib $@ distprep: # $(MAKE) -C doc $@ @@ -76,11 +64,7 @@ clean: -$(MAKE) -C depends/libyarn $@ $(MAKE) -C src $@ $(MAKE) -C config $@ - $(MAKE) -C contrib/formatter_fixedwidth $@ - $(MAKE) -C contrib/extprotocol $@ - $(MAKE) -C contrib/orafce $@ - $(MAKE) -C contrib/gp_cancel_query $@ - $(MAKE) -C contrib/hawq-hadoop $@ + $(MAKE) -C contrib $@ $(MAKE) -C tools $@ -$(MAKE) -C src feature-test-clean # Garbage from autoconf: http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/configure ---------------------------------------------------------------------- diff --git a/configure b/configure index 0c2fe9c..5aa3d6a 100755 --- a/configure +++ b/configure @@ -665,6 +665,7 @@ CXX CURL_LIBS CURL_CFLAGS CURL_CONFIG +R_HOME ZIC JAVAC_FLAGS JAVADOC @@ -728,14 +729,13 @@ with_pam krb_srvtab with_krb5 with_gssapi +with_pgcrypto with_r with_java with_python with_perl with_tcl enable_thread_safety -ORCA_DEPENDS_OBJDIR_DEFAULT -ORCA_DEPENDS_DIR_INTER enable_orca enable_email enable_gphdfs @@ -856,6 +856,7 @@ with_perl with_python with_java with_r +with_pgcrypto with_gssapi with_krb5 with_krb_srvnam @@ -1545,7 +1546,8 @@ Optional Packages: --with-perl build Perl modules (PL/Perl) --with-python build Python modules (PL/Python) --with-java build Java modules (PL/Java) - --with-r build R modules (PL/R) + --with-r build R modules (PL/R) + --with-pgcrypto build with pgcrypto --with-gssapi build with GSSAPI support --with-krb5 build with Kerberos 5 support --with-krb-srvnam=NAME default service principal name in Kerberos [postgres] @@ -5502,14 +5504,6 @@ fi -if test "$enable_orca" = yes ; then - ORCA_DEPENDS_DIR_INTER="$ORCA_DEPENDS_DIR" - ORCA_DEPENDS_OBJDIR_DEFAULT="$ORCA_OBJDIR_DEFAULT" -fi - - - - # # Enable thread-safe client libraries # @@ -5774,6 +5768,41 @@ fi $as_echo "$with_r" >&6; } + +# +# Optionally build with pgcrypto. +# +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build pgcrypto modules" >&5 +$as_echo_n "checking whether to build pgcrypto modules... " >&6; } + +pgac_args="$pgac_args with_pgcrypto" + + +# Check whether --with-pgcrypto was given. +if test "${with_pgcrypto+set}" = set; then : + withval=$with_pgcrypto; + case $withval in + yes) + : + ;; + no) + : + ;; + *) + as_fn_error $? "no argument expected for --with-pgcrypto option" "$LINENO" 5 + ;; + esac + +else + with_pgcrypto=no + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_pgcrypto" >&5 +$as_echo "$with_pgcrypto" >&6; } + + # # GSSAPI # @@ -8997,6 +9026,23 @@ fi fi +if test "$with_r" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking R_HOME" >&5 +$as_echo_n "checking R_HOME... " >&6; } + if test "x${R_HOME}" = x; then + r_home_guess=`pkg-config --variable=rhome libR 2>/dev/null` + if test "x${r_home_guess}" != "x"; then + R_HOME=$r_home_guess + else + as_fn_error $? "Failed to Set R_HOME. R is not installed? R_HOME is not set +or pkg-config is not installed to find R_HOME automatically." "$LINENO" 5 + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${R_HOME}" >&5 +$as_echo "${R_HOME}" >&6; } + +fi + if test "$enable_spinlocks" = yes; then $as_echo "#define HAVE_SPINLOCKS 1" >>confdefs.h http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/configure.in ---------------------------------------------------------------------- diff --git a/configure.in b/configure.in index 3a6e8d3..ee04770 100644 --- a/configure.in +++ b/configure.in @@ -643,14 +643,6 @@ PGAC_ARG_BOOL(enable, orca, no, [ --enable-orca enable Pivotal Query Opt [Define to 1 to build with Pivotal Query Optimizer. (--enable-orca)])]) AC_SUBST(enable_orca) -if test "$enable_orca" = yes ; then - ORCA_DEPENDS_DIR_INTER="$ORCA_DEPENDS_DIR" - ORCA_DEPENDS_OBJDIR_DEFAULT="$ORCA_OBJDIR_DEFAULT" -fi - -AC_SUBST(ORCA_DEPENDS_DIR_INTER) -AC_SUBST(ORCA_DEPENDS_OBJDIR_DEFAULT) - # # Enable thread-safe client libraries # @@ -711,10 +703,19 @@ AC_SUBST(with_java) # Optionally build R modules (PL/R) # AC_MSG_CHECKING([whether to build R modules]) -PGAC_ARG_BOOL(with, r, no, [ --with-r build R modules (PL/R)]) +PGAC_ARG_BOOL(with, r, no, [ --with-r build R modules (PL/R)]) AC_MSG_RESULT([$with_r]) AC_SUBST(with_r) + +# +# Optionally build with pgcrypto. +# +AC_MSG_CHECKING([whether to build pgcrypto modules]) +PGAC_ARG_BOOL(with, pgcrypto, no, [ --with-pgcrypto build with pgcrypto ]) +AC_MSG_RESULT([$with_pgcrypto]) +AC_SUBST(with_pgcrypto) + # # GSSAPI # @@ -1077,6 +1078,21 @@ failure. It is possible the compiler isn't looking in the proper directory. Use --without-zlib to disable zlib support.])]) fi +if test "$with_r" = yes; then + AC_MSG_CHECKING([R_HOME]) + if test "x${R_HOME}" = x; then + r_home_guess=`pkg-config --variable=rhome libR 2>/dev/null` + if test "x${r_home_guess}" != "x"; then + R_HOME=$r_home_guess + else + AC_MSG_ERROR([Failed to Set R_HOME. R is not installed? R_HOME is not set +or pkg-config is not installed to find R_HOME automatically.]) + fi + fi + AC_MSG_RESULT(${R_HOME}) + AC_SUBST(R_HOME) +fi + if test "$enable_spinlocks" = yes; then AC_DEFINE(HAVE_SPINLOCKS, 1, [Define to 1 if you have spinlocks.]) else http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/contrib/.gitignore ---------------------------------------------------------------------- diff --git a/contrib/.gitignore b/contrib/.gitignore new file mode 100644 index 0000000..2971e1e --- /dev/null +++ b/contrib/.gitignore @@ -0,0 +1 @@ +pgcrypto_prepare_timestamp http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/contrib/Makefile ---------------------------------------------------------------------- diff --git a/contrib/Makefile b/contrib/Makefile index 92df392..1701b23 100644 --- a/contrib/Makefile +++ b/contrib/Makefile @@ -8,20 +8,40 @@ WANTED_DIRS = \ orafce \ extprotocol \ gp_cancel_query \ + formatter_fixedwidth \ hawq-hadoop +ifeq ($(with_pgcrypto), yes) +WANTED_DIRS += pgcrypto + +# fixme: depend on pgcrypto.patch also. +pgcrypto_prepare: pg_prepare + if [ ! -e $(abs_top_builddir)/$(subdir)/pgcrypto_prepare_timestamp ]; then \ + (cd $(abs_top_srcdir)/src/postgres/contrib/pgcrypto; git apply $(abs_top_srcdir)/$(subdir)/pgcrypto.patch) && \ + touch $(abs_top_builddir)/$(subdir)/pgcrypto_prepare_timestamp; \ + fi +else +pgcrypto_prepare: +endif + +.PHONY: pgcrypto_prepare + # Missing: # start-scripts \ (does not have a makefile) # xml2 \ (requires libxml installed) - -all install installdirs uninstall distprep clean distclean maintainer-clean: +all install installdirs uninstall distprep: pgcrypto_prepare @for dir in $(WANTED_DIRS); do \ $(MAKE) -C $$dir $@ || exit; \ done +clean distclean maintainer-clean: + @for dir in $(WANTED_DIRS); do \ + $(MAKE) -C $$dir $@ || true; \ + done + # We'd like check operations to run all the subtests before failing. -check installcheck: +check installcheck: pgcrypto_prepare @CHECKERR=0; for dir in $(WANTED_DIRS); do \ $(MAKE) -C $$dir $@ || CHECKERR=$$?; \ done; \ http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/contrib/pgcrypto ---------------------------------------------------------------------- diff --git a/contrib/pgcrypto b/contrib/pgcrypto new file mode 120000 index 0000000..8c4adfc --- /dev/null +++ b/contrib/pgcrypto @@ -0,0 +1 @@ +../src/postgres/contrib/pgcrypto \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/contrib/pgcrypto.patch ---------------------------------------------------------------------- diff --git a/contrib/pgcrypto.patch b/contrib/pgcrypto.patch new file mode 100644 index 0000000..3b2a633 --- /dev/null +++ b/contrib/pgcrypto.patch @@ -0,0 +1,32 @@ +diff --git a/contrib/pgcrypto/.gitignore b/contrib/pgcrypto/.gitignore +index 5dcb3ff..dd80948 100644 +--- a/contrib/pgcrypto/.gitignore ++++ b/contrib/pgcrypto/.gitignore +@@ -1,4 +1,9 @@ + # Generated subdirectories +-/log/ +-/results/ +-/tmp_check/ ++libpgcrypto.a ++libpgcrypto.so ++libpgcrypto.so.0 ++libpgcrypto.so.0.0 ++pgcrypto.sql ++log ++results ++tmp_check +diff --git a/contrib/pgcrypto/Makefile b/contrib/pgcrypto/Makefile +index dadec95..3ec597d 100644 +--- a/contrib/pgcrypto/Makefile ++++ b/contrib/pgcrypto/Makefile +@@ -41,8 +41,8 @@ PG_CONFIG = pg_config + PGXS := $(shell $(PG_CONFIG) --pgxs) + include $(PGXS) + else +-subdir = contrib/pgcrypto +-top_builddir = ../.. ++subdir = src/postgresql/contrib/pgcrypto ++top_builddir = ../../../.. + include $(top_builddir)/src/Makefile.global + include $(top_srcdir)/contrib/contrib-global.mk + endif http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/.gitignore ---------------------------------------------------------------------- diff --git a/src/.gitignore b/src/.gitignore index 512464f..8b5553c 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -2,3 +2,5 @@ Makefile.global Makefile.port Makefile.custom VERSIONS.mk +pg_prepare_timestamp +pl/plr_prepare_timestamp http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/Makefile.global.in ---------------------------------------------------------------------- diff --git a/src/Makefile.global.in b/src/Makefile.global.in index cf27bdc..dc09653 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -45,6 +45,7 @@ ADDON_DIR = @ADDON_DIR@ # Support for VPATH builds vpath_build = @vpath_build@ abs_top_srcdir = @abs_top_srcdir@ +abs_top_builddir = @abs_top_builddir@ ifneq ($(vpath_build),yes) top_srcdir = $(top_builddir) @@ -170,6 +171,7 @@ with_perl = @with_perl@ with_python = @with_python@ with_tcl = @with_tcl@ with_r = @with_r@ +with_pgcrypto = @with_pgcrypto@ with_java = @with_java@ with_openssl = @with_openssl@ with_system_tzdata = @with_system_tzdata@ @@ -266,13 +268,6 @@ LD = @LD@ with_gnu_ld = @with_gnu_ld@ ld_R_works = @ld_R_works@ -# Dependencies -ORCA_DEPENDS_DIR_INTER = @ORCA_DEPENDS_DIR_INTER@ -ORCA_DEPENDS_OBJDIR_DEFAULT = @ORCA_DEPENDS_OBJDIR_DEFAULT@ -ORCA_DEPENDS_XERCES_VER = @ORCA_DEPENDS_XERCES_VER@ -ORCA_DEPENDS_LIBGPOS_VER = @ORCA_DEPENDS_LIBGPOS_VER@ -ORCA_DEPENDS_OPTIMIZER_VER = @ORCA_DEPENDS_OPTIMIZER_VER@ - # We want -L for libpgport.a to be first in LDFLAGS. We also need LDFLAGS # to be a "recursively expanded" variable, else adjustments to rpathdir # don't work right. So we must NOT do LDFLAGS := something, meaning this has @@ -329,6 +324,11 @@ else JAVADOC = $(missing) javadoc endif +# R +ifeq ($(with_r), yes) + R_HOME = "@R_HOME@" +endif + # Miscellaneous AWK = @AWK@ @@ -695,6 +695,14 @@ include $(top_srcdir)/src/nls-global.mk endif # nls.mk endif # enable_nls +pg_prepare: +ifneq "$(findstring yes, $(with_pgcrypto))" "" + if [ ! -e $(abs_top_builddir)/pg_prepare_timestamp ]; then \ + cd $(abs_top_srcdir); \ + git submodule update --init src/postgres && \ + touch $(abs_top_builddir)/src/pg_prepare_timestamp; \ + fi +endif ########################################################################## # @@ -728,7 +736,6 @@ lcov.info: $(gcda_files) %.c.gcov: %.gcda | lcov.info $(GCOV) -b -f -p -o . $(GCOVFLAGS) $*.c >$*.c.gcov.out - # hook for clean-up clean distclean maintainer-clean: clean-coverage http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/backend/.gitignore ---------------------------------------------------------------------- diff --git a/src/backend/.gitignore b/src/backend/.gitignore index e26100d..00b1901 100644 --- a/src/backend/.gitignore +++ b/src/backend/.gitignore @@ -1,2 +1,6 @@ postgres postgres.def +*timestamp +gporca/ +gpos/ +gp-xerces/ http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/backend/Makefile ---------------------------------------------------------------------- diff --git a/src/backend/Makefile b/src/backend/Makefile index f89c24d..bc8c178 100644 --- a/src/backend/Makefile +++ b/src/backend/Makefile @@ -56,12 +56,18 @@ LIBS := -lprotobuf -lboost_system -lboost_date_time -lstdc++ -lhdfs3 -lgsasl -lx # adding orca libraries ifeq ($(enable_orca),yes) -LIBS := $(LIBS) -L$(ORCA_DEPENDS_DIR_INTER)/libgpos/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lgpos -LIBS := $(LIBS) -L$(ORCA_DEPENDS_DIR_INTER)/lib -lxerces-c -LIBS := $(LIBS) -L$(ORCA_DEPENDS_DIR_INTER)/libnaucrates/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lnaucrates -LIBS := $(LIBS) -L$(ORCA_DEPENDS_DIR_INTER)/libgpdbcost/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lgpdbcost -LIBS := $(LIBS) -L$(ORCA_DEPENDS_DIR_INTER)/libgpopt/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lgpopt -LIBS := $(LIBS) -L$(top_builddir)/src/backend/gpopt -ldxltranslators +LIBGPOS_DIR = $(abs_top_builddir)/$(subdir)/gpos/build/install/$(prefix)/lib +LIBXERCES_DIR = $(abs_top_builddir)/$(subdir)/gp-xerces/build/install/$(prefix)/lib +LIBNAUCRATES_DIR = $(abs_top_builddir)/$(subdir)/gporca/build/install/$(prefix)/lib +LIBGPDBCOST_DIR = $(abs_top_builddir)/$(subdir)/gporca/build/install/$(prefix)/lib +LIBGPOPT_DIR = $(abs_top_builddir)/$(subdir)/gporca/build/install/$(prefix)/lib + +LIBS := $(LIBS) -L$(LIBGPOS_DIR) -lgpos +LIBS := $(LIBS) -L$(LIBXERCES_DIR) -lxerces-c +LIBS := $(LIBS) -L$(LIBNAUCRATES_DIR) -lnaucrates +LIBS := $(LIBS) -L$(LIBGPDBCOST_DIR) -lgpdbcost +LIBS := $(LIBS) -L$(LIBGPOPT_DIR) -lgpopt +LIBS := $(LIBS) -L$(abs_top_builddir)/$(subdir)/gpopt -ldxltranslators endif # HAWQ uses threads in the backend @@ -74,19 +80,111 @@ SNAPPYLIB = -lsnappy LIBS := $(LIBS) $(SNAPPYLIB) ########################################################################## -submake-libdxltranslators: ifeq ($(enable_orca),yes) - $(MAKE) -C gpopt all + +ifeq ($(PORTNAME), darwin) +XERCES_LIB_FILE=libxerces-c.dylib +GPOS_LIB_FILE=libgpos.dylib +else +XERCES_LIB_FILE=libxerces-c.so +GPOS_LIB_FILE=libgpos.so +endif + +GPORCA_SRC_PATH := $(abs_top_srcdir)/$(subdir)/gporca +GPOS_SRC_PATH := $(abs_top_srcdir)/$(subdir)/gpos +GP_XERCES_SRC_PATH := $(abs_top_srcdir)/$(subdir)/gp-xerces + +submake-gporca: submake-gpos submake-gp-xerces gporca_prepare +ifneq ($(prefix),) + if [ ! -f gporca_build_timestamp ]; then \ + rm -rf gporca/build; mkdir -p gporca/build; cd gporca/build; \ + cmake $(GPORCA_SRC_PATH) -DCMAKE_INSTALL_PREFIX=$(prefix) \ + -DXERCES_INCLUDE_DIR=$(abs_top_builddir)/$(subdir)/gp-xerces/build/install/$(prefix)/include \ + -DXERCES_LIBRARY=$(abs_top_builddir)/$(subdir)/gp-xerces/build/install/$(prefix)/lib/$(XERCES_LIB_FILE) \ + -DGPOS_INCLUDE_DIR=$(abs_top_builddir)/$(subdir)/gpos/build/install/$(prefix)/include \ + -DGPOS_LIBRARY=$(abs_top_builddir)/$(subdir)/gpos/build/install/$(prefix)/lib/$(GPOS_LIB_FILE) && \ + $(MAKE) DESTDIR=$(abs_top_builddir)/$(subdir)/gporca/build/install install && \ + touch ../../gporca_build_timestamp; \ + fi +else + if [ ! -f gporca_build_timestamp ]; then \ + rm -rf gporca/build; mkdir -p gporca/build; cd gporca/build; \ + cmake $(ORCA_SRC_PATH) \ + -DXERCES_INCLUDE_DIR=$(abs_top_builddir)/$(subdir)/gp-xerces/build/install/$(prefix)/include \ + -DXERCES_LIBRARY=$(abs_top_builddir)/$(subdir)/gp-xerces/build/install/$(prefix)/lib/$(XERCES_LIB_FILE) \ + -DGPOS_INCLUDE_DIR=$(abs_top_builddir)/$(subdir)/gpos/build/install/$(prefix)/include \ + -DGPOS_LIBRARY=$(abs_top_builddir)/$(subdir)/gpos/build/install/$(prefix)/lib/$(GPOS_LIB_FILE) && \ + $(MAKE) DESTDIR=$(abs_top_builddir)/$(subdir)/gporca/build/install install && \ + touch ../../gporca_build_timestamp; \ + fi +endif + +submake-gpos: gporca_prepare +ifneq ($(prefix),) + if [ ! -f gpos_build_timestamp ]; then \ + rm -rf gpos/build; mkdir -p gpos/build; cd gpos/build; mkdir -p install; \ + cmake $(GPOS_SRC_PATH) -DCMAKE_INSTALL_PREFIX=$(prefix) && \ + $(MAKE) DESTDIR=$(abs_top_builddir)/$(subdir)/gpos/build/install install && \ + touch ../../gpos_build_timestamp; \ + fi +else + if [ ! -f gpos_build_timestamp ]; then \ + rm -rf gpos/build; mkdir -p gpos/build; cd gpos/build; mkdir -p install; \ + cmake $(GPOS_SRC_PATH) && \ + $(MAKE) DESTDIR=$(abs_top_builddir)/$(subdir)/gpos/build/install install && \ + touch ../../gpos_build_timestamp; \ + fi endif -all: submake-libpgport submake-libdxltranslators postgres $(POSTGRES_IMP) +submake-gp-xerces: submake-gpos gporca_prepare +ifneq ($(prefix),) + if [ ! -f gp-xerces_build_timestamp ]; then \ + rm -rf gp-xerces/build; mkdir -p gp-xerces/build; cd gp-xerces/build; mkdir -p install; \ + $(GP_XERCES_SRC_PATH)/configure --prefix=$(prefix); \ + $(MAKE) DESTDIR=$(abs_top_builddir)/$(subdir)/gp-xerces/build/install install && \ + touch ../../gp-xerces_build_timestamp; \ + fi +else + if [ ! -f gp-xerces_build_timestamp ]; then \ + rm -rf gp-xerces/build; mkdir -p gp-xerces/build; cd gp-xerces/build; mkdir -p install; \ + $(GP_XERCES_SRC_PATH)/configure --prefix=$(prefix); \ + $(MAKE) DESTDIR=$(abs_top_builddir)/$(subdir)/gp-xerces/build/install install && \ + touch ../../gp-xerces_build_timestamp; \ + fi +endif + +gporca_prepare: + if [ ! -f $(abs_top_builddir)/$(subdir)/gporca_prepare_timestamp ]; then \ + cd $(abs_top_srcdir); \ + git submodule update --init $(subdir)/gporca && \ + git submodule update --init $(subdir)/gp-xerces && \ + git submodule update --init $(subdir)/gpos && \ + touch $(abs_top_builddir)/$(subdir)/gporca_prepare_timestamp; \ + fi + +submake-libdxltranslators: submake-gporca + $(MAKE) -C gpopt all + +# No distclean for gpor & gpos by now. +distclean_gporca: + rm -rf gporca/build gporca_*_timestamp + rm -rf gpos/build gpos_*_timestamp + rm -rf gp-xerces/build gp-xerces_*_timestamp + +.PHONY: submake-gporca submake-gpos submake-gp-xerces distclean_gporca gporca_prepare + +else +submake-libdxltranslators distclean_gporca: +endif # enable_orca + +all: submake-libpgport postgres $(POSTGRES_IMP) ifneq ($(PORTNAME), cygwin) ifneq ($(PORTNAME), win32) ifneq ($(PORTNAME), aix) -postgres: $(OBJS) - $(CXX) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $(call expand_subsys,$^) $(LIBS) -o $@ +postgres: $(OBJS) submake-libdxltranslators + $(CXX) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $(call expand_subsys, $(filter-out submake-libdxltranslators, $^)) $(LIBS) -o $@ endif endif @@ -227,6 +325,7 @@ endif ${INSTALL_DATA} $(srcdir)/utils/misc/etc/gpcheck.cnf ${sysconfdir} ifeq ($(enable_orca), yes) $(MAKE) -C gpopt $@ INSTLOC=$(DESTDIR)$(libdir) + $(MAKE) -C gporca/build $@ endif install-bin: postgres $(POSTGRES_IMP) installdirs @@ -303,7 +402,7 @@ endif find gpopt -name *.so | xargs rm -rf find gpopt -name *.dylib | xargs rm -rf -distclean: clean +distclean: clean distclean_gporca rm -f port/tas.s port/dynloader.c port/pg_sema.c port/pg_shmem.c maintainer-clean: distclean http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/backend/gp-xerces ---------------------------------------------------------------------- diff --git a/src/backend/gp-xerces b/src/backend/gp-xerces new file mode 160000 index 0000000..f07c17d --- /dev/null +++ b/src/backend/gp-xerces @@ -0,0 +1 @@ +Subproject commit f07c17da813f44d8da17067a76491ca4b1deb02f http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/backend/gpopt/Makefile ---------------------------------------------------------------------- diff --git a/src/backend/gpopt/Makefile b/src/backend/gpopt/Makefile index b587ffd..58d97fa 100644 --- a/src/backend/gpopt/Makefile +++ b/src/backend/gpopt/Makefile @@ -39,29 +39,30 @@ else GPOPT_UDF_FLAGS := -shared endif -LIBGPOS_DIR = $(ORCA_DEPENDS_DIR_INTER)/libgpos -LIBNAUCRATES_DIR = $(ORCA_DEPENDS_DIR_INTER)/libnaucrates -LIBGPDBCOST_DIR = $(ORCA_DEPENDS_DIR_INTER)/libgpdbcost -LIBGPOPT_DIR = $(ORCA_DEPENDS_DIR_INTER)/libgpopt +LIBGPOS_DIR = ../gpos/build/install/$(prefix)/lib +LIBXERCES_DIR = ../gp-xerces/build/install/$(prefix)/lib +LIBNAUCRATES_DIR = ../gporca/build/install/$(prefix)/lib +LIBGPDBCOST_DIR = ../gporca/build/install/$(prefix)/lib +LIBGPOPT_DIR = ../gporca/build/install/$(prefix)/lib include $(top_srcdir)/src/backend/common.mk libdxltranslators.$(LDSFX): $(SUBDIROBJS) $(OBJS) $(CXX) $(CXXFLAGS) $(LDLIBFLAGS) \ - -L$(LIBGPOS_DIR)/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lgpos \ - -L$(ORCA_DEPENDS_DIR_INTER)/lib -lxerces-c \ - -L$(LIBNAUCRATES_DIR)/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lnaucrates \ - -L$(LIBGPDBCOST_DIR)/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lgpdbcost \ - -L$(LIBGPOPT_DIR)/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lgpopt -lpthread -o $@ \ + -L$(LIBGPOS_DIR) -lgpos \ + -L$(LIBXERCES_DIR) -lxerces-c \ + -L$(LIBNAUCRATES_DIR) -lnaucrates \ + -L$(LIBGPDBCOST_DIR) -lgpdbcost \ + -L$(LIBGPOPT_DIR) -lgpopt -lpthread -o $@ \ $(SUBDIROBJS) $(OBJS) libgpoptudf.$(LDSFX): $(SUBDIROBJS) $(CXX) $(CXXFLAGS) $(GPOPT_UDF_FLAGS) \ - -L$(ORCA_DEPENDS_DIR_INTER)/lib -lxerces-c \ - -L$(LIBGPOS_DIR)/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lgpos \ - -L$(LIBNAUCRATES_DIR)/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lnaucrates \ - -L$(LIBGPDBCOST_DIR)/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lgpdbcost \ - -L$(LIBGPOPT_DIR)/$(ORCA_DEPENDS_OBJDIR_DEFAULT) -lgpopt \ + -L$(LIBXERCES_DIR) -lxerces-c \ + -L$(LIBGPOS_DIR) -lgpos \ + -L$(LIBNAUCRATES_DIR) -lnaucrates \ + -L$(LIBGPDBCOST_DIR) -lgpdbcost \ + -L$(LIBGPOPT_DIR) -lgpopt \ -o $@ ./utils/funcs.o install: http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/backend/gpopt/gpopt.mk ---------------------------------------------------------------------- diff --git a/src/backend/gpopt/gpopt.mk b/src/backend/gpopt/gpopt.mk index 1fa7d81..c21f27e 100644 --- a/src/backend/gpopt/gpopt.mk +++ b/src/backend/gpopt/gpopt.mk @@ -60,14 +60,20 @@ XERCES_VER = $(shell grep "\"xerces-c\"" $(GREP_SED_VAR)) LIBGPOS_VER = $(shell grep "\"libgpos\"" $(GREP_SED_VAR)) OPTIMIZER_VER = $(shell grep "\"optimizer\"" $(GREP_SED_VAR)) +LIBGPOS_DIR = $(abs_top_builddir)/src/backend/gpos/build/install/$(prefix) +LIBXERCES_DIR = $(abs_top_builddir)/src/backend/gp-xerces/build/install/$(prefix) +LIBNAUCRATES_DIR = $(abs_top_builddir)/src/backend/gporca/build/install/$(prefix) +LIBGPDBCOST_DIR = $(abs_top_builddir)/src/backend/gporca/build/install/$(prefix) +LIBGPOPT_DIR = $(abs_top_builddir)/src/backend/gpopt/build/install/$(prefix) + BLD_FLAGS = $(ARCH_FLAGS) -D$(ARCH_BIT) -D$(ARCH_CPU) -D$(ARCH_OS) $(GPOPT_flags) override CPPFLAGS := -fPIC $(CPPFLAGS) override CPPFLAGS := $(BLD_FLAGS) $(CPPFLAGS) override CPPFLAGS := -DGPOS_VERSION=\"$(LIBGPOS_VER)\" $(CPPFLAGS) override CPPFLAGS := -DGPOPT_VERSION=\"$(OPTIMIZER_VER)\" $(CPPFLAGS) override CPPFLAGS := -DXERCES_VERSION=\"$(XERCES_VER)\" $(CPPFLAGS) -override CPPFLAGS := -I $(ORCA_DEPENDS_DIR_INTER)/include $(CPPFLAGS) -override CPPFLAGS := -I $(ORCA_DEPENDS_DIR_INTER)/libgpos/include $(CPPFLAGS) -override CPPFLAGS := -I $(ORCA_DEPENDS_DIR_INTER)/libgpopt/include $(CPPFLAGS) -override CPPFLAGS := -I $(ORCA_DEPENDS_DIR_INTER)/libnaucrates/include $(CPPFLAGS) -override CPPFLAGS := -I $(ORCA_DEPENDS_DIR_INTER)/libgpdbcost/include $(CPPFLAGS) +override CPPFLAGS := -I $(LIBGPOS_DIR)/include $(CPPFLAGS) +override CPPFLAGS := -I $(LIBXERCES_DIR)/include $(CPPFLAGS) +override CPPFLAGS := -I $(LIBGPOPT_DIR)/include $(CPPFLAGS) +override CPPFLAGS := -I $(LIBNAUCRATES_DIR)/include $(CPPFLAGS) +override CPPFLAGS := -I $(LIBGPDBCOST_DIR)/include $(CPPFLAGS) http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/backend/gporca ---------------------------------------------------------------------- diff --git a/src/backend/gporca b/src/backend/gporca new file mode 160000 index 0000000..f0532b1 --- /dev/null +++ b/src/backend/gporca @@ -0,0 +1 @@ +Subproject commit f0532b19c22c86e6959ae35fb9568096b7d666f9 http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/backend/gpos ---------------------------------------------------------------------- diff --git a/src/backend/gpos b/src/backend/gpos new file mode 160000 index 0000000..91fa636 --- /dev/null +++ b/src/backend/gpos @@ -0,0 +1 @@ +Subproject commit 91fa636d53ad71d56a4beae55e3ed1fb6d6f8f92 http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/bin/Makefile ---------------------------------------------------------------------- diff --git a/src/bin/Makefile b/src/bin/Makefile index 04d412d..46243cf 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -16,7 +16,7 @@ include $(top_builddir)/src/Makefile.global DIRS = initdb ipcclean pg_ctl pg_dump pgbench \ psql scripts pg_config pg_controldata pg_resetxlog \ gpfilesystem/hdfs gpmirrortransition gpupgrade \ - gpfusion gp_workfile_mgr gpcheckhdfs gpfdist gpoptutils + gpfusion gp_workfile_mgr gpcheckhdfs gpoptutils all install installdirs uninstall distprep clean distclean maintainer-clean: @for dir in $(DIRS); do echo "build $$dir"; $(MAKE) -C $$dir $@ || exit; done http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/pl/Makefile ---------------------------------------------------------------------- diff --git a/src/pl/Makefile b/src/pl/Makefile index 31d9bb9..49f2a9b 100644 --- a/src/pl/Makefile +++ b/src/pl/Makefile @@ -30,11 +30,29 @@ ifeq ($(with_perl), yes) DIRS += plperl endif -all install installdirs uninstall distprep: +ifeq ($(with_r), yes) +DIRS += plr + +# fixme: depend on plr.patch also. +plr_prepare: + if [ ! -e $(abs_top_builddir)/$(subdir)/plr_prepare_timestamp ]; then \ + cd $(abs_top_srcdir); \ + git submodule update --init $(subdir)/plr && \ + (cd $(abs_top_srcdir)/$(subdir)/plr; git apply ../plr.patch) && \ + touch $(abs_top_builddir)/$(subdir)/plr_prepare_timestamp; \ + fi +else +plr_prepare: +endif + +.PHONY: plr_prepare + +# We need to fetch plrr if needed. +all install installdirs uninstall distprep: plr_prepare @for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit 1; done clean distclean maintainer-clean: - @for dir in $(DIRS); do $(MAKE) -C $$dir $@; done + @for dir in $(DIRS); do $(MAKE) -C $$dir $@ || true; done # We'd like check operations to run all the subtests before failing; # also insert a sleep to ensure the previous test backend exited before http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/pl/plr ---------------------------------------------------------------------- diff --git a/src/pl/plr b/src/pl/plr new file mode 160000 index 0000000..33a90a9 --- /dev/null +++ b/src/pl/plr @@ -0,0 +1 @@ +Subproject commit 33a90a9a098fe7bf56256e231b9d0142016cb9f5 http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/pl/plr.patch ---------------------------------------------------------------------- diff --git a/src/pl/plr.patch b/src/pl/plr.patch new file mode 100644 index 0000000..1350fbd --- /dev/null +++ b/src/pl/plr.patch @@ -0,0 +1,28 @@ +diff --git a/Makefile b/Makefile +index 65c6bbe..29f04cd 100755 +--- a/Makefile ++++ b/Makefile +@@ -35,8 +35,8 @@ endif + PGXS := $(shell $(PG_CONFIG) --pgxs) + include $(PGXS) + else +-subdir = contrib/plr +-top_builddir = ../.. ++subdir = src/pl/plr ++top_builddir = ../../.. + include $(top_builddir)/src/Makefile.global + include $(top_srcdir)/contrib/contrib-global.mk + endif +diff --git a/plr.h b/plr.h +index 67f8dbe..9a457ee 100755 +--- a/plr.h ++++ b/plr.h +@@ -366,7 +366,7 @@ extern void R_RunExitFinalizers(void); + tupdesc = lookup_rowtype_tupdesc(tupType, tupTypmod); \ + tuple->t_len = HeapTupleHeaderGetDatumLength(tuple_hdr); \ + ItemPointerSetInvalid(&(tuple->t_self)); \ +- tuple->t_tableOid = InvalidOid; \ ++ /* tuple->t_tableOid = InvalidOid; */ \ + tuple->t_data = tuple_hdr; \ + PROTECT(el = pg_tuple_get_r_frame(1, &tuple, tupdesc)); \ + ReleaseTupleDesc(tupdesc); \ http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72f5302b/src/postgres ---------------------------------------------------------------------- diff --git a/src/postgres b/src/postgres new file mode 160000 index 0000000..ca59dfa --- /dev/null +++ b/src/postgres @@ -0,0 +1 @@ +Subproject commit ca59dfa6f727fe3bf3a01904ec30e87f7fa5a67e
