Merge remote-tracking branch 'origin/master' into core-updates

This commit is contained in:
Efraim Flashner 2018-11-21 19:41:43 +02:00
commit 9cf4ff199c
No known key found for this signature in database
GPG Key ID: 41AAE7DCCA3D8351
22 changed files with 1131 additions and 86 deletions

2
.gitignore vendored
View File

@ -90,7 +90,7 @@
/nix/config.h.in /nix/config.h.in
/nix/nix-daemon/nix-daemon.cc /nix/nix-daemon/nix-daemon.cc
/nix/nix-setuid-helper/nix-setuid-helper.cc /nix/nix-setuid-helper/nix-setuid-helper.cc
/nix/scripts/guix-authenticate /nix/scripts/authenticate
/nix/scripts/list-runtime-roots /nix/scripts/list-runtime-roots
/nix/scripts/offload /nix/scripts/offload
/nix/scripts/substitute /nix/scripts/substitute

View File

@ -101,6 +101,7 @@ MODULES = \
guix/build-system/android-ndk.scm \ guix/build-system/android-ndk.scm \
guix/build-system/ant.scm \ guix/build-system/ant.scm \
guix/build-system/cargo.scm \ guix/build-system/cargo.scm \
guix/build-system/clojure.scm \
guix/build-system/cmake.scm \ guix/build-system/cmake.scm \
guix/build-system/dub.scm \ guix/build-system/dub.scm \
guix/build-system/emacs.scm \ guix/build-system/emacs.scm \
@ -173,6 +174,7 @@ MODULES = \
guix/build/syscalls.scm \ guix/build/syscalls.scm \
guix/build/gremlin.scm \ guix/build/gremlin.scm \
guix/build/debug-link.scm \ guix/build/debug-link.scm \
guix/build/clojure-build-system.scm \
guix/build/clojure-utils.scm \ guix/build/clojure-utils.scm \
guix/build/emacs-utils.scm \ guix/build/emacs-utils.scm \
guix/build/java-utils.scm \ guix/build/java-utils.scm \

View File

@ -3275,6 +3275,10 @@ produce a list of channel specifications that can be passed to @command{guix
pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Invoking pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Invoking
guix pull}). guix pull}).
@end table @end table
@item --profile=@var{profile}
@itemx -p @var{profile}
Display information about @var{profile}.
@end table @end table
@node Invoking guix pack @node Invoking guix pack

View File

@ -1048,6 +1048,7 @@ dist_patch_DATA = \
%D%/packages/patches/pinball-missing-separators.patch \ %D%/packages/patches/pinball-missing-separators.patch \
%D%/packages/patches/pinball-src-deps.patch \ %D%/packages/patches/pinball-src-deps.patch \
%D%/packages/patches/pinball-system-ltdl.patch \ %D%/packages/patches/pinball-system-ltdl.patch \
%D%/packages/patches/pinentry-efl.patch \
%D%/packages/patches/pingus-sdl-libs-config.patch \ %D%/packages/patches/pingus-sdl-libs-config.patch \
%D%/packages/patches/pius.patch \ %D%/packages/patches/pius.patch \
%D%/packages/patches/pixman-CVE-2016-5296.patch \ %D%/packages/patches/pixman-CVE-2016-5296.patch \

View File

