mongodb-3.2.12.ebuild 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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.2
  18. || ( =dev-cpp/yaml-cpp-0.5.1 >dev-cpp/yaml-cpp-0.5.2 )
  19. >=dev-libs/boost-1.57[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-4.8.2:*
  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 an existing MongoDB deployment to 3.2, you must be"
  44. ewarn "running a 3.0-series release. Please update to the latest 3.0"
  45. ewarn "release before continuing if wish to keep your data."
  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.2.0-fix-scons.patch" \
  87. "${FILESDIR}/${PN}-3.2.4-boost-1.60.patch"
  88. if has_version ">=dev-libs/boost-1.62"; then
  89. epatch "${FILESDIR}/${PN}-3.2.10-boost-1.62.patch"
  90. fi
  91. epatch_user
  92. }
  93. src_compile() {
  94. # respect mongoDB upstream's basic recommendations
  95. # see bug #536688 and #526114
  96. if ! use debug; then
  97. filter-flags '-m*'
  98. filter-flags '-O?'
  99. fi
  100. escons "${scons_opts[@]}" core tools
  101. }
  102. src_install() {
  103. escons "${scons_opts[@]}" --nostrip install --prefix="${ED}"/usr
  104. for x in /var/{lib,log}/${PN}; do
  105. keepdir "${x}"
  106. fowners mongodb:mongodb "${x}"
  107. done
  108. doman debian/mongo*.1
  109. dodoc README docs/building.md
  110. newinitd "${FILESDIR}/${PN}.initd-r2" ${PN}
  111. newconfd "${FILESDIR}/${PN}.confd-r2" ${PN}
  112. newinitd "${FILESDIR}/${PN/db/s}.initd-r2" ${PN/db/s}
  113. newconfd "${FILESDIR}/${PN/db/s}.confd-r2" ${PN/db/s}
  114. insinto /etc
  115. newins "${FILESDIR}/${PN}.conf-r3" ${PN}.conf
  116. newins "${FILESDIR}/${PN/db/s}.conf-r2" ${PN/db/s}.conf
  117. systemd_dounit "${FILESDIR}/${PN}.service"
  118. insinto /etc/logrotate.d/
  119. newins "${FILESDIR}/${PN}.logrotate" ${PN}
  120. # see bug #526114
  121. pax-mark emr "${ED}"/usr/bin/{mongo,mongod,mongos}
  122. }
  123. pkg_preinst() {
  124. # wrt bug #461466
  125. if [[ "$(get_libdir)" == "lib64" ]]; then
  126. rmdir "${ED}"/usr/lib/ &>/dev/null
  127. fi
  128. }
  129. src_test() {
  130. # this one test fails
  131. rm jstests/core/repl_write_threads_start_param.js
  132. ./buildscripts/resmoke.py --dbpathPrefix=test --suites core || die "Tests failed"
  133. }
  134. pkg_postinst() {
  135. local v
  136. for v in ${REPLACING_VERSIONS}; do
  137. if ! version_is_at_least 3.0 ${v}; then
  138. ewarn "!! IMPORTANT !!"
  139. ewarn " "
  140. ewarn "${PN} configuration files have changed !"
  141. ewarn " "
  142. ewarn "Make sure you migrate from /etc/conf.d/${PN} to the new YAML standard in /etc/${PN}.conf"
  143. ewarn " http://docs.mongodb.org/manual/reference/configuration-options/"
  144. ewarn " "
  145. ewarn "Make sure you also follow the upgrading process :"
  146. ewarn " http://docs.mongodb.org/master/release-notes/3.0-upgrade/"
  147. ewarn " "
  148. ewarn "MongoDB 3.0 introduces the WiredTiger storage engine."
  149. ewarn "WiredTiger is incompatible with MMAPv1 and you need to dump/reload your data if you want to use it."
  150. ewarn "Once you have your data dumped, you need to set storage.engine: wiredTiger in /etc/${PN}.conf"
  151. ewarn " http://docs.mongodb.org/master/release-notes/3.0-upgrade/#change-storage-engine-to-wiredtiger"
  152. break
  153. fi
  154. done
  155. ewarn "Make sure to read the release notes and follow the upgrade process:"
  156. ewarn " https://docs.mongodb.org/manual/release-notes/3.2/"
  157. ewarn " https://docs.mongodb.org/master/release-notes/3.2-upgrade/"
  158. ewarn
  159. ewarn " Starting in 3.2, MongoDB uses the WiredTiger as the default storage engine."
  160. }