Add support for gnupg2
cover Add support for gnupg2
This series of patches add support for gnupg2 by adding the gnupg2 package. The pth and libksba packages are added because they are direct dependencies of gnupg2.
It also makes gnupg and gnupg2 mutual exclusive because they can't be installed at the same time due to file collisions.
And it also add support for pinentry by adding this package to make the gnupg and gnupg2 packages more useful. Right now we can't even generate a key with "gpg --gen-key" because there isn't a pinentry program to ask for a passphrase.
Vicente Olivert Riera (5):
pth: new package
libksba: new package
gnupg2: new package
gnupg: Make gnupg and gnupg2 mutual exclusive
pinentry: new package
package/Config.in | 4 + package/gnupg/Config.in | 1 + package/gnupg2/Config.in | 39 ++++++++++++ package/gnupg2/gnupg2.mk | 27 ++++++++ package/libksba/Config.in | 7 ++ package/libksba/libksba.mk | 16 +++++ package/pinentry/Config.in | 53 ++++++++++++++++ package/pinentry/pinentry.mk | 47 ++++++++++++++ package/pth/Config.in | 10 +++ package/pth/pth-001-disable-documentation.patch | 74 +++++++++++++++++++++++ package/pth/pth.mk | 28 +++++++++ 11 files changed, 306 insertions(+), 0 deletions(-) create mode 100644 package/gnupg2/Config.in create mode 100644 package/gnupg2/gnupg2.mk create mode 100644 package/libksba/Config.in create mode 100644 package/libksba/libksba.mk create mode 100644 package/pinentry/Config.in create mode 100644 package/pinentry/pinentry.mk create mode 100644 package/pth/Config.in create mode 100644 package/pth/pth-001-disable-documentation.patch create mode 100644 package/pth/pth.mk
PATCH 1/5 pth: new package
--- package/Config.in | 1 + package/pth/Config.in | 10 +++ package/pth/pth-001-disable-documentation.patch | 74 +++++++++++++++++++++++ package/pth/pth.mk | 28 +++++++++ 4 files changed, 113 insertions(+), 0 deletions(-) create mode 100644 package/pth/Config.in create mode 100644 package/pth/pth-001-disable-documentation.patch create mode 100644 package/pth/pth.mk
package/Config.in +1 -0
@@ -829,6 +829,7 @@ source "package/p11-kit/Config.in" source "package/poco/Config.in" source "package/protobuf/Config.in" source "package/protobuf-c/Config.in" +source "package/pth/Config.in" source "package/qhull/Config.in" source "package/schifra/Config.in" source "package/startup-notification/Config.in"
package/pth/Config.in new file +10 -0
@@ -0,0 +1,10 @@ +config BR2_PACKAGE_PTH + bool "pth" + depends on !BR2_TOOLCHAIN_USES_UCLIBC + help + GNU Pth - The GNU Portable Threads + + http://www.gnu.org/software/pth/ + +comment "pth doesn't work with uClibc" + depends on BR2_TOOLCHAIN_USES_UCLIBC
package/pth/pth-001-disable-documentation.patch new file +74 -0
74 lines not on this page · raw message
package/pth/pth.mk new file +28 -0
@@ -0,0 +1,28 @@ +################################################################################ +# +# pth +# +################################################################################ + +PTH_VERSION = 2.0.7 +PTH_SOURCE = pth-$(PTH_VERSION).tar.gz +PTH_SITE = ftp://ftp.gnu.org/gnu/pth +PTH_LICENSE = LGPL +PTH_LICENSE_FILES = COPYING +PTH_CONFIG_SCRIPTS = pth-config +PTH_INSTALL_STAGING = YES + +ifeq ($(BR2_PREFER_STATIC_LIB),y) +PTH_CONFIG_OPT = --enable-static +else +PTH_CONFIG_OPT = --disable-static +endif + +# This hooks fixes a race condition in the Makefile. +# It allows you to run make with multiple jobs. +define PTH_FIX_SMP_BUILD + cd $(@D) && sed -i 's#$(LOBJS): Makefile#$(LOBJS): pth_p.h Makefile#' Makefile.in +endef +PTH_PRE_CONFIGURE_HOOKS += PTH_FIX_SMP_BUILD + +$(eval $(autotools-package))
Signature · 1 line
1.7.1
PATCH 1/5 pth: new package
Dear Vicente Olivert Riera,
package/pth/Config.in line 7
Quoted 13 lines · Vicente Olivert Riera
package/pth/Config.in new file +7
-0@@ -0,0 +1,10 @@ +config BR2_PACKAGE_PTH + bool "pth" + depends on !BR2_TOOLCHAIN_USES_UCLIBC + help + GNU Pth - The GNU Portable Threads + + http://www.gnu.org/software/pth/
We already have a pthsem package, which claims in its description:
config BR2_PACKAGE_LIBPTHSEM
bool "libpthsem"
depends on BR2_USE_MMU # fork()
select BR2_PACKAGE_ARGP_STANDALONE
help
GNU pth is a user mode multi threading library. pthsem is an extend version, with support for semaphores added.
Do you know if pthsem could be used instead of pth for gnupg, or if pth and pthsem would conflict with each other?
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/5 pth: new package
Quoted 28 lines · Thomas Petazzoni
Dear Vicente Olivert Riera,
package/pth/Config.in line 7
Quoted 13 lines · Vicente Olivert Riera
package/pth/Config.in new file +7
-0@@ -0,0 +1,10 @@ +config BR2_PACKAGE_PTH + bool "pth" + depends on !BR2_TOOLCHAIN_USES_UCLIBC + help + GNU Pth - The GNU Portable Threads + + http://www.gnu.org/software/pth/We already have a pthsem package, which claims in its description:
config
BR2_PACKAGE_LIBPTHSEM
bool "libpthsem"
depends onBR2_USE_MMU#fork()
selectBR2_PACKAGE_ARGP_STANDALONE
help
GNU pth is a user mode multi threading library. pthsem is an extend version, with support for semaphores added.
Quoted 2 lines
Do you know if pthsem could be used instead of pth for gnupg, or if pth and pthsem would conflict with each other?
Please read the comments on the gnupg2 patch. Everything is explained
there: http://patchwork.ozlabs.org/patch/356812/
Quoted 4 lines
Thanks,
Thomas
Signature · 1 line
Vincent
PATCH 1/5 pth: new package
In reply to Vicente Olivert RieraDear Vicente Olivert Riera,
Quoted 11 lines · Vicente Olivert Riera
Signed-off-by Vicente Olivert Riera <[email protected]>Reviewed-by Markos Chandras <[email protected]>--- package/Config.in | 1 + package/pth/Config.in | 10 +++ package/pth/pth-001-disable-documentation.patch | 74 +++++++++++++++++++++++ package/pth/pth.mk | 28 +++++++++ 4 files changed, 113 insertions(+), 0 deletions(-) create mode 100644 package/pth/Config.in create mode 100644 package/pth/pth-001-disable-documentation.patch create mode 100644 package/pth/pth.mk
As explained in my reply to the gnupg2 package, this pth package is not needed, since pthsem has a --enable-compat option to enable compatibility with the old pth library.
Therefore, I've marked this patch as Rejected in patchwork.
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 2/5 libksba: new package
In reply to Vicente Olivert Riera--- package/Config.in | 1 + package/libksba/Config.in | 7 +++++++ package/libksba/libksba.mk | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 0 deletions(-) create mode 100644 package/libksba/Config.in create mode 100644 package/libksba/libksba.mk
package/Config.in +1 -0
@@ -535,6 +535,7 @@ source "package/libassuan/Config.in" source "package/libgcrypt/Config.in" source "package/libgpg-error/Config.in" source "package/libgpgme/Config.in" +source "package/libksba/Config.in" source "package/libmcrypt/Config.in" source "package/libmhash/Config.in" source "package/libnss/Config.in"
package/libksba/Config.in new file +7 -0
@@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBKSBA + bool "libksba" + select BR2_PACKAGE_LIBGPG_ERROR + help + CMS and X.509 library + + https://www.gnupg.org/related_software/libksba/
package/libksba/libksba.mk new file +16 -0
@@ -0,0 +1,16 @@ +################################################################################ +# +# libksba +# +################################################################################ + +LIBKSBA_VERSION = 1.3.0 +LIBKSBA_SOURCE = libksba-$(LIBKSBA_VERSION).tar.bz2 +LIBKSBA_SITE = ftp://ftp.gnupg.org/gcrypt/libksba +LIBKSBA_LICENSE = Mixture of GPL and LGPL licenses +LIBKSBA_LICENSE_FILES = COPYING COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv3 +LIBKSBA_INSTALL_STAGING = YES +LIBKSBA_DEPENDENCIES = libgpg-error +LIBKSBA_CONF_OPT = --with-gpg-error-prefix=$(STAGING_DIR)/usr + +$(eval $(autotools-package))
Signature · 1 line
1.7.1
PATCH 2/5 libksba: new package
Vicente Olivert Riera
<[email protected]> wrote in news:1402062269-57018-3-git-send-email-Vincent.Riera at imgtec.com:
Quoted 8 lines
Signed-off-by: Vicente Olivert Riera
<[email protected]> Reviewed-by:
Markos Chandras
<[email protected]> ---package/Config.in | 1 + package/libksba/Config.in | 7 +++++++ package/libksba/libksba.mk | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 0 deletions(-)
PATCH 2/5 libksba: new package
In reply to Vicente Olivert RieraDear Vicente Olivert Riera,
package/libksba/libksba.mk line 11
Quoted 5 lines · Vicente Olivert Riera
package/libksba/libksba.mk new file +5
-0+LIBKSBA_VERSION = 1.3.0 +LIBKSBA_SOURCE = libksba-$(LIBKSBA_VERSION).tar.bz2 +LIBKSBA_SITE = ftp://ftp.gnupg.org/gcrypt/libksba +LIBKSBA_LICENSE = Mixture of GPL and LGPL licenses +LIBKSBA_LICENSE_FILES = COPYING COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv3
Thanks to the details available in the AUTHORS file, I've made the LIBKSBA_LICENSE value a bit more useful, and I've added the AUTHORS file to LIBKSBA_LICENSE_FILES.
Applied with those changes, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 3/5 gnupg2: new package
In reply to Vicente Olivert Riera--- package/Config.in | 1 + package/gnupg2/Config.in | 39 +++++++++++++++++++++++++++++++++++++++ package/gnupg2/gnupg2.mk | 27 +++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 0 deletions(-) create mode 100644 package/gnupg2/Config.in create mode 100644 package/gnupg2/gnupg2.mk
package/Config.in +1 -0
@@ -1073,6 +1073,7 @@ source "package/dialog/Config.in" source "package/dtach/Config.in" source "package/file/Config.in" source "package/gnupg/Config.in" +source "package/gnupg2/Config.in" source "package/inotify-tools/Config.in" source "package/lockfile-progs/Config.in" source "package/logrotate/Config.in"
package/gnupg2/Config.in new file +39 -0
@@ -0,0 +1,39 @@ +config BR2_PACKAGE_GNUPG2 + bool "gnupg2" + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBGPG_ERROR + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBASSUAN + select BR2_PACKAGE_LIBKSBA + select BR2_PACKAGE_PTH + depends on !BR2_TOOLCHAIN_USES_UCLIBC # pth + depends on BR2_USE_MMU # libassuan + help + GnuPG is the GNU project's complete and free implementation + of the OpenPGP standard as defined by RFC4880. GnuPG allows + to encrypt and sign your data and communication, features a + versatile key management system as well as access modules + for all kinds of public key directories. GnuPG, also known + as GPG, is a command line tool with features for easy + integration with other applications. + + http://gnupg.org/ + +if BR2_PACKAGE_GNUPG2 + +config BR2_PACKAGE_GNUPG2_GPGV2 + bool "gpgv2" + help + gpgv2 is an OpenPGP signature verification tool. + + This program is actually a stripped-down version of gpg + which is only able to check signatures. It is somewhat + smaller than the fully-blown gpg and uses a different (and + simpler) way to check that the public keys used to make the + signature are valid. There are no configuration files and + only a few options are implemented. + +endif + +comment "gnupg2 depends on pth which doesn't work with uClibc" + depends on BR2_TOOLCHAIN_USES_UCLIBC
package/gnupg2/gnupg2.mk new file +27 -0
@@ -0,0 +1,27 @@ +################################################################################ +# +# gnupg2 +# +################################################################################ + +GNUPG2_VERSION = 2.0.23 +GNUPG2_SOURCE = gnupg-$(GNUPG2_VERSION).tar.bz2 +GNUPG2_SITE = ftp://ftp.gnupg.org/gcrypt/gnupg +GNUPG2_LICENSE = GPLv3+ +GNUPG2_LICENSE_FILES = COPYING +GNUPG2_DEPENDENCIES = zlib libgpg-error libgcrypt libassuan libksba pth +GNUPG2_CONF_OPT = --disable-rpath --disable-regex --disable-doc +GNUPG2_CONF_OPT += --with-libgpg-error-prefix=$(STAGING_DIR)/usr +GNUPG2_CONF_OPT += --with-libgcrypt-prefix=$(STAGING_DIR)/usr +GNUPG2_CONF_OPT += --with-libassuan-prefix=$(STAGING_DIR)/usr +GNUPG2_CONF_OPT += --with-ksba-prefix=$(STAGING_DIR)/usr +GNUPG2_CONF_OPT += --with-pth-prefix=$(STAGING_DIR)/usr + +ifneq ($(BR2_PACKAGE_GNUPG2_GPGV2),y) +define GNUPG2_REMOVE_GPGV2 + rm -f $(TARGET_DIR)/usr/bin/gpgv2 +endef +GNUPG2_POST_INSTALL_TARGET_HOOKS += GNUPG2_REMOVE_GPGV2 +endif + +$(eval $(autotools-package))
Signature · 1 line
1.7.1
PATCH 3/5 gnupg2: new package
Vicente Olivert Riera
<[email protected]> wrote in news:1402062269-57018-4-git-send-email-Vincent.Riera at imgtec.com:
package/gnupg2/Config.in line 9
Quoted 2 lines
package/gnupg2/Config.in new file +2
-0+ select BR2_PACKAGE_PTH + depends on !BR2_TOOLCHAIN_USES_UCLIBC # pth
Hi,
afaik gnupg2 is compatible with uclibc if you use the existing libpthsem package instead of your new pth package.
Regards, Bernd
PATCH 3/5 gnupg2: new package
Quoted 8 lines · Bernd Kuhls
Vicente Olivert Riera
<[email protected]> wrote in news:1402062269-57018-4-git-send-email-Vincent.Riera at imgtec.com:package/gnupg2/Config.in line 9
Quoted 2 lines
package/gnupg2/Config.in new file +2
-0+ select BR2_PACKAGE_PTH + depends on !BR2_TOOLCHAIN_USES_UCLIBC # pthHi,
Hello Bernd, all,
Quoted 2 lines
afaik gnupg2 is compatible with uclibc if you use the existing libpthsem package instead of your new pth package.
no, it doesn't build (as is) using libpthsem. Here is why:
First, because it looks for pth-config, which is installed by pth. libpthsem installs pthsem-config.
Second, although you try to make a pth-config symlink pointing to pthsem-config, it will fail again because "pthsem-config --version" outputs the version in a different format than pth-config, so the pth version check in gnupg2's configure script will fail.
Third, although you make a copy of pthsem-config calling it pth-config, and you modify it to output the version in the same way as the original pth-config does, it will fail again because it also looks for pth.h which is installed by pth. pthsem installs pthsem.h.
Now, if you make a pth.h symlink pointing to pthsem.h, then it builds fine.
To summarize: if you want to build gnupg2 using libpthsem instead of pth, you will need to patch libpthsem package to install a compatibility pth-config script (just a copy with the --version modification) and a compatibility pth.h symlink.
So, we have three options here and we need to decide one of them:
Option 1: add the new pth package
pros: -there is no need to patch libpthsem
cons: -gnupg2 will not work with uclibc
Option 2: patch the libpthsem package
pros: -no need to add pth package
-gnupg2 will work with uclibc
cons: -we need to patch libpthsem to install compatibility stuff
Option 3: patch gnupg2 to use libpthsem in case of pth is missing
pros: -no need to add pth package
-gnupg2 will work with uclibc
-gnupg2 will work with both libpthsem and pth
cons: -patching gnupg2 source code should be accepted upstream
Let's vote! :)
Quoted 7 lines
Regards, Bernd
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 1 line
Vincent
PATCH 3/5 gnupg2: new package
Vincente, All,
On 2014-06-06 17:34 +0100, Vicente Olivert Riera spake thusly:
Quoted 5 lines · Bernd Kuhls
Quoted 2 lines
afaik gnupg2 is compatible with uclibc if you use the existing libpthsem package instead of your new pth package.
no, it doesn't build (as is) using libpthsem. Here is why:
[--SNIP--]
Quoted 11 lines
So, we have three options here and we need to decide one of them:
Option 1: add the new pth package
pros: -there is no need to patch libpthsem
cons: -gnupg2 will not work with uclibcOption 2: patch the libpthsem package
pros: -no need to add pth package
-gnupg2 will work with uclibc
cons: -we need to patch libpthsem to install compatibility stuff
Quoted 5 lines
Option 3: patch gnupg2 to use libpthsem in case of pth is missing
pros: -no need to add pth package
-gnupg2 will work with uclibc
-gnupg2 will work with both libpthsem and pth
cons: -patching gnupg2 source code should be accepted upstream
I think option 1 is the best for now.
If Bernd (or anyone else) is interested in making gnupg2 work on uClibc, it will be possible for him to apply either option 2 or option 3 later on. Adding support for uClibc can (and should) be done in a separate patch, anyway.
And whatever the package we patch (pthsem or gnupg2 or both), the patch should be submitted upstream, of course! ;-)
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 3/5 gnupg2: new package
In reply to Vicente Olivert RieraDear Vicente Olivert Riera,
Quoted 11 lines · Vicente Olivert Riera
So, we have three options here and we need to decide one of them:
Option 1: add the new pth package
pros: -there is no need to patch libpthsem
cons: -gnupg2 will not work with uclibcOption 2: patch the libpthsem package
pros: -no need to add pth package
-gnupg2 will work with uclibc
cons: -we need to patch libpthsem to install compatibility stuff
Quoted 7 lines
Option 3: patch gnupg2 to use libpthsem in case of pth is missing
pros: -no need to add pth package
-gnupg2 will work with uclibc
-gnupg2 will work with both libpthsem and pth
cons: -patching gnupg2 source code should be accepted upstreamLet's vote! :)
Option 4: use the --enable-compat option of pthsem, which was precisely designed to offer compatibility with pth, by installing pth.h and pth-config. The only issue was the version check in gnupg2 not accepting the not-completely-compatible behavior of pth-config from pthsem. A one byte patch in gnupg2 solved the problem.
Therefore, this patch (gnupg2) has been applied, after changing the dependency from pth to pthsem, removing the !uclibc dependency, and fixing minor formatting issues in the .mk file.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 4/5 gnupg: Make gnupg and gnupg2 mutual exclusive
In reply to Vicente Olivert Riera--- package/gnupg/Config.in | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
package/gnupg/Config.in +1 -0
@@ -2,6 +2,7 @@ config BR2_PACKAGE_GNUPG bool "gnupg" select BR2_PACKAGE_ZLIB select BR2_PACKAGE_NCURSES + depends on !BR2_PACKAGE_GNUPG2 help GnuPG is the GNU project's complete and free implementation of the OpenPGP standard as defined by RFC4880. GnuPG allows
Signature · 1 line
1.7.1
Thomas Petazzoni
AppliedPATCH 4/5 gnupg: Make gnupg and gnupg2 mutual exclusive
Dear Vicente Olivert Riera,
Quoted 5 lines · Vicente Olivert Riera
Signed-off-by Vicente Olivert Riera <[email protected]>Reviewed-by Markos Chandras <[email protected]>--- package/gnupg/Config.in | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
Applied, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 5/5 pinentry: new package
In reply to Vicente Olivert Riera--- package/Config.in | 1 + package/pinentry/Config.in | 53 ++++++++++++++++++++++++++++++++++++++++++ package/pinentry/pinentry.mk | 47 +++++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 0 deletions(-) create mode 100644 package/pinentry/Config.in create mode 100644 package/pinentry/pinentry.mk
package/Config.in +1 -0
@@ -1078,6 +1078,7 @@ source "package/inotify-tools/Config.in" source "package/lockfile-progs/Config.in" source "package/logrotate/Config.in" source "package/logsurfer/Config.in" +source "package/pinentry/Config.in" source "package/screen/Config.in" source "package/sudo/Config.in" if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
package/pinentry/Config.in new file +53 -0
53 lines not on this page · raw message
package/pinentry/pinentry.mk new file +47 -0
47 lines not on this page · raw message
Signature · 1 line
1.7.1
Thomas Petazzoni
AppliedPATCH 5/5 pinentry: new package
Dear Vicente Olivert Riera,
Quoted 10 lines · Vicente Olivert Riera
Signed-off-by Vicente Olivert Riera <[email protected]>Reviewed-by Markos Chandras <[email protected]>Reviewed-by Gustavo Zacarias <[email protected]>--- package/Config.in | 1 + package/pinentry/Config.in | 53 ++++++++++++++++++++++++++++++++++++++++++ package/pinentry/pinentry.mk | 47 +++++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 0 deletions(-) create mode 100644 package/pinentry/Config.in create mode 100644 package/pinentry/pinentry.mk
Applied, after fixing a few issues:
[Thomas:
- fix license version: the license is GPLv2+, not GPLv2
- make sure the ncurses backend is selected if none of the other backends are selected.
- add dependency on libiconv of the curses and gtk2 backends, needed in !locale configurations.]
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com