@ -9,7 +9,7 @@
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at> ;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at>
;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net> ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is> ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
@ -2455,26 +2455,20 @@ make it a perfect utility on modern distros.")
(version "1.7.2") (version "1.7.2")
(source (source
(origin (origin
(method url-fetch) (method git-fetch)
(uri (string-append "https://github.com/01org/thermal_daemon/archive/v" (uri (git-reference
version ".tar.gz")) (url "https://github.com/01org/thermal_daemon")
(file-name (string-append name "-" version ".tar.gz")) (commit (string-append "v" version))))
(sha256 (base32 (file-name (git-file-name name version))
"15a6vb67y5wsmf0irrq7sxam18yqpz64130k83ryf24mp40h661b")))) (sha256
(base32
"1cs2pq8xvfnsvrhg2bxawk4kn3z1qmfrnpnhs178pvfbglzh15hc"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases `(#:configure-flags
(modify-phases %standard-phases
(add-after 'unpack 'bootstrap
(lambda _
(invoke "sh" "autogen.sh")
#t)))
#:configure-flags
(let ((out (assoc-ref %outputs "out"))) (let ((out (assoc-ref %outputs "out")))
(list (string-append "--sysconfdir=" (list (string-append "--sysconfdir="
out "/etc") out "/etc")
(string-append "--with-udev-dir="
out "/lib/udev")
(string-append "--with-dbus-sys-dir=" (string-append "--with-dbus-sys-dir="
out "/etc/dbus-1/system.d") out "/etc/dbus-1/system.d")
"--localstatedir=/var")))) "--localstatedir=/var"))))

View File

@ -466,7 +466,7 @@ controls are allowable notes, strength of correction, LFO for vibrato and
formant warp.") formant warp.")
;; All code except the FFT routine is licensed under GPLv2+. ;; All code except the FFT routine is licensed under GPLv2+.
;; The FFT routine is under BSD-3. ;; The FFT routine is under BSD-3.
(license (list license:gpl2+)))) (license license:gpl2+)))
(define-public azr3 (define-public azr3
(package (package

View File

@ -555,8 +555,8 @@ board-independent tools.")))
(define-public u-boot-beagle-bone-black (define-public u-boot-beagle-bone-black
(make-u-boot-package "am335x_boneblack" "arm-linux-gnueabihf")) (make-u-boot-package "am335x_boneblack" "arm-linux-gnueabihf"))
(define-public u-boot-pine64-plus (define-public (make-u-boot-sunxi64-package board triplet)
(let ((base (make-u-boot-package "pine64_plus" "aarch64-linux-gnu"))) (let ((base (make-u-boot-package board triplet)))
(package (package
(inherit base) (inherit base)
(arguments (arguments
@ -574,9 +574,12 @@ board-independent tools.")))
) )
#t)))))) #t))))))
(native-inputs (native-inputs
`(("firmware" ,arm-trusted-firmware-pine64-plus) `(("firmware" ,arm-trusted-firmware-sun50i-a64)
,@(package-native-inputs base)))))) ,@(package-native-inputs base))))))
(define-public u-boot-pine64-plus
(make-u-boot-sunxi64-package "pine64_plus" "aarch64-linux-gnu"))
(define-public u-boot-bananapi-m2-ultra (define-public u-boot-bananapi-m2-ultra
(make-u-boot-package "Bananapi_M2_Ultra" "arm-linux-gnueabihf")) (make-u-boot-package "Bananapi_M2_Ultra" "arm-linux-gnueabihf"))

View File

@ -696,13 +696,13 @@ sfArk file format to the uncompressed sf2 format.")
(package (package
(name "libmspack") (name "libmspack")
(home-page "https://cabextract.org.uk/libmspack/") (home-page "https://cabextract.org.uk/libmspack/")
(version "0.8") (version "0.9.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append home-page name "-" version "alpha.tar.gz")) (uri (string-append home-page name "-" version "alpha.tar.gz"))
(sha256 (sha256
(base32 "1byx98jajv927f0a7np0hvs8lxzccny6pj8vrrgmldv1jlp7jcq5")))) (base32 "0h1f5w8rjnq7dcqpqm1mpx5m8q80691kid6f7npqlqwqqzckd8v2"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags '("--disable-static"))) `(#:configure-flags '("--disable-static")))
@ -1085,13 +1085,13 @@ smaller than those produced by @code{Xdelta}.")
(package (package
(name "cabextract") (name "cabextract")
(home-page "https://cabextract.org.uk/") (home-page "https://cabextract.org.uk/")
(version "1.7") (version "1.9")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append home-page name "-" version ".tar.gz")) (uri (string-append home-page name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1g86wmb8lkjiv2jarfz979ngbgg7d3si8x5il4g801604v406wi9")) "1hf4zhjxfdgq9x172r5zfdnafma9q0zf7372syn8hcn7hcypkg0v"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
@ -1099,11 +1099,27 @@ smaller than those produced by @code{Xdelta}.")
(delete-file-recursively "mspack") (delete-file-recursively "mspack")
#t)))) #t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments '(#:configure-flags '("--with-external-libmspack"))) (arguments
'(#:configure-flags '("--with-external-libmspack")
#:phases
(modify-phases %standard-phases
;; cabextract needs some of libmspack's header files.
;; These are located in the "mspack" directory of libmspack.
(add-before 'build 'unpack-libmspack
(lambda* (#:key inputs #:allow-other-keys)
(let ((dir-name "libmspack-src"))
(mkdir dir-name)
(invoke "tar" "-xvf" (assoc-ref inputs "libmspack-source")
"-C" dir-name "--strip-components" "1")
(rename-file (string-append dir-name "/mspack")
"mspack")
(delete-file-recursively dir-name)
#t))))))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))
(inputs (inputs
`(("libmspack" ,libmspack))) `(("libmspack" ,libmspack)
("libmspack-source" ,(package-source libmspack))))
(synopsis "Tool to unpack Cabinet archives") (synopsis "Tool to unpack Cabinet archives")
(description "Extracts files out of Microsoft Cabinet (.cab) archives") (description "Extracts files out of Microsoft Cabinet (.cab) archives")
;; Some source files specify gpl2+, lgpl2+, however COPYING is gpl3. ;; Some source files specify gpl2+, lgpl2+, however COPYING is gpl3.

View File

@ -265,6 +265,41 @@ account authentication.")
(define-public python2-django-allauth (define-public python2-django-allauth
(package-with-python2 python-django-allauth)) (package-with-python2 python-django-allauth))
(define-public python-django-debug-toolbar
(package
(name "python-django-debug-toolbar")
(version "1.10.1")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/jazzband/django-debug-toolbar/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1rww056hyzks8spbgf4h7kf6ybxlc5p08a2b6gn1nqrrzs4yx9sy"))))
(build-system python-build-system)
(propagated-inputs
`(("python-sqlparse" ,python-sqlparse)
("python-django" ,python-django)))
(native-inputs
`(("python-django-jinja" ,python-django-jinja)
("python-html5lib" ,python-html5lib)))
(arguments
'(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
(invoke "make" "test"))))))
(home-page
"https://github.com/jazzband/django-debug-toolbar")
(synopsis "Toolbar to help with developing Django applications")
(description
"A configurable set of panels that display information about the current
request and response as a toolbar on the rendered page.")
(license license:bsd-3)))
(define-public python-django-gravatar2 (define-public python-django-gravatar2
(package (package
(name "python-django-gravatar2") (name "python-django-gravatar2")
@ -338,6 +373,47 @@ merging, minifying and compiling CSS and Javascript files.")
(define-public python2-django-assets (define-public python2-django-assets
(package-with-python2 python-django-assets)) (package-with-python2 python-django-assets))
(define-public python-django-jinja
(package
(name "python-django-jinja")
(version "2.4.1")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/niwinz/django-jinja/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0bzrb4m6wx9ph5cpvz7wpvg5k6ksvj0dnxlg0nhhqskhvp46brs1"))))
(build-system python-build-system)
(propagated-inputs
`(("python-django" ,python-django)
("python-jinja2" ,python-jinja2)
("python-pytz" ,python-pytz)
("python-django-pipeline" ,python-django-pipeline)))
(arguments
'(;; TODO Tests currently fail due to issues with the configuration for
;; django-pipeline
#:tests? #f
#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(or
(not tests?)
(with-directory-excursion "testing"
(invoke "python" "runtests.py"))))))))
(home-page
"https://niwinz.github.io/django-jinja/latest/")
(synopsis "Simple jinja2 templating backend for Django")
(description
"This package provides a templating backend for Django, using Jinja2. It
provides certain advantages over the builtin Jinja2 backend in Django, for
example, explicit calls to callables from templates and better performance.")
(license license:bsd-3)))
(define-public python-django-jsonfield (define-public python-django-jsonfield
(package (package
(name "python-django-jsonfield") (name "python-django-jsonfield")
@ -518,6 +594,46 @@ project.")
(define-public python2-django-overextends (define-public python2-django-overextends
(package-with-python2 python-django-overextends)) (package-with-python2 python-django-overextends))
(define-public python-django-pipeline
(package
(name "python-django-pipeline")
(version "1.6.14")
(source
(origin
(method url-fetch)
(uri (pypi-uri "django-pipeline" version))
(sha256
(base32
"1a207y71r7za033ira0qmh2yrgp5rq0l04gw2fg9b8jri7sslrzg"))))
(build-system python-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-source
(lambda _
(substitute* "tests/tests/test_compiler.py"
(("\\/usr\\/bin\\/env")
(which "env")))))
(replace 'check
(lambda*(#:key tests? #:allow-other-keys)
(or
(not tests?)
(begin
(setenv "DJANGO_SETTINGS_MODULE" "tests.settings")
(invoke "django-admin" "test" "tests"))))))))
(propagated-inputs
`(("python-django" ,python-django)
("python-slimit" ,python-slimit)
("python-jsmin" ,python-jsmin)))
(home-page
"https://github.com/jazzband/django-pipeline")
(synopsis "Asset packaging library for Django")
(description
"Pipeline is an asset packaging library for Django, providing both CSS
and JavaScript concatenation and compression, built-in JavaScript template
support, and optional data-URI image and font embedding.")
(license license:expat)))
(define-public python-django-redis (define-public python-django-redis
(package (package
(name "python-django-redis") (name "python-django-redis")

View File

@ -4698,7 +4698,7 @@ indentation (space indentation only).
(define-public emacs-elpy (define-public emacs-elpy
(package (package
(name "emacs-elpy") (name "emacs-elpy")
(version "1.24.0") (version "1.26.0")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -4707,7 +4707,7 @@ indentation (space indentation only).
(file-name (string-append name "-" version "-checkout")) (file-name (string-append name "-" version "-checkout"))
(sha256 (sha256
(base32 (base32
"0rsg8a9nwqfkv0xcs11jzfp10ij7jm0v2ikx19zv2v7awqy0q5wf")))) "0wynzp5xmrgiggmam82n6lfaiqmfl4n3ccpsgnh86r6pbsmssxjk"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(arguments (arguments
`(#:include (cons* "^elpy/[^/]+\\.py$" "^snippets\\/" %default-include) `(#:include (cons* "^elpy/[^/]+\\.py$" "^snippets\\/" %default-include)

View File

@ -446,25 +446,26 @@ such as:
(license (list license:bsd-3 (license (list license:bsd-3
license:bsd-2)))) ; libfdt license:bsd-2)))) ; libfdt
(define-public arm-trusted-firmware-pine64-plus (define-public arm-trusted-firmware-sun50i-a64
(let ((base (make-arm-trusted-firmware "sun50iw1p1")) (let ((base (make-arm-trusted-firmware "sun50i_a64"))
;; Vendor's arm trusted firmware branch hasn't been upstreamed yet. ;; Use unreleased version which enables additional features needed for
(commit "ae78724247a01560164d607ed66db111c74d8df0") ;; LCD support
(commit "cabe0a31801e99e7abb84d2114ded6bb56f3c71e")
(revision "1")) (revision "1"))
(package (package
(inherit base) (inherit base)
(name "arm-trusted-firmware-pine64-plus") (name "arm-trusted-firmware-sun50i-a64")
(version (string-append "1.2-" revision "." (string-take commit 7))) (version (git-version "2.0" revision commit))
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/apritzel/arm-trusted-firmware.git") (url "https://github.com/ARM-software/arm-trusted-firmware.git")
(commit commit))) (commit commit)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0r4xnlq7v9khjfcg6gqp7nmrmnw4z1r8bipwdr07png1dcbb8214"))))))) "0srw2zj3vn5d2fwzjpwa5h70d5bwvb79jnpdvmd395npv0gxshdz")))))))
(define-public arm-trusted-firmware-puma-rk3399 (define-public arm-trusted-firmware-puma-rk3399
(let ((base (make-arm-trusted-firmware "rk3399")) (let ((base (make-arm-trusted-firmware "rk3399"))

View File

@ -99,13 +99,14 @@ in print. With attention to detail for high resolution rendering.")
(name "font-ubuntu") (name "font-ubuntu")
(version "0.83") (version "0.83")
(source (origin (source (origin
(method url-fetch) (method git-fetch)
(uri (string-append (uri (git-reference
"http://font.ubuntu.com/download/ubuntu-font-family-" (url "https://salsa.debian.org/fonts-team/fonts-ubuntu")
version ".zip")) (commit (string-append "upstream/" version))))
(file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0hjvq2x758dx0sfwqhzflns0ns035qm7h6ygskbx1svzg517sva5")))) "1d2xrjpxy70f3nsgqiggwv6pj06qglf5vj2847pqx60w3ygi903g"))))
(build-system font-build-system) (build-system font-build-system)
(home-page "http://font.ubuntu.com/") (home-page "http://font.ubuntu.com/")
(synopsis "The Ubuntu Font Family") (synopsis "The Ubuntu Font Family")

View File

@ -40,6 +40,8 @@
#:use-module (gnu packages curl) #:use-module (gnu packages curl)
#:use-module (gnu packages crypto) #:use-module (gnu packages crypto)
#:use-module (gnu packages emacs) #:use-module (gnu packages emacs)
#:use-module (gnu packages enlightenment)
#:use-module (gnu packages gettext)
#:use-module (gnu packages guile) #:use-module (gnu packages guile)
#:use-module (gnu packages openldap) #:use-module (gnu packages openldap)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
@ -836,6 +838,34 @@ software.")))
"Pinentry provides a console and a Qt GUI that allows users to enter a "Pinentry provides a console and a Qt GUI that allows users to enter a
passphrase when @code{gpg} is run and needs it."))) passphrase when @code{gpg} is run and needs it.")))
(define-public pinentry-efl
(package
(inherit pinentry-tty)
(name "pinentry-efl")
(source
(origin
(inherit (package-source pinentry-tty))
(patches (search-patches "pinentry-efl.patch"))))
(arguments
'(#:configure-flags '("--enable-pinentry-efl")
#:phases
(modify-phases %standard-phases
(replace 'bootstrap
(lambda _
(invoke "sh" "autogen.sh"))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("gettext" ,gettext-minimal)
,@(package-native-inputs pinentry-tty)))
(inputs
`(("efl" ,efl)
,@(package-inputs pinentry-tty)))
(description
"Pinentry provides a console and a graphical interface for the
@dfn{Enlightenment Foundation Libraries} (EFL) that allows users to enter a
passphrase when @code{gpg} is run and needs it.")))
(define-public pinentry (define-public pinentry
(package (inherit pinentry-gtk2) (package (inherit pinentry-gtk2)
(name "pinentry"))) (name "pinentry")))

View File

@ -9388,7 +9388,8 @@ that is part of the SWT Tools project.")
,(match (%current-system) ,(match (%current-system)
((or "i686-linux" "armhf-linux") ((or "i686-linux" "armhf-linux")
"linux32") "linux32")
((or "x86_64-linux" "aarch64-linux") ((or "x86_64-linux" "aarch64-linux"
"mips64el-linux")
"linux64"))))) "linux64")))))
(install-file "src/main/native-package/src/libjansi.so" dir)) (install-file "src/main/native-package/src/libjansi.so" dir))
#t)) #t))

View File

@ -533,12 +533,8 @@ statistical profiler, a code coverage tool, and many other extensions.")
(install-file kernel libdir) (install-file kernel libdir)
(install-file heap libdir) (install-file heap libdir)
(let ((dirs '("lib" "library" "examples" "tools" "objc-bridge" (let ((dirs '("lib" "library" "examples" "contrib"
,(match (%current-system) "tools" "objc-bridge")))
("x86_64-linux"
"x86-headers64")
("i686-linux"
"x86-headers")))))
(for-each copy-recursively (for-each copy-recursively
dirs dirs
(map (cut string-append libdir <>) dirs))) (map (cut string-append libdir <>) dirs)))

View File

@ -0,0 +1,798 @@
https://git.gnupg.org/cgi-bin/gitweb.cgi?p=pinentry.git;a=commit;h=948105b7a34ec9a9e5479d376b7c86bafee50a01
This patch can be removed with the next release of pinentry.
From 948105b7a34ec9a9e5479d376b7c86bafee50a01 Mon Sep 17 00:00:00 2001
From: "William L. Thomson Jr" <wlt@o-sinc.com>
Date: Tue, 29 May 2018 22:50:47 +0100
Subject: [PATCH] efl: Add an EFL-based pinentry.
* NEWS: Update.
* Makefile.am: Add new efl subdirectory.
* configure.ac: Add --enable-pinentry-efl option.
* efl/Makefile.am: New file.
* efl/pinentry-efl.c: New file.
Signed-off-by: Damien Goutte-Gattat <dgouttegattat@incenp.org>
---
Makefile.am | 8 +-
configure.ac | 44 +++-
efl/Makefile.am | 38 ++++
efl/pinentry-efl.c | 623 +++++++++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 716 insertions(+), 2 deletions(-)
create mode 100644 efl/Makefile.am
create mode 100644 efl/pinentry-efl.c
diff --git a/Makefile.am b/Makefile.am
index 8c8b8e5..b8fd0e1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -82,10 +82,16 @@ else
pinentry_fltk =
endif
+if BUILD_PINENTRY_EFL
+pinentry_efl = efl
+else
+pinentry_efl =
+endif
+
SUBDIRS = m4 secmem pinentry ${pinentry_curses} ${pinentry_tty} \
${pinentry_emacs} ${pinentry_gtk_2} ${pinentry_gnome_3} \
${pinentry_qt} ${pinentry_tqt} ${pinentry_w32} \
- ${pinentry_fltk} doc
+ ${pinentry_fltk} ${pinentry_efl} doc
install-exec-local:
diff --git a/configure.ac b/configure.ac
index ff6c2e0..e305e44 100644
--- a/configure.ac
+++ b/configure.ac
@@ -419,6 +419,42 @@ fi
dnl
+dnl Check for EFL pinentry programs.
+dnl
+AC_ARG_ENABLE(pinentry-efl,
+ AC_HELP_STRING([--enable-pinentry-efl], [build EFL pinentry]),
+ pinentry_efl=$enableval, pinentry_efl=maybe)
+
+dnl check for pkg-config
+if test "$pinentry_efl" != "no"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ if test x"${PKG_CONFIG}" = xno ; then
+ pinentry_efl=no
+ fi
+fi
+
+if test "$pinentry_efl" != "no"; then
+ AC_MSG_CHECKING([for efl])
+ "${PKG_CONFIG}" --exists 'elementary >= 1.18'
+ if test $? -ne 0 ; then
+ AC_MSG_RESULT([no])
+ AC_MSG_WARN([efl >= 1.18 is required for efl pinentry])
+ pinentry_efl=no
+ else
+ AC_MSG_RESULT([yes])
+ EFL_CFLAGS=`"${PKG_CONFIG}" --cflags ecore-x elementary`
+ EFL_LIBS=`"${PKG_CONFIG}" --libs ecore-x elementary`
+ AC_SUBST(EFL_CFLAGS)
+ AC_SUBST(EFL_LIBS)
+ if test "$pinentry_efl" != "no"
+ then
+ pinentry_efl=yes
+ fi
+ fi
+fi
+AM_CONDITIONAL(BUILD_PINENTRY_EFL, test "$pinentry_efl" = "yes")
+
+dnl
dnl Check for GTK+-2 / GNOME3 pinentry programs.
dnl
AC_ARG_ENABLE(pinentry-gtk2,
@@ -645,7 +681,11 @@ else
if test "$pinentry_tqt" = "yes"; then
PINENTRY_DEFAULT=pinentry-tqt
else
- AC_MSG_ERROR([[No pinentry enabled.]])
+ if test "$pinentry_efl" = "yes"; then
+ PINENTRY_DEFAULT=pinentry-efl
+ else
+ AC_MSG_ERROR([[No pinentry enabled.]])
+ fi
fi
fi
fi
@@ -721,6 +761,7 @@ secmem/Makefile
pinentry/Makefile
curses/Makefile
tty/Makefile
+efl/Makefile
emacs/Makefile
gtk+-2/Makefile
gnome3/Makefile
@@ -744,6 +785,7 @@ AC_MSG_NOTICE([
Curses Pinentry ..: $pinentry_curses
TTY Pinentry .....: $pinentry_tty
Emacs Pinentry ...: $pinentry_emacs
+ EFL Pinentry .....: $pinentry_efl
GTK+-2 Pinentry ..: $pinentry_gtk_2
GNOME 3 Pinentry .: $pinentry_gnome_3
Qt Pinentry ......: $pinentry_qt $pinentry_qt_lib_version
diff --git a/efl/Makefile.am b/efl/Makefile.am
new file mode 100644
index 0000000..b986a04
--- /dev/null
+++ b/efl/Makefile.am
@@ -0,0 +1,38 @@
+# Makefile.am - PIN entry EFL frontend.
+# Copyright (C) 2017 Obsidian-Studios, Inc.
+# Author William L. Thomson Jr. <wlt@o-sinc.com>
+#
+# This file is part of PINENTRY.
+#
+# PINENTRY 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 2 of the License, or
+# (at your option) any later version.
+#
+# PINENTRY 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 this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+## Process this file with automake to produce Makefile.in
+
+bin_PROGRAMS = pinentry-efl
+
+if FALLBACK_CURSES
+ncurses_include = $(NCURSES_INCLUDE)
+libcurses = ../pinentry/libpinentry-curses.a $(LIBCURSES) $(LIBICONV)
+else
+ncurses_include =
+libcurses =
+endif
+
+AM_CPPFLAGS = $(COMMON_CFLAGS) $(EFL_CFLAGS) $(ncurses_include) \
+ -I$(top_srcdir)/secmem -I$(top_srcdir)/pinentry
+LDADD = ../pinentry/libpinentry.a ../secmem/libsecmem.a \
+ $(COMMON_LIBS) $(LIBCAP) $(EFL_LIBS) $(libcurses)
+
+pinentry_efl_SOURCES = pinentry-efl.c
diff --git a/efl/pinentry-efl.c b/efl/pinentry-efl.c
new file mode 100644
index 0000000..ca99693
--- /dev/null
+++ b/efl/pinentry-efl.c
@@ -0,0 +1,623 @@
+/* pinentry-efl.c
+ Copyright (C) 2017 Obsidian-Studios, Inc.
+ Author William L. Thomson Jr. <wlt@o-sinc.com>
+
+ Based on pinentry-gtk2.c
+ Copyright (C) 1999 Robert Bihlmeyer <robbe@orcus.priv.at>
+ Copyright (C) 2001, 2002, 2007, 2015 g10 Code GmbH
+ Copyright (C) 2004 by Albrecht Dreß <albrecht.dress@arcor.de>
+
+ pinentry-efl is a pinentry application for the EFL widget set.
+ It tries to follow the Gnome Human Interface Guide as close as
+ possible.
+
+ This program 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 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include <Elementary.h>
+#include <Ecore_X.h>
+#include <gpg-error.h>
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstrict-prototypes"
+#endif
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)
+#pragma GCC diagnostic pop
+#endif
+
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#else
+#include "getopt.h"
+#endif /* HAVE_GETOPT_H */
+
+#include "pinentry.h"
+
+#ifdef FALLBACK_CURSES
+#include "pinentry-curses.h"
+#endif
+
+#define PGMNAME "pinentry-efl"
+
+#ifndef VERSION
+#define VERSION
+#endif
+
+#define ENTRY_HIDE "Hide entry"
+#define ENTRY_SHOW "Show entry"
+
+typedef enum { CONFIRM_CANCEL, CONFIRM_OK, CONFIRM_NOTOK } confirm_value_t;
+
+static const int WIDTH = 480;
+static const int BUTTON_HEIGHT = 27;
+static const int BUTTON_WIDTH = 70;
+static const int BUTTON_ICON_SIZE = 13;
+static const int PADDING = 5;
+
+static Eina_Bool got_input;
+static Ecore_Timer *timer;
+static Evas_Object *check_label;
+static Evas_Object *error_label;
+static Evas_Object *entry;
+static Evas_Object *repeat_entry;
+static Evas_Object *qualitybar;
+static Evas_Object *win;
+static char **pargv;
+static int grab_failed;
+static int passphrase_ok;
+static int confirm_mode;
+static int pargc;
+static confirm_value_t confirm_value;
+static pinentry_t pinentry;
+
+pinentry_cmd_handler_t pinentry_cmd_handler;
+
+static void
+quit (void)
+{
+ evas_object_del(win);
+ elm_exit();
+ ecore_main_loop_quit ();
+}
+
+static void
+delete_event (void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED,
+ void *event EINA_UNUSED)
+{
+ pinentry->close_button = 1;
+ quit ();
+}
+
+static void
+changed_text_handler (void *data EINA_UNUSED,
+ Evas_Object *obj,
+ void *event EINA_UNUSED)
+{
+ const char *s;
+ int length;
+ int percent;
+
+ got_input = EINA_TRUE;
+
+ if (pinentry->repeat_passphrase && repeat_entry)
+ {
+ elm_object_text_set (repeat_entry, "");
+ elm_object_text_set (error_label, "");
+ }
+
+ if (!qualitybar || !pinentry->quality_bar)
+ return;
+
+ s = elm_object_text_get (obj);
+ if (!s)
+ s = "";
+ length = strlen (s);
+ percent = length? pinentry_inq_quality (pinentry, s, length) : 0;
+ evas_object_color_set(qualitybar,
+ 255 - ( 2.55 * percent ),
+ 2.55 * percent, 0, 255);
+ elm_progressbar_value_set (qualitybar, (double) percent / 100.0);
+}
+
+static void
+on_check (void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED)
+{
+ if(elm_check_state_get(obj))
+ {
+ elm_entry_password_set(entry, EINA_FALSE);
+ elm_object_text_set(check_label,ENTRY_HIDE);
+ }
+ else
+ {
+ elm_entry_password_set(entry, EINA_TRUE);
+ elm_object_text_set(check_label,ENTRY_SHOW);
+ }
+ evas_object_size_hint_min_set(check_label,
+ ELM_SCALE_SIZE(BUTTON_WIDTH),
+ ELM_SCALE_SIZE(BUTTON_HEIGHT));
+ evas_object_size_hint_align_set(check_label, 0, 1);
+}
+
+static void
+on_click (void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+{
+ if (confirm_mode)
+ {
+ confirm_value = (confirm_value_t) data;
+ quit ();
+ return;
+ }
+
+ if (data)
+ {
+ const char *s;
+ const char *s2;
+
+ s = elm_entry_entry_get (entry);
+ if (!s)
+ s = "";
+
+ if (pinentry->repeat_passphrase && repeat_entry)
+ {
+ s2 = elm_entry_entry_get (repeat_entry);
+ if (!s2)
+ s2 = "";
+ if (strcmp (s, s2))
+ {
+ elm_object_text_set(error_label,
+ pinentry->repeat_error_string?
+ pinentry->repeat_error_string:
+ "not correctly repeated");
+ elm_object_focus_set(entry,EINA_TRUE);
+ return;
+ }
+ pinentry->repeat_okay = 1;
+ }
+
+ passphrase_ok = 1;
+ pinentry_setbufferlen (pinentry, strlen (s) + 1);
+ if (pinentry->pin)
+ strncpy (pinentry->pin, s, strlen(s) + 1);
+ }
+ quit ();
+}
+
+static void
+enter_callback (void *data, Evas_Object * obj, void *event_info EINA_UNUSED)
+{
+ if (data)
+ elm_object_focus_set (data, 1);
+ else
+ on_click ((void *) CONFIRM_OK, obj, NULL);
+}
+
+static Eina_Bool
+timeout_cb (const void * data)
+{
+ pinentry_t pe = (pinentry_t)data;
+ if (!got_input)
+ {
+ ecore_main_loop_quit();
+ if (pe)
+ pe->specific_err = gpg_error (GPG_ERR_TIMEOUT);
+ }
+
+ timer = NULL;
+ return ECORE_CALLBACK_DONE;
+}
+
+static void
+create_window (void)
+{
+ char *txt;
+ Evas_Object *icon;
+ Evas_Object *obj;
+ Evas_Object *table;
+ int btn_txt_len = 0;
+ int row = 0;
+ int ok_len = 0;
+
+ win = elm_win_util_dialog_add(NULL,"pinentry","enter pin");
+ elm_win_autodel_set(win, EINA_TRUE);
+ elm_win_center(win,EINA_TRUE,EINA_TRUE);
+ evas_object_smart_callback_add(win, "delete,request", delete_event, NULL);
+
+ table = elm_table_add(win);
+ elm_table_padding_set(table,ELM_SCALE_SIZE(PADDING),0);
+ evas_object_size_hint_padding_set (table,
+ ELM_SCALE_SIZE(PADDING),
+ ELM_SCALE_SIZE(PADDING),
+ ELM_SCALE_SIZE(PADDING),
+ ELM_SCALE_SIZE(PADDING));
+ evas_object_show(table);
+
+ if (pinentry->title)
+ {
+ txt = pinentry_utf8_to_local (pinentry->lc_ctype,
+ pinentry->title);
+ elm_win_title_set ( win, txt );
+ free (txt);
+ }
+
+ /* Description Label */
+ if (pinentry->description)
+ {
+ char* aligned;
+ int len;
+
+ obj = elm_label_add(table);
+ elm_label_line_wrap_set (obj, ELM_WRAP_WORD);
+ txt = pinentry_utf8_to_local (pinentry->lc_ctype, pinentry->description);
+ len = strlen(txt)+20; // 20 chars for align tag
+ aligned = calloc(len+1,sizeof(char));
+ if(aligned)
+ {
+ snprintf(aligned,len, "<align=left>%s</align>",txt);
+ elm_object_text_set(obj,aligned);
+ free (aligned);
+ } else
+ elm_object_text_set(obj,txt);
+ free (txt);
+ evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, 0);
+ evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, 0);
+ elm_table_pack(table, obj, 1, row, 5, 1);
+ evas_object_show(obj);
+ row++;
+ }
+ if (!confirm_mode && (pinentry->error || pinentry->repeat_passphrase))
+ {
+ /* Error Label */
+ if (pinentry->error)
+ txt = pinentry_utf8_to_local (pinentry->lc_ctype, pinentry->error);
+ else
+ txt = "";
+ obj = elm_label_add(table);
+ evas_object_color_set(obj, 255, 0, 0, 255);
+ elm_object_text_set(obj,txt);
+ elm_object_style_set(obj,"slide_bounce");
+ elm_label_slide_duration_set(obj, 10);
+ elm_label_slide_mode_set(obj, ELM_LABEL_SLIDE_MODE_ALWAYS);
+ elm_label_slide_go(obj);
+ evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, 0);
+ evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, 0);
+ elm_table_pack(table, obj, 1, row, 5, 1);
+ evas_object_show(obj);
+ if (pinentry->error)
+ free (txt);
+ row++;
+ }
+
+ qualitybar = NULL;
+
+ if (!confirm_mode)
+ {
+
+ if (pinentry->prompt)
+ {
+ /* Entry/Prompt Label */
+ obj = elm_label_add(table);
+ txt = pinentry_utf8_to_local (pinentry->lc_ctype, pinentry->prompt);
+ elm_object_text_set(obj,txt);
+ free (txt);
+ evas_object_size_hint_weight_set(obj, 0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(obj, 1, EVAS_HINT_FILL);
+ elm_table_pack(table, obj, 1, row, 1, 1);
+ evas_object_show(obj);
+ }
+
+ entry = elm_entry_add(table);
+ elm_entry_scrollable_set(entry, EINA_TRUE);
+ elm_scroller_policy_set(entry,
+ ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_OFF);
+ elm_entry_password_set(entry, EINA_TRUE);
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ evas_object_size_hint_weight_set(entry, 0, 0);
+ evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, 0);
+ elm_table_pack(table, entry, 2, row, 4, 1);
+ evas_object_smart_callback_add(entry,
+ "changed",
+ changed_text_handler,
+ NULL);
+ evas_object_show(entry);
+ row++;
+
+ /* Check box */
+ obj = elm_check_add(table);
+ evas_object_size_hint_align_set(obj, 1, EVAS_HINT_FILL);
+ elm_table_pack(table, obj, 1, row, 1, 1);
+ evas_object_smart_callback_add(obj, "changed", on_check, NULL);
+ evas_object_show(obj);
+
+ /* Check Label */
+ check_label = elm_label_add(table);
+ on_check((void *)NULL, obj, (void *)NULL);
+ elm_table_pack(table, check_label, 2, row, 4, 1);
+ evas_object_show(check_label);
+ row++;
+
+ if (pinentry->quality_bar)
+ {
+ /* Quality Bar Label */
+ obj = elm_label_add(table);
+ txt = pinentry_utf8_to_local (pinentry->lc_ctype,
+ pinentry->quality_bar);
+ elm_object_text_set(obj,txt);
+ free (txt);
+ evas_object_size_hint_weight_set(obj, 0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(obj, 1, EVAS_HINT_FILL);
+ elm_table_pack(table, obj, 1, row, 1, 1);
+ evas_object_show(obj);
+
+ qualitybar = elm_progressbar_add(table);
+ evas_object_color_set(qualitybar, 255, 0, 0, 255);
+ evas_object_show(qualitybar);
+ if (pinentry->quality_bar_tt)
+ elm_object_tooltip_text_set (qualitybar,
+ pinentry->quality_bar_tt);
+ evas_object_size_hint_weight_set(qualitybar, EVAS_HINT_EXPAND, 0);
+ evas_object_size_hint_align_set(qualitybar, EVAS_HINT_FILL, 0);
+ elm_table_pack(table, qualitybar, 2, row, 4, 1);
+ row++;
+ }
+
+ if (pinentry->repeat_passphrase)
+ {
+ /* Repeat Label */
+ obj = elm_label_add(table);
+ txt = pinentry_utf8_to_local (pinentry->lc_ctype,
+ pinentry->repeat_passphrase);
+ elm_object_text_set(obj,txt);
+ free (txt);
+ evas_object_size_hint_weight_set(obj, 0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(obj, 1, EVAS_HINT_FILL);
+ elm_table_pack(table, obj, 1, row, 1, 1);
+ evas_object_show(obj);
+
+ repeat_entry = elm_entry_add(table);
+ elm_entry_scrollable_set(repeat_entry, EINA_TRUE);
+ elm_scroller_policy_set(repeat_entry,
+ ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_OFF);
+ elm_entry_password_set(repeat_entry, EINA_TRUE);
+ elm_entry_single_line_set(repeat_entry, EINA_TRUE);
+ evas_object_size_hint_weight_set(repeat_entry, 0, 0);
+ evas_object_size_hint_align_set(repeat_entry, EVAS_HINT_FILL, 0);
+ elm_table_pack(table, repeat_entry, 2, row, 4, 1);
+ evas_object_smart_callback_add (repeat_entry, "activated",
+ enter_callback, NULL);
+ evas_object_show(repeat_entry);
+ evas_object_smart_callback_add (entry,
+ "activated",
+ enter_callback,
+ repeat_entry);
+ evas_object_smart_callback_add(repeat_entry,
+ "activated",
+ on_click,
+ (void *) CONFIRM_OK);
+ row++;
+ }
+ else
+ evas_object_smart_callback_add(entry,
+ "activated",
+ on_click,
+ (void *) CONFIRM_OK);
+ }
+
+ /* Cancel Button */
+ if (!pinentry->one_button)
+ {
+ obj = elm_button_add(table);
+ icon = elm_icon_add (table);
+ evas_object_size_hint_aspect_set (icon, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ if (elm_icon_standard_set (icon, "dialog-cancel") ||
+ elm_icon_standard_set (icon, "window-close"))
+ {
+ evas_object_size_hint_min_set(icon,
+ ELM_SCALE_SIZE(BUTTON_ICON_SIZE),
+ ELM_SCALE_SIZE(BUTTON_ICON_SIZE));
+ elm_object_part_content_set(obj, "icon", icon);
+ evas_object_show (icon);
+ }
+ else
+ evas_object_del(icon);
+ if (pinentry->cancel || pinentry->default_cancel)
+ {
+ if(pinentry->cancel)
+ txt = pinentry_utf8_to_local (pinentry->lc_ctype, pinentry->cancel);
+ else
+ txt = pinentry_utf8_to_local (pinentry->lc_ctype,
+ pinentry->default_cancel);
+ if(txt[0]=='_')
+ elm_object_text_set(obj,txt+1);
+ else
+ elm_object_text_set(obj,txt);
+ btn_txt_len = ELM_SCALE_SIZE(strlen(txt) * (PADDING * 1.5));
+ free (txt);
+ }
+ else
+ elm_object_text_set(obj, "Cancel"); //STOCK_CANCEL
+ evas_object_size_hint_align_set(obj, 0, 0);
+ if(btn_txt_len>ELM_SCALE_SIZE(BUTTON_WIDTH))
+ evas_object_size_hint_min_set(obj,
+ btn_txt_len,
+ ELM_SCALE_SIZE(BUTTON_HEIGHT));
+ else
+ evas_object_size_hint_min_set(obj,
+ ELM_SCALE_SIZE(BUTTON_WIDTH),
+ ELM_SCALE_SIZE(BUTTON_HEIGHT));
+ elm_table_pack(table, obj, 4, row, 1, 1);
+ evas_object_smart_callback_add(obj,
+ "clicked",
+ on_click,
+ (void *) CONFIRM_CANCEL);
+ evas_object_show(obj);
+ }
+
+ /* OK Button */
+ obj = elm_button_add(table);
+ icon = elm_icon_add (table);
+ evas_object_size_hint_aspect_set (icon, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ if (elm_icon_standard_set (icon, "dialog-ok") ||
+ elm_icon_standard_set (icon, "list-add"))
+ {
+ evas_object_size_hint_min_set(icon,
+ ELM_SCALE_SIZE(BUTTON_ICON_SIZE),
+ ELM_SCALE_SIZE(BUTTON_ICON_SIZE));
+ elm_object_part_content_set(obj, "icon", icon);
+ evas_object_show (icon);
+ }
+ else
+ evas_object_del(icon);
+ if (pinentry->ok || pinentry->default_ok)
+ {
+ if(pinentry->ok)
+ txt = pinentry_utf8_to_local (pinentry->lc_ctype, pinentry->ok);
+ else
+ txt = pinentry_utf8_to_local (pinentry->lc_ctype, pinentry->default_ok);
+ if(txt[0]=='_')
+ elm_object_text_set(obj,txt+1);
+ else
+ elm_object_text_set(obj,txt);
+ ok_len = ELM_SCALE_SIZE(strlen(txt) * (PADDING * 1.5));
+ if(ok_len>btn_txt_len)
+ btn_txt_len = ok_len;
+ free (txt);
+ }
+ else
+ elm_object_text_set(obj,"OK"); //STOCK_OK
+ evas_object_size_hint_align_set(obj, 0, 0);
+ if(btn_txt_len>ELM_SCALE_SIZE(BUTTON_WIDTH))
+ evas_object_size_hint_min_set(obj,
+ btn_txt_len,
+ ELM_SCALE_SIZE(BUTTON_HEIGHT));
+ else
+ evas_object_size_hint_min_set(obj,
+ ELM_SCALE_SIZE(BUTTON_WIDTH),
+ ELM_SCALE_SIZE(BUTTON_HEIGHT));
+ elm_table_pack(table, obj, 5, row, 1, 1);
+ evas_object_smart_callback_add(obj, "clicked", on_click, (void *) CONFIRM_OK);
+ evas_object_show(obj);
+
+ /* Key/Lock Icon */
+ obj = elm_icon_add (win);
+ evas_object_size_hint_aspect_set (obj, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ if (elm_icon_standard_set (obj, "dialog-password"))
+ {
+ double ic_size = WIDTH/5;
+ if(row==0)
+ ic_size = ic_size/3.5;
+ else if(row<4)
+ ic_size = ic_size - ic_size/row;
+ evas_object_size_hint_min_set(obj,
+ ELM_SCALE_SIZE(ic_size),
+ ELM_SCALE_SIZE(ic_size));
+ evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, 0.5);
+ elm_table_pack(table, obj, 0, 0, 1, row? row:1);
+ evas_object_show (obj);
+ }
+ else
+ evas_object_del(obj);
+
+ /* Box for padding */
+ obj = elm_box_add (win);
+ elm_box_pack_end (obj, table);
+ evas_object_show (obj);
+
+ elm_win_resize_object_add(win,obj);
+ evas_object_show(win);
+
+ if(entry)
+ elm_object_focus_set (entry, EINA_TRUE);
+
+ if (pinentry->timeout > 0)
+ timer = ecore_timer_add (pinentry->timeout,
+ (Ecore_Task_Cb)timeout_cb,
+ pinentry);
+}
+
+static int
+efl_cmd_handler (pinentry_t pe)
+{
+ int want_pass = !!pe->pin;
+
+ got_input = EINA_FALSE;
+ pinentry = pe;
+ confirm_value = CONFIRM_CANCEL;
+ passphrase_ok = 0;
+ confirm_mode = want_pass ? 0 : 1;
+ /* init ecore-x explicitly using DISPLAY since this can launch
+ * from console
+ */
+ if (pe->display)
+ ecore_x_init (pe->display);
+ elm_init (pargc, pargv);
+ create_window ();
+ ecore_main_loop_begin ();
+
+ if (timer)
+ {
+ ecore_timer_del (timer);
+ timer = NULL;
+ }
+
+ if (confirm_value == CONFIRM_CANCEL || grab_failed)
+ pe->canceled = 1;
+
+ pinentry = NULL;
+ if (want_pass)
+ {
+ if (passphrase_ok && pe->pin)
+ return strlen (pe->pin);
+ else
+ return -1;
+ }
+ else
+ return (confirm_value == CONFIRM_OK) ? 1 : 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ pinentry_init (PGMNAME);
+
+#ifdef FALLBACK_CURSES
+ if (pinentry_have_display (argc, argv))
+ {
+#endif
+
+ pinentry_cmd_handler = efl_cmd_handler;
+ pargc = argc;
+ pargv = argv;
+
+#ifdef FALLBACK_CURSES
+ }
+ else
+ {
+ pinentry_cmd_handler = curses_cmd_handler;
+ }
+#endif
+
+ pinentry_parse_opts (argc, argv);
+ if (pinentry_loop ())
+ return 1;
+
+ return 0;
+}
--
2.8.0.rc3

View File

@ -1983,6 +1983,31 @@ transfers.")
`(("python2-futures" ,python2-futures) `(("python2-futures" ,python2-futures)
,@(package-native-inputs base)))))) ,@(package-native-inputs base))))))
(define-public python-slimit
(package
(name "python-slimit")
(version "0.8.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "slimit" version ".zip"))
(sha256
(base32
"02vj2x728rs1127q2nc27frrqra4fczivnb7gch6n5lzi7pxqczl"))))
(build-system python-build-system)
(native-inputs
`(("unzip" ,unzip)))
(propagated-inputs
`(("python-ply" ,python-ply)))
(home-page "https://slimit.readthedocs.io/")
(synopsis "JavaScript minifier, parser and lexer written in Python")
(description
"SlimIt is a JavaScript minifier written in Python. It compiles
JavaScript into more compact code so that it downloads and runs faster.
SlimIt also provides a library that includes a JavaScript parser, lexer,
pretty printer and a tree visitor.")
(license license:expat)))
(define-public python-flask-restful (define-public python-flask-restful
(package (package
(name "python-flask-restful") (name "python-flask-restful")
@ -2168,6 +2193,25 @@ It comes with safe defaults and easily configurable options.")
(define-public python2-flask-htmlmin (define-public python2-flask-htmlmin
(package-with-python2 python-flask-htmlmin)) (package-with-python2 python-flask-htmlmin))
(define-public python-jsmin
(package
(name "python-jsmin")
(version "2.2.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "jsmin" version))
(sha256
(base32
"0fsmqbjvpxvff0984x7c0y8xmf49ax9mncz48b9xjx8wrnr9kpxn"))))
(build-system python-build-system)
(home-page "https://github.com/tikitu/jsmin/")
(synopsis "Python JavaScript minifier")
(description
"@code{jsmin} is a JavaScript minifier, usable from both Python code and
on the command line.")
(license license:expat)))
(define-public python-flask-login (define-public python-flask-login
(package (package
(name "python-flask-login") (name "python-flask-login")

View File

@ -14667,3 +14667,25 @@ on regular expressions.")
"This module implements the PRECIS Framework as described in RFC 8264, "This module implements the PRECIS Framework as described in RFC 8264,
RFC 8265 and RFC 8266.") RFC 8265 and RFC 8266.")
(license license:expat))) (license license:expat)))
(define-public python-wikidata
(package
(name "python-wikidata")
(version "0.6.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Wikidata" version))
(sha256
(base32
"08nlnydddfp1jj0cdmshvld1irzngbp3dij928wqsg9ziklm6mw9"))))
(build-system python-build-system)
(propagated-inputs
`(("python-babel" ,python-babel)))
(home-page "https://github.com/dahlia/wikidata")
(synopsis "Wikidata client library")
(description
"This package provides a Python interface to
@url{https://www.wikidata.org/, Wikidata}.")
(properties '((upstream-name . "Wikidata")))
(license license:gpl3+)))

View File

@ -65,7 +65,8 @@
(modules '((gnu build shepherd))) (modules '((gnu build shepherd)))
(start #~(make-forkexec-constructor/container (start #~(make-forkexec-constructor/container
(list #$(file-append package "/bin/wesnothd") (list #$(file-append package "/bin/wesnothd")
"-p" #$(number->string port)))) "-p" #$(number->string port))
#:user "wesnothd" #:group "wesnothd"))
(stop #~(make-kill-destructor))))))) (stop #~(make-kill-destructor)))))))
(define wesnothd-service-type (define wesnothd-service-type

View File

@ -40,7 +40,11 @@
(lambda (opt name arg result) (lambda (opt name arg result)
(unless (member arg '("human" "channels")) (unless (member arg '("human" "channels"))
(leave (G_ "~a: unsupported output format~%") arg)) (leave (G_ "~a: unsupported output format~%") arg))
(alist-cons 'format 'channels result))) (alist-cons 'format (string->symbol arg) result)))
(option '(#\p "profile") #t #f
(lambda (opt name arg result)
(alist-cons 'profile (canonicalize-profile arg)
result)))
(option '(#\h "help") #f #f (option '(#\h "help") #f #f
(lambda args (lambda args
(show-help) (show-help)
@ -58,6 +62,8 @@
Display information about the channels currently in use.\n")) Display information about the channels currently in use.\n"))
(display (G_ " (display (G_ "
-f, --format=FORMAT display information in the given FORMAT")) -f, --format=FORMAT display information in the given FORMAT"))
(display (G_ "
-p, --profile=PROFILE display information about PROFILE"))
(newline) (newline)
(display (G_ " (display (G_ "
-h, --help display this help and exit")) -h, --help display this help and exit"))
@ -78,11 +84,11 @@ Display information about the channels currently in use.\n"))
(format #t (G_ "~%;; warning: GUIX_PACKAGE_PATH=\"~a\"~%") (format #t (G_ "~%;; warning: GUIX_PACKAGE_PATH=\"~a\"~%")
string)))))) string))))))
(define (display-checkout-info fmt) (define* (display-checkout-info fmt #:optional directory)
"Display information about the current checkout according to FMT, a symbol "Display information about the current checkout according to FMT, a symbol
denoting the requested format. Exit if the current directory does not lie denoting the requested format. Exit if the current directory does not lie
within a Git checkout." within a Git checkout."
(let* ((program (car (command-line))) (let* ((program (or directory (car (command-line))))
(directory (catch 'git-error (directory (catch 'git-error
(lambda () (lambda ()
(repository-discover (dirname program))) (repository-discover (dirname program)))
@ -146,15 +152,16 @@ in the format specified by FMT."
;;; ;;;
(define (guix-describe . args) (define (guix-describe . args)
(let* ((opts (args-fold* args %options (let* ((opts (args-fold* args %options
(lambda (opt name arg result) (lambda (opt name arg result)
(leave (G_ "~A: unrecognized option~%") (leave (G_ "~A: unrecognized option~%")
name)) name))
cons cons
%default-options)) %default-options))
(format (assq-ref opts 'format))) (format (assq-ref opts 'format))
(profile (or (assq-ref opts 'profile) (current-profile))))
(with-error-handling (with-error-handling
(match (current-profile) (match profile
(#f (#f
(display-checkout-info format)) (display-checkout-info format))
(profile (profile

View File

@ -33,6 +33,7 @@
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix licenses) #:use-module (guix licenses)
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix grafts)
#:use-module (guix ui) #:use-module (guix ui)
#:use-module (guix upstream) #:use-module (guix upstream)
#:use-module (guix utils) #:use-module (guix utils)
@ -774,30 +775,37 @@ descriptions maintained upstream."
(define (check-derivation package) (define (check-derivation package)
"Emit a warning if we fail to compile PACKAGE to a derivation." "Emit a warning if we fail to compile PACKAGE to a derivation."
(catch #t (define (try system)
(lambda () (catch #t
(guard (c ((nix-protocol-error? c) (lambda ()
(emit-warning package (guard (c ((nix-protocol-error? c)
(format #f (G_ "failed to create derivation: ~a") (emit-warning package
(nix-protocol-error-message c)))) (format #f (G_ "failed to create ~a derivation: ~a")
((message-condition? c) system
(emit-warning package (nix-protocol-error-message c))))
(format #f (G_ "failed to create derivation: ~a") ((message-condition? c)
(condition-message c))))) (emit-warning package
(with-store store (format #f (G_ "failed to create ~a derivation: ~a")
;; Disable grafts since it can entail rebuilds. system
(package-derivation store package #:graft? #f) (condition-message c)))))
(with-store store
;; Disable grafts since it can entail rebuilds.
(parameterize ((%graft? #f))
(package-derivation store package system #:graft? #f)
;; If there's a replacement, make sure we can compute its ;; If there's a replacement, make sure we can compute its
;; derivation. ;; derivation.
(match (package-replacement package) (match (package-replacement package)
(#f #t) (#f #t)
(replacement (replacement
(package-derivation store replacement #:graft? #f)))))) (package-derivation store replacement system
(lambda args #:graft? #f)))))))
(emit-warning package (lambda args
(format #f (G_ "failed to create derivation: ~s~%") (emit-warning package
args))))) (format #f (G_ "failed to create ~a derivation: ~s")
system args)))))
(for-each try (package-supported-systems package)))
(define (check-license package) (define (check-license package)
"Warn about type errors of the 'license' field of PACKAGE." "Warn about type errors of the 'license' field of PACKAGE."

View File

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2012, 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017 Alex Kost <alezost@gmail.com> ;;; Copyright © 2017 Alex Kost <alezost@gmail.com>
@ -365,7 +365,7 @@
(arguments (arguments
'(#:imported-modules (invalid-module)))))) '(#:imported-modules (invalid-module))))))
(check-derivation pkg))) (check-derivation pkg)))
"failed to create derivation"))) "failed to create")))
(test-assert "license: invalid license" (test-assert "license: invalid license"
(string-contains (string-contains