aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu build svg)
  #:use-module (rsvg)
  #:use-module (cairo)
  #:use-module (srfi srfi-11)
  #:export (svg->png))

(define* (downscaled-surface surface
                             #:key
                             source-width source-height
                             width height)
  "Return a new rendering context where SURFACE is scaled to WIDTH x HEIGHT."
  (let ((cr (cairo-create (cairo-image-surface-create 'argb32
                                                      width height))))
    (cairo-scale cr (/ width source-width) (/ height source-height))
    (cairo-set-source-surface cr surface 0 0)
    (cairo-pattern-set-filter (cairo-get-source cr) 'best)
    (cairo-rectangle cr 0 0 source-width source-height)
    (cairo-fill cr)
    cr))

(define* (svg->png in-svg out-png
                   #:key width height)
  "Render the file at IN-SVG as a PNG file in OUT-PNG.  When WIDTH and HEIGHT
are provided, use them as the dimensions of OUT-PNG; otherwise preserve the
dimensions of IN-SVG."
  (define svg
    (rsvg-handle-new-from-file in-svg))

  (let-values (((origin-width origin-height em ex)
                (rsvg-handle-get-dimensions svg)))
    (let* ((surf (cairo-image-surface-create 'argb32
                                             origin-width origin-height))
           (cr   (cairo-create surf)))
      (rsvg-handle-render-cairo svg cr)
      (cairo-surface-flush surf)
      (let ((cr (if (and width height
                         (not (= width origin-width))
                         (not (= height origin-height)))
                    (downscaled-surface surf
                                        #:source-width origin-width
                                        #:source-height origin-height
                                        #:width width
                                        #:height height)
                    cr)))
        (cairo-surface-write-to-png (cairo-get-target cr) out-png)))))

;;; svg.scm ends here
he patchwork test sometimes fail because there's not enough available RAM in the marionette. Increase the VM memory size to 1024MiB. * gnu/tests/web.scm (run-patchwork-test): Increase VM memory size to 1024MiB. Mathieu Othacehe 2021-04-18tests: patchwork: Fix it....The "http-get" test is sometimes failing because the Web server is not yet initialized and returns the 500 error code. Use the retry-or-error procedure, like in the tailon test to do a few retries. * gnu/tests/web.scm (run-tailon-test): Move "retry-or-error" procedure to the top level and adapt its call. (run-patchwork-test): Use it. Mathieu Othacehe 2021-04-13tests: postgresql: Fix it....This is a follow-up of c311147bd16aa0e5746d9cbf31502f5fd61e470c. * gnu/tests/databases.scm (run-postgresql-test): Use "/tmp" as database host. Mathieu Othacehe 2021-04-13tests: halt: Fix it....This fixes: <https://issues.guix.gnu.org/47727>. The OCR prompt detection is failing, so remove it altogether. It looks like the test doesn't need the prompt detection delay to work properly. * gnu/tests/base.scm (run-halt-test): Remove failing OCR detection. Mathieu Othacehe 2021-04-12services: postgresql: Change service default socket directory....Fixes <https://bugs.gnu.org/46737>. PostgreSQL running with a different socket directory to the default one in the package itself breaks some services, this commit restores the previous behaviour where PostgreSQL by default will run with a socket directory that matches the default used by PostgreSQL packaged for Guix. Switching to a different default value can happen, but only alongside changing the PostgreSQL package. * gnu/services/databases.scm (<postgresql-config-file>)[socket-directory]: Change default to #false. * doc/guix.texi (Database Services): Update documentation, and specify a different value for disabling connections via sockets. * gnu/tests/guix.scm (%guix-data-service-os): Use default PostgreSQL behaviour. * gnu/tests/monitoring.scm (%zabbix-os): Likewise. * gnu/tests/web.scm (patchwork-os): Likewise. Signed-off-by: Leo Famulari <leo@famulari.name> Christopher Baines 2021-04-12gnu: tests: Test basic funtionality of the IPFS service....It is tested whether the IPFS service listens at the gateway and API ports and whether it is possible to upload and download a bytevector. * gnu/tests/networking.scm (%ipfs-os): New variable. (run-ipfs-test): New procedure. (%test-ipfs): New system test. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Maxime Devos 2021-04-12tests: docker: Increase VM building memory size to 1024MiB....This fixes the following error when running the "docker-system" test: In ice-9/ftw.scm: 553:30 1 (_ #<directory stream db6660>) In unknown file: 0 (readdir #<directory stream db6660>) ERROR: In procedure readdir: In procedure readdir: Cannot allocate memory * gnu/tests/docker.scm (%test-docker-system): Bump image building VM memory size to 1024 MiB. Mathieu Othacehe 2021-04-10tests: nfs: Fix typo in description....* gnu/tests/nfs.scm (%test-nfs-root-fs)[description]: Fix typo. Tobias Geerinckx-Rice 2021-04-09services: Add Laminar....* gnu/services/ci.scm: New file. * gnu/tests/ci.scm: New file. * doc/guix.texi (Laminar): Document the Laminar service. Christopher Baines 2021-04-05tests: libvirt: Catch issues with incorrect /var and /etc in package....* gnu/tests/virtualization.scm (run-libvirt-test): Chdir to "/tmp" before running test. Add "connect" test. Pierre Langlois 2021-03-28tests: Add Transmission Daemon system test....* gnu/tests/file-sharing.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Simon South 2021-03-23tests: Remove Cuirass tests....Those tests don't make sense anymore as the Cuirass 1.0 version has removed the possibility to execute a custom registration procedure. * gnu/tests/cuirass.scm: Remove it. * gnu/local.mk (GNU_SYSTEM_MODULES): Ditto. Mathieu Othacehe 2021-03-16gnu: 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. Léo Le Bouter 2021-03-10tests: cuirass: Remove cuirass simple test....This is a follow-up of 6c883d0f1deacff4fc227a4f925414a3733efc6e. * gnu/tests/cuirass.scm (simple-cuirass-service, %cuirass-simple-test): Remove them. Mathieu Othacehe 2021-02-25tests: docker-system: Increase VM memory....* gnu/tests/docker.scm (run-docker-system-test)[vm]: Increase 'memory-size'. Ludovic Courtès 2021-02-23tests: cuirass: Restore "cuirass running"....This is a follow-up of ab054868afe6a4ba9d8aa9943e265bd6a871d0ae. The test was failing because the Shepherd control socket wasn't ready yet. Restore it but make sure that the control socket is available first. * gnu/tests/cuirass.scm ("shepherd socket ready"): New test. ("cuirass running"): Restore it. Mathieu Othacehe 2021-02-23tests: cuirass: Remove "cuirass running" test....* gnu/tests/cuirass.scm ("cuirass running"): Remove it as it fails if all the dependencies are not started yet. Mathieu Othacehe 2021-02-23services: cuirass: Improve simple-cuirass-services....Instead of returning multiple services in simple-cuirass-services, rely on the instantiate-missing-services procedure to instantiate postgresql and postgresql-role-service-type when missing. Turn simple-cuirass-services procedure into simple-cuirass-configuration->specs, that takes a simple-cuirass-configuration record and returns a Cuirass specification. Suggested-by: Ludovic Courtès <ludo@gnu.org> * gnu/services/cuirass.scm (%default-cuirass-config): Remove it. (simple-cuirass-services): Rename it to ... (simple-cuirass-configuration->specs): ... this procedure. * gnu/tests/cuirass.scm (cuirass-services): Remove postgresql and postgresql-role services that are automatically instantiated. (simple-cuirass-service): New variable. (%cuirass-simple-test): Adapt it to use simple-cuirass-configuration->specs instead of simple-cuirass-services. * doc/guix.texi (Simple Cuirass): Update it. Mathieu Othacehe 2021-02-19services: cuirass: Add "simple-cuirass-services"....* gnu/services/cuirass.scm (<build-manifest>, <simple-cuirass-configuration>): New records. (build-manifest, build-manifest?, simple-cuirass-configuration, simple-cuirass-configuration?, simple-cuirass-services): New procedures. (%default-cuirass-config): New variable. * gnu/tests/cuirass.scm (%cuirass-simple-test): New variable. * doc/guix.texi (Continuous Integration): Document it. Mathieu Othacehe 2021-02-19tests: cuirass: Add an operating system argument....Rewrite so that "run-cuirass-test" takes an operating-system argument. This is functionally equivalent. * gnu/tests/cuirass.scm (%derivation-file, git-service, cow-service, %cuirass-specs): New variables. (cuirass-services): New procedure. (run-cuirass-test): Add an "operating-system" argument. (%cuirass-test): Adapt it. (%cuirass-remote-test): Ditto. Mathieu Othacehe 2021-02-01Merge branch 'staging'Leo Famulari 2021-01-29tests: cuirass: Increase delay....* gnu/tests/cuirass.scm (run-cuirass-test): Increase "cuirass-web build queued" test delay. Mathieu Othacehe 2021-01-29tests: cuirass: Add Cuirass remote test....* gnu/tests/cuirass.scm (run-cuirass-test): Add "name" and "remote-build?" arguments. (%cuirass-test): Adapt it. (%cuirass-remote-test): New variable. Mathieu Othacehe 2021-01-28tests: Add cuirass test.Mathieu Othacehe 2021-01-28services: postgresql: Add postgresql-role-service-type....* gnu/services/databases.scm (postgresql-role, postgresql-role?, postgresql-role-name, postgresql-role-permissions, postgresql-role-create-database?, postgresql-role-configuration, postgresql-role-configuration?, postgresql-role-configuration-host, postgresql-role-configuration-roles, postgresql-role-service-type): New procedures. * gnu/tests/databases.scm: Test it. * doc/guix.texi: Document it. Mathieu Othacehe 2021-01-28services: postgresql: Add log directory support....* gnu/services/databases.scm (postgresql-configuration-log-directory): New procedure. (<postgresql-configuration>)[log-directory]: New field. (postgresql-activation): Create the log directory. (postgresql-shepherd-service): Honor it. * gnu/tests/databases.scm (%postgresql-log-directory): New variable. (log-file): New test case. * doc/guix.texi (Database Services): Document it. Mathieu Othacehe 2021-01-28services: postgresql: Add socket directory support....* gnu/services/databases.scm (postgresql-config-file-socket-directory): New procedure. (<postgresql-config-file>)[socket-directory]: New field. (postgresql-config-file-compiler): Honor it. (postgresql-activation): Create the socket directory if needed. * doc/guix.texi (Database Services): Document it. * gnu/tests/guix.scm (%guix-data-service-os): Adapt it. * gnu/tests/monitoring.scm (%zabbix-os): Ditto. * gnu/tests/web.scm (patchwork-os): Ditto. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org> Mathieu Othacehe 2021-01-28services: postgresql: Use Guile datatypes....* gnu/services/databases.scm (postgresql-config-file-compiler): Support Guile datatypes in the "extra-config" field. * gnu/tests/databases.scm (%postgresql-os): Test it. * doc/guix.texi (Database Services): Document it. Mathieu Othacehe 2021-01-27system: tests: Add a Btrfs RAID system test....* gnu/tests/install.scm (%btrfs-raid-root-os) (%btrfs-raid-root-os-source, %btrfs-raid-root-installation-script) (%test-btrfs-raid-root-os): New variables. Maxim Cournoyer 2021-01-25Merge branch 'master' into stagingLeo Famulari 2021-01-20tests: install: Fix build....This is a follow-up of: 2f497d94e7f6574b0847025ce29eafaf858008ef. * gnu/tests/install.scm (run-install): Rename 'raw to 'efi-raw. Mathieu Othacehe 2021-01-04tests: monitoring: Use the latest postgresql for testing Zabbix....This avoids a package collision while building the operating-system profile. * gnu/tests/monitoring.scm (%zabbix-os): Use POSTGRESQL instead of POSTGRESQL-10. Leo Famulari