From 975b7966f592993bce04e3c153f52f2ece402f21 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Tue, 20 Nov 2018 01:42:43 +0100 Subject: [PATCH 01/27] .gitignore: Re-add 'authenticate' script. This is a follow-up to commit 0fe1fba4af41f267c4bb2c006fb37f42422ab703. * .gitignore: s/guix-authenticate/authenticate/ --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 35d50b35af..2ffb438219 100644 --- a/.gitignore +++ b/.gitignore @@ -90,7 +90,7 @@ /nix/config.h.in /nix/nix-daemon/nix-daemon.cc /nix/nix-setuid-helper/nix-setuid-helper.cc -/nix/scripts/guix-authenticate +/nix/scripts/authenticate /nix/scripts/list-runtime-roots /nix/scripts/offload /nix/scripts/substitute From 5e369f8ab9e230193194b4d5846a5c78bbc89943 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 12 Nov 2018 15:55:05 +0200 Subject: [PATCH 02/27] gnu: Add pinentry-efl. * gnu/packages/gnupg.scm (pinentry-efl): New variable. * gnu/packages/patches/pinentry-efl.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. --- gnu/local.mk | 1 + gnu/packages/gnupg.scm | 30 + gnu/packages/patches/pinentry-efl.patch | 798 ++++++++++++++++++++++++ 3 files changed, 829 insertions(+) create mode 100644 gnu/packages/patches/pinentry-efl.patch diff --git a/gnu/local.mk b/gnu/local.mk index d2f085eaa5..7fc8fb0620 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1045,6 +1045,7 @@ dist_patch_DATA = \ %D%/packages/patches/pinball-missing-separators.patch \ %D%/packages/patches/pinball-src-deps.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/pius.patch \ %D%/packages/patches/pixman-CVE-2016-5296.patch \ diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index a9169b25af..46ca812a13 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -40,6 +40,8 @@ #:use-module (gnu packages curl) #:use-module (gnu packages crypto) #:use-module (gnu packages emacs) + #:use-module (gnu packages enlightenment) + #:use-module (gnu packages gettext) #:use-module (gnu packages guile) #:use-module (gnu packages openldap) #:use-module (gnu packages perl) @@ -863,6 +865,34 @@ software."))) "Pinentry provides a console and a Qt GUI that allows users to enter a 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 (package (inherit pinentry-gtk2) (name "pinentry"))) diff --git a/gnu/packages/patches/pinentry-efl.patch b/gnu/packages/patches/pinentry-efl.patch new file mode 100644 index 0000000000..5ba79e28df --- /dev/null +++ b/gnu/packages/patches/pinentry-efl.patch @@ -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" +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 +--- + 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. ++# ++# 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. ++ ++ Based on pinentry-gtk2.c ++ Copyright (C) 1999 Robert Bihlmeyer ++ Copyright (C) 2001, 2002, 2007, 2015 g10 Code GmbH ++ Copyright (C) 2004 by Albrecht Dreß ++ ++ 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 ++#include ++#include ++#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 ++#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, "%s",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 + From 662e2285f502b65600b0b5a12c040d050be8999d Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Tue, 20 Nov 2018 22:39:37 +0530 Subject: [PATCH 03/27] services: wesnothd: Run as wesnothd user and group. * gnu/services/games.scm (wesnothd-shepherd-service): Run as wesnothd user and group. --- gnu/services/games.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/services/games.scm b/gnu/services/games.scm index b9d78e078d..b743f6a4b6 100644 --- a/gnu/services/games.scm +++ b/gnu/services/games.scm @@ -65,7 +65,8 @@ (modules '((gnu build shepherd))) (start #~(make-forkexec-constructor/container (list #$(file-append package "/bin/wesnothd") - "-p" #$(number->string port)))) + "-p" #$(number->string port)) + #:user "wesnothd" #:group "wesnothd")) (stop #~(make-kill-destructor))))))) (define wesnothd-service-type From 242b29baa16552f3cb6f564da4ad8a729cd3e38f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 20 Nov 2018 13:46:09 +0100 Subject: [PATCH 04/27] gnu: autotalent: Simplify 'license'. * gnu/packages/audio.scm (autotalent)[license]: Remove unnecessary 'list'. --- gnu/packages/audio.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index d8a3c3c455..52769921ee 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -466,7 +466,7 @@ controls are allowable notes, strength of correction, LFO for vibrato and formant warp.") ;; All code except the FFT routine is licensed under GPLv2+. ;; The FFT routine is under BSD-3. - (license (list license:gpl2+)))) + (license license:gpl2+))) (define-public azr3 (package From 3b32891b12ee18c57b0fc346ed7dce8b6976066b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 20 Nov 2018 18:25:13 +0100 Subject: [PATCH 05/27] lint: 'check-derivation' tries all the package's supported systems. This allows us to catch architecture-specific evaluation failures. * guix/scripts/lint.scm (check-derivation): Move body into... [try]: ... this. New procedure. Call 'try' for each supported system of PACKAGE. --- guix/scripts/lint.scm | 52 ++++++++++++++++++++++++------------------- tests/lint.scm | 4 ++-- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index e477bf0ddc..e8cf2dc1ff 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -774,30 +774,36 @@ descriptions maintained upstream." (define (check-derivation package) "Emit a warning if we fail to compile PACKAGE to a derivation." - (catch #t - (lambda () - (guard (c ((nix-protocol-error? c) - (emit-warning package - (format #f (G_ "failed to create derivation: ~a") - (nix-protocol-error-message c)))) - ((message-condition? c) - (emit-warning package - (format #f (G_ "failed to create derivation: ~a") - (condition-message c))))) - (with-store store - ;; Disable grafts since it can entail rebuilds. - (package-derivation store package #:graft? #f) + (define (try system) + (catch #t + (lambda () + (guard (c ((nix-protocol-error? c) + (emit-warning package + (format #f (G_ "failed to create ~a derivation: ~a") + system + (nix-protocol-error-message c)))) + ((message-condition? c) + (emit-warning package + (format #f (G_ "failed to create ~a derivation: ~a") + system + (condition-message c))))) + (with-store store + ;; Disable grafts since it can entail rebuilds. + (package-derivation store package system #:graft? #f) - ;; If there's a replacement, make sure we can compute its - ;; derivation. - (match (package-replacement package) - (#f #t) - (replacement - (package-derivation store replacement #:graft? #f)))))) - (lambda args - (emit-warning package - (format #f (G_ "failed to create derivation: ~s~%") - args))))) + ;; If there's a replacement, make sure we can compute its + ;; derivation. + (match (package-replacement package) + (#f #t) + (replacement + (package-derivation store replacement system + #:graft? #f)))))) + (lambda args + (emit-warning package + (format #f (G_ "failed to create ~a derivation: ~s") + system args))))) + + (for-each try (package-supported-systems package))) (define (check-license package) "Warn about type errors of the 'license' field of PACKAGE." diff --git a/tests/lint.scm b/tests/lint.scm index ab0e8b9a8c..300153e24e 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013 Cyril Roelandt ;;; Copyright © 2014, 2015, 2016 Eric Bavier -;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2015, 2016 Mathieu Lirzin ;;; Copyright © 2016 Hartmut Goebel ;;; Copyright © 2017 Alex Kost @@ -365,7 +365,7 @@ (arguments '(#:imported-modules (invalid-module)))))) (check-derivation pkg))) - "failed to create derivation"))) + "failed to create"))) (test-assert "license: invalid license" (string-contains From 40bbcaa65d90a8c869d9732af26cb6ceb8e81ca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 20 Nov 2018 18:28:34 +0100 Subject: [PATCH 06/27] lint: 'check-derivation' fully disables grafts. Previously grafting could take place indirectly, for instance when lowering origins. * guix/scripts/lint.scm (check-derivation)[try]: Parameterize '%graft?'. --- guix/scripts/lint.scm | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index e8cf2dc1ff..2314f3b28c 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -33,6 +33,7 @@ #:use-module (guix packages) #:use-module (guix licenses) #:use-module (guix records) + #:use-module (guix grafts) #:use-module (guix ui) #:use-module (guix upstream) #:use-module (guix utils) @@ -789,15 +790,16 @@ descriptions maintained upstream." (condition-message c))))) (with-store store ;; Disable grafts since it can entail rebuilds. - (package-derivation store package system #:graft? #f) + (parameterize ((%graft? #f)) + (package-derivation store package system #:graft? #f) - ;; If there's a replacement, make sure we can compute its - ;; derivation. - (match (package-replacement package) - (#f #t) - (replacement - (package-derivation store replacement system - #:graft? #f)))))) + ;; If there's a replacement, make sure we can compute its + ;; derivation. + (match (package-replacement package) + (#f #t) + (replacement + (package-derivation store replacement system + #:graft? #f))))))) (lambda args (emit-warning package (format #f (G_ "failed to create ~a derivation: ~s") From e11462c2e4d7189f8b2a69fcc19d3dbf68569fe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 20 Nov 2018 18:35:33 +0100 Subject: [PATCH 07/27] Revert "gnu: ccl: Include x86-headers and remove missing "contrib" folder." This reverts commit d22ba64276c0bbacb77d0670635f67f053a16c6b, which broke evaluations for armhf-linux. --- gnu/packages/lisp.scm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 6849cdd2bf..d401e5c456 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -533,12 +533,8 @@ statistical profiler, a code coverage tool, and many other extensions.") (install-file kernel libdir) (install-file heap libdir) - (let ((dirs '("lib" "library" "examples" "tools" "objc-bridge" - ,(match (%current-system) - ("x86_64-linux" - "x86-headers64") - ("i686-linux" - "x86-headers"))))) + (let ((dirs '("lib" "library" "examples" "contrib" + "tools" "objc-bridge"))) (for-each copy-recursively dirs (map (cut string-append libdir <>) dirs))) From 3c4103c84f80acf3de31bd9e86f0b57a9e4f65af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 20 Nov 2018 18:39:22 +0100 Subject: [PATCH 08/27] gnu: java-jansi-native: Add "mips64el-linux" case. * gnu/packages/java.scm (java-jansi-native)[arguments]: Add "mips64el-linux" in 'match' clause. --- gnu/packages/java.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index cea3c4e333..0c7b9a9855 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -9203,7 +9203,8 @@ that is part of the SWT Tools project.") ,(match (%current-system) ((or "i686-linux" "armhf-linux") "linux32") - ((or "x86_64-linux" "aarch64-linux") + ((or "x86_64-linux" "aarch64-linux" + "mips64el-linux") "linux64"))))) (install-file "src/main/native-package/src/libjansi.so" dir)) #t)) From ea80fd1ff52abbf66499871ada990edbca374c08 Mon Sep 17 00:00:00 2001 From: Kei Kebreau Date: Tue, 20 Nov 2018 11:54:37 -0500 Subject: [PATCH 09/27] gnu: libmspack: Update to 0.9.1. * gnu/packages/compression.scm (libmspack): Update to 0.9.1. --- gnu/packages/compression.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 9c94ff09cd..fb39ddab80 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -637,13 +637,13 @@ sfArk file format to the uncompressed sf2 format.") (package (name "libmspack") (home-page "https://cabextract.org.uk/libmspack/") - (version "0.8") + (version "0.9.1") (source (origin (method url-fetch) (uri (string-append home-page name "-" version "alpha.tar.gz")) (sha256 - (base32 "1byx98jajv927f0a7np0hvs8lxzccny6pj8vrrgmldv1jlp7jcq5")))) + (base32 "0h1f5w8rjnq7dcqpqm1mpx5m8q80691kid6f7npqlqwqqzckd8v2")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--disable-static"))) From b3175c709d7fb2e8519902c3dd66608436d0f0ff Mon Sep 17 00:00:00 2001 From: Kei Kebreau Date: Tue, 20 Nov 2018 13:52:00 -0500 Subject: [PATCH 10/27] gnu: cabextract: Update to 1.9. * gnu/packages/compression.scm (cabextract): Update to 1.9. [arguments]: Add phase "unpack-libmspack". [inputs]: Add libmspack-source. --- gnu/packages/compression.scm | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index fb39ddab80..e775052b7a 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -1017,13 +1017,13 @@ smaller than those produced by @code{Xdelta}.") (package (name "cabextract") (home-page "https://cabextract.org.uk/") - (version "1.7") + (version "1.9") (source (origin (method url-fetch) (uri (string-append home-page name "-" version ".tar.gz")) (sha256 (base32 - "1g86wmb8lkjiv2jarfz979ngbgg7d3si8x5il4g801604v406wi9")) + "1hf4zhjxfdgq9x172r5zfdnafma9q0zf7372syn8hcn7hcypkg0v")) (modules '((guix build utils))) (snippet '(begin @@ -1031,11 +1031,27 @@ smaller than those produced by @code{Xdelta}.") (delete-file-recursively "mspack") #t)))) (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 `(("pkg-config" ,pkg-config))) (inputs - `(("libmspack" ,libmspack))) + `(("libmspack" ,libmspack) + ("libmspack-source" ,(package-source libmspack)))) (synopsis "Tool to unpack Cabinet archives") (description "Extracts files out of Microsoft Cabinet (.cab) archives") ;; Some source files specify gpl2+, lgpl2+, however COPYING is gpl3. From 90b9c5adea950c7daff3ab14e69601dc78803d6d Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sat, 27 Oct 2018 20:37:07 +0100 Subject: [PATCH 11/27] gnu: Add python-jsmin. * gnu/packages/python-web.scm (python-jsmin, python2-jsmin): New variables. --- gnu/packages/python-web.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index eda796e01c..161fe6eac2 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -2168,6 +2168,25 @@ It comes with safe defaults and easily configurable options.") (define-public python2-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 (package (name "python-flask-login") From 9c98d588c2e20fe7434b4ad74c16abbbb28eeb88 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sat, 27 Oct 2018 20:37:30 +0100 Subject: [PATCH 12/27] gnu: Add python-slimit. * gnu/packages/python-web.scm (python-slimit, python2-slimit): New variables. --- gnu/packages/python-web.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 161fe6eac2..55b8942ac9 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -1983,6 +1983,31 @@ transfers.") `(("python2-futures" ,python2-futures) ,@(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 (package (name "python-flask-restful") From 6cd1bbd0b16f97493ff4235f938ac81f4b2f8b92 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sat, 27 Oct 2018 17:43:39 +0100 Subject: [PATCH 13/27] gnu: Add python-django-pipeline. * gnu/packages/django.scm (python-django-pipeline, python2-django-pipeline): New variables. --- gnu/packages/django.scm | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index dea925e568..e476d7015c 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -518,6 +518,46 @@ project.") (define-public python2-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 (package (name "python-django-redis") From a2e925969726552651b8fe827cf3b447d2fe236d Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sat, 27 Oct 2018 17:43:08 +0100 Subject: [PATCH 14/27] gnu: Add python-django-jinja. * gnu/packages/django.scm (python-django-jinja, python2-django-jinja): New variables. --- gnu/packages/django.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index e476d7015c..02ad63bf4f 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -338,6 +338,47 @@ merging, minifying and compiling CSS and Javascript files.") (define-public python2-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 (package (name "python-django-jsonfield") From be02d4df84d859adad5f0dd58eb951a36734b582 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sat, 27 Oct 2018 17:43:27 +0100 Subject: [PATCH 15/27] gnu: Add python-django-debug-toolbar. * gnu/packages/django.scm (python-django-debug-toolbar, python2-django-debug-toolbar): New variables. --- gnu/packages/django.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index 02ad63bf4f..59bef9a8d1 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -265,6 +265,41 @@ account authentication.") (define-public python2-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 (package (name "python-django-gravatar2") From 725b077e400afec6a34b3494b14e7b899b31ed81 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Mon, 5 Nov 2018 21:58:02 +0000 Subject: [PATCH 16/27] gnu: arm-trusted-firmware-pine64-plus: Update to 2.0-1.cabe0a3. * gnu/packages/firmware.scm (arm-trusted-firmware-pine64-plus): Use platform name from upstream ("sun50i_a64"). [version]: Update to 2.0-1.cabe0a3, [source](uri): Use upstream git repository. Signed-off-by: Danny Milosavljevic --- gnu/packages/firmware.scm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 0b5a82e9e5..90797e013f 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -447,24 +447,25 @@ such as: license:bsd-2)))) ; libfdt (define-public arm-trusted-firmware-pine64-plus - (let ((base (make-arm-trusted-firmware "sun50iw1p1")) - ;; Vendor's arm trusted firmware branch hasn't been upstreamed yet. - (commit "ae78724247a01560164d607ed66db111c74d8df0") + (let ((base (make-arm-trusted-firmware "sun50i_a64")) + ;; Use unreleased version which enables additional features needed for + ;; LCD support + (commit "cabe0a31801e99e7abb84d2114ded6bb56f3c71e") (revision "1")) (package (inherit base) (name "arm-trusted-firmware-pine64-plus") - (version (string-append "1.2-" revision "." (string-take commit 7))) + (version (git-version "2.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/apritzel/arm-trusted-firmware.git") + (url "https://github.com/ARM-software/arm-trusted-firmware.git") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 - "0r4xnlq7v9khjfcg6gqp7nmrmnw4z1r8bipwdr07png1dcbb8214"))))))) + "0srw2zj3vn5d2fwzjpwa5h70d5bwvb79jnpdvmd395npv0gxshdz"))))))) (define-public arm-trusted-firmware-puma-rk3399 (let ((base (make-arm-trusted-firmware "rk3399")) From 95d91986064ef2b03d8c55286e47d2a2280db152 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Wed, 14 Nov 2018 16:53:14 +0000 Subject: [PATCH 17/27] gnu: arm-trusted-firmware-pine64-plus: Rename variable to arm-trusted-firmware-sun50i-a64. * gnu/packages/firmware (arm-trusted-firmware-pine64-plus): Rename to... (arm-trusted-firmware-sun50i-a64): ...this. * gnu/packages/bootloaders (u-boot-pine64-plus)[native-inputs]: Use it. Signed-off-by: Danny Milosavljevic --- gnu/packages/bootloaders.scm | 2 +- gnu/packages/firmware.scm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 2fa50a89b4..3e4c8bb0bc 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -573,7 +573,7 @@ board-independent tools."))) ) #t)))))) (native-inputs - `(("firmware" ,arm-trusted-firmware-pine64-plus) + `(("firmware" ,arm-trusted-firmware-sun50i-a64) ,@(package-native-inputs base)))))) (define-public u-boot-bananapi-m2-ultra diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 90797e013f..c396cd644f 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -446,7 +446,7 @@ such as: (license (list license:bsd-3 license:bsd-2)))) ; libfdt -(define-public arm-trusted-firmware-pine64-plus +(define-public arm-trusted-firmware-sun50i-a64 (let ((base (make-arm-trusted-firmware "sun50i_a64")) ;; Use unreleased version which enables additional features needed for ;; LCD support @@ -454,7 +454,7 @@ such as: (revision "1")) (package (inherit base) - (name "arm-trusted-firmware-pine64-plus") + (name "arm-trusted-firmware-sun50i-a64") (version (git-version "2.0" revision commit)) (source (origin From 0da3526d583b56a9560369ec4d426b45126457d2 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Mon, 19 Nov 2018 21:04:48 -0800 Subject: [PATCH 18/27] gnu: u-boot-pine64-plus: Refactor package definition. * gnu/packages/bootloaders.scm (make-u-boot-sunxi64-package): New procedure. (u-boot-pine64-plus): Use it. Signed-off-by: Danny Milosavljevic --- gnu/packages/bootloaders.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 3e4c8bb0bc..328e834bc2 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -554,8 +554,8 @@ board-independent tools."))) (define-public u-boot-beagle-bone-black (make-u-boot-package "am335x_boneblack" "arm-linux-gnueabihf")) -(define-public u-boot-pine64-plus - (let ((base (make-u-boot-package "pine64_plus" "aarch64-linux-gnu"))) +(define-public (make-u-boot-sunxi64-package board triplet) + (let ((base (make-u-boot-package board triplet))) (package (inherit base) (arguments @@ -576,6 +576,9 @@ board-independent tools."))) `(("firmware" ,arm-trusted-firmware-sun50i-a64) ,@(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 (make-u-boot-package "Bananapi_M2_Ultra" "arm-linux-gnueabihf")) From 56ddcf041464f9b2d2a76c7abf88f1a832a96b4b Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Tue, 20 Nov 2018 23:57:58 -0500 Subject: [PATCH 19/27] gnu: emacs-elpy: Update to 1.26.0. * gnu/packages/emacs.scm (emacs-elpy): Update to 1.26.0. --- gnu/packages/emacs.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index ce1add3915..98a20028f6 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -4696,7 +4696,7 @@ indentation (space indentation only). (define-public emacs-elpy (package (name "emacs-elpy") - (version "1.24.0") + (version "1.26.0") (source (origin (method git-fetch) (uri (git-reference @@ -4705,7 +4705,7 @@ indentation (space indentation only). (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0rsg8a9nwqfkv0xcs11jzfp10ij7jm0v2ikx19zv2v7awqy0q5wf")))) + "0wynzp5xmrgiggmam82n6lfaiqmfl4n3ccpsgnh86r6pbsmssxjk")))) (build-system emacs-build-system) (arguments `(#:include (cons* "^elpy/[^/]+\\.py$" "^snippets\\/" %default-include) From d09e84c271f8cf6da483e97e6bf99484ee402755 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 21 Nov 2018 10:02:56 +0200 Subject: [PATCH 20/27] gnu: thermald: Don't use unstable tarball. * gnu/packages/admin.scm (thermald)[source]: Download source using git-fetch. --- gnu/packages/admin.scm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 2247902898..88b6f615ff 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2016, 2017 Leo Famulari ;;; Copyright © 2016 Pjotr Prins ;;; Copyright © 2016, 2017 Ricardo Wurmus -;;; Copyright © 2016, 2017 Efraim Flashner +;;; Copyright © 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2016 Peter Feigl ;;; Copyright © 2016 John J. Foerch ;;; Copyright © 2016, 2017 Nils Gillmann @@ -2452,12 +2452,14 @@ make it a perfect utility on modern distros.") (version "1.7.2") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/01org/thermal_daemon/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 (base32 - "15a6vb67y5wsmf0irrq7sxam18yqpz64130k83ryf24mp40h661b")))) + (method git-fetch) + (uri (git-reference + (url "https://github.com/01org/thermal_daemon") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1cs2pq8xvfnsvrhg2bxawk4kn3z1qmfrnpnhs178pvfbglzh15hc")))) (build-system gnu-build-system) (arguments `(#:phases From 1200783972cdadc4d418888d54e67a0b4c4750ba Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 21 Nov 2018 10:05:28 +0200 Subject: [PATCH 21/27] gnu: thermald: Clean up package definition. * gnu/packages/admin.scm (thermald)[arguments]: Remove redundant 'bootstrap phase. Remove unnecessary udev configure flag. --- gnu/packages/admin.scm | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 88b6f615ff..28961ecf88 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -2462,18 +2462,10 @@ make it a perfect utility on modern distros.") "1cs2pq8xvfnsvrhg2bxawk4kn3z1qmfrnpnhs178pvfbglzh15hc")))) (build-system gnu-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'bootstrap - (lambda _ - (invoke "sh" "autogen.sh") - #t))) - #:configure-flags + `(#:configure-flags (let ((out (assoc-ref %outputs "out"))) (list (string-append "--sysconfdir=" out "/etc") - (string-append "--with-udev-dir=" - out "/lib/udev") (string-append "--with-dbus-sys-dir=" out "/etc/dbus-1/system.d") "--localstatedir=/var")))) From 1e5b79e5d0e6629dce838dbb10febad676eea773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 21 Nov 2018 10:37:12 +0100 Subject: [PATCH 22/27] build: Add missing Clojure modules to the distribution. * Makefile.am (MODULES): Add guix/build-system/clojure.scm and guix/build/clojure-build-system.scm --- Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile.am b/Makefile.am index a2144d4b8e..eda87f3124 100644 --- a/Makefile.am +++ b/Makefile.am @@ -101,6 +101,7 @@ MODULES = \ guix/build-system/android-ndk.scm \ guix/build-system/ant.scm \ guix/build-system/cargo.scm \ + guix/build-system/clojure.scm \ guix/build-system/cmake.scm \ guix/build-system/dub.scm \ guix/build-system/emacs.scm \ @@ -173,6 +174,7 @@ MODULES = \ guix/build/syscalls.scm \ guix/build/gremlin.scm \ guix/build/debug-link.scm \ + guix/build/clojure-build-system.scm \ guix/build/clojure-utils.scm \ guix/build/emacs-utils.scm \ guix/build/java-utils.scm \ From ab5d91dd50e6b8711f21051427aaf343d326ab3b Mon Sep 17 00:00:00 2001 From: swedebugia Date: Tue, 20 Nov 2018 00:07:19 +0100 Subject: [PATCH 23/27] gnu: Add python-wikidata. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python.scm (python-wikidata): New variable. Co-authored-by: Ludovic Courtès --- gnu/packages/python.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 4ae97078e6..d87b1315e6 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -14617,3 +14617,25 @@ on regular expressions.") "This module implements the PRECIS Framework as described in RFC 8264, RFC 8265 and RFC 8266.") (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+))) From 3dd28aa37cc3f3a6bbb5f7f8d9fb49cc457b0c10 Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Wed, 21 Nov 2018 01:19:54 +0300 Subject: [PATCH 24/27] describe: Fix 'format' option. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix ‘guix describe’ ignores ‘--format=FORMAT’ option. * guix/scripts/describe.scm (%options): Fix 'format' option. --- guix/scripts/describe.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm index e59502076c..d3203e9924 100644 --- a/guix/scripts/describe.scm +++ b/guix/scripts/describe.scm @@ -40,7 +40,7 @@ (lambda (opt name arg result) (unless (member arg '("human" "channels")) (leave (G_ "~a: unsupported output format~%") arg)) - (alist-cons 'format 'channels result))) + (alist-cons 'format (string->symbol arg) result))) (option '(#\h "help") #f #f (lambda args (show-help) From 1255400faabfcf0ca1666d17f2f34ea0d49f6b1f Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Wed, 21 Nov 2018 11:23:25 +0300 Subject: [PATCH 25/27] describe: Add profile option. * guix/scripts/describe.scm (%options): Add profile option. (show-help): Document this. (display-checkout-info): Check for profile argument. * doc/guix.texi (Invoking guix describe): Document this. --- doc/guix.texi | 4 ++++ guix/scripts/describe.scm | 27 +++++++++++++++++---------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index c2c778a28c..082e81bf7c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -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 guix pull}). @end table + +@item --profile=@var{profile} +@itemx -p @var{profile} +Display information about @var{profile}. @end table @node Invoking guix pack diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm index d3203e9924..d817d7f7ca 100644 --- a/guix/scripts/describe.scm +++ b/guix/scripts/describe.scm @@ -41,6 +41,10 @@ (unless (member arg '("human" "channels")) (leave (G_ "~a: unsupported output format~%") arg)) (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 (lambda args (show-help) @@ -58,6 +62,8 @@ Display information about the channels currently in use.\n")) (display (G_ " -f, --format=FORMAT display information in the given FORMAT")) + (display (G_ " + -p, --profile=PROFILE display information about PROFILE")) (newline) (display (G_ " -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\"~%") string)))))) -(define (display-checkout-info fmt) +(define* (display-checkout-info fmt #:optional directory) "Display information about the current checkout according to FMT, a symbol denoting the requested format. Exit if the current directory does not lie within a Git checkout." - (let* ((program (car (command-line))) + (let* ((program (or directory (car (command-line)))) (directory (catch 'git-error (lambda () (repository-discover (dirname program))) @@ -146,15 +152,16 @@ in the format specified by FMT." ;;; (define (guix-describe . args) - (let* ((opts (args-fold* args %options - (lambda (opt name arg result) - (leave (G_ "~A: unrecognized option~%") - name)) - cons - %default-options)) - (format (assq-ref opts 'format))) + (let* ((opts (args-fold* args %options + (lambda (opt name arg result) + (leave (G_ "~A: unrecognized option~%") + name)) + cons + %default-options)) + (format (assq-ref opts 'format)) + (profile (or (assq-ref opts 'profile) (current-profile)))) (with-error-handling - (match (current-profile) + (match profile (#f (display-checkout-info format)) (profile From 96cae1b48c12b7b5b4a68d86ac9d714cab2d9881 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Mon, 19 Nov 2018 18:57:27 +0100 Subject: [PATCH 26/27] gnu: font-ubuntu: Update url. * gnu/packages/fonts.scm (font-ubuntu): Use new url, update hash. --- gnu/packages/fonts.scm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 1195695d7a..f9f8428202 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -99,13 +99,14 @@ in print. With attention to detail for high resolution rendering.") (name "font-ubuntu") (version "0.83") (source (origin - (method url-fetch) - (uri (string-append - "http://font.ubuntu.com/download/ubuntu-font-family-" - version ".zip")) + (method git-fetch) + (uri (git-reference + (url "https://salsa.debian.org/fonts-team/fonts-ubuntu") + (commit (string-append "upstream/" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0hjvq2x758dx0sfwqhzflns0ns035qm7h6ygskbx1svzg517sva5")))) + "1d2xrjpxy70f3nsgqiggwv6pj06qglf5vj2847pqx60w3ygi903g")))) (build-system font-build-system) (home-page "http://font.ubuntu.com/") (synopsis "The Ubuntu Font Family") From a2aa746cfe38076b87d9cde2252904c0bddd9f9e Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 21 Nov 2018 15:17:12 +0200 Subject: [PATCH 27/27] gnu: python-waf: Use a proper directory structure. Fixes . * gnu/packages/python.scm (python-waf): Replace custom 'install phase to install "waf" binary into the bin directory. Remove the 'wrap phase. * gnu/packages/video.scm (mpv)[arguments]: Adjust the 'setup-waf phase accordingly. --- gnu/packages/python.scm | 9 ++++++--- gnu/packages/video.scm | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index d87b1315e6..c3d3c02684 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -5692,9 +5692,12 @@ so it might be a tiny bit slower.") (lambda _ (invoke "python" "waf" "--version"))) (replace 'install - (lambda _ - (copy-file "waf" %output) - #t))))) + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (install-file "waf" (string-append out "/bin"))) + #t)) + ;; waf breaks when it is wrapped. + (delete 'wrap)))) (home-page "https://waf.io/") (synopsis "Python-based build system") (description diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 94c5cf3a67..e9a49df787 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1180,7 +1180,8 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") (add-before 'configure 'setup-waf (lambda* (#:key inputs #:allow-other-keys) - (copy-file (assoc-ref inputs "waf") "waf") + (let ((waf (assoc-ref inputs "waf"))) + (copy-file (string-append waf "/bin/waf") "waf")) (setenv "CC" "gcc") #t))) #:configure-flags (list "--enable-libmpv-shared"