Here is a proposed patch that adds a package selection for sftp support under dropbear, by building/installing a single statically linked sftp-server binary from the openssh/openssl packages.

This option builds just the necessary prerequisite parts of openssh/openssl to achieve the static link, primarily from the existing tarballs/patches in the GPP, but does so within its own package directory. Thus it does not require the configuration to depend on openssh/openssl at large, and the resultant binary rpm adds just one executable (sftp-server) to the target image.


Index: config/userspace/packages.lkc
===================================================================
RCS file: /sources/ltib/ltib/config/userspace/packages.lkc,v
retrieving revision 1.49
diff -u -a -r1.49 packages.lkc
--- config/userspace/packages.lkc	4 Mar 2012 18:24:30 -0000	1.49
+++ config/userspace/packages.lkc	9 Mar 2012 07:17:31 -0000
@@ -657,6 +667,16 @@
       * TCP forwarding support
       * Features can easily be disabled when compiling to save space
 
+config PKG_SFTP_SERVER
+    depends CAP_HAS_MMU
+    depends PKG_DROPBEAR
+    bool "add sftp-server from openssh package" 
+    help
+       Build/install just the sftp-server binary from the openssh
+       package.  This provides sftp server capability under the
+       dropbear ssh server without building/installing all of 
+       openssh/openssl.
+
 config PKG_DROPBEAR_WANT_URANDOM_DEV
     depends CAP_HAS_MMU
     depends PKG_DROPBEAR
Index: config/userspace/pkg_map
===================================================================
RCS file: /sources/ltib/ltib/config/userspace/pkg_map,v
retrieving revision 1.32
diff -u -a -r1.32 pkg_map
--- config/userspace/pkg_map	4 Mar 2012 17:41:54 -0000	1.32
+++ config/userspace/pkg_map	9 Mar 2012 07:17:31 -0000
@@ -97,6 +97,7 @@
 PKG_DROPBEAR                     = dropbear
 PKG_OPENSSL                      = openssl
 PKG_OPENSSH                      = openssh
+PKG_SFTP_SERVER                  = sftp-server
 PKG_IPSEC_TOOLS                  = ipsec-tools
 PKG_IPSECADM                     = ipsecadm
 PKG_IPTABLES                     = iptables
%define pfx /opt/freescale/rootfs/%{_target_cpu}

Summary         : Just the sftp-server executable from OpenSSH
Name            : sftp-server
Version         : 4.3p2
Release         : 1
License         : BSD
Vendor          : Avid Technology
Packager        : Fritz Mueller
Group           : Applications/Internet
Source          : openssh-4.3p2.tar.gz
Source1         : openssl-0.9.8g.tar.gz
Patch0          : openssl-md4_size_t.patch
Patch1          : openssl-md5_size_t.patch
Patch2          : openssl-sha_size_t.patch
Patch3          : openssl-0.9.8g-lib64.patch
Patch4          : openssl-0.9.8g-ripemd_size_t.patch
Patch5          : openssl-0.9.8g-sec.patch
Patch6          : openssl-0.9.8g-cryptodev.patch
Patch7          : openssh-4.3p2-static-sftp-server.patch
BuildRoot       : %{_tmppath}/%{name}
Prefix          : %{pfx}

%Description
%{summary}

%Prep
%setup -T -c
%setup -T -D -a 0
%setup -T -D -a 1
%patch7 -p1
cd openssl-0.9.8g
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1


%Build
cd $RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION/openssl-0.9.8g
case $ENDIAN in
    big)
        XTRA_OPTS="-DB_ENDIAN"
        ;;
    little)
        XTRA_OPTS="-DL_ENDIAN"
        ;;
    *)
        echo "Please set the ENDIAN environment variable to big|little"
        ;;
esac
case "$LINTARCH" in
    arm|m68k*)
       OSSL_ARCH="linux-generic32"
       ;;
    powerpc*)
       OSSL_ARCH="linux-ppc"
       ;;
    *)
       OSSL_ARCH="linux-$LINTARCH"
       ;;
esac
./Configure $OSSL_ARCH --prefix=%{_prefix} shared no-asm $XTRA_OPTS --with-cryptodev 
make -j1 build_crypto

cd $RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION/openssh-4.3p2
LD=gcc ./configure --prefix=%{_prefix} --host=$CFGHOST --build=%{_build} --with-zlib=$DEV_IMAGE/usr --with-ssl-dir=$RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION/openssl-0.9.8g --with-ldflags="-L$RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION/openssl-0.9.8g" --config-cache
make -j1 sysconfdir=%{_sysconfdir}/ssh sftp-server

%Install
rm -rf $RPM_BUILD_ROOT
cd $RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION/openssh-4.3p2
make -j1 install-sftp-server sysconfdir=%{_sysconfdir}/ssh DESTDIR=$RPM_BUILD_ROOT/%{pfx}

%Clean
rm -rf $RPM_BUILD_ROOT

%Files
%defattr(-,root,root)
%{pfx}/*
diff --exclude CVS --exclude .git -uNr sftp-server-4.3p2/openssh-4.3p2/Makefile.in sftp-server-4.3p2.modified/openssh-4.3p2/Makefile.in
--- sftp-server-4.3p2/openssh-4.3p2/Makefile.in	2006-01-01 00:47:05.000000000 -0800
+++ sftp-server-4.3p2.modified/openssh-4.3p2/Makefile.in	2012-03-08 17:28:28.610248331 -0800
@@ -157,7 +157,7 @@
 	$(LD) -o $@ ssh-keyscan.o $(LDFLAGS) -lssh -lopenbsd-compat -lssh $(LIBS)
 
 sftp-server$(EXEEXT): $(LIBCOMPAT) libssh.a sftp.o sftp-common.o sftp-server.o
-	$(LD) -o $@ sftp-server.o sftp-common.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
+	$(LD) -o $@ sftp-server.o sftp-common.o $(LDFLAGS) -Wl,-Bstatic -lssh -lopenbsd-compat -lcrypto -Wl,-Bdynamic 
 
 sftp$(EXEEXT): $(LIBCOMPAT) libssh.a sftp.o sftp-client.o sftp-common.o sftp-glob.o progressmeter.o
 	$(LD) -o $@ progressmeter.o sftp.o sftp-client.o sftp-common.o sftp-glob.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(LIBEDIT)
@@ -234,6 +234,10 @@
 install-nokeys: $(CONFIGFILES) ssh_prng_cmds.out $(MANPAGES) $(TARGETS) install-files install-sysconf
 install-nosysconf: $(CONFIGFILES) ssh_prng_cmds.out $(MANPAGES) $(TARGETS) install-files
 
+install-sftp-server:
+	$(srcdir)/mkinstalldirs $(DESTDIR)$(libexecdir)
+	$(INSTALL) -m 0755 $(STRIP_OPT) sftp-server $(DESTDIR)$(SFTP_SERVER)
+
 check-config:
 	-$(DESTDIR)$(sbindir)/sshd -t -f $(DESTDIR)$(sysconfdir)/sshd_config
 
2805b8417dcdd2be19a5c9ddc1646ae4  openssh-4.3p2-static-sftp-server.patch
_______________________________________________
LTIB home page: http://ltib.org

Ltib mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/ltib

Reply via email to