diff --git a/databases/Makefile b/databases/Makefile index 06bef4e..747a164 100644 --- a/databases/Makefile +++ b/databases/Makefile @@ -201,6 +201,7 @@ SUBDIR += mongodb SUBDIR += mongodb32 SUBDIR += mongodb32-tools + SUBDIR += mongodb34 SUBDIR += mrtg-mysql-load SUBDIR += mtools-mongodb SUBDIR += mtop diff --git a/databases/mongodb34/Makefile b/databases/mongodb34/Makefile new file mode 100644 index 0000000..e0401f1 --- /dev/null +++ b/databases/mongodb34/Makefile @@ -0,0 +1,88 @@ +# $FreeBSD$ + +PORTNAME= mongodb +PORTVERSION= ${DISTVERSION:S/-//g} +DISTVERSIONPREFIX= r +CATEGORIES= databases net +MASTER_SITES= https://fastdl.mongodb.org/src/ \ + http://fastdl.mongodb.org/src/ \ + http://download.mongodb.org/src/ +PKGNAMESUFFIX= ${PORTVERSION:R:S/.//} +DISTVERSION= 3.4.0-rc0 +DISTNAME= mongodb-src-${DISTVERSIONPREFIX}${DISTVERSION} + +MAINTAINER= brendan+freebsd@bbqsrc.net +COMMENT= Distributed document-oriented "NoSQL" database + +# mongodb is AGPLv3, C++ driver is APACHE20 +LICENSE= AGPLv3 APACHE20 +LICENSE_COMB= multi + +LIB_DEPENDS= libpcre.so:devel/pcre \ + libsnappy.so:archivers/snappy +TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}yaml>=3.11:devel/py-yaml \ + ${PYTHON_PKGNAMEPREFIX}pymongo>=3.0:databases/pymongo + +CHOSEN_COMPILER_TYPE= clang + +ONLY_FOR_ARCHS= amd64 +ONLY_FOR_ARCHS_REASON= "Only supported on amd64 (i386 deprecated in v3)" + +CONFLICTS_BUILD= mongo-cxx-driver +OPTIONS_DEFINE= SASL SSL +OPTIONS_DEFAULT= SASL SSL + +SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2 +SASL_MAKE_ARGS= --use-sasl-client + +SSL_USE= yes +SSL_MAKE_ARGS= --ssl + +USE_BINUTILS= yes +USES= compiler cpe execinfo python:build scons + +MAKE_ARGS= --prefix=${STAGEDIR}${PREFIX} \ + --use-system-pcre --use-system-snappy \ + --release + +USERS= mongodb +GROUPS= mongodb + +USE_RC_SUBR= mongod + +ALL_TARGET= core +TEST_TARGET= unittests + +.include + +.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1002000 +# Cannot be built +IGNORE= unsupported on FreeBSD 10.1 or older +.endif +# Bugs when compiled with < Clang 3.7 +# - https://jira.mongodb.org/browse/SERVER-21217 +# - https://jira.mongodb.org/browse/SERVER-22740 +.if ${COMPILER_TYPE} == clang && ${COMPILER_VERSION} < 37 +BUILD_DEPENDS+= ${LOCALBASE}/bin/clang37:lang/clang37 +CPP= ${LOCALBASE}/bin/clang-cpp37 +CC= ${LOCALBASE}/bin/clang37 +CXX= ${LOCALBASE}/bin/clang++37 +.endif + +post-install: +.for f in mongo mongod mongoperf mongos + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${f} +.endfor + ${CP} ${WRKSRC}/rpm/mongod.conf ${STAGEDIR}${PREFIX}/etc/mongodb.conf.sample + +do-test: + @cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} \ + ${MAKE_CMD} ${_MAKE_JOBS} ${MAKE_ARGS} ${TEST_TARGET} &&\ + ${PYTHON_CMD} ${BUILD_WRKSRC}/buildscripts/resmoke.py\ + --suites=unittests --jobs=${MAKE_JOBS_NUMBER} + +PORTSCOUT= limitw:1,even + +CPE_PRODUCT= mongodb + +.include diff --git a/databases/mongodb34/distinfo b/databases/mongodb34/distinfo new file mode 100644 index 0000000..cd32494 --- /dev/null +++ b/databases/mongodb34/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1475628116 +SHA256 (mongodb-src-r3.4.0-rc0.tar.gz) = 7677a223007d6fb0ff6e40142cee725498b48dbc3d1b14135ab9061703fbdd7e +SIZE (mongodb-src-r3.4.0-rc0.tar.gz) = 39898224 diff --git a/databases/mongodb34/files/mongod.in b/databases/mongodb34/files/mongod.in new file mode 100644 index 0000000..ace3936 --- /dev/null +++ b/databases/mongodb34/files/mongod.in @@ -0,0 +1,62 @@ +#!/bin/sh + +# PROVIDE: mongod +# REQUIRE: NETWORK ldconfig +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: +# +# mongod_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable mongod. +# mongod_limits (bool): Set to "NO" by default. +# Set it to yes to run `limits -e -U mongodb` +# just before mongod starts. +# mongod_dbpath (str): Default to "/var/db/mongodb" +# Base database directory. +# mongod_flags (str): Custom additional arguments to be passed to mongod. +# Default to "--logpath ${mongod_dbpath}/mongod.log --logappend". +# mongod_config (str): Default to "%%PREFIX%%/etc/mongodb.conf" +# Path to config file +# + +. /etc/rc.subr + +name="mongod" +rcvar=mongod_enable + +load_rc_config $name + +: ${mongod_enable="NO"} +: ${mongod_limits="NO"} +: ${mongod_dbpath="/var/db/mongodb"} +: ${mongod_flags="--logpath ${mongod_dbpath}/mongod.log --logappend"} +: ${mongod_user="mongodb"} +: ${mongod_group="mongodb"} +: ${mongod_config="%%PREFIX%%/etc/mongodb.conf"} + +pidfile="${mongod_dbpath}/mongod.lock" +command=%%PREFIX%%/bin/${name} +command_args="--config $mongod_config --dbpath $mongod_dbpath --fork >/dev/null 2>/dev/null" +start_precmd="${name}_prestart" + +mongod_create_dbpath() +{ + mkdir ${mongod_dbpath} >/dev/null 2>/dev/null + [ $? -eq 0 ] && chown -R ${mongod_user}:${mongod_group} ${mongod_dbpath} +} + + +mongod_prestart() +{ + if [ ! -d ${mongod_dbpath} ]; then + mongod_create_dbpath || return 1 + fi + if checkyesno mongod_limits; then + eval `/usr/bin/limits -e -U ${mongod_user}` 2>/dev/null + else + return 0 + fi +} + +run_rc_command "$1" diff --git a/databases/mongodb34/files/patch-SConstruct b/databases/mongodb34/files/patch-SConstruct new file mode 100644 index 0000000..4d9c973 --- /dev/null +++ b/databases/mongodb34/files/patch-SConstruct @@ -0,0 +1,24 @@ +--- SConstruct.orig 2016-10-03 11:32:42.000000000 -0700 ++++ SConstruct 2016-10-04 18:41:21.832711000 -0700 +@@ -916,9 +916,9 @@ if has_option('variables-help'): + print env_vars.GenerateHelpText(env) + Exit(0) + +-unknown_vars = env_vars.UnknownVariables() +-if unknown_vars: +- env.FatalError("Unknown variables specified: {0}", ", ".join(unknown_vars.keys())) ++#unknown_vars = env_vars.UnknownVariables() ++#if unknown_vars: ++# env.FatalError("Unknown variables specified: {0}", ", ".join(unknown_vars.keys())) + + def set_config_header_define(env, varname, varval = 1): + env['CONFIG_HEADER_DEFINES'][varname] = varval +@@ -1574,7 +1574,7 @@ if env.TargetOSIs('posix'): + + # Promote linker warnings into errors. We can't yet do this on OS X because its linker considers + # noall_load obsolete and warns about it. +- if not env.TargetOSIs('osx'): ++ if not env.TargetOSIs('osx', 'freebsd'): + env.Append( + LINKFLAGS=[ + "-Wl,--fatal-warnings", diff --git a/databases/mongodb34/files/patch-rpm_mongod.conf b/databases/mongodb34/files/patch-rpm_mongod.conf new file mode 100644 index 0000000..745d33a --- /dev/null +++ b/databases/mongodb34/files/patch-rpm_mongod.conf @@ -0,0 +1,31 @@ +--- rpm/mongod.conf.orig 2016-10-03 11:32:42.000000000 -0700 ++++ rpm/mongod.conf 2016-10-04 17:46:16.568923000 -0700 +@@ -1,4 +1,4 @@ +-# mongod.conf ++# mongodb.conf + + # for documentation of all options, see: + # http://docs.mongodb.org/manual/reference/configuration-options/ +@@ -7,11 +7,11 @@ + systemLog: + destination: file + logAppend: true +- path: /var/log/mongodb/mongod.log ++ path: /var/log/mongodb/log + + # Where and how to store data. + storage: +- dbPath: /var/lib/mongo ++ dbPath: /var/db/mongo + journal: + enabled: true + # engine: +@@ -21,7 +21,7 @@ storage: + # how the process runs + processManagement: + fork: true # fork and run in background +- pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile ++ pidFilePath: /var/run/mongodb/pid # location of pidfile + + # network interfaces + net: diff --git a/databases/mongodb34/pkg-descr b/databases/mongodb34/pkg-descr new file mode 100644 index 0000000..24f53e80 --- /dev/null +++ b/databases/mongodb34/pkg-descr @@ -0,0 +1,5 @@ +Mongo (from "humongous") is a high-performance, open source, +schema-free, document-oriented database. A common name in the +"NOSQL" community. + +WWW: http://www.mongodb.org/ diff --git a/databases/mongodb34/pkg-plist b/databases/mongodb34/pkg-plist new file mode 100644 index 0000000..4601a6c --- /dev/null +++ b/databases/mongodb34/pkg-plist @@ -0,0 +1,5 @@ +@sample etc/mongodb.conf.sample +bin/mongo +bin/mongod +bin/mongoperf +bin/mongos