diff --git a/Makefile b/Makefile index 0e31993544..b61e8e0590 100644 --- a/Makefile +++ b/Makefile @@ -1,28 +1,27 @@ export PLATFORM := $(shell uname) ARCH := $(shell uname -m) -ifeq ("$(wildcard /etc/centos-release)", "") - LIBSTDCPP_HACK = 1 -else - LIBSTDCPP_HACK = 0 -endif - TOPDIR := $(shell pwd) +# Allow custom libc++ hack for Ubuntu +ifeq ("$(wildcard /etc/centos-release)", "") + LIBSTDCPP_HACK ?= 1 +endif + ifeq ($(ARCH),x86_64) ARCH := x64 else $(error Not prepared to compile on $(ARCH)) endif -MONO := $(shell which mono) +MONO := $(shell which mono 2>/dev/null) ifeq ($(MONO),) MONO := /usr/bin/mono endif -MCS := $(shell which mcs) +MCS := $(shell which mcs 2>/dev/null) ifeq ($(MCS),) - MCS := $(shell which dmcs) + MCS := $(shell which dmcs 2>/dev/null) endif ifeq ($(MCS),) MCS := /usr/bin/mcs @@ -56,8 +55,8 @@ else ifeq ($(PLATFORM),Darwin) CC := /usr/bin/clang CXX := /usr/bin/clang - CFLAGS += -mmacosx-version-min=10.7 -stdlib=libc++ - CXXFLAGS += -mmacosx-version-min=10.7 -std=c++11 -stdlib=libc++ -msse4.2 -Wno-undefined-var-template -Wno-unknown-warning-option + CFLAGS += -mmacosx-version-min=10.14 -stdlib=libc++ + CXXFLAGS += -mmacosx-version-min=10.14 -std=c++17 -stdlib=libc++ -msse4.2 -Wno-undefined-var-template -Wno-unknown-warning-option .LIBPATTERNS := lib%.dylib lib%.a @@ -70,7 +69,7 @@ else endif BOOSTDIR ?= ${BOOST_BASEDIR}/${BOOST_BASENAME} -CCACHE := $(shell which ccache) +CCACHE := $(shell which ccache 2>/dev/null) ifneq ($(CCACHE),) CCACHE_CC := $(CCACHE) $(CC) CCACHE_CXX := $(CCACHE) $(CXX) diff --git a/bindings/c/local.mk b/bindings/c/local.mk index eebd6233c1..df2859c6a3 100644 --- a/bindings/c/local.mk +++ b/bindings/c/local.mk @@ -24,15 +24,21 @@ fdb_c_CFLAGS := $(fdbclient_CFLAGS) fdb_c_LDFLAGS := $(fdbrpc_LDFLAGS) fdb_c_LIBS := lib/libfdbclient.a lib/libfdbrpc.a lib/libflow.a $(FDB_TLS_LIB) fdb_c_STATIC_LIBS := $(TLS_LIBS) -fdb_c_tests_LIBS := -Llib -lfdb_c +fdb_c_tests_LIBS := -Llib -lfdb_c -lstdc++ fdb_c_tests_HEADERS := -Ibindings/c CLEAN_TARGETS += fdb_c_tests_clean ifeq ($(PLATFORM),linux) fdb_c_LDFLAGS += -Wl,--version-script=bindings/c/fdb_c.map -static-libgcc -Wl,-z,nodelete -lm -lpthread -lrt -ldl - ifeq ($(LIBSTDCPP_HACK),1) - fdb_c_LIBS += lib/libstdc++.a + # Link our custom libstdc++ statically in Ubuntu, if hacking + ifeq ("$(wildcard /etc/centos-release)", "") + ifeq ($(LIBSTDCPP_HACK),1) + fdb_c_LIBS += lib/libstdc++.a + endif + # Link stdc++ statically in Centos, if not hacking + else + fdb_c_STATIC_LIBS += -static-libstdc++ endif fdb_c_tests_LIBS += -lpthread endif @@ -86,11 +92,11 @@ bindings/c/foundationdb/fdb_c_options.g.h: bin/vexillographer.exe fdbclient/vexi bin/fdb_c_performance_test: bindings/c/test/performance_test.c bindings/c/test/test.h fdb_c @echo "Compiling fdb_c_performance_test" - @$(CC) $(CFLAGS) $(fdb_c_tests_HEADERS) -o $@ bindings/c/test/performance_test.c $(fdb_c_tests_LIBS) + @$(CC) $(CFLAGS) $(fdb_c_tests_HEADERS) -o $@ bindings/c/test/performance_test.c $(fdb_c_tests_LIBS) bin/fdb_c_ryw_benchmark: bindings/c/test/ryw_benchmark.c bindings/c/test/test.h fdb_c @echo "Compiling fdb_c_ryw_benchmark" - @$(CC) $(CFLAGS) $(fdb_c_tests_HEADERS) -o $@ bindings/c/test/ryw_benchmark.c $(fdb_c_tests_LIBS) + @$(CC) $(CFLAGS) $(fdb_c_tests_HEADERS) -o $@ bindings/c/test/ryw_benchmark.c $(fdb_c_tests_LIBS) packages/fdb-c-tests-$(VERSION)-$(PLATFORM).tar.gz: bin/fdb_c_performance_test bin/fdb_c_ryw_benchmark @echo "Packaging $@" diff --git a/bindings/flow/tester/local.mk b/bindings/flow/tester/local.mk index 2ef4fcb753..83444774bd 100644 --- a/bindings/flow/tester/local.mk +++ b/bindings/flow/tester/local.mk @@ -35,8 +35,7 @@ _fdb_flow_tester_clean: @rm -rf bindings/flow/bin ifeq ($(PLATFORM),linux) - fdb_flow_tester_LIBS += -ldl -lpthread -lrt - fdb_flow_tester_LDFLAGS += -static-libstdc++ -static-libgcc + fdb_flow_tester_LDFLAGS += -static-libstdc++ -static-libgcc -ldl -lpthread -lrt -lm else ifeq ($(PLATFORM),osx) fdb_flow_tester_LDFLAGS += -lc++ endif diff --git a/build/Dockerfile b/build/Dockerfile index 895858f7a0..890066e1e9 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,14 +1,16 @@ FROM centos:6 -LABEL version=0.1.2 +LABEL version=0.1.4 +ENV DOCKER_IMAGEVER=0.1.4 # Install dependencies for developer tools, bindings,\ # documentation, actorcompiler, and packaging tools\ RUN yum install -y yum-utils &&\ yum-config-manager --enable rhel-server-rhscl-7-rpms &&\ yum -y install centos-release-scl epel-release &&\ - yum -y install devtoolset-7 mono-core java-1.8.0-openjdk-devel \ - rh-python36-python-devel rh-ruby24 golang python27 \ - rpm-build debbuild python-pip npm ccache distcc &&\ + yum -y install devtoolset-8 java-1.8.0-openjdk-devel \ + rh-python36-python-devel devtoolset-8-valgrind-devel \ + mono-core rh-ruby24 golang python27 rpm-build debbuild \ + python-pip npm dos2unix valgrind-devel &&\ pip install boto3==1.1.1 USER root @@ -35,8 +37,9 @@ RUN curl -L https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.1 RUN curl -L https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.2.tar.gz > /tmp/libressl.tar.gz &&\ cd /tmp && echo "b8cb31e59f1294557bfc80f2a662969bc064e83006ceef0574e2553a1c254fd5 libressl.tar.gz" > libressl-sha.txt &&\ sha256sum -c libressl-sha.txt && tar xf libressl.tar.gz &&\ - cd libressl-2.8.2 && cd /tmp/libressl-2.8.2 && scl enable devtoolset-7 -- ./configure --prefix=/usr/local/stow/libressl CFLAGS="-fPIC -O3" --prefix=/usr/local &&\ - cd /tmp/libressl-2.8.2 && scl enable devtoolset-7 -- make -j`nproc` install &&\ + cd libressl-2.8.2 && cd /tmp/libressl-2.8.2 && scl enable devtoolset-8 -- ./configure --prefix=/usr/local/stow/libressl CFLAGS="-fPIC -O3" --prefix=/usr/local &&\ + cd /tmp/libressl-2.8.2 && scl enable devtoolset-8 -- make -j`nproc` install &&\ rm -rf /tmp/libressl-2.8.2 /tmp/libressl.tar.gz -CMD scl enable devtoolset-7 python27 rh-python36 rh-ruby24 -- bash +ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0 +CMD scl enable devtoolset-8 python27 rh-python36 rh-ruby24 -- bash diff --git a/build/docker-compose.yaml b/build/docker-compose.yaml index a3a281ee78..1833b62dfa 100644 --- a/build/docker-compose.yaml +++ b/build/docker-compose.yaml @@ -2,7 +2,7 @@ version: "3" services: common: &common - image: foundationdb/foundationdb-build:0.1.2 + image: foundationdb/foundationdb-build:0.1.4 build-setup: &build-setup <<: *common @@ -26,16 +26,19 @@ services: build-docs: <<: *build-setup - command: scl enable devtoolset-7 python27 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" package_html' + volumes: + - ..:/foundationdb + working_dir: /foundationdb + command: scl enable devtoolset-8 python27 rh-python36 rh-ruby24 -- bash -c 'make -j "$${MAKEJOBS}" docpackage' release-packages: &release-packages <<: *release-setup - command: scl enable devtoolset-7 python27 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -DFDB_RELEASE=1 -DVALGRIND=0 /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" packages preinstall && cpack' + command: scl enable devtoolset-8 python27 rh-python36 rh-ruby24 -- bash -c 'make -j "$${MAKEJOBS}" packages' snapshot-packages: &snapshot-packages <<: *build-setup - command: scl enable devtoolset-7 python27 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -DFDB_RELEASE=0 -DVALGRIND=0 /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" packages preinstall && cpack' + command: scl enable devtoolset-8 python27 rh-python36 rh-ruby24 -- bash -c 'make -j "$${MAKEJOBS}" packages' prb-packages: <<: *snapshot-packages @@ -43,11 +46,11 @@ services: release-bindings: &release-bindings <<: *release-setup - command: bash -c 'make -j "$${MAKEJOBS}" bindings' + command: scl enable devtoolset-8 python27 rh-python36 rh-ruby24 -- bash -c 'make -j "$${MAKEJOBS}" bindings' snapshot-bindings: &snapshot-bindings <<: *build-setup - command: scl enable devtoolset-7 python27 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -DFDB_RELEASE=0 /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" python_binding' + command: scl enable devtoolset-8 python27 rh-python36 rh-ruby24 -- bash -c 'make -j "$${MAKEJOBS}" bindings' prb-bindings: <<: *snapshot-bindings @@ -55,7 +58,7 @@ services: snapshot-cmake: &snapshot-cmake <<: *build-setup - command: scl enable devtoolset-7 python27 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -DFDB_RELEASE=0 -DVALGRIND=0 /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" packages preinstall && cpack' + command: scl enable devtoolset-8 python27 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -DFDB_RELEASE=0 -DVALGRIND=0 /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" packages preinstall && cpack' prb-cmake: <<: *snapshot-cmake @@ -63,7 +66,7 @@ services: snapshot-ctest: &snapshot-ctest <<: *build-setup - command: scl enable devtoolset-7 python27 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -DFDB_RELEASE=1 /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" && ctest -L fast -j "$${MAKEJOBS}" --output-on-failure' + command: scl enable devtoolset-8 python27 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -DFDB_RELEASE=1 /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" && ctest -L fast -j "$${MAKEJOBS}" --output-on-failure' prb-ctest: <<: *snapshot-ctest @@ -71,7 +74,7 @@ services: snapshot-correctness: &snapshot-correctness <<: *build-setup - command: scl enable devtoolset-7 python27 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -DFDB_RELEASE=1 /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" && ctest -j "$${MAKEJOBS}" --output-on-failure + command: scl enable devtoolset-8 python27 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -DFDB_RELEASE=1 /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" && ctest -j "$${MAKEJOBS}" --output-on-failure prb-correctness: <<: *snapshot-correctness diff --git a/documentation/sphinx/Makefile b/documentation/sphinx/Makefile index d23b136f1f..3aab160be2 100644 --- a/documentation/sphinx/Makefile +++ b/documentation/sphinx/Makefile @@ -70,7 +70,7 @@ buildsphinx: cd $(BUILDDIR); \ curl -OL $(VENV_URL); \ tar zxvf $(VENV_VERSION).tar.gz; \ - ./$(VENV_VERSION)/virtualenv.py venv; \ + python2 ./$(VENV_VERSION)/virtualenv.py venv; \ fi . $(VENVDIR)/bin/activate && \ cp .pip.conf $(VENVDIR)/pip.conf && \