David Stes
2024-03-31 8cdd197ba643eb2608c5aab87567625bb9336cee
commit | author | age
711b9d 1 #
G 2 # This file and its contents are supplied under the terms of the
3 # Common Development and Distribution License ("CDDL"). You may
4 # only use this file in accordance with the terms of the CDDL.
5 #
6 # A full copy of the text of the CDDL should have accompanied this
7 # source. A copy of the CDDL is also available via the Internet at
8 # http://www.illumos.org/license/CDDL.
9 #
10
11 #
12 # Copyright 2017 Alexander Pyhalov
13 # Copyright 2018 Michal Nowak
14 # Copyright 2021 Andreas Grueninger, Grueninger GmbH, (grueni). All rights reserved.
2504cb 15 # Copyright 2021 erwinlem
711b9d 16 #
G 17
18 # if gcc11 is available use openssl 1.1 and remove OPENSSL* from BUILD_ARGS
19
20 BUILD_BITS= 64
21 BUILD_STYLE= justmake
22 USE_OPENSSL10= yes
23
24 include ../../../make-rules/shared-macros.mk
25
26 COMPONENT_NAME=    mongodb
27 COMPONENT_MAJOR_VERSION= 4.4
b3bc86 28 COMPONENT_MINOR_VERSION= 15
711b9d 29 COMPONENT_VERSION= $(COMPONENT_MAJOR_VERSION).$(COMPONENT_MINOR_VERSION)
G 30 COMPONENT_SUMMARY= MongoDB distributed document-oriented database
31 COMPONENT_PROJECT_URL=    https://www.mongodb.com/
32 COMPONENT_FMRI=    database/mongodb-44
33 COMPONENT_CLASSIFICATION= System/Databases
34 COMPONENT_SRC=        $(COMPONENT_NAME)-src-r$(COMPONENT_VERSION)
35 COMPONENT_ARCHIVE=    $(COMPONENT_SRC).tar.gz
36 COMPONENT_ARCHIVE_URL=    https://fastdl.mongodb.org/src/$(COMPONENT_ARCHIVE)
b3bc86 37 COMPONENT_ARCHIVE_HASH=    sha256:fb7ef14e2539df0addc1e350ad2a0fdb7dd078a60d49ab15d9932f193ea1da33
711b9d 38 COMPONENT_LICENSE= SSPL
G 39 COMPONENT_LICENSE_FILE=    LICENSE-Community.txt
40
41 include $(WS_MAKE_RULES)/common.mk
42
43 BUILD_DIR_TOOLS= $(BUILD_DIR)/tools
44 BUILD_TOOLS= $(BUILD_DIR_TOOLS)/.built
45 INSTALL_TOOLS= $(BUILD_DIR_TOOLS)/.installed
46
47 MONGO_PREFIX=$(USRDIR)/$(COMPONENT_NAME)/$(COMPONENT_MAJOR_VERSION)
48
49 PYTHON_VERSION= 3.9
50 GCC_VERSION= 10
51 GMAKE= scons VERBOSE=1 
52 CORES= $(shell psrinfo -t)
53 GOROOT= $(shell go env | grep GOROOT | awk -F= '{ print $$2 }' | tr -d '"')
54
55 ENV= /usr/bin/env -i
56
57 COMPONENT_BUILD_ARGS += LIBPATH="$(OPENSSL_PREFIX)/lib/$(MACH64):$(USRLIBDIR.$(BITS))"
58 COMPONENT_BUILD_ARGS +=    CPPPATH="$(OPENSSL_PREFIX)/include"
59 COMPONENT_BUILD_ARGS += DESTDIR=$(PROTO_DIR)
60 COMPONENT_BUILD_ARGS += PREFIX=$(MONGO_PREFIX)
61 COMPONENT_BUILD_ARGS += TARGET_ARCH=x86_64
2504cb 62 COMPONENT_BUILD_ARGS += CC="$(CC)"
E 63 COMPONENT_BUILD_ARGS += CXX="$(CXX)"
711b9d 64 COMPONENT_BUILD_ARGS += CFLAGS="$(CFLAGS)"
G 65 COMPONENT_BUILD_ARGS += CXXFLAGS="$(CXXFLAGS) -fpermissive"
66 COMPONENT_BUILD_ARGS += LINKFLAGS="$(LDFLAGS) -lkstat"
67 COMPONENT_BUILD_ARGS += AR=/usr/bin/gar
2504cb 68 COMPONENT_BUILD_ARGS += CCFLAGS="-I$(USRINCDIR)/pcre -DSOLARIS"
711b9d 69 COMPONENT_BUILD_ARGS += --js-engine=mozjs
G 70 COMPONENT_BUILD_ARGS += --use-system-pcre
71 COMPONENT_BUILD_ARGS += --use-system-zlib
72 COMPONENT_BUILD_ARGS += --server-js=on
73 COMPONENT_BUILD_ARGS += --ssl
74 COMPONENT_BUILD_ARGS += --release
75 COMPONENT_BUILD_ARGS += --disable-ggdb
76 COMPONENT_BUILD_ARGS += --disable-warnings-as-errors
77 COMPONENT_BUILD_ARGS += -j $(CORES)
78
79 COMPONENT_INSTALL_ARGS = $(COMPONENT_BUILD_ARGS)
80
81 COMPONENT_BUILD_TARGETS= install-core    
82
83 # just a dummy for scons
84 COMPONENT_INSTALL_TARGETS= --version
85
86 TEST_SUITES += core
87 TEST_SUITES += dbtest
88 TEST_SUITES += dur_jscore_passthrough
89 TEST_SUITES += jstestfuzz
90 TEST_SUITES += jstestfuzz_replication
91 TEST_SUITES += jstestfuzz_sharded
92 TEST_SUITES += replica_sets_jscore_passthrough
93 TEST_SUITES += unittests
94
95 # patches must be done before cloney
96 COMPONENT_PREP_ACTION += \
97     $(CP) -r $(COMPONENT_DIR)/files/mozjs-60/solaris  $(SOURCE_DIR)/src/third_party/mozjs-60/platform/x86_64/; \
98     cd $(SOURCE_DIR)/src/third_party/mozjs-60/extract; \
99     $(GPATCH) $(GPATCH_FLAGS) < $(COMPONENT_DIR)/files/0-gc-memory.patch; \
100     $(GPATCH) $(GPATCH_FLAGS) < $(COMPONENT_DIR)/files/0-old-configure.patch; \
101     $(GPATCH) $(GPATCH_FLAGS) < $(COMPONENT_DIR)/files/0-wasm-WasmSignalHandlers.patch; 
102
103 COMPONENT_PRE_BUILD_ACTION += \
104  ($(PYTHON) -m pip install -r $(@D)/etc/pip/compile-requirements.txt) 
105
106 COMPONENT_POST_INSTALL_ACTION += ( \
107     $(MKDIR) $(PROTO_DIR)$(MONGO_PREFIX)/man/man1; \
108     $(CP) $(BUILD_DIR_64)/debian/*.1  $(PROTO_DIR)$(MONGO_PREFIX)/man/man1/; \
109     $(CP) $(BUILD_DIR_64)/debian/mongo{,d,s,ldap,kerberos}.1  $(PROTO_DIR)$(MONGO_PREFIX)/man/man1/; )
110
111 $(BUILD_TOOLS):    $(BUILD_64)
112     ($(MKDIR) $(BUILD_DIR_TOOLS)/src/github.com/mongodb; \
113     cd $(BUILD_DIR_TOOLS)/src/github.com/mongodb; \
114     git clone https://github.com/mongodb/mongo-tools; \
115     cd mongo-tools; \
116     git checkout 100.3.1; \
117     $(GPATCH) $(GPATCH_FLAGS) < $(COMPONENT_DIR)/files/13-mongotools.patch; \
118     GOROOT=$(GOROOT) ./make build)
119     $(TOUCH) $(@)
120
121 $(INSTALL_TOOLS): $(BUILD_TOOLS) $(INSTALL_64)
122     $(MKDIR) $(PROTO_DIR)$(MONGO_PREFIX)/bin
123     $(CP) $(BUILD_DIR_TOOLS)/src/github.com/mongodb/mongo-tools/bin/* $(PROTO_DIR)$(MONGO_PREFIX)/bin
124     $(TOUCH) $(@)
125
126 # A bit of magic to replace spaces with commas
127 comma:= ,
128 empty:=
129 space:= $(empty) $(empty)
130
131 COMPONENT_TEST_CMD = $(PYTHON) buildscripts/resmoke.py \
132             --continueOnFailure \
133             --dbpathPrefix=/tmp/db \
134             --suites=$(subst $(space),$(comma),$(TEST_SUITES))
135
136 COMPONENT_TEST_TARGETS =
137
138 COMPONENT_TEST_TRANSFORMS +=    '-e "s/\[resmoke\][ -+0-9T:\.\-]*//"' \
139                                 '-e "s/\s\s*[0-9][0-9]*\.[0-9][0-9]* seconds/ SEC seconds/"' \
140                                 '-n ' \
141                                 '-e "/Summary of all suites/,\\$$p"'
142
143 # Not strictly necessary
144 $(TEST_64):     $(INSTALL_64) $(INSTALL_TOOLS)
145
146 build:        $(BUILD_64) $(BUILD_TOOLS)
147
148 install: $(INSTALL_TOOLS)
149
150 test:        $(TEST_64)
151
152 # Test requirements
153 REQUIRED_PACKAGES += library/python/urllib3-39
154
155 # Build dependencies
156 REQUIRED_PACKAGES += developer/gcc-10
157 REQUIRED_PACKAGES += developer/build/scons
158 REQUIRED_PACKAGES += developer/golang
159 REQUIRED_PACKAGES += library/python/psutil
160 REQUIRED_PACKAGES += library/python/typing
161
162 # Auto-generated dependencies via `gmake GMAKE=gmake REQUIRED_PACKAGES`
163 REQUIRED_PACKAGES += $(GCC_RUNTIME_PKG)
164 REQUIRED_PACKAGES += $(GXX_RUNTIME_PKG)
165 REQUIRED_PACKAGES += SUNWcs
166 REQUIRED_PACKAGES += library/security/openssl
167 REQUIRED_PACKAGES += library/pcre
168 REQUIRED_PACKAGES += library/zlib
169 REQUIRED_PACKAGES += system/library
170 REQUIRED_PACKAGES += system/library/boost
171 REQUIRED_PACKAGES += system/library/libpcap
172 REQUIRED_PACKAGES += system/library/math
173 REQUIRED_PACKAGES += web/curl