diff options
27 files changed, 667 insertions, 165 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 72c3d43254..b0710ebf06 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -849,11 +849,6 @@ Support for build offloading (@pxref{Daemon Offload Setup}) and version 0.13.0 or later. @item -When @url{https://www.nongnu.org/lzip/lzlib.html, lzlib} is available, lzlib -substitutes can be used and @command{guix publish} can compress substitutes -with lzlib. - -@item When @url{http://www.bzip.org, libbz2} is available, @command{guix-daemon} can use it to compress build logs. @end itemize @@ -15352,11 +15347,15 @@ gexps to introduce job definitions that are passed to mcron (operating-system ;; @dots{} - (services (cons (service mcron-service-type - (mcron-configuration - (jobs (list garbage-collector-job - updatedb-job - idutils-job)))) + + ;; %BASE-SERVICES already includes an instance of + ;; 'mcron-service-type', which we extend with additional + ;; jobs using 'simple-service'. + (services (cons (simple-service 'my-cron-jobs + mcron-service-type + (list garbage-collector-job + updatedb-job + idutils-job)) %base-services))) @end lisp @@ -19119,16 +19118,14 @@ is the key, and the remaining elements are the values. @subsubheading MariaDB/MySQL -@deffn {Scheme Procedure} mysql-service [#:config (mysql-configuration)] -Return a service that runs @command{mysqld}, the MySQL or MariaDB -database server. - -The optional @var{config} argument specifies the configuration for -@command{mysqld}, which should be a @code{<mysql-configuration>} object. -@end deffn +@defvr {Scheme Variable} mysql-service-type +This is the service type for a MySQL or MariaDB database server. Its value +is a @code{mysql-configuration} object that specifies which package to use, +as well as various settings for the @command{mysqld} daemon. +@end defvr @deftp {Data Type} mysql-configuration -Data type representing the configuration of @var{mysql-service}. +Data type representing the configuration of @var{mysql-service-type}. @table @asis @item @code{mysql} (default: @var{mariadb}) @@ -19138,8 +19135,25 @@ or @var{mysql}. For MySQL, a temporary root password will be displayed at activation time. For MariaDB, the root password is empty. +@item @code{bind-address} (default: @code{"127.0.0.1"}) +The IP on which to listen for network connections. Use @code{"0.0.0.0"} +to bind to all available network interfaces. + @item @code{port} (default: @code{3306}) TCP port on which the database server listens for incoming connections. + +@item @code{socket} (default: @code{"/run/mysqld/mysqld.sock"}) +Socket file to use for local (non-network) connections. + +@item @code{extra-content} (default: @code{""}) +Additional settings for the @file{my.cnf} configuration file. + +@item @code{auto-upgrade?} (default: @code{#t}) +Whether to automatically run @command{mysql_upgrade} after starting the +service. This is necessary to upgrade the @dfn{system schema} after +``major'' updates (such as switching from MariaDB 10.4 to 10.5), but can +be disabled if you would rather do that manually. + @end table @end deftp @@ -19166,7 +19180,7 @@ The Memcached package to use. Network interfaces on which to listen. @item @code{tcp-port} (default: @code{11211}) -Port on which to accept connections on, +Port on which to accept connections on. @item @code{udp-port} (default: @code{11211}) Port on which to accept UDP connections on, a value of 0 will disable diff --git a/etc/guix-daemon.cil.in b/etc/guix-daemon.cil.in index 8ff6716038..cc8999d9a8 100644 --- a/etc/guix-daemon.cil.in +++ b/etc/guix-daemon.cil.in @@ -131,14 +131,16 @@ (lnk_file (create rename setattr unlink))) (allow guix_daemon_t tmp_t - (file (link rename create execute execute_no_trans write unlink setattr map relabelto))) + (file (link + rename create execute execute_no_trans write + unlink setattr map relabelto relabelfrom))) (allow guix_daemon_t tmp_t (fifo_file (open read write create getattr ioctl setattr unlink))) (allow guix_daemon_t tmp_t (dir (create rename - rmdir relabelto + rmdir relabelto relabelfrom reparent add_name remove_name open read write getattr setattr @@ -331,7 +333,7 @@ (dir (add_name write))) (allow guix_daemon_t self - (netlink_route_socket (bind create getattr nlmsg_read read write))) + (netlink_route_socket (bind create getattr nlmsg_read read write getopt))) ;; Socket operations (allow guix_daemon_t @@ -377,7 +379,10 @@ self (unix_dgram_socket (create bind connect sendto read write))) - ;; For some esoteric build jobs (i.e. PostgreSQL). + ;; For some esoteric build jobs (i.e. running PostgreSQL, etc). + (allow guix_daemon_t + self + (capability (kill))) (allow guix_daemon_t node_t (tcp_socket (node_bind))) @@ -389,11 +394,17 @@ (tcp_socket (name_connect))) (allow guix_daemon_t tmpfs_t - (file (map read write))) + (file (map read write link getattr))) + (allow guix_daemon_t + usermodehelper_t + (file (read))) (allow guix_daemon_t hugetlbfs_t (file (map read write))) (allow guix_daemon_t + proc_net_t + (file (read))) + (allow guix_daemon_t postgresql_port_t (tcp_socket (name_connect name_bind))) (allow guix_daemon_t diff --git a/gnu/local.mk b/gnu/local.mk index 2e802680f8..8f9ed312bb 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -38,6 +38,7 @@ # Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org> # Copyright © 2020 Martin Becze <mjbecze@riseup.net> # Copyright © 2020 Malte Frank Gerdes <mate.f.gerdes@gmail.com> +# Copyright © 2020 Vinicius Monego <monego@posteo.net> # # This file is part of GNU Guix. # @@ -1090,6 +1091,7 @@ dist_patch_DATA = \ %D%/packages/patches/glibc-supported-locales.patch \ %D%/packages/patches/gmp-arm-asm-nothumb.patch \ %D%/packages/patches/gmp-faulty-test.patch \ + %D%/packages/patches/gnash-fix-giflib-version.patch \ %D%/packages/patches/gnome-shell-theme.patch \ %D%/packages/patches/gnome-shell-disable-test.patch \ %D%/packages/patches/gnome-settings-daemon-gc.patch \ @@ -1651,6 +1653,7 @@ dist_patch_DATA = \ %D%/packages/patches/tipp10-remove-license-code.patch \ %D%/packages/patches/tk-find-library.patch \ %D%/packages/patches/transcode-ffmpeg.patch \ + %D%/packages/patches/transmission-honor-localedir.patch \ %D%/packages/patches/ttf2eot-cstddef.patch \ %D%/packages/patches/tup-unbundle-dependencies.patch \ %D%/packages/patches/tuxpaint-stamps-path.patch \ diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm index 3176a1237a..6bfe8f0a12 100644 --- a/gnu/packages/animation.scm +++ b/gnu/packages/animation.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com> +;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,19 +28,30 @@ #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages algebra) + #:use-module (gnu packages autotools) #:use-module (gnu packages boost) #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages dejagnu) #:use-module (gnu packages fontutils) + #:use-module (gnu packages gettext) + #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages graphics) #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages jemalloc) + #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) #:use-module (gnu packages qt) - #:use-module (gnu packages video)) + #:use-module (gnu packages sdl) + #:use-module (gnu packages tls) + #:use-module (gnu packages video) + #:use-module (gnu packages xiph)) ;; ETL, synfig, and Synfig Studio are updated in tandem. (define synfig-version "1.2.2") @@ -192,6 +204,89 @@ need for tweening, preventing the need to hand-draw each frame. This package contains the graphical user interface for synfig.") (license license:gpl3+))) +;; This package provides a standalone (no browser plugin) version of Gnash. +(define-public gnash + ;; The last tagged release of Gnash was in 2013. + (let ((commit "583ccbc1275c7701dc4843ec12142ff86bb305b4") + (revision "0")) + (package + (name "gnash") + (version (git-version "0.8.11" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/gnash.git/") + (commit commit))) + (file-name (git-file-name name version)) + (patches (search-patches "gnash-fix-giflib-version.patch")) + (sha256 + (base32 "0fh0bljn0i6ypyh6l99afi855p7ki7lm869nq1qj6k8hrrwhmfry")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list "--disable-static" + ;; Plugins are based on XULRunner and NPAPI only. Disable. + "--disable-plugins" + "--enable-gui=gtk" + "--enable-media=ffmpeg" + (string-append "--with-boost-incl=" + (assoc-ref %build-inputs "boost") "/include") + (string-append "--with-boost-lib=" + (assoc-ref %build-inputs "boost") "/lib") + (string-append "--with-ffmpeg-incl=" + (assoc-ref %build-inputs "ffmpeg") + "/include/libavcodec") + (string-append "--with-speex-incl=" + (assoc-ref %build-inputs "speex") "/include") + (string-append "--with-jemalloc-incl=" + (assoc-ref %build-inputs "jemalloc") + "/include/jemalloc") + (string-append "--with-speex-lib=" + (assoc-ref %build-inputs "speex") "/lib") + (string-append "--with-jpeg-incl=" + (assoc-ref %build-inputs "libjpeg") "/include") + (string-append "--with-zlib-incl=" + (assoc-ref %build-inputs "zlib") "/include") + (string-append "--with-png-incl=" + (assoc-ref %build-inputs "libpng") + "/include")))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("dejagnu" ,dejagnu) ;for tests + ("gettext" ,gettext-minimal) + ("libtool" ,libtool) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper))) + (inputs + `(("agg" ,agg) + ("atk" ,atk) + ("boost" ,boost) + ("curl" ,curl) + ("ffmpeg" ,ffmpeg-2.8) + ("freeglut" ,freeglut) + ("gconf" ,gconf) + ("giflib" ,giflib) + ("glib" ,glib) + ("gtk+" ,gtk+-2) + ("gtkglext" ,gtkglext) + ("jemalloc" ,jemalloc) + ("libjpeg" ,libjpeg-turbo) + ("libltdl" ,libltdl) + ("libpng" ,libpng) + ("pangox-compat" ,pangox-compat) + ("sdl" ,sdl) + ("speex" ,speex))) + (synopsis "Flash movie player") + (description + "Gnash is a Flash movie player. It supports SWF version v7 and some +of v8 and v9. It is possible to configure Gnash to use several different +audio or video backends, ensuring good performance.") + (home-page "https://www.gnu.org/software/gnash/") + (license license:gpl3+)))) + (define-public papagayo (let ((commit "e143684b30e59fe4a554f965cb655d23cbe93ee7") (revision "1")) diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm index ab44caa06a..08e61d7ba2 100644 --- a/gnu/packages/bittorrent.scm +++ b/gnu/packages/bittorrent.scm @@ -75,12 +75,17 @@ version ".tar.xz")) (sha256 (base32 - "1wjmn96zrvmk8j1yz2ysmqd7a2x6ilvnwwapcvfzgxs2wwpnai4i")))) + "1wjmn96zrvmk8j1yz2ysmqd7a2x6ilvnwwapcvfzgxs2wwpnai4i")) + (patches (search-patches "transmission-honor-localedir.patch")))) (build-system glib-or-gtk-build-system) (outputs '("out" ; library and command-line interface "gui")) ; graphical user interface (arguments - '(#:glib-or-gtk-wrap-excluded-outputs '("out") + '(#:configure-flags + (list (string-append "--localedir=" + (assoc-ref %outputs "gui") + "/share/locale")) + #:glib-or-gtk-wrap-excluded-outputs '("out") #:phases (modify-phases %standard-phases (add-after 'install 'move-gui @@ -93,12 +98,11 @@ (rename-file (string-append out "/bin/transmission-gtk") (string-append gui "/bin/transmission-gtk")) - (mkdir (string-append gui "/share")) (for-each (lambda (dir) (rename-file (string-append out "/share/" dir) (string-append gui "/share/" dir))) - '("appdata" "applications" "icons" "locale" "pixmaps")) + '("appdata" "applications" "icons" "pixmaps")) (mkdir-p (string-append gui "/share/man/man1")) (rename-file diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index b7b2113db4..a23c677880 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -281,7 +281,7 @@ (lambda (binary) (wrap-program binary ;; Make QtWebEngineProcess available. - `("QTWEBENGINEPROCESS_PATH" ":" = + `("QTWEBENGINEPROCESS_PATH" = ,(list (string-append qtwebengine "/lib/qt5/libexec/QtWebEngineProcess"))))) diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index 24d776d893..953b99778e 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -611,14 +611,14 @@ Portuguese, Spanish and Italian.") (define-public fet (package (name "fet") - (version "5.47.1") + (version "5.48.0") (source (origin (method url-fetch) (uri (string-append "https://www.lalescu.ro/liviu/fet/download/" "fet-" version ".tar.bz2")) (sha256 - (base32 "1szp5zrynm6l14zgz04rk82rw6w8p712819b0n7lxxb1bnxqz8xv")))) + (base32 "12bd53r841r8zsn3v1kzws2qar908p6g6mlnm50kmjkxramr63ga")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 6865346cf0..91b1230489 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -8668,7 +8668,7 @@ indentation guides in Emacs: (define-public emacs-elpy (package (name "emacs-elpy") - (version "1.34.0") + (version "1.35.0") (source (origin (method git-fetch) (uri (git-reference @@ -8677,7 +8677,7 @@ indentation guides in Emacs: (file-name (git-file-name name version)) (sha256 (base32 - "1x1z298axbh4xalssnq9nkf2z1sdgmx839vb01xz18kr9lfavx1x")))) + "07rdb9w3bxzfr07224awa541xdy116hyc2b3bpl3fc3ikddmbydk")))) (build-system emacs-build-system) (arguments `(#:include (cons* "^elpy/[^/]+\\.py$" "^snippets\\/" %default-include) @@ -11189,7 +11189,7 @@ highlights quasi-quoted expressions.") (define-public emacspeak (package (name "emacspeak") - (version "52.0") + (version "53.0") (source (origin (method url-fetch) @@ -11197,17 +11197,13 @@ highlights quasi-quoted expressions.") "https://github.com/tvraman/emacspeak/releases/download/" version "/emacspeak-" version ".tar.bz2")) (sha256 - (base32 "0x5b0s38r5ih2lk7f5hasi9arrgxlmmq5jaddadbxi8in2gw2jzl")))) + (base32 "0lasj4ggsh93ingf46n16wxfx5zzxvr1igikbmdqlz3i99j331gs")))) (build-system gnu-build-system) (arguments '(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases - (add-after 'unpack 'delete-broken-symlink - (lambda _ - (delete-file "lisp/sudoku.el") - #t)) (replace 'configure (lambda _ (setenv "SHELL" (which "sh")) @@ -22997,6 +22993,29 @@ contains a track position, playback will start at the specified position.") JIRA issue servers.") (license license:gpl3+))) +(define-public emacs-slime-volleyball + (package + (name "emacs-slime-volleyball") + (version "1.1.6") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "slime-volleyball-" version ".tar")) + (sha256 + (base32 "1jsx889j09jbib9v3jzn3k2hn71jzdyc5yv4f010l6fknbsfi7lr")))) + (build-system emacs-build-system) + (arguments '(#:include '("\\.el$" "\\.svg$" "\\.b64$" "slime\\.el\\.gz$"))) + (home-page "http://elpa.gnu.org/packages/slime-volleyball.html") + (synopsis "SVG slime volleyball game") + (description + "Emacs Slime Volleyball is a volleyball game. Win points by +making the ball land on your opponent's side of the court. The first +player to five points wins! You can play against a friend, or +challenge the three computer opponents in one player mode. You can +even train opponent slimes.") + (license license:gpl3+))) + (define-public emacs-systemd-mode (package (name "emacs-systemd-mode") diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 3b288cc8b8..1b7faa97c9 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -6817,15 +6817,14 @@ some graphical niceities, and numerous bug-fixes and other improvements.") (define-public yamagi-quake2 (package (name "yamagi-quake2") - (version "7.10") + (version "7.45") (source (origin (method url-fetch) (uri (string-append "https://deponie.yamagi.org/quake2/quake2-" version ".tar.xz")) (sha256 - (base32 - "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps")))) + (base32 "0rgz8x7lzd0zb0xqd0gvnf2641nr9xpfm6v14mgh99hspxklaln7")))) (build-system gnu-build-system) (arguments `(#:tests? #f @@ -6854,12 +6853,15 @@ some graphical niceities, and numerous bug-fixes and other improvements.") (string-append out "/bin/yamagi-quake2")) (symlink (string-append out "/lib/yamagi-quake2/q2ded") (string-append out "/bin/yamagi-q2ded")))))))) - (inputs `(("sdl2" ,sdl2) - ("mesa" ,mesa) - ("libvorbis" ,libvorbis) - ("zlib" ,zlib) - ("openal" ,openal))) - (native-inputs `(("pkg-config" ,pkg-config))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("curl" ,curl-minimal) + ("libvorbis" ,libvorbis) + ("mesa" ,mesa) + ("openal" ,openal) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) (synopsis "First person shooter engine based on quake2") (description "Yamagi Quake II is an enhanced client for id Software's Quake II. The main focus is an unchanged single player experience like back in 1997, @@ -6877,17 +6879,23 @@ making Yamagi Quake II one of the most solid Quake II implementations available. (define-public nudoku (package (name "nudoku") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/jubalh/nudoku/" - "releases/download/" version - "/nudoku-" version ".tar.xz")) - (sha256 - (base32 - "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k")))) + (version "2.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jubalh/nudoku.git") + (commit version))) + (sha256 + (base32 "12v00z3p0ymi8f3w4b4bgl4c76irawn3kmd147r0ap6s9ssx2q6m")))) (build-system gnu-build-system) - (inputs `(("ncurses" ,ncurses))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("gettext" ,gettext-minimal) + ("pkg-config" ,pkg-config))) + (inputs + `(("ncurses" ,ncurses))) (home-page "https://jubalh.github.io/nudoku/") (synopsis "Sudoku for your terminal") (description "Nudoku is a ncurses-based Sudoku game for your terminal.") @@ -8284,6 +8292,39 @@ and cooperative.") ;; developers. (license (list license:gpl2+ license:lgpl2.1+)))) +(define-public slimevolley + (package + (name "slimevolley") + (version "2.4.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://download.tuxfamily.org/slime/" + "slimevolley_" version ".tar.gz")) + (sha256 + (base32 "1pi60zjpx95mfdkrbwf4cbzy5lv4v5qrljvgck46qca78i9g9g46")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ;no test + ;; Work around build failure: "error adding symbols: DSO + ;; missing from command line". + #:configure-flags (list "-DCMAKE_EXE_LINKER_FLAGS=-lm"))) + (native-inputs + `(("gettext" ,gettext-minimal))) + (inputs + `(("sdl" ,(sdl-union (list sdl sdl-image sdl-net sdl-ttf))))) + (home-page "https://slime.tuxfamily.org/") + (synopsis "Unrealistic 2D volleyball simulation") + (description + "Slime Volley is a 2D arcade-oriented volleyball simulation, in +the spirit of some Java games of the same name. + +Two teams, 1-3 players each, try to be the first to get 10 points. +This happens when the one ball touches the floor on the other side of +the net. There can be 1 to 8 balls in game. Once one ball touches +the ground, the set ends and all balls are served again.") + (license license:gpl3+))) + (define-public slingshot (package (name "slingshot") diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index ff986c0a02..c0c66e52f5 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -223,7 +223,22 @@ provided, as well as a framework to add new color models and data types.") (build-system meson-build-system) (arguments `(#:configure-flags - (list "-Dintrospection=false"))) + (list "-Dintrospection=false") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'extend-test-time-outs + (lambda _ + ;; Multiply some poorly-chosen time-outs for busy build machines. + (substitute* "tests/simple/test-node-exponential.c" + (("G_TIME_SPAN_SECOND" match) + (string-append "10 * " match))) + (substitute* "tests/simple/test-buffer-sharing.c" + (("g_timeout_add_seconds\\([0-9]+" match) + (string-append match "0"))) + (substitute* (find-files "tests" "^meson\\.build$") + (("timeout ?: [0-9]+" match) + (string-append match "0"))) + #t))))) ;; These are propagated to satisfy 'gegl-0.4.pc'. (propagated-inputs `(("babl" ,babl) diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm index d69f14ba0e..2eb08da50f 100644 --- a/gnu/packages/gnome-xyz.scm +++ b/gnu/packages/gnome-xyz.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2020 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us> +;;; Copyright © 2020 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech> ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com> @@ -42,6 +43,7 @@ #:use-module (gnu packages ssh) #:use-module (gnu packages tls) #:use-module (gnu packages ruby) + #:use-module (gnu packages web) #:use-module (gnu packages xml)) (define-public matcha-theme @@ -515,6 +517,34 @@ scrollable tiling of windows and per monitor workspaces. It's inspired by paper notebooks and tiling window managers.") (license license:gpl3))) +(define-public greybird-gtk-theme + (package + (name "greybird-gtk-theme") + (version "3.22.12") + (source (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/shimmerproject/Greybird") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1j66ddvl3pmwh2v8ajm8r5g5nbsr7r262ff1qn2nf3i0gy8b3lq8")))) + (build-system meson-build-system) + (native-inputs + `(("gtk+" ,gtk+) + ("glib:bin" ,glib "bin") ; for "glib-compile-resources" + ("librsvg" ,librsvg) + ("pkg-config" ,pkg-config) + ("ruby-sass" ,ruby-sass) + ("sassc" ,sassc))) + (home-page "https://shimmerproject.org/") + (synopsis "Grey GTK+ theme based on Bluebird") + (description "Greybird is a grey derivative of the Bluebird theme by the +Shimmer Project. It supports GNOME, Unity, and Xfce.") + (license (list license:gpl2+ license:cc-by-sa3.0)))) + (define-public numix-gtk-theme (package (name "numix-gtk-theme") diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 5ec5eefadd..4732fcccae 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -3877,7 +3877,7 @@ manipulating graphs and datasets.") (define-public guile-jsonld (package (name "guile-jsonld") - (version "1.0.1") + (version "1.0.2") (source (origin (method git-fetch) @@ -3887,13 +3887,13 @@ manipulating graphs and datasets.") (file-name (git-file-name name version)) (sha256 (base32 - "0zfn3nwlz6xzip1j8xbj768dc299r037cfc81bk6kwl9xhzkjbrg")))) + "1ryyvh71899z2inivqglb8d78zzp1sd0wv9a56kvcmrxf1966z6r")))) (build-system gnu-build-system) (arguments `(#:tests? #f)); require network (propagated-inputs `(("guile-gnutls" ,gnutls) - ("guile-json" ,guile-json-3) + ("guile-json" ,guile-json-4) ("guile-rdf" ,guile-rdf))) (inputs `(("guile" ,guile-3.0))) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index ad0b41e843..6e77d9c684 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -572,14 +572,14 @@ out) and returning a package that uses that as its 'source'." (define-public nix (package (name "nix") - (version "2.3.8") + (version "2.3.9") (source (origin (method url-fetch) (uri (string-append "https://nixos.org/releases/nix/nix-" version "/nix-" version ".tar.xz")) (sha256 (base32 - "0amd5nnqslvkfpz042l4ydihw2qsy68nmjbwaagcrggaq4irh4f7")))) + "1yi2c1fp33sxv9j0pvxlpxs1dhq3axrwkxdwr867ll90lbdiycvj")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--sysconfdir=/etc" "--enable-gc") @@ -1015,8 +1015,8 @@ environments.") (license (list license:gpl3+ license:agpl3+ license:silofl1.1)))) (define-public guix-build-coordinator - (let ((commit "16f5ee0119fa0febf8b5f90926659ef990dacfa8") - (revision "6")) + (let ((commit "99f6a0f248600fc9063ec808370a2a070a856dbe") + (revision "7")) (package (name "guix-build-coordinator") (version (git-version "0" revision commit)) @@ -1027,7 +1027,7 @@ environments.") (commit commit))) (sha256 (base32 - "0j6iqibhixpaf5cv18ccb9v5a08hy73kw1dcbhyz4yb906x1f38v")) + "1vk9dn4km4j6ngfk97vip822zs1j9494f2ig3l97mq1r5400fpqv")) (file-name (string-append name "-" version "-checkout")))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/patches/gnash-fix-giflib-version.patch b/gnu/packages/patches/gnash-fix-giflib-version.patch new file mode 100644 index 0000000000..44816d2a14 --- /dev/null +++ b/gnu/packages/patches/gnash-fix-giflib-version.patch @@ -0,0 +1,17 @@ +Description: Change GIFLIB_MINOR to allow matching with v5.2+ +Source: https://savannah.gnu.org/patch/index.php?9873 +Author: marius851000 + +diff --git a/libbase/GnashImageGif.cpp b/libbase/GnashImageGif.cpp +index 2ae5ddb..b87b1e7 100644 +--- a/libbase/GnashImageGif.cpp ++++ b/libbase/GnashImageGif.cpp +@@ -120,7 +120,7 @@ GifInput::GifInput(std::shared_ptr<IOChannel> in) + GifInput::~GifInput() + { + // Clean up allocated data. +-#if GIFLIB_MAJOR==5 && GIFLIB_MINOR==1 ++#if GIFLIB_MAJOR==5 && GIFLIB_MINOR!=0 + DGifCloseFile(_gif, 0); + #else + DGifCloseFile(_gif); diff --git a/gnu/packages/patches/transmission-honor-localedir.patch b/gnu/packages/patches/transmission-honor-localedir.patch new file mode 100644 index 0000000000..70c66bfb2b --- /dev/null +++ b/gnu/packages/patches/transmission-honor-localedir.patch @@ -0,0 +1,34 @@ +This patch modifies Transmission so it honors the "localedir" option +passed to its configure script, allowing GTK-specific localization +data to be placed in the package's "gui" output. + +Without this patch, localization of transmission-gtk can break as the +application will expect to find this data in the package's default +output (as a result of the call to bindtextdomain in gtk/main.c). + +diff --git a/configure b/configure +index a29e24f..3ae8ef4 100755 +--- a/configure ++++ b/configure +@@ -21305,7 +21305,7 @@ $as_echo "$LINGUAS" >&6; } + sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ + < $srcdir/po/POTFILES.in > po/POTFILES + +- transmissionlocaledir='${prefix}/${DATADIRNAME}/locale' ++ transmissionlocaledir='${localedir}' + + fi + +diff --git a/configure.ac b/configure.ac +index 57d3cae..ab62093 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -563,7 +563,7 @@ if test "x$enable_nls" = "xyes" ; then + AC_SUBST(GETTEXT_PACKAGE) + AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package]) + AM_GLIB_GNU_GETTEXT +- transmissionlocaledir='${prefix}/${DATADIRNAME}/locale' ++ transmissionlocaledir='${localedir}' + AC_SUBST(transmissionlocaledir) + fi + AC_SUBST(INTLLIBS) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index c0ed57e481..f97e6a12e3 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -984,6 +984,56 @@ both of which are installed automatically if you install this library.") Origin Resource Sharing}, making cross-origin AJAX possible.") (license license:expat))) +(define-public python-flask-markdown + (package + (name "python-flask-markdown") + (version "0.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Flask-Markdown" version)) + (sha256 + (base32 + "0l32ikv4f7va926jlq4f7gx0xid247bhlxl6bd9av5dk8ljz1hyq")))) + (build-system python-build-system) + (arguments + '(#:tests? #f)) ; Tests seem to be incompatible with latest python + (propagated-inputs + `(("python-markdown" ,python-markdown) + ("python-flask" ,python-flask))) + (native-inputs + `(("python-nose" ,python-nose))) + (home-page "https://github.com/dcolish/flask-markdown") + (synopsis "Small extension to help with using Markdown in Flask") + (description + "Flask-Markdown supports several extensions for Markdown and integrates +into Jinja2 by default.") + (license license:bsd-3))) + +(define-public python-flask-session + (package + (name "python-flask-session") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Flask-Session" version)) + (sha256 + (base32 + "08s4msg8jzb8vgb9bd491zvrzhrdldxdw6vimb0kx5kgy2xy4s07")))) + (build-system python-build-system) + (arguments + '(#:tests? #f)) ; Tests require the various storage backends to be present + (propagated-inputs + `(("python-flask" ,python-flask))) + (home-page "https://github.com/fengsp/flask-session") + (synopsis "Adds server-side session support to your Flask application") + (description + "Flask-Session is an extension for Flask that adds support for +Server-side sessions, with a variety of different backends for session +storage.") + (license license:bsd-3))) + (define-public python-html5lib (package (name "python-html5lib") diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 266bf8b871..c152444632 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -16555,40 +16555,45 @@ Python datatypes.") complex datatypes to and from native Python datatypes.") (license license:expat))) -(define-public python2-marshmallow - (package-with-python2 python-marshmallow)) - (define-public python-apispec (package (name "python-apispec") - (version "0.25.3") + (version "4.0.0") (source (origin (method url-fetch) (uri (pypi-uri "apispec" version)) (sha256 (base32 - "0kxa8723zbisx10363yh4mmmn4higxrspymbjfz5zq8f644zagm9")))) + "12n4w5zkn4drcn8izq68vmixmqvz6abviqkdn4ip0kaax3jjh3in")))) (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'disable-prance-tests + (lambda _ + ;; Disable validation tests since they require the + ;; optional 'prance' library which is not yet in Guix. + (substitute* "tests/test_ext_marshmallow_openapi.py" + (("def test_openapi_tools_validate.*" all) + (string-append "@pytest.mark.xfail\n" all))))) + (replace 'check + (lambda _ + (setenv "PYTHONPATH" + (string-append "./build/lib:" + (getenv "PYTHONPATH"))) + (invoke "pytest" "-vv")))))) (propagated-inputs `(("python-pyyaml" ,python-pyyaml))) (native-inputs `(("python-pytest" ,python-pytest) - ("python-flask" ,python-flask) - ("python-marshmallow" ,python-marshmallow) - ("python-tornado" ,python-tornado) - ("python-bottle" ,python-bottle) - ("python-mock" ,python-mock))) + ("python-marshmallow" ,python-marshmallow))) (home-page "https://github.com/marshmallow-code/apispec") - (synopsis "Swagger 2.0 API specification generator") + (synopsis "Swagger/OpenAPI specification generator") (description "@code{python-apispec} is a pluggable API specification -generator. Currently supports the OpenAPI specification (f.k.a. -Swagger 2.0).") +generator. It currently supports the OpenAPI specification, formerly known +as Swagger.") (license license:expat))) -(define-public python2-apispec - (package-with-python2 python-apispec)) - (define-public python-flasgger (package (name "python-flasgger") @@ -16636,9 +16641,6 @@ Swagger 2.0).") from your Flask project. It is a fork of Flask-Swagger.") (license license:expat))) -(define-public python2-flasgger - (package-with-python2 python-flasgger)) - (define-public python-swagger-spec-validator (package (name "python-swagger-spec-validator") diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index c9d57bee67..f6ad90024b 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -20,6 +20,7 @@ ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Valentin Ignatev <valentignatev@gmail.com> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> +;;; Copyright © 2020 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1223,18 +1224,52 @@ made by suckless.") ("rust-winapi" ,rust-winapi-0.3)) #:phases (modify-phases %standard-phases - (add-after 'configure 'patch-glutin-libgl-path + (add-after 'configure 'add-absolute-library-references (lambda* (#:key inputs cargo-inputs vendor-dir #:allow-other-keys) (let* ((glutin-name ,(package-name rust-glutin-0.22)) (glutin-version ,(package-version rust-glutin-0.22)) - (src-api - (string-append - glutin-name "-" glutin-version ".tar.gz/src/api/")) + (glutin-api (string-append glutin-name "-" glutin-version + ".tar.gz/src/api/")) + (smithay-client-toolkit-name + ,(package-name rust-smithay-client-toolkit-0.6)) + (smithay-client-toolkit-version + ,(package-version rust-smithay-client-toolkit-0.6)) + (smithay-client-toolkit-src + (string-append smithay-client-toolkit-name "-" + smithay-client-toolkit-version ".tar.gz/src")) + (wayland-sys-name ,(package-name rust-wayland-sys-0.23)) + (wayland-sys-version ,(package-version rust-wayland-sys-0.23)) + (wayland-sys-src (string-append wayland-sys-name "-" + wayland-sys-version + ".tar.gz/src")) + (libxkbcommon (assoc-ref inputs "libxkbcommon")) + (libwayland (assoc-ref inputs "wayland")) (mesa (assoc-ref inputs "mesa"))) - (substitute* (string-append vendor-dir "/" src-api "glx/mod.rs") + (substitute* (string-append vendor-dir "/" glutin-api "glx/mod.rs") (("libGL.so") (string-append mesa "/lib/libGL.so"))) - (substitute* (string-append vendor-dir "/" src-api "egl/mod.rs") + (substitute* (string-append vendor-dir "/" glutin-api "egl/mod.rs") (("libEGL.so") (string-append mesa "/lib/libEGL.so"))) + (substitute* (string-append vendor-dir "/" + smithay-client-toolkit-src + "/keyboard/ffi.rs") + (("libxkbcommon\\.so") + (string-append libxkbcommon "/lib/libxkbcommon.so"))) + (substitute* (string-append vendor-dir "/" wayland-sys-src + "/server.rs") + (("libwayland-server\\.so") + (string-append libwayland "/lib/libwayland-server.so"))) + (substitute* (string-append vendor-dir "/" wayland-sys-src + "/cursor.rs") + (("libwayland-cursor\\.so") + (string-append libwayland "/lib/libwayland-cursor.so"))) + (substitute* (string-append vendor-dir "/" wayland-sys-src + "/egl.rs") + (("libwayland-egl\\.so") + (string-append libwayland "/lib/libwayland-egl.so"))) + (substitute* (string-append vendor-dir "/" wayland-sys-src + "/client.rs") + (("libwayland-client\\.so") + (string-append libwayland "/lib/libwayland-client.so"))) #t))) (add-after 'configure 'remove-alacritty-vendor (lambda* (#:key vendor-dir #:allow-other-keys) @@ -1254,15 +1289,8 @@ made by suckless.") (man (string-append share "/man/man1")) (alacritty-bin "target/release/alacritty")) - ;; Install and wrap the binary. + ;; Install the executable. (install-file alacritty-bin bin) - (wrap-program (string-append bin "/alacritty") - ;; Both libraries are dlopen()d by cargo dependencies above - ;; when running Alacritty on pure Wayland. - ;; XXX Find out how to patch these at the source. - `("LD_LIBRARY_PATH" ":" prefix - (,(string-append (assoc-ref inputs "libxkbcommon") "/lib:" - (assoc-ref inputs "wayland") "/lib")))) ;; Install man pages. (mkdir-p man) diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index f0bfaad12d..e7579ad56d 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -756,14 +756,14 @@ editors.") (define-public texmacs (package (name "texmacs") - (version "1.99.15") + (version "1.99.16") (source (origin (method url-fetch) (uri (string-append "https://www.texmacs.org/Download/ftp/tmftp/" "source/TeXmacs-" version "-src.tar.gz")) (sha256 - (base32 "09r88yi2k1vi9pmszw97zblw8bs79h2d5ivb6xk652zyrls2lkvd")))) + (base32 "118sk75k0k9pkyfyx000n2ypab8vm1lz5zxkkdmsi5nwyr3rp56s")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 6dfdd9700b..442e66f73b 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -2348,7 +2348,7 @@ other site that youtube-dl supports.") (define-public you-get (package (name "you-get") - (version "0.4.1475") + (version "0.4.1488") (source (origin (method git-fetch) (uri (git-reference @@ -2357,7 +2357,7 @@ other site that youtube-dl supports.") (file-name (git-file-name name version)) (sha256 (base32 - "1hsa99fgx1zhzkf3n0hlbinckvipd54vhs6y4jkq0rd9r6yc1h7f")))) + "10dx1gka92m42f8ah1mzylbd71apzrphfa48r5ci7g1j8ysdcs7q")))) (build-system python-build-system) (inputs `(("ffmpeg" ,ffmpeg))) ; for multi-part and >=1080p videos diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index b1b6cbabb8..7fe890502e 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -538,7 +538,7 @@ interface.") (assoc-ref inputs "qtwebengine") "/lib/qt5/libexec/QtWebEngineProcess"))) (wrap-program bin - `("QTWEBENGINEPROCESS_PATH" ":" prefix (,qt-process-path))) + `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path))) #t)))))) (home-page "https://qutebrowser.org/") (synopsis "Minimal, keyboard-focused, vim-like web browser") diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index c38936d55a..0d93af0dc9 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -76,7 +76,7 @@ (define-public wine (package (name "wine") - (version "5.12") + (version "5.21") (source (origin (method url-fetch) @@ -88,7 +88,7 @@ (string-append "https://dl.winehq.org/wine/source/" dir "wine-" version ".tar.xz"))) (sha256 - (base32 "0bl4ii4h1w4z8kb6dpdc1pgwk0wrhm61c2q2nzpcckkrqra75wc7")))) + (base32 "0h185lfpid6cw1sz8rmkpky2l11izpb0w8j0cq6ww6yi94jmq6js")))) (build-system gnu-build-system) (native-inputs `(("bison" ,bison) @@ -171,21 +171,22 @@ (let* ((out (assoc-ref outputs "out")) (icd (string-append out "/share/vulkan/icd.d"))) (mkdir-p icd) - (copy-file (string-append (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/radeon_icd.i686.json") + (copy-file (string-append + (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/radeon_icd.i686.json") (string-append icd "/radeon_icd.i686.json")) - (copy-file (string-append (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/intel_icd.i686.json") + (copy-file (string-append + (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/intel_icd.i686.json") (string-append icd "/intel_icd.i686.json")) (wrap-program (string-append out "/bin/wine-preloader") - `("VK_ICD_FILENAMES" ":" = - (,(string-append icd - "/radeon_icd.i686.json" ":" - icd "/intel_icd.i686.json")))) + `("VK_ICD_FILENAMES" ":" = + (,(string-append icd + "/radeon_icd.i686.json" ":" + icd "/intel_icd.i686.json")))) #t))))) (_ - `()) - ) + `())) (add-after 'configure 'patch-dlopen-paths ;; Hardcode dlopened sonames to absolute paths. (lambda _ @@ -227,34 +228,35 @@ integrate Windows applications into your desktop.") ;; when installing to x86_64-linux so both are available. ;; TODO: Add more JSON files as they become available in Mesa. ,@(match (%current-system) - ((or "x86_64-linux") - `((add-after 'copy-wine32-binaries 'wrap-executable - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out"))) - (wrap-program (string-append out "/bin/wine-preloader") - `("VK_ICD_FILENAMES" ":" = - (,(string-append (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/radeon_icd.x86_64.json" ":" - (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/intel_icd.x86_64.json" ":" - (assoc-ref inputs "wine") - "/share/vulkan/icd.d/radeon_icd.i686.json" ":" - (assoc-ref inputs "wine") - "/share/vulkan/icd.d/intel_icd.i686.json")))) - (wrap-program (string-append out "/bin/wine64-preloader") - `("VK_ICD_FILENAMES" ":" = - (,(string-append (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/radeon_icd.x86_64.json" - ":" (assoc-ref inputs "mesa") - "/share/vulkan/icd.d/intel_icd.x86_64.json" - ":" (assoc-ref inputs "wine") - "/share/vulkan/icd.d/radeon_icd.i686.json" - ":" (assoc-ref inputs "wine") - "/share/vulkan/icd.d/intel_icd.i686.json")))) - #t))))) - (_ - `()) - ) + ((or "x86_64-linux") + `((add-after 'copy-wine32-binaries 'wrap-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (wrap-program (string-append out "/bin/wine-preloader") + `("VK_ICD_FILENAMES" ":" = + (,(string-append + (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/radeon_icd.x86_64.json" ":" + (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/intel_icd.x86_64.json" ":" + (assoc-ref inputs "wine") + "/share/vulkan/icd.d/radeon_icd.i686.json" ":" + (assoc-ref inputs "wine") + "/share/vulkan/icd.d/intel_icd.i686.json")))) + (wrap-program (string-append out "/bin/wine64-preloader") + `("VK_ICD_FILENAMES" ":" = + (,(string-append + (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/radeon_icd.x86_64.json" + ":" (assoc-ref inputs "mesa") + "/share/vulkan/icd.d/intel_icd.x86_64.json" + ":" (assoc-ref inputs "wine") + "/share/vulkan/icd.d/radeon_icd.i686.json" + ":" (assoc-ref inputs "wine") + "/share/vulkan/icd.d/intel_icd.i686.json")))) + #t))))) + (_ + `())) (add-after 'install 'copy-wine32-binaries (lambda* (#:key outputs #:allow-other-keys) (let* ((wine32 (assoc-ref %build-inputs "wine")) @@ -267,6 +269,13 @@ integrate Windows applications into your desktop.") (copy-file (string-append wine32 "/bin/.wine-preloader-real") (string-append out "/bin/wine-preloader")) #t))) + (add-after 'install 'copy-wine32-libraries + (lambda* (#:key outputs #:allow-other-keys) + (let* ((wine32 (assoc-ref %build-inputs "wine")) + (out (assoc-ref %outputs "out"))) + (copy-recursively (string-append wine32 "/lib/wine32") + (string-append out "/lib/wine32")) + #t))) (add-after 'compress-documentation 'copy-wine32-manpage (lambda* (#:key outputs #:allow-other-keys) (let* ((wine32 (assoc-ref %build-inputs "wine")) diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index 02e8093ddf..fbe06a1c76 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016 Florian Paul Schmidt <mista.tapas@gmx.net> -;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net> +;;; Copyright © 2016, 2020 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Petter <petter@mykolab.ch> ;;; Copyright © 2017 Nikita <nikita@n0.is> @@ -64,6 +64,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix gexp) #:use-module ((guix licenses) #:hide (freetype)) #:use-module (guix packages) @@ -202,6 +203,41 @@ storage system.") to share commonly used Xfce widgets among the Xfce applications.") (license lgpl2.0+))) +(define-public elementary-xfce-icon-theme + (package + (name "elementary-xfce-icon-theme") + (version "0.15.1") + (source (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/shimmerproject/elementary-xfce") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1rl15kh9c7qxw4pvwmw44fb4v3vwh6zin4wpx55bnvm5j76y6p3f")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no check target + #:make-flags '("CC=gcc") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'make-git-checkout-writable + (lambda _ + (for-each make-file-writable (find-files ".")) + #t))))) + (native-inputs + `(("gtk+" ,gtk+) + ("optipng" ,optipng) + ("pkg-config" ,pkg-config))) + (home-page "https://shimmerproject.org/") + (synopsis "Elementary icons extended and maintained for Xfce") + (description "This is a fork of the upstream elementary project. This icon +theme is supposed to keep everything working for Xfce, but gets updates from +upstream occasionally.") + (license gpl2+))) + (define-public exo (package (name "exo") diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 1db3c2ead1..9dc37addf4 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -992,14 +992,14 @@ the form of functions.") (define-public pugixml (package (name "pugixml") - (version "1.10") + (version "1.11") (source (origin (method url-fetch) (uri (string-append "https://github.com/zeux/pugixml/releases/download/v" version "/pugixml-" version ".tar.gz")) (sha256 - (base32 "02l7nllhydggf7s64d2x84kckbmwag4lsn28sc82953hnkxrkwsm")))) + (base32 "0b5apqiisq8yk51x0cwks4h2m0zd2zgjdy0w80qp9h5rccz3v496")))) (build-system cmake-build-system) (arguments `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON") diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm index d7b4594b9e..60b31e0373 100644 --- a/gnu/services/databases.scm +++ b/gnu/services/databases.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net> +;;; Copyright © 2020 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -465,8 +466,11 @@ storage: mysql-configuration make-mysql-configuration mysql-configuration? (mysql mysql-configuration-mysql (default mariadb)) + (bind-address mysql-configuration-bind-address (default "127.0.0.1")) (port mysql-configuration-port (default 3306)) - (extra-content mysql-configuration-extra-content (default ""))) + (socket mysql-configuration-socket (default "/run/mysqld/mysqld.sock")) + (extra-content mysql-configuration-extra-content (default "")) + (auto-upgrade? mysql-configuration-auto-upgrade? (default #t))) (define %mysql-accounts (list (user-group @@ -481,10 +485,11 @@ storage: (define mysql-configuration-file (match-lambda - (($ <mysql-configuration> mysql port extra-content) + (($ <mysql-configuration> mysql bind-address port socket extra-content) (mixed-text-file "my.cnf" "[mysqld] datadir=/var/lib/mysql -socket=/run/mysqld/mysqld.sock +socket=" socket " +bind-address=" bind-address " port=" (number->string port) " " extra-content " ")))) @@ -556,6 +561,52 @@ FLUSH PRIVILEGES; #:user "mysql" #:group "mysql"))) (stop #~(make-kill-destructor))))) +(define (mysql-upgrade-wrapper mysql socket-file) + ;; The MySQL socket and PID file may appear before the server is ready to + ;; accept connections. Ensure the socket is responsive before attempting + ;; to run the upgrade script. + (program-file + "mysql-upgrade-wrapper" + #~(begin + (let ((mysql-upgrade #$(file-append mysql "/bin/mysql_upgrade")) + (timeout 10)) + (begin + (let loop ((i 0)) + (catch 'system-error + (lambda () + (let ((sock (socket PF_UNIX SOCK_STREAM 0))) + (connect sock AF_UNIX #$socket-file) + (close-port sock) + ;; The socket is ready! + (execl mysql-upgrade mysql-upgrade + (string-append "--socket=" #$socket-file)))) + (lambda args + (if (< i timeout) + (begin + (sleep 1) + (loop (+ 1 i))) + ;; No luck, give up. + (throw 'timeout-error + "MySQL server did not appear in time!")))))))))) + +(define (mysql-upgrade-shepherd-service config) + (list (shepherd-service + (provision '(mysql-upgrade)) + (requirement '(mysql)) + (one-shot? #t) + (documentation "Upgrade MySQL database schemas.") + (start (let ((mysql (mysql-configuration-mysql config)) + (socket (mysql-configuration-socket config))) + #~(make-forkexec-constructor + (list #$(mysql-upgrade-wrapper mysql socket)) + #:user "mysql" #:group "mysql")))))) + +(define (mysql-shepherd-services config) + (if (mysql-configuration-auto-upgrade? config) + (append (mysql-shepherd-service config) + (mysql-upgrade-shepherd-service config)) + (mysql-shepherd-service config))) + (define mysql-service-type (service-type (name 'mysql) @@ -565,15 +616,11 @@ FLUSH PRIVILEGES; (service-extension activation-service-type %mysql-activation) (service-extension shepherd-root-service-type - mysql-shepherd-service))) + mysql-shepherd-services))) (default-value (mysql-configuration)))) -(define* (mysql-service #:key (config (mysql-configuration))) - "Return a service that runs @command{mysqld}, the MySQL or MariaDB -database server. - -The optional @var{config} argument specifies the configuration for -@command{mysqld}, which should be a @code{<mysql-configuration>} object." +(define-deprecated (mysql-service #:key (config (mysql-configuration))) + mysql-service-type (service mysql-service-type config)) diff --git a/gnu/tests/databases.scm b/gnu/tests/databases.scm index d3045cc3f7..31d5ae4c6a 100644 --- a/gnu/tests/databases.scm +++ b/gnu/tests/databases.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> +;;; Copyright © 2020 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -271,7 +272,7 @@ (define %mysql-os (simple-operating-system - (mysql-service))) + (service mysql-service-type))) (define* (run-mysql-test) "Run tests in %MYSQL-OS." @@ -311,6 +312,48 @@ ((pid) (number? pid)))))) marionette)) + (test-assert "mysql_upgrade completed" + (wait-for-file "/var/lib/mysql/mysql_upgrade_info" marionette)) + + (test-eq "create database" + 0 + (marionette-eval + '(begin + (system* #$(file-append mariadb "/bin/mysql") + "-e" "CREATE DATABASE guix;")) + marionette)) + + (test-eq "create table" + 0 + (marionette-eval + '(begin + (system* + #$(file-append mariadb "/bin/mysql") "guix" + "-e" "CREATE TABLE facts (id INT, data VARCHAR(12));")) + marionette)) + + (test-eq "insert data" + 0 + (marionette-eval + '(begin + (system* #$(file-append mariadb "/bin/mysql") "guix" + "-e" "INSERT INTO facts VALUES (1, 'awesome')")) + marionette)) + + (test-equal "retrieve data" + "awesome\n" + (marionette-eval + '(begin + (use-modules (ice-9 popen)) + (let* ((port (open-pipe* + OPEN_READ + #$(file-append mariadb "/bin/mysql") "guix" + "-NB" "-e" "SELECT data FROM facts WHERE id=1;")) + (output (get-string-all port))) + (close-pipe port) + output)) + marionette)) + (test-end) (exit (= (test-runner-fail-count (test-runner-current)) 0))))) diff --git a/guix/channels.scm b/guix/channels.scm index 916d663e9f..0c84eed477 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -72,6 +72,7 @@ openpgp-fingerprint->bytevector openpgp-fingerprint + %default-guix-channel %default-channels guix-channel? @@ -170,13 +171,16 @@ to the corresponding bytevector." ;; URL of the default 'guix' channel. "https://git.savannah.gnu.org/git/guix.git") +(define %default-guix-channel + (channel + (name 'guix) + (branch "master") + (url %default-channel-url) + (introduction %guix-channel-introduction))) + (define %default-channels ;; Default list of channels. - (list (channel - (name 'guix) - (branch "master") - (url %default-channel-url) - (introduction %guix-channel-introduction)))) + (list %default-guix-channel)) (define (guix-channel? channel) "Return true if CHANNEL is the 'guix' channel." |