09f9f4525d1d349da8505bcb98f590577f905078
[termux-packages] / packages / openssh / build.sh
1 TERMUX_PKG_HOMEPAGE=https://www.openssh.com/
2 TERMUX_PKG_DESCRIPTION="Secure shell for logging into a remote machine"
3 TERMUX_PKG_VERSION=7.7p1
4 TERMUX_PKG_SHA256=d73be7e684e99efcd024be15a30bffcbe41b012b2f7b3c9084aed621775e6b8f
5 TERMUX_PKG_SRCURL=https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${TERMUX_PKG_VERSION}.tar.gz
6 TERMUX_PKG_DEPENDS="libandroid-support, ldns, openssl, libedit, libutil"
7 # --disable-strip to prevent host "install" command to use "-s", which won't work for target binaries:
8 TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
9 --disable-etc-default-login
10 --disable-lastlog
11 --disable-libutil
12 --disable-pututline
13 --disable-pututxline
14 --disable-strip
15 --disable-utmp
16 --disable-utmpx
17 --disable-wtmp
18 --disable-wtmpx
19 --sysconfdir=$TERMUX_PREFIX/etc/ssh
20 --with-cflags=-Dfd_mask=int
21 --with-ldns
22 --with-libedit
23 --with-mantype=man
24 --without-ssh1
25 --without-stackprotect
26 --with-pid-dir=$TERMUX_PREFIX/var/run
27 --with-privsep-path=$TERMUX_PREFIX/var/empty
28 --with-xauth=$TERMUX_PREFIX/bin/xauth
29 ac_cv_func_endgrent=yes
30 ac_cv_func_fmt_scaled=no
31 ac_cv_func_getlastlogxbyname=no
32 ac_cv_func_readpassphrase=no
33 ac_cv_func_strnvis=no
34 ac_cv_header_sys_un_h=yes
35 ac_cv_search_getrrsetbyname=no
36 ac_cv_func_bzero=yes
37 "
38 TERMUX_PKG_MAKE_INSTALL_TARGET="install-nokeys"
39 TERMUX_PKG_RM_AFTER_INSTALL="bin/slogin share/man/man1/slogin.1"
40
41 termux_step_pre_configure() {
42 autoreconf
43
44 ## Configure script require this variable to set
45 ## prefixed path to program 'passwd'
46 export PATH_PASSWD_PROG="${TERMUX_PREFIX}/bin/passwd"
47
48 CPPFLAGS+=" -DHAVE_ATTRIBUTE__SENTINEL__=1"
49 LD=$CC # Needed to link the binaries
50 LDFLAGS+=" -llog" # liblog for android logging in syslog hack
51 }
52
53 termux_step_post_configure() {
54 # We need to remove this file before installing, since otherwise the
55 # install leaves it alone which means no updated timestamps.
56 rm -Rf $TERMUX_PREFIX/etc/moduli
57 }
58
59 termux_step_post_make_install () {
60 # "PrintMotd no" is due to our login program already showing it.
61 # OpenSSH 7.0 disabled ssh-dss by default, keep it for a while in Termux:
62 echo -e "PrintMotd no\nPasswordAuthentication no\nPubkeyAcceptedKeyTypes +ssh-dss\nSubsystem sftp $TERMUX_PREFIX/libexec/sftp-server" > $TERMUX_PREFIX/etc/ssh/sshd_config
63 echo "PubkeyAcceptedKeyTypes +ssh-dss" > $TERMUX_PREFIX/etc/ssh/ssh_config
64 cp $TERMUX_PKG_BUILDER_DIR/source-ssh-agent.sh $TERMUX_PREFIX/bin/source-ssh-agent
65 cp $TERMUX_PKG_BUILDER_DIR/ssh-with-agent.sh $TERMUX_PREFIX/bin/ssha
66
67 # Install ssh-copy-id:
68 cp $TERMUX_PKG_SRCDIR/contrib/ssh-copy-id.1 $TERMUX_PREFIX/share/man/man1/
69 cp $TERMUX_PKG_SRCDIR/contrib/ssh-copy-id $TERMUX_PREFIX/bin/
70 chmod +x $TERMUX_PREFIX/bin/ssh-copy-id
71
72 mkdir -p $TERMUX_PREFIX/var/run
73 echo "OpenSSH needs this folder to put sshd.pid in" >> $TERMUX_PREFIX/var/run/README.openssh
74
75 mkdir -p $TERMUX_PREFIX/etc/ssh/
76 cp $TERMUX_PKG_SRCDIR/moduli $TERMUX_PREFIX/etc/ssh/moduli
77 }
78
79 termux_step_post_massage () {
80 # Verify that we have man pages packaged (#1538).
81 local manpage
82 for manpage in ssh-keyscan.1 ssh-add.1 scp.1 ssh-agent.1 ssh.1; do
83 if [ ! -f share/man/man1/$manpage ]; then
84 termux_error_exit "Missing man page $manpage"
85 fi
86 done
87 }
88
89 termux_step_create_debscripts () {
90 echo "#!$TERMUX_PREFIX/bin/sh" > postinst
91 echo "mkdir -p \$HOME/.ssh" >> postinst
92 echo "touch \$HOME/.ssh/authorized_keys" >> postinst
93 echo "chmod 700 \$HOME/.ssh" >> postinst
94 echo "chmod 600 \$HOME/.ssh/authorized_keys" >> postinst
95 echo "" >> postinst
96 echo "for a in rsa dsa ecdsa ed25519; do" >> postinst
97 echo " KEYFILE=$TERMUX_PREFIX/etc/ssh/ssh_host_\${a}_key" >> postinst
98 echo " test ! -f \$KEYFILE && ssh-keygen -N '' -t \$a -f \$KEYFILE" >> postinst
99 echo "done" >> postinst
100 echo "exit 0" >> postinst
101 chmod 0755 postinst
102 }