mongodb-3.4.1.ebuild 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. # Copyright 1999-2017 Gentoo Foundation
  2. # Distributed under the terms of the GNU General Public License v2
  3. EAPI=5
  4. SCONS_MIN_VERSION="2.3.0"
  5. CHECKREQS_DISK_BUILD="2400M"
  6. CHECKREQS_DISK_USR="512M"
  7. CHECKREQS_MEMORY="1024M"
  8. inherit eutils flag-o-matic multilib pax-utils scons-utils systemd toolchain-funcs user versionator check-reqs
  9. MY_P=${PN}-src-r${PV/_rc/-rc}
  10. DESCRIPTION="A high-performance, open source, schema-free document-oriented database"
  11. HOMEPAGE="http://www.mongodb.org"
  12. SRC_URI="https://fastdl.mongodb.org/src/${MY_P}.tar.gz"
  13. LICENSE="AGPL-3 Apache-2.0"
  14. SLOT="0"
  15. KEYWORDS="~amd64 ~x86"
  16. IUSE="debug kerberos libressl mms-agent ssl test +tools"
  17. RDEPEND=">=app-arch/snappy-1.1.3
  18. >=dev-cpp/yaml-cpp-0.5.3
  19. >=dev-libs/boost-1.60[threads(+)]
  20. >=dev-libs/libpcre-8.39[cxx]
  21. dev-libs/snowball-stemmer
  22. net-libs/libpcap
  23. >=sys-libs/zlib-1.2.8
  24. mms-agent? ( app-admin/mms-agent )
  25. ssl? (
  26. !libressl? ( >=dev-libs/openssl-1.0.1g:0= )
  27. libressl? ( dev-libs/libressl:0= )
  28. )"
  29. DEPEND="${RDEPEND}
  30. >=sys-devel/gcc-5.3.0:*
  31. sys-libs/ncurses
  32. sys-libs/readline
  33. debug? ( dev-util/valgrind )
  34. kerberos? ( dev-libs/cyrus-sasl[kerberos] )
  35. test? (
  36. dev-python/pymongo
  37. dev-python/pyyaml
  38. )"
  39. PDEPEND="tools? ( >=app-admin/mongo-tools-${PV} )"
  40. S=${WORKDIR}/${MY_P}
  41. pkg_pretend() {
  42. if [[ ${REPLACING_VERSIONS} < 3.0 ]]; then
  43. ewarn "To upgrade from a version earlier than the 3.0-series, you must"
  44. ewarn "successively upgrade major releases until you have upgraded"
  45. ewarn "to 3.2-series. Then upgrade to 3.4 series."
  46. fi
  47. }
  48. pkg_setup() {
  49. enewgroup mongodb
  50. enewuser mongodb -1 -1 /var/lib/${PN} mongodb
  51. # Maintainer notes
  52. #
  53. # --use-system-tcmalloc is strongly NOT recommended:
  54. # https://www.mongodb.org/about/contributors/tutorial/build-mongodb-from-source/
  55. scons_opts=(
  56. CC="$(tc-getCC)"
  57. CXX="$(tc-getCXX)"
  58. --disable-warnings-as-errors
  59. --use-system-boost
  60. --use-system-pcre
  61. --use-system-snappy
  62. --use-system-stemmer
  63. --use-system-yaml
  64. --use-system-zlib
  65. )
  66. # wiredtiger not supported on 32bit platforms #572166
  67. use x86 && scons_opts+=( --wiredtiger=off )
  68. if use debug; then
  69. scons_opts+=( --dbg=on )
  70. fi
  71. if use prefix; then
  72. scons_opts+=(
  73. --cpppath="${EPREFIX}/usr/include"
  74. --libpath="${EPREFIX}/usr/$(get_libdir)"
  75. )
  76. fi
  77. if use kerberos; then
  78. scons_opts+=( --use-sasl-client )
  79. fi
  80. if use ssl; then
  81. scons_opts+=( --ssl )
  82. fi
  83. }
  84. src_prepare() {
  85. epatch \
  86. "${FILESDIR}/${PN}-3.4.0-fix-scons.patch"
  87. if has_version ">=dev-libs/boost-1.62"; then
  88. epatch "${FILESDIR}/${PN}-3.2.10-boost-1.62.patch"
  89. fi
  90. epatch_user
  91. }
  92. src_compile() {
  93. # respect mongoDB upstream's basic recommendations
  94. # see bug #536688 and #526114
  95. if ! use debug; then
  96. filter-flags '-m*'
  97. filter-flags '-O?'
  98. fi
  99. escons "${scons_opts[@]}" core tools
  100. }
  101. src_install() {
  102. escons "${scons_opts[@]}" --nostrip install --prefix="${ED}"/usr
  103. for x in /var/{lib,log}/${PN}; do
  104. keepdir "${x}"
  105. fowners mongodb:mongodb "${x}"
  106. done
  107. doman debian/mongo*.1
  108. dodoc README docs/building.md
  109. newinitd "${FILESDIR}/${PN}.initd-r2" ${PN}
  110. newconfd "${FILESDIR}/${PN}.confd-r2" ${PN}
  111. newinitd "${FILESDIR}/${PN/db/s}.initd-r2" ${PN/db/s}
  112. newconfd "${FILESDIR}/${PN/db/s}.confd-r2" ${PN/db/s}
  113. insinto /etc
  114. newins "${FILESDIR}/${PN}.conf-r3" ${PN}.conf
  115. newins "${FILESDIR}/${PN/db/s}.conf-r2" ${PN/db/s}.conf
  116. systemd_dounit "${FILESDIR}/${PN}.service"
  117. insinto /etc/logrotate.d/
  118. newins "${FILESDIR}/${PN}.logrotate" ${PN}
  119. # see bug #526114
  120. pax-mark emr "${ED}"/usr/bin/{mongo,mongod,mongos}
  121. }
  122. pkg_preinst() {
  123. # wrt bug #461466
  124. if [[ "$(get_libdir)" == "lib64" ]]; then
  125. rmdir "${ED}"/usr/lib/ &>/dev/null
  126. fi
  127. }
  128. src_test() {
  129. # this one test fails
  130. rm jstests/core/repl_write_threads_start_param.js
  131. ./buildscripts/resmoke.py --dbpathPrefix=test --suites core || die "Tests failed"
  132. }
  133. pkg_postinst() {
  134. local v
  135. for v in ${REPLACING_VERSIONS}; do
  136. if ! version_is_at_least 3.0 ${v}; then
  137. ewarn "!! IMPORTANT !!"
  138. ewarn " "
  139. ewarn "${PN} configuration files have changed !"
  140. ewarn " "
  141. ewarn "Make sure you migrate from /etc/conf.d/${PN} to the new YAML standard in /etc/${PN}.conf"
  142. ewarn " http://docs.mongodb.org/manual/reference/configuration-options/"
  143. ewarn " "
  144. ewarn "Make sure you also follow the upgrading process :"
  145. ewarn " http://docs.mongodb.org/master/release-notes/3.0-upgrade/"
  146. ewarn " "
  147. ewarn "MongoDB 3.0 introduces the WiredTiger storage engine."
  148. ewarn "WiredTiger is incompatible with MMAPv1 and you need to dump/reload your data if you want to use it."
  149. ewarn "Once you have your data dumped, you need to set storage.engine: wiredTiger in /etc/${PN}.conf"
  150. ewarn " http://docs.mongodb.org/master/release-notes/3.0-upgrade/#change-storage-engine-to-wiredtiger"
  151. break
  152. fi
  153. done
  154. ewarn "Make sure to read the release notes and follow the upgrade process:"
  155. ewarn " https://docs.mongodb.org/manual/release-notes/3.4/"
  156. ewarn " https://docs.mongodb.com/manual/release-notes/3.4/#upgrade-procedures"
  157. }