From: Vadim Kochan <vadim4j@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2 1/1] package/ecryptfs-utils: Add support without gettext
Date: Fri, 15 Mar 2019 04:34:56 +0200 [thread overview]
Message-ID: <20190315023456.15988-1-vadim4j@gmail.com> (raw)
Add custom ecryptfs-common script which provides gettext wrapper as
function, script checks if there is gettext tool, if no - the "printf"
will be used instead. Each script which uses gettext is patched with
including this ecryptfs-common script.
gettext package is now selected automatically only if NLS is enabled.
Also replaced AM_GLIB_GNU_GETTEXT by AM_GNU_GETTEXT because original
macro is removed during autoreconf. Actually AM_GLIB_GNU_GETTEXT is
marked as deprecated in:
https://gitlab.gnome.org/GNOME/glib/blob/master/m4macros/glib-gettext.m4#L437
so it is ok to use the gettext's one.
Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
---
v2:
1) Move ecryptfs-common from package/ecryptfs-utils to *.patch and
install it from src/utils/Makefile.am
2) Use solution from Yann E. Morin for gettext-wrapper
3) Replace AM_GLIB_GNU_GETTEXT by AM_GNU_GETTEXT
4) Use @prefix@ and @PACKAGE@ variables to properly include the
ecryptfs-common script in utils which uses gettext, it requires
to add these utils scripts into configure.ac AC_CONFIG_FILES for
variable replacement.
...tils-Use-printf-if-gettext-does-not-exist.patch | 217 +++++++++++++++++++++
package/ecryptfs-utils/Config.in | 2 +-
package/ecryptfs-utils/ecryptfs-utils.mk | 5 +
3 files changed, 223 insertions(+), 1 deletion(-)
create mode 100644 package/ecryptfs-utils/0003-utils-Use-printf-if-gettext-does-not-exist.patch
diff --git a/package/ecryptfs-utils/0003-utils-Use-printf-if-gettext-does-not-exist.patch b/package/ecryptfs-utils/0003-utils-Use-printf-if-gettext-does-not-exist.patch
new file mode 100644
index 0000000000..7fe8756323
--- /dev/null
+++ b/package/ecryptfs-utils/0003-utils-Use-printf-if-gettext-does-not-exist.patch
@@ -0,0 +1,217 @@
+From e2a69d509653ff189dd8dd7ed30ff568a0183f1a Mon Sep 17 00:00:00 2001
+From: Vadim Kochan <vadim4j@gmail.com>
+Date: Tue, 12 Mar 2019 02:15:33 +0200
+Subject: [PATCH] utils: Use "printf" if gettext does not exist
+
+There might be a case when gettext does not exist on the system,
+so use just "printf" instead. Added gettext wrapper which imitates
+gettext behaviour, wrapper is used only if gettext is not found
+by "which". ecryptfs-common is included by each script which uses
+gettext tool.
+
+AM_GLIB_GNU_GETTEXT is replaced by AM_GNU_GETTEXT, to get rid of
+glib2 dependency just only for this macro. Actually this macro is marked
+as deprecated in:
+
+ https://gitlab.gnome.org/GNOME/glib/blob/master/m4macros/glib-gettext.m4#L437
+
+Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
+---
+ configure.ac | 12 ++++++++++--
+ src/utils/Makefile.am | 4 +++-
+ src/utils/ecryptfs-common | 30 ++++++++++++++++++++++++++++++
+ src/utils/ecryptfs-migrate-home | 2 ++
+ src/utils/ecryptfs-mount-private | 2 ++
+ src/utils/ecryptfs-rewrite-file | 2 ++
+ src/utils/ecryptfs-setup-private | 3 +++
+ src/utils/ecryptfs-setup-swap | 2 ++
+ src/utils/ecryptfs-umount-private | 2 ++
+ src/utils/ecryptfs-verify | 2 ++
+ 10 files changed, 58 insertions(+), 3 deletions(-)
+ create mode 100755 src/utils/ecryptfs-common
+
+diff --git a/configure.ac b/configure.ac
+index bbc6ffc..eec1ebc 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -13,7 +13,7 @@ AC_PREREQ(2.59)
+ AC_INIT([ecryptfs-utils],[111])
+ AC_CANONICAL_HOST
+ AC_CANONICAL_TARGET
+-AM_INIT_AUTOMAKE([${PACKAGE_NAME}], [${PACKAGE_VERSION}])
++AM_INIT_AUTOMAKE([foreign])
+ AC_CONFIG_SRCDIR([src/libecryptfs])
+ AC_CONFIG_HEADERS([config.h])
+ AC_SUBST(AM_CPPFLAGS, '-include $(top_builddir)/config.h')
+@@ -369,7 +369,8 @@ AC_SUBST(GETTEXT_PACKAGE)
+ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
+ [the gettext translation domain])
+
+-AM_GLIB_GNU_GETTEXT
++AM_GNU_GETTEXT_VERSION([0.19])
++AM_GNU_GETTEXT([external])
+
+ IT_PROG_INTLTOOL([0.41.0])
+
+@@ -439,6 +440,13 @@ AC_CONFIG_FILES([
+ tests/kernel/Makefile
+ tests/userspace/Makefile
+ po/Makefile.in
++ src/utils/ecryptfs-migrate-home:src/utils/ecryptfs-migrate-home
++ src/utils/ecryptfs-mount-private:src/utils/ecryptfs-mount-private
++ src/utils/ecryptfs-rewrite-file:src/utils/ecryptfs-rewrite-file
++ src/utils/ecryptfs-setup-private:src/utils/ecryptfs-setup-private
++ src/utils/ecryptfs-setup-swap:src/utils/ecryptfs-setup-swap
++ src/utils/ecryptfs-umount-private:src/utils/ecryptfs-umount-private
++ src/utils/ecryptfs-verify:src/utils/ecryptfs-verify
+ ])
+ AC_OUTPUT
+
+diff --git a/src/utils/Makefile.am b/src/utils/Makefile.am
+index 83cf851..54c3bdc 100644
+--- a/src/utils/Makefile.am
++++ b/src/utils/Makefile.am
+@@ -21,9 +21,11 @@ bin_SCRIPTS = ecryptfs-setup-private \
+ ecryptfs-find \
+ ecryptfs-verify
+ bin2dir = $(bindir)
+-
+ noinst_PROGRAMS=test
+
++commonlibdir=$(libdir)/ecryptfs-utils
++commonlib_SCRIPTS=ecryptfs-common
++
+ if ENABLE_TESTS
+ TESTS=test
+ endif
+diff --git a/src/utils/ecryptfs-common b/src/utils/ecryptfs-common
+new file mode 100755
+index 0000000..3b18568
+--- /dev/null
++++ b/src/utils/ecryptfs-common
+@@ -0,0 +1,30 @@
++# Thanks to "Yann E. MORIN" <yann.morin.1998@free.fr>
++# for this gettext replacement function
++if ! which gettext >/dev/null 2>&1; then
++gettext() {
++ if [ -n "${GETTEXT}" ]; then
++ # Weird construct so that script that are 'set -e'
++ # fail at the call site of gettext and not here.
++ "${GETTEXT}" "${@}" || return $?
++ return 0
++ fi
++ while [ ${#} -ne 0 ]; do
++ case "${1}" in
++ (-h) printf "no help\n"; return 0;;
++ (-V) printf "0.0.0\n"; return 0;;
++ (-d|--domain) shift 2;;
++ (-d*|--domain=*) shift 1;;
++ (-e|-E|-n) shift 1;;
++ (-s) shift 1;; # Ignore?
++ (-*) printf "invalid option '%s'\n" "${1}" >&2; return 1;;
++ (*) break;;
++ esac
++ done
++ case ${#} in
++ (0) printf "missing arguments\n" >&2; return 1;;
++ (1) printf "%s" "${1}";;
++ (2) shift; printf "%s" "${2}";;
++ (*) printf "too many arguments\n" >&2; return 1;;
++ esac
++}
++fi
+diff --git a/src/utils/ecryptfs-migrate-home b/src/utils/ecryptfs-migrate-home
+index b810146..1233910 100755
+--- a/src/utils/ecryptfs-migrate-home
++++ b/src/utils/ecryptfs-migrate-home
+@@ -24,6 +24,8 @@
+
+ set -e
+
++. @prefix@/lib/@PACKAGE@/ecryptfs-common
++
+ PRIVATE_DIR="Private"
+
+ usage() {
+diff --git a/src/utils/ecryptfs-mount-private b/src/utils/ecryptfs-mount-private
+index c32708f..218d0a2 100755
+--- a/src/utils/ecryptfs-mount-private
++++ b/src/utils/ecryptfs-mount-private
+@@ -12,6 +12,8 @@
+ # * inserts the mount passphrase into the keyring
+ # * and mounts a user's encrypted private folder
+
++. @prefix@/lib/@PACKAGE@/ecryptfs-common
++
+ PRIVATE_DIR="Private"
+ WRAPPING_PASS="LOGIN"
+ PW_ATTEMPTS=3
+diff --git a/src/utils/ecryptfs-rewrite-file b/src/utils/ecryptfs-rewrite-file
+index c4f67f5..6b00370 100755
+--- a/src/utils/ecryptfs-rewrite-file
++++ b/src/utils/ecryptfs-rewrite-file
+@@ -17,6 +17,8 @@
+ # You should have received a copy of the GNU General Public License
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
+
++. @prefix@/lib/@PACKAGE@/ecryptfs-common
++
+ TEXTDOMAIN="ecryptfs-utils"
+
+ error() {
+diff --git a/src/utils/ecryptfs-setup-private b/src/utils/ecryptfs-setup-private
+index e90d1d0..50073d4 100755
+--- a/src/utils/ecryptfs-setup-private
++++ b/src/utils/ecryptfs-setup-private
+@@ -6,6 +6,9 @@
+ # Ported for use on Ubuntu by Dustin Kirkland <kirkland@ubuntu.com>
+ # Copyright (C) 2008 Canonical Ltd.
+ # Copyright (C) 2007-2008 International Business Machines
++
++. @prefix@/lib/@PACKAGE@/ecryptfs-common
++
+ PRIVATE_DIR="Private"
+ WRAPPING_PASS="LOGIN"
+ ECRYPTFS_DIR="/home/.ecryptfs"
+diff --git a/src/utils/ecryptfs-setup-swap b/src/utils/ecryptfs-setup-swap
+index 41cf18a..f122674 100755
+--- a/src/utils/ecryptfs-setup-swap
++++ b/src/utils/ecryptfs-setup-swap
+@@ -19,6 +19,8 @@
+ # The cryptswap setup used here follows a guide published at:
+ # * http://ubuntumagnet.com/2007/11/creating-encrypted-swap-file-ubuntu-using-cryptsetup
+
++. @prefix@/lib/@PACKAGE@/ecryptfs-common
++
+ TEXTDOMAIN="ecryptfs-utils"
+
+ error() {
+diff --git a/src/utils/ecryptfs-umount-private b/src/utils/ecryptfs-umount-private
+index 27edeaa..5645f4d 100755
+--- a/src/utils/ecryptfs-umount-private
++++ b/src/utils/ecryptfs-umount-private
+@@ -5,6 +5,8 @@
+ # Original by Michael Halcrow, IBM
+ # Extracted to a stand-alone script by Dustin Kirkland <kirkland@ubuntu.com>
+
++. @prefix@/lib/@PACKAGE@/ecryptfs-common
++
+ TEXTDOMAIN="ecryptfs-utils"
+
+ if grep -qs "$HOME/.Private $PWD ecryptfs " /proc/mounts 2>/dev/null; then
+diff --git a/src/utils/ecryptfs-verify b/src/utils/ecryptfs-verify
+index b55641d..f102d2b 100755
+--- a/src/utils/ecryptfs-verify
++++ b/src/utils/ecryptfs-verify
+@@ -16,6 +16,8 @@
+ # You should have received a copy of the GNU General Public License
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
+
++. @prefix@/lib/@PACKAGE@/ecryptfs-common
++
+ error() {
+ echo `gettext "ERROR:"` "$@" 1>&2
+ echo `gettext "ERROR:"` "Configuration invalid" 1>&2
+--
+2.14.1
+
diff --git a/package/ecryptfs-utils/Config.in b/package/ecryptfs-utils/Config.in
index 6652d33e0e..1438c1754c 100644
--- a/package/ecryptfs-utils/Config.in
+++ b/package/ecryptfs-utils/Config.in
@@ -12,7 +12,7 @@ config BR2_PACKAGE_ECRYPTFS_UTILS
select BR2_PACKAGE_LIBNSS
# runtime dependency only, some scripts are using the
# 'gettext' program to get translations
- select BR2_PACKAGE_GETTEXT
+ select BR2_PACKAGE_GETTEXT if BR2_SYSTEM_ENABLE_NLS
# runtime dependency only
select BR2_PACKAGE_GETENT
help
diff --git a/package/ecryptfs-utils/ecryptfs-utils.mk b/package/ecryptfs-utils/ecryptfs-utils.mk
index eb3194b6d0..1b49397137 100644
--- a/package/ecryptfs-utils/ecryptfs-utils.mk
+++ b/package/ecryptfs-utils/ecryptfs-utils.mk
@@ -25,4 +25,9 @@ else
ECRYPTFS_UTILS_CONF_OPTS += --disable-openssl
endif
+define ECRYPTFS_UTILS_RUN_AUTOGEN
+ cd $(@D) && PATH=$(BR_PATH) ./autogen.sh
+endef
+ECRYPTFS_UTILS_PRE_CONFIGURE_HOOKS += ECRYPTFS_UTILS_RUN_AUTOGEN
+
$(eval $(autotools-package))
--
2.14.1
next reply other threads:[~2019-03-15 2:34 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-15 2:34 Vadim Kochan [this message]
2019-03-26 19:28 ` [Buildroot] [PATCH v2 1/1] package/ecryptfs-utils: Add support without gettext Yann E. MORIN
2019-03-26 20:49 ` Arnout Vandecappelle
2019-03-26 21:45 ` Yann E. MORIN
2019-03-26 21:09 ` Vadim Kochan
2019-03-26 22:01 ` Yann E. MORIN
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190315023456.15988-1-vadim4j@gmail.com \
--to=vadim4j@gmail.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox