Merge remote-tracking branch 'origin/master' into core-updates
This commit is contained in:
		
						commit
						9cf4ff199c
					
				
					 22 changed files with 1131 additions and 86 deletions
				
			
		
							
								
								
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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			\
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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		\
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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"))))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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"))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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")))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										798
									
								
								gnu/packages/patches/pinentry-efl.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										798
									
								
								gnu/packages/patches/pinentry-efl.patch
									
										
									
									
									
										Normal 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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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+)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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)))
 | 
				
			||||||
| 
						 | 
					@ -152,9 +158,10 @@ in the format specified by FMT."
 | 
				
			||||||
                                       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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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."
 | 
				
			||||||
 | 
					  (define (try system)
 | 
				
			||||||
    (catch #t
 | 
					    (catch #t
 | 
				
			||||||
      (lambda ()
 | 
					      (lambda ()
 | 
				
			||||||
        (guard (c ((nix-protocol-error? c)
 | 
					        (guard (c ((nix-protocol-error? c)
 | 
				
			||||||
                   (emit-warning package
 | 
					                   (emit-warning package
 | 
				
			||||||
                               (format #f (G_ "failed to create derivation: ~a")
 | 
					                                 (format #f (G_ "failed to create ~a derivation: ~a")
 | 
				
			||||||
 | 
					                                         system
 | 
				
			||||||
                                         (nix-protocol-error-message c))))
 | 
					                                         (nix-protocol-error-message c))))
 | 
				
			||||||
                  ((message-condition? c)
 | 
					                  ((message-condition? c)
 | 
				
			||||||
                   (emit-warning package
 | 
					                   (emit-warning package
 | 
				
			||||||
                               (format #f (G_ "failed to create derivation: ~a")
 | 
					                                 (format #f (G_ "failed to create ~a derivation: ~a")
 | 
				
			||||||
 | 
					                                         system
 | 
				
			||||||
                                         (condition-message c)))))
 | 
					                                         (condition-message c)))))
 | 
				
			||||||
          (with-store store
 | 
					          (with-store store
 | 
				
			||||||
            ;; Disable grafts since it can entail rebuilds.
 | 
					            ;; Disable grafts since it can entail rebuilds.
 | 
				
			||||||
          (package-derivation store package #:graft? #f)
 | 
					            (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
 | 
				
			||||||
 | 
					                                     #:graft? #f)))))))
 | 
				
			||||||
      (lambda args
 | 
					      (lambda args
 | 
				
			||||||
        (emit-warning package
 | 
					        (emit-warning package
 | 
				
			||||||
                    (format #f (G_ "failed to create derivation: ~s~%")
 | 
					                      (format #f (G_ "failed to create ~a derivation: ~s")
 | 
				
			||||||
                            args)))))
 | 
					                              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."
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue