guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: gnu: Remove MongoDB.


From: guix-commits
Subject: branch master updated: gnu: Remove MongoDB.
Date: Tue, 16 Mar 2021 06:09:55 -0400

This is an automated email from the git hooks/post-receive script.

lle_bout pushed a commit to branch master
in repository guix.

The following commit(s) were added to refs/heads/master by this push:
     new 097cf21  gnu: Remove MongoDB.
097cf21 is described below

commit 097cf21d1d34f4f66a403c3fb6e15b6709c4dd8a
Author: Léo Le Bouter <lle-bout@zaclys.net>
AuthorDate: Fri Mar 12 01:59:10 2021 +0100

    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 feff80cec3c97a3df2c20d300be12d67f79d4f22 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.
---
 doc/guix.texi              |  28 -----
 gnu/packages/databases.scm | 298 ---------------------------------------------
 gnu/services/databases.scm |  88 -------------
 gnu/tests/databases.scm    |  83 -------------
 4 files changed, 497 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index e6ef7db..410670e 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -19810,34 +19810,6 @@ Additional command line options to pass to 
@code{memcached}.
 @end table
 @end deftp
 
-@subsubheading MongoDB
-
-@defvr {Scheme Variable} mongodb-service-type
-This is the service type for @uref{https://www.mongodb.com/, MongoDB}.
-The value for the service type is a @code{mongodb-configuration} object.
-@end defvr
-
-@lisp
-(service mongodb-service-type)
-@end lisp
-
-@deftp {Data Type} mongodb-configuration
-Data type representing the configuration of mongodb.
-
-@table @asis
-@item @code{mongodb} (default: @code{mongodb})
-The MongoDB package to use.
-
-@item @code{config-file} (default: @code{%default-mongodb-configuration-file})
-The configuration file for MongoDB.
-
-@item @code{data-directory} (default: @code{"/var/lib/mongodb"})
-This value is used to create the directory, so that it exists and is
-owned by the mongodb user.  It should match the data-directory which
-MongoDB is configured to use through the configuration file.
-@end table
-@end deftp
-
 @subsubheading Redis
 
 @defvr {Scheme Variable} redis-service-type
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 8705cd2..5249aa0 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -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
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index 979f3dd..a841e7a 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -79,13 +79,6 @@
             memcached-configuration-udp-port
             memcached-configuration-additional-options
 
-            mongodb-configuration
-            mongodb-configuration?
-            mongodb-configuration-mongodb
-            mongodb-configuration-config-file
-            mongodb-configuration-data-directory
-            mongodb-service-type
-
             mysql-service
             mysql-service-type
             mysql-configuration
@@ -523,87 +516,6 @@ created after the PostgreSQL database is started.")))
 
 
 ;;;
-;;; MongoDB
-;;;
-
-(define %default-mongodb-configuration-file
-  (plain-file
-   "mongodb.yaml"
-   "# GNU Guix: MongoDB default configuration file
-processManagement:
-  pidFilePath: /var/run/mongodb/pid
-storage:
-  dbPath: /var/lib/mongodb
-"))
-
-
-(define-record-type* <mongodb-configuration>
-  mongodb-configuration make-mongodb-configuration
-  mongodb-configuration?
-  (mongodb             mongodb-configuration-mongodb
-                       (default mongodb))
-  (config-file         mongodb-configuration-config-file
-                       (default %default-mongodb-configuration-file))
-  (data-directory      mongodb-configuration-data-directory
-                       (default "/var/lib/mongodb")))
-
-(define %mongodb-accounts
-  (list (user-group (name "mongodb") (system? #t))
-        (user-account
-         (name "mongodb")
-         (group "mongodb")
-         (system? #t)
-         (comment "Mongodb server user")
-         (home-directory "/var/lib/mongodb")
-         (shell (file-append shadow "/sbin/nologin")))))
-
-(define mongodb-activation
-  (match-lambda
-    (($ <mongodb-configuration> mongodb config-file data-directory)
-     #~(begin
-         (use-modules (guix build utils))
-         (let ((user (getpwnam "mongodb")))
-           (for-each
-            (lambda (directory)
-              (mkdir-p directory)
-              (chown directory
-                     (passwd:uid user) (passwd:gid user)))
-            '("/var/run/mongodb" #$data-directory)))))))
-
-(define mongodb-shepherd-service
-  (match-lambda
-    (($ <mongodb-configuration> mongodb config-file data-directory)
-     (shepherd-service
-      (provision '(mongodb))
-      (documentation "Run the Mongodb daemon.")
-      (requirement '(user-processes loopback))
-      (start #~(make-forkexec-constructor
-                `(,(string-append #$mongodb "/bin/mongod")
-                  "--config"
-                  ,#$config-file)
-                #:user "mongodb"
-                #:group "mongodb"
-                #:pid-file "/var/run/mongodb/pid"
-                #:log-file "/var/log/mongodb.log"))
-      (stop #~(make-kill-destructor))))))
-
-(define mongodb-service-type
-  (service-type
-   (name 'mongodb)
-   (description "Run the MongoDB document database server.")
-   (extensions
-    (list (service-extension shepherd-root-service-type
-                             (compose list
-                                      mongodb-shepherd-service))
-          (service-extension activation-service-type
-                             mongodb-activation)
-          (service-extension account-service-type
-                             (const %mongodb-accounts))))
-   (default-value
-     (mongodb-configuration))))
-
-
-;;;
 ;;; MySQL.
 ;;;
 
diff --git a/gnu/tests/databases.scm b/gnu/tests/databases.scm
index e831d69..4bfe4ee 100644
--- a/gnu/tests/databases.scm
+++ b/gnu/tests/databases.scm
@@ -30,7 +30,6 @@
   #:use-module (guix gexp)
   #:use-module (guix store)
   #:export (%test-memcached
-            %test-mongodb
             %test-postgresql
             %test-mysql))
 
@@ -127,88 +126,6 @@
    (description "Connect to a running MEMCACHED server.")
    (value (run-memcached-test))))
 
-(define %mongodb-os
-  (operating-system
-    (inherit
-     (simple-operating-system
-      (service dhcp-client-service-type)
-      (service mongodb-service-type)))
-    (packages (cons* mongodb
-                     %base-packages))))
-
-(define* (run-mongodb-test #:optional (port 27017))
-  "Run tests in %MONGODB-OS, forwarding PORT."
-  (define os
-    (marionette-operating-system
-     %mongodb-os
-     #:imported-modules '((gnu services herd)
-                          (guix combinators))))
-
-  (define vm
-    (virtual-machine
-     (operating-system os)
-     (memory-size 1024)
-     (disk-image-size (* 1024 (expt 2 20)))
-     (port-forwardings `((27017 . ,port)))))
-
-  (define test
-    (with-imported-modules '((gnu build marionette))
-      #~(begin
-          (use-modules (srfi srfi-11) (srfi srfi-64)
-                       (gnu build marionette)
-                       (ice-9 popen)
-                       (ice-9 rdelim))
-
-          (define marionette
-            (make-marionette (list #$vm)))
-
-          (mkdir #$output)
-          (chdir #$output)
-
-          (test-begin "mongodb")
-
-          (test-assert "service running"
-            (marionette-eval
-             '(begin
-                (use-modules (gnu services herd))
-                (match (start-service 'mongodb)
-                  (#f #f)
-                  (('service response-parts ...)
-                   (match (assq-ref response-parts 'running)
-                     ((pid) (number? pid))))))
-             marionette))
-
-          (test-eq "test insert"
-            0
-            (system* (string-append #$mongodb "/bin/mongo")
-                     "test"
-                     "--eval"
-                     "db.testCollection.insert({data: 'test-data'})"))
-
-          (test-equal "test find"
-            "test-data"
-            (let* ((port (open-pipe*
-                          OPEN_READ
-                          (string-append #$mongodb "/bin/mongo")
-                          "test"
-                          "--quiet"
-                          "--eval"
-                          "db.testCollection.findOne().data"))
-                   (output (read-line port))
-                   (status (close-pipe port)))
-              output))
-
-          (test-end)
-          (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
-
-  (gexp->derivation "mongodb-test" test))
-
-(define %test-mongodb
-  (system-test
-   (name "mongodb")
-   (description "Connect to a running MONGODB server.")
-   (value (run-mongodb-test))))
-
 
 ;;;
 ;;; The PostgreSQL service.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]