gnu: Remove MongoDB.

mongodb 3.4.10 has unpatched CVEs and mongodb 3.4.24 has some files in the
release tarball under the SSPL, therefore we cannot provide mongodb while
upholding to good security standards.

It turns out feff80cec3 was right since while
the main license file wasnt altered to SSPL, some files in the tree contain
SSPL headers.

* gnu/packages/databases.scm (go-gopkg.in-mgo.v2): Remove.
* gnu/packages/databases.scm (mongo-tools): Remove.
* doc/guix.texi (mongodb-service-type): Remove.
* gnu/tests/databases.scm (%test-mongodb, %mongodb-os, run-mongodb-test):
Remove.
* gnu/services/databases.scm (mongodb-configuration, mongodb-configuration?,
mongodb-configuration-mongodb, mongodb-configuration-config-file,
mongodb-configuration-data-directory, mongodb-service-type,
%default-mongodb-configuration-file, %mongodb-accounts, mongodb-activation,
mongodb-shepherd-service): Remove.
* gnu/packages/databases.scm (mongodb): Remove.
This commit is contained in:
Léo Le Bouter 2021-03-12 01:59:10 +01:00
parent 0ee5d4f7a8
commit 097cf21d1d
No known key found for this signature in database
GPG key ID: 45A8B1E86BCD10A6
4 changed files with 0 additions and 497 deletions

View file

