From: Arnout Vandecappelle <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] lftp: new package.
Date: Mon, 25 Nov 2013 18:59:51 +0100 [thread overview]
Message-ID: <52939017.20203@mind.be> (raw)
In-Reply-To: <1385384136-22652-2-git-send-email-rebillout@syscom.ch>
On 25/11/13 13:55, Arnaud R?billout wrote:
> LFTP is a sophisticated ftp/http client, and a file transfer program
> supporting a number of network protocols. Like BASH, it has job
> control and uses the readline library for input. It has bookmarks,
> a built-in mirror command, and can transfer several files in parallel.
> It was designed with reliability in mind.
>
> Signed-off-by: Arnaud R?billout <rebillout@syscom.ch>
> ---
> package/Config.in | 1 +
> ...osix_fallocate-m4-check-for-cross-compile.patch | 32 +++++++++++
> ...02-Check-whether-posix_fallocate-compiles.patch | 55 ++++++++++++++++++
> package/lftp/Config.in | 65 ++++++++++++++++++++++
> package/lftp/lftp.mk | 54 ++++++++++++++++++
> 5 files changed, 207 insertions(+)
> create mode 100644 package/lftp/0001-Fix-posix_fallocate-m4-check-for-cross-compile.patch
> create mode 100644 package/lftp/0002-Check-whether-posix_fallocate-compiles.patch
Since these two patches actually fix the same problem, it's better to
squash them into a single patch.
> create mode 100644 package/lftp/Config.in
> create mode 100644 package/lftp/lftp.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index 311cc6c..bcaa8f3 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -814,6 +814,7 @@ source "package/iputils/Config.in"
> source "package/iw/Config.in"
> source "package/kismet/Config.in"
> source "package/knock/Config.in"
> +source "package/lftp/Config.in"
> source "package/lighttpd/Config.in"
> source "package/linknx/Config.in"
> source "package/links/Config.in"
> diff --git a/package/lftp/0001-Fix-posix_fallocate-m4-check-for-cross-compile.patch b/package/lftp/0001-Fix-posix_fallocate-m4-check-for-cross-compile.patch
> new file mode 100644
> index 0000000..3c7209f
> --- /dev/null
> +++ b/package/lftp/0001-Fix-posix_fallocate-m4-check-for-cross-compile.patch
> @@ -0,0 +1,32 @@
> +From 8a49b00a4f746f0bdc1b2490a260f98e872d0e9c Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?Arnaud=20R=C3=A9billout?= <rebillout@syscom.ch>
> +Date: Mon, 25 Nov 2013 11:03:59 +0100
> +Subject: [PATCH 1/2] Fix posix_fallocate m4 check for cross-compile.
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +If we're cross-compiling, it's very unlikely that we use old glibc or
> +AIX. So we assume that posix_fallocate works.
> +
> +Signed-off-by: Arnaud R?billout <rebillout@syscom.ch>
> +---
> + m4/lftp.m4 | 2 ++
> + 1 file changed, 2 insertions(+)
> +
> +diff --git a/m4/lftp.m4 b/m4/lftp.m4
> +index 6d7ad9c..c8efb28 100644
> +--- a/m4/lftp.m4
> ++++ b/m4/lftp.m4
> +@@ -271,6 +271,8 @@ AC_DEFUN([LFTP_POSIX_FALLOCATE_CHECK],[
> + i_cv_posix_fallocate_works=yes
> + ], [
> + i_cv_posix_fallocate_works=no
> ++ ], [
> ++ i_cv_posix_fallocate_works=yes
> + ])
> + ])
> + if test x$i_cv_posix_fallocate_works = xyes; then
> +--
> +1.8.4.4
> +
> diff --git a/package/lftp/0002-Check-whether-posix_fallocate-compiles.patch b/package/lftp/0002-Check-whether-posix_fallocate-compiles.patch
> new file mode 100644
> index 0000000..b137a52
> --- /dev/null
> +++ b/package/lftp/0002-Check-whether-posix_fallocate-compiles.patch
> @@ -0,0 +1,55 @@
> +From 99674dbf332427b6e2778643af026133cc2edac6 Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?Arnaud=20R=C3=A9billout?= <rebillout@syscom.ch>
> +Date: Mon, 25 Nov 2013 13:22:24 +0100
> +Subject: [PATCH 2/2] Check whether posix_fallocate compiles.
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +uClibc doesn't provide posix_fallocate as of 0.9.33.2, but some patches
> +exist to add this function.
> +
> +Therefore, the only way to know if posix_fallocate is present is to do a
> +compile test.
> +
> +Signed-off-by: Arnaud R?billout <rebillout@syscom.ch>
> +---
> + m4/lftp.m4 | 15 +++++++++++++++
> + 1 file changed, 15 insertions(+)
> +
> +diff --git a/m4/lftp.m4 b/m4/lftp.m4
> +index c8efb28..d489bec 100644
> +--- a/m4/lftp.m4
> ++++ b/m4/lftp.m4
> +@@ -244,6 +244,20 @@ AC_DEFUN([LFTP_ENVIRON_CHECK],[
> +
> + dnl Taken from dovecot
> + AC_DEFUN([LFTP_POSIX_FALLOCATE_CHECK],[
> ++ dnl * Ensure posix_fallocate is provided by the C library.
> ++ AC_CACHE_CHECK([whether posix_fallocate() compiles],[i_cv_posix_fallocate_compiles],[
> ++ AC_LINK_IFELSE([
> ++ #include <fcntl.h>
> ++ int main() {
> ++ posix_fallocate(0, 0, 0);
> ++ }
> ++ ], [
> ++ i_cv_posix_fallocate_compiles=yes
> ++ ], [
> ++ i_cv_posix_fallocate_compiles=no
> ++ ])
> ++ ])
I think it would be simpler to work the other way round: to the
AC_LINK_IFELSE in the cross-compiling branch of AC_TRY_RUN. Then you
don't need the additional variable, you can just write to
posix_fallocate_works.
Can you also send the patch upstream so they can comment on it?
> ++ if test x$i_cv_posix_fallocate_compiles = xyes; then
> + dnl * Old glibcs have broken posix_fallocate(). Make sure not to use it.
> + dnl * It may also be broken in AIX.
> + AC_CACHE_CHECK([whether posix_fallocate() works],[i_cv_posix_fallocate_works],[
> +@@ -278,6 +292,7 @@ AC_DEFUN([LFTP_POSIX_FALLOCATE_CHECK],[
> + if test x$i_cv_posix_fallocate_works = xyes; then
> + AC_DEFINE(HAVE_POSIX_FALLOCATE, 1, [Define if you have a working posix_fallocate()])
> + fi
> ++ fi
> + ])
> +
> + AC_DEFUN([LFTP_POSIX_FADVISE_CHECK],[
> +--
> +1.8.4.4
> +
> diff --git a/package/lftp/Config.in b/package/lftp/Config.in
> new file mode 100644
> index 0000000..df4062a
> --- /dev/null
> +++ b/package/lftp/Config.in
> @@ -0,0 +1,65 @@
> +config BR2_PACKAGE_LFTP
> + bool "lftp"
> + depends on BR2_USE_WCHAR
> + depends on BR2_INSTALL_LIBSTDCPP
> + select BR2_PACKAGE_READLINE
> + select BR2_PACKAGE_ZLIB
> + select BR2_PACKAGE_GNUTLS if !BR2_PACKAGE_OPENSSL
> + help
> + LFTP is a sophisticated ftp/http client, and a file transfer program
> + supporting a number of network protocols. Like BASH, it has job
> + control and uses the readline library for input. It has bookmarks,
> + a built-in mirror command, and can transfer several files in parallel.
> + It was designed with reliability in mind.
> +
> + http://lftp.yar.ru/
> +
> +if BR2_PACKAGE_LFTP
> +
> +comment "Commands"
> +
> +config BR2_PACKAGE_LFTP_CMD_MIRROR
> + bool "Mirror command"
> + help
> + Enable mirror command
> +
> +config BR2_PACKAGE_LFTP_CMD_SLEEP
> + bool "Sleep command"
> + help
> + Enable sleep command
> +
> +config BR2_PACKAGE_LFTP_CMD_TORRENT
> + bool "Torrent command"
> + help
> + Enable torrent command
Is it needed/useful to have all these options? Do they have a big
impact on size?
> +
> +comment "Protocols"
> +
> +config BR2_PACKAGE_LFTP_PROTO_FISH
> + bool "FISH protocol"
> + default y
> + help
> + Enable FISH protocol
> +
> +config BR2_PACKAGE_LFTP_PROTO_FTP
> + bool "FTP protocol"
> + default y
> + help
> + Enable FTP protocol
> +
> +config BR2_PACKAGE_LFTP_PROTO_HTTP
> + bool "HTTP protocol"
> + default y
> + help
> + Enable HTTP protocol
> +
> +config BR2_PACKAGE_LFTP_PROTO_SFTP
> + bool "SFTP protocol"
> + default y
> + help
> + Enable SFTP protocol
> +
> +endif # BR2_PACKAGE_LFTP
> +
> +comment "lftp requires a toolchain w/ C++, wchar"
> + depends on !(BR2_USE_WCHAR && BR2_INSTALL_LIBSTDCPP)
> diff --git a/package/lftp/lftp.mk b/package/lftp/lftp.mk
> new file mode 100644
> index 0000000..faf9f37
> --- /dev/null
> +++ b/package/lftp/lftp.mk
> @@ -0,0 +1,54 @@
> +################################################################################
> +#
> +# lftp
> +#
> +################################################################################
> +
> +LFTP_VERSION = 4.4.10
> +LFTP_SITE = http://lftp.yar.ru/ftp
> +LFTP_LICENSE = GPLv3+
> +LFTP_LICENSE_FILES = COPYING
> +LFTP_AUTORECONF = YES
> +LFTP_DEPENDENCIES = readline zlib
Is the readline dependency required?
> +
> +LFTP_CONF_OPT += --with-modules
> +
> +ifeq ($(BR2_PACKAGE_GNUTLS),y)
> +LFTP_DEPENDENCIES += gnutls
> +LFTP_CONF_OPT += --with-gnutls
> +else
> +LFTP_CONF_OPT += --without-gnutls
> +endif
> +
> +ifeq ($(BR2_PACKAGE_OPENSSL),y)
> +LFTP_DEPENDENCIES += openssl
> +LFTP_CONF_OPT += --with-openssl
> +else
> +LFTP_CONF_OPT += --without-openssl
> +endif
> +
> +# Remove /usr/share/lftp
> +define LFTP_REMOVE_DATA
> + $(RM) -fr $(TARGET_DIR)/usr/share/lftp
What kind of data is stored there? If it's help text, the user may
want it.
Regards,
Arnout
> +endef
> +
> +LFTP_POST_INSTALL_TARGET_HOOKS += LFTP_REMOVE_DATA
> +
> +# Optional commands and protocols
> +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_MIRROR) += cmd-mirror.so
> +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_SLEEP) += cmd-sleep.so
> +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_TORRENT) += cmd-torrent.so
> +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_FISH) += proto-fish.so
> +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_FTP) += proto-ftp.so
> +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_HTTP) += proto-http.so
> +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_SFTP) += proto-sftp.so
> +
> +define LFTP_REMOVE_MODULES
> + for f in $(LFTP_MODULES_TO_REMOVE-) ; do \
> + $(RM) -f $(TARGET_DIR)/usr/lib/lftp/$(LFTP_VERSION)/$$f ; \
> + done
> +endef
> +
> +LFTP_POST_INSTALL_TARGET_HOOKS += LFTP_REMOVE_MODULES
> +
> +$(eval $(autotools-package))
>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
next prev parent reply other threads:[~2013-11-25 17:59 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-25 12:55 [Buildroot] [PATCH v2] lftp: new package Arnaud Rébillout
2013-11-25 12:55 ` [Buildroot] [PATCH] " Arnaud Rébillout
2013-11-25 17:59 ` Arnout Vandecappelle [this message]
2013-12-02 9:36 ` Arnaud Rébillout
2013-12-02 22:04 ` Arnout Vandecappelle
2013-12-03 7:59 ` Arnaud Rébillout
2013-11-25 17:54 ` [Buildroot] [PATCH v2] " Arnout Vandecappelle
-- strict thread matches above, loose matches on Subject: below --
2013-11-21 15:16 [Buildroot] LFTP: a sophisticated ftp/sftp/http/fish client with few dependencies Arnaud Rébillout
2013-11-21 15:16 ` [Buildroot] [PATCH] lftp: new package Arnaud Rébillout
2013-11-21 15:42 ` Thomas Petazzoni
2013-11-21 16:17 ` Arnaud Rébillout
2013-11-21 17:12 ` Thomas Petazzoni
2013-11-21 21:54 ` Arnout Vandecappelle
2013-11-21 22:00 ` Thomas Petazzoni
2013-11-21 22:19 ` Arnout Vandecappelle
2013-11-22 8:15 ` Thomas Petazzoni
2013-11-22 9:20 ` Arnout Vandecappelle
2013-11-25 13:06 ` Arnaud Rébillout
2013-11-25 13:19 ` Arnaud Rébillout
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=52939017.20203@mind.be \
--to=arnout@mind.be \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.