@ -193,52 +193,6 @@
either single machines or networked clusters.")
(license license:gpl3+)))
(define-public go-gopkg.in-mgo.v2
(package
(name "go-gopkg.in-mgo.v2")
(version "2016.08.01")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/go-mgo/mgo")
(commit (string-append "r" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0rwbi1z63w43b0z9srm8m7iz1fdwx7bq7n2mz862d6liiaqa59jd"))))
(build-system go-build-system)
(arguments
`(#:import-path "gopkg.in/mgo.v2"
;; TODO: The tests fail as MongoDB fails to start
;; Error parsing command line: unrecognised option '--chunkSize'
#:tests? #f
#:phases
(modify-phases %standard-phases
(delete 'reset-gzip-timestamps)
(add-before 'check 'start-mongodb
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(with-directory-excursion "src/gopkg.in/mgo.v2"
(invoke "make" "startdb")))
#t))
(add-after 'check 'stop'mongodb
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(with-directory-excursion "src/gopkg.in/mgo.v2"
(invoke "make" "stopdb")))
#t)))))
(native-inputs
`(("go-gopkg.in-check.v1" ,go-gopkg.in-check.v1)
("mongodb" ,mongodb)
("daemontools" ,daemontools)))
(synopsis "@code{mgo} offers a rich MongoDB driver for Go.")
(description
"@code{mgo} (pronounced as mango) is a MongoDB driver for the Go language.
It implements a rich selection of features under a simple API following
standard Go idioms.")
(home-page "https://labix.org/mgo")
(license license:bsd-2)))
(define-public ephemeralpg
(package
(name "ephemeralpg")
@ -661,143 +615,6 @@ replacement for the code@{python-memcached} library.")
(define-public python2-pylibmc
(package-with-python2 python-pylibmc))
;; There is a point at which mongodb switched to the Server Side Public
;; License (SSPL), which is not a FOSS license. As such, be careful
;; when updating this package.
(define-public mongodb
(package
(name "mongodb")
(version "3.4.24")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/mongodb/mongo/archive/r"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "0y1669sqj8wyf0y0njhxs4qhn1qzjhrs2h2qllya5samxrlrjhkg"))
(modules '((guix build utils)))
(snippet
'(begin
(for-each (lambda (dir)
(delete-file-recursively
(string-append "src/third_party/" dir)))
'("pcre-8.42" "scons-2.5.0" "snappy-1.1.3"
"valgrind-3.11.0" "wiredtiger"
"yaml-cpp-0.6.2" "zlib-1.2.11"))
#t))))
(build-system scons-build-system)
(inputs
`(("openssl" ,openssl-1.0)
("pcre" ,pcre)
,@(match (%current-system)
((or "x86_64-linux" "aarch64-linux" "mips64el-linux")
`(("wiredtiger" ,wiredtiger)))
(_ `()))
("yaml-cpp" ,yaml-cpp)
("zlib" ,zlib)
("snappy" ,snappy)))
(native-inputs
`(("valgrind" ,valgrind)
("perl" ,perl)
("python" ,python-2)
("python2-pymongo" ,python2-pymongo)
("python2-pyyaml" ,python2-pyyaml)
("tzdata" ,tzdata-for-tests)))
(arguments
`(#:scons ,scons-python2
#:phases
(let ((common-options
`(;; "--use-system-tcmalloc" TODO: Missing gperftools
"--use-system-pcre"
;; wiredtiger is 64-bit only
,,(if (any (cute string-prefix? <> (or (%current-target-system)
(%current-system)))
'("i686-linux" "armhf-linux"))
``"--wiredtiger=off"
``"--use-system-wiredtiger")
;; TODO
;; build/opt/mongo/db/fts/unicode/string.o failed: Error 1
;; --use-system-boost
"--use-system-snappy"
"--use-system-zlib"
"--use-system-valgrind"
;; "--use-system-stemmer" TODO: Missing relevant package
"--use-system-yaml"
"--disable-warnings-as-errors"
,(format #f "--jobs=~a" (parallel-job-count))
"--ssl")))
(modify-phases %standard-phases
(add-after 'unpack 'patch
(lambda _
;; Remove use of GNU extensions in parse_number_test.cpp, to
;; allow compiling with GCC 7 or later
;; https://jira.mongodb.org/browse/SERVER-28063
(substitute* "src/mongo/base/parse_number_test.cpp"
(("0xabcab\\.defdefP-10")
"687.16784283419838"))
#t))
(add-after 'unpack 'scons-propagate-environment
(lambda _
;; Modify the SConstruct file to arrange for
;; environment variables to be propagated.
(substitute* "SConstruct"
(("^env = Environment\\(")
"env = Environment(ENV=os.environ, "))
#t))
(add-after 'unpack 'create-version-file
(lambda _
(call-with-output-file "version.json"
(lambda (port)
(display ,(simple-format #f "{
\"version\": \"~A\"
}" version) port)))
#t))
(replace 'build
(lambda _
(apply invoke `("scons"
,@common-options
"mongod" "mongo" "mongos"))))
(replace 'check
(lambda* (#:key tests? inputs #:allow-other-keys)
(setenv "TZDIR"
(string-append (assoc-ref inputs "tzdata")
"/share/zoneinfo"))
(when tests?
;; Note that with the tests, especially the unittests, the
;; build can take up to ~45GB of space, as many tests are
;; individual executable files, with some being hundreds of
;; megabytes in size.
(apply invoke `("scons" ,@common-options "dbtest" "unittests"))
(substitute* "build/unittests.txt"
;; TODO: Don't run the async_stream_test, as it hangs
(("^build\\/opt\\/mongo\\/executor\\/async\\_stream\\_test\n$")
"")
;; TODO: This test fails
;; Expected 0UL != disks.size() (0 != 0) @src/mongo/util/procparser_test.cpp:476
(("^build\\/opt\\/mongo\\/util\\/procparser\\_test\n$")
""))
(invoke "python" "buildscripts/resmoke.py"
"--suites=dbtest,unittests"
(format #f "--jobs=~a" (parallel-job-count))))
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin")))
(install-file "mongod" bin)
(install-file "mongos" bin)
(install-file "mongo" bin))
#t))))))
(home-page "https://www.mongodb.org/")
(synopsis "High performance and high availability document database")
(description
"Mongo is a high-performance, high availability, schema-free
document-oriented database. A key goal of MongoDB is to bridge the gap
between key/value stores (which are fast and highly scalable) and traditional
RDBMS systems (which are deep in functionality).")
(license (list license:agpl3
;; Some parts are licensed under the Apache License
license:asl2.0))))
(define-public mycli
(package
(name "mycli")
@ -3686,121 +3503,6 @@ transforms idiomatic python function calls to well-formed SQL queries.")
the SQL language using a syntax that reflects the resulting query.")
(license license:asl2.0)))
(define-public mongo-tools
(package
(name "mongo-tools")
(version "3.4.0")
(source
(origin (method git-fetch)
(uri (git-reference
(url "https://github.com/mongodb/mongo-tools")
(commit (string-append "r" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1bcsz5cvj39a7nsxsfqmz9igrw33j6yli9kffigqyscs52amw7x1"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/mongodb/mongo-tools"
#:modules ((srfi srfi-1)
(guix build go-build-system)
(guix build utils))
#:install-source? #f
#:phases
(let ((all-tools
'("bsondump" "mongodump" "mongoexport" "mongofiles"
"mongoimport" "mongooplog" "mongorestore"
"mongostat" "mongotop")))
(modify-phases %standard-phases
(add-after 'unpack 'delete-bundled-source-code
(lambda _
(delete-file-recursively
"src/github.com/mongodb/mongo-tools/vendor")
#t))
(add-after 'delete-bundled-source-code 'patch-source
(lambda _
;; Remove a redundant argument that causes compilation to fail.
(substitute*
"src/github.com/mongodb/mongo-tools/mongorestore/filepath.go"
(("skipping restore of system.profile collection\", db)")
"skipping restore of system.profile collection\")"))
#t))
(replace 'build
(lambda _
(for-each (lambda (tool)
(let ((command
`("go" "build"
;; This is where the tests expect to find the
;; executables
"-o" ,(string-append
"src/github.com/mongodb/mongo-tools/bin/"
tool)
"-v"
"-tags=\"ssl sasl\""
"-ldflags"
"-extldflags=-Wl,-z,now,-z,relro"
,(string-append
"src/github.com/mongodb/mongo-tools/"
tool "/main/" tool ".go"))))
(simple-format #t "build: running ~A\n"
(string-join command))
(apply invoke command)))
all-tools)
#t))
(replace 'check
(lambda _
(with-directory-excursion "src"
(for-each (lambda (tool)
(invoke
"go" "test" "-v"
(string-append "github.com/mongodb/mongo-tools/"
tool)))
all-tools))
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(for-each (lambda (tool)
(install-file
(string-append "src/github.com/mongodb/mongo-tools/bin/"
tool)
(string-append (assoc-ref outputs "out")
"/bin")))
all-tools)
#t))))))
(native-inputs
`(("go-github.com-howeyc-gopass" ,go-github.com-howeyc-gopass)
("go-github.com-jessevdk-go-flags" ,go-github.com-jessevdk-go-flags)
("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
("go-gopkg.in-mgo.v2" ,go-gopkg.in-mgo.v2)
("go-gopkg.in-tomb.v2" ,go-gopkg.in-tomb.v2)
("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)
("go-github.com-smartystreets-goconvey" ,go-github.com-smartystreets-goconvey)))
(home-page "https://github.com/mongodb/mongo-tools")
(synopsis "Various tools for interacting with MongoDB and BSON")
(description
"This package includes a collection of tools related to MongoDB.
@table @code
@item bsondump
Display BSON files in a human-readable format
@item mongoimport
Convert data from JSON, TSV or CSV and insert them into a collection
@item mongoexport
Write an existing collection to CSV or JSON format
@item mongodump/mongorestore
Dump MongoDB backups to disk in the BSON format
@item mongorestore
Read MongoDB backups in the BSON format, and restore them to a live database
@item mongostat
Monitor live MongoDB servers, replica sets, or sharded clusters
@item mongofiles
Read, write, delete, or update files in GridFS
@item mongooplog
Replay oplog entries between MongoDB servers
@item mongotop
Monitor read/write activity on a mongo server
@end table")
(license license:asl2.0)))
;; There are many wrappers for this in other languages. When touching, please
;; be sure to ensure all dependencies continue to build.
(define-public apache-arrow