0
0
mirror of https://github.com/termux/termux-packages.git synced 2025-09-27 22:32:40 +00:00
Files
termux-packages/packages/openssh/build.sh
Henrik Grimler 4756daac57 fix(main/openssh): fix conflict with openssh-sftp-server
openssh-sftp-server should conflict with openssh <= 9.9p2-1, or else
upgrade fails with:

Preparing to unpack .../81-openssh-sftp-server_10.0p2-4_arm.deb ...
Unpacking openssh-sftp-server (10.0p2-4) over (9.9p2-1) ...
dpkg: error processing archive /data/data/com.termux/files/usr/tmp/apt-dpkg-install-41JbqT/81-openssh-sftp-server_10.0p2-4_arm.deb (--unpack):
 trying to overwrite '/data/data/com.termux/files/usr/share/man/man1/sftp.1.gz', which is also in package openssh 9.9p2-1
Preparing to unpack .../82-openssh_10.0p2-4_arm.deb ...
Unpacking openssh (10.0p2-4) over (9.9p2-1) ...

Fixes: 7b5bd568c2 ("bump(main/openssh): 10.0p2")
2025-04-28 10:31:20 +02:00

167 lines
6.7 KiB
Bash

TERMUX_PKG_HOMEPAGE=https://www.openssh.com/
TERMUX_PKG_DESCRIPTION="Secure shell for logging into a remote machine"
TERMUX_PKG_LICENSE="BSD"
TERMUX_PKG_MAINTAINER="Joshua Kahn @TomJo2000"
TERMUX_PKG_VERSION="10.0p2"
TERMUX_PKG_REVISION=5
TERMUX_PKG_SRCURL=https://github.com/openssh/openssh-portable/archive/refs/tags/V_$(sed 's/\./_/g; s/p/_P/g' <<< $TERMUX_PKG_VERSION).tar.gz
TERMUX_PKG_SHA256=a25b32645dc6b474064b9deb07afc9d8e37b127d026a1170b54feb929145140c
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="krb5, ldns, libandroid-support, libedit, openssh-sftp-server, openssl, termux-auth, zlib"
TERMUX_PKG_SUGGESTS="termux-services"
TERMUX_PKG_CONFLICTS="dropbear"
# Certain packages are not safe to build on device because their
# build.sh script deletes specific files in $TERMUX_PREFIX.
TERMUX_PKG_ON_DEVICE_BUILD_NOT_SUPPORTED=true
# --disable-strip to prevent host "install" command to use "-s", which won't work for target binaries:
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
--disable-etc-default-login
--disable-lastlog
--disable-libutil
--disable-pututline
--disable-pututxline
--disable-strip
--disable-utmp
--disable-utmpx
--disable-wtmp
--disable-wtmpx
--sysconfdir=$TERMUX_PREFIX/etc/ssh
--with-cflags=-Dfd_mask=int
--with-ldns
--with-libedit
--with-mantype=man
--without-ssh1
--without-stackprotect
--with-pid-dir=$TERMUX_PREFIX/var/run
--with-privsep-path=$TERMUX_PREFIX/var/empty
--with-xauth=$TERMUX_PREFIX/bin/xauth
--with-kerberos5
--with-default-path=$TERMUX_PREFIX/bin
ac_cv_func_endgrent=yes
ac_cv_func_fmt_scaled=no
ac_cv_func_getlastlogxbyname=no
ac_cv_func_readpassphrase=no
ac_cv_func_strnvis=no
ac_cv_header_sys_un_h=yes
ac_cv_lib_crypt_crypt=no
ac_cv_search_getrrsetbyname=no
ac_cv_func_bzero=yes
"
# Configure script requires this variable to set prefixed path to program 'passwd'
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+="PATH_PASSWD_PROG=${TERMUX_PREFIX}/bin/passwd"
TERMUX_PKG_MAKE_INSTALL_TARGET="install-nokeys"
TERMUX_PKG_RM_AFTER_INSTALL="bin/slogin share/man/man1/slogin.1"
TERMUX_PKG_CONFFILES="etc/ssh/ssh_config etc/ssh/sshd_config"
termux_pkg_auto_update() {
local latest_tag version
latest_tag="$(termux_github_api_get_tag "${TERMUX_PKG_SRCURL}" newest-tag)"
[[ -z "${latest_tag}" ]] && termux_error_exit "ERROR: Unable to get tag from ${TERMUX_PKG_SRCURL}"
version="$(sed -E 's/V_([0-9]+)_([0-9]+)_P([0-9]+)/\1.\2p\3/' <<< "${latest_tag}")"
termux_pkg_upgrade_version "$version"
}
termux_step_pre_configure() {
autoreconf
CPPFLAGS+=" -DHAVE_ATTRIBUTE__SENTINEL__=1 -DBROKEN_SETRESGID"
LD=$CC # Needed to link the binaries
}
termux_step_post_configure() {
# We need to remove this file before installing, since otherwise the
# install leaves it alone which means no updated timestamps.
rm -f "$TERMUX_PREFIX/etc/ssh/moduli"
rm -f "$TERMUX_PREFIX/etc/ssh/ssh_config"
rm -f "$TERMUX_PREFIX/etc/ssh/sshd_config"
}
termux_step_post_make_install() {
install -Dm700 "$TERMUX_PKG_BUILDER_DIR/source-ssh-agent.sh" "$TERMUX_PREFIX/libexec/source-ssh-agent.sh"
install -Dm700 "$TERMUX_PKG_BUILDER_DIR/wrap-ssh-agent.sh" "$TERMUX_PREFIX/libexec/wrap-ssh-agent.sh"
ln -s -f -T '../libexec/wrap-ssh-agent.sh' "$TERMUX_PREFIX/bin/ssha"
ln -s -f -T '../libexec/wrap-ssh-agent.sh' "$TERMUX_PREFIX/bin/sftpa"
ln -s -f -T '../libexec/wrap-ssh-agent.sh' "$TERMUX_PREFIX/bin/scpa"
mkdir -p "$TERMUX_PREFIX/var/run"
echo "OpenSSH needs this directory to put sshd.pid in" > "$TERMUX_PREFIX/var/run/README.openssh"
# Install ssh-copy-id:
echo "#!$TERMUX_PREFIX/bin/sh" > "$TERMUX_PREFIX/bin/ssh-copy-id"
tail -n+2 "$TERMUX_PKG_SRCDIR/contrib/ssh-copy-id" >> "$TERMUX_PREFIX/bin/ssh-copy-id"
sed -i -e "s|SANE_SH:-.*|SANE_SH:-$TERMUX_PREFIX/bin/bash}|g" "$TERMUX_PREFIX/bin/ssh-copy-id"
chmod 0700 "$TERMUX_PREFIX/bin/ssh-copy-id"
# Install ssh-copy-id's man page
mkdir -p "$TERMUX_PREFIX/share/man/man1"
cp "$TERMUX_PKG_SRCDIR/contrib/ssh-copy-id.1" "$TERMUX_PREFIX/share/man/man1"
mkdir -p "$TERMUX_PREFIX/etc/ssh/"
cp "$TERMUX_PKG_SRCDIR/moduli" "$TERMUX_PREFIX/etc/ssh/moduli"
# Setup termux-services scripts
mkdir -p "$TERMUX_PREFIX/var/service/sshd/log"
ln -sf "$TERMUX_PREFIX/share/termux-services/svlogger" "$TERMUX_PREFIX/var/service/sshd/log/run"
sed "s%@TERMUX_PREFIX@%$TERMUX_PREFIX%g" "$TERMUX_PKG_BUILDER_DIR/sv/sshd.run.in" > "$TERMUX_PREFIX/var/service/sshd/run"
chmod 700 "$TERMUX_PREFIX/var/service/sshd/run"
touch "$TERMUX_PREFIX/var/service/sshd/down"
mkdir -p "$TERMUX_PREFIX/var/service/ssh-agent/log"
ln -sf "$TERMUX_PREFIX/share/termux-services/svlogger" "$TERMUX_PREFIX/var/service/ssh-agent/log/run"
sed "s%@TERMUX_PREFIX@%$TERMUX_PREFIX%g" "$TERMUX_PKG_BUILDER_DIR/sv/ssh-agent.run.in" > "$TERMUX_PREFIX/var/service/ssh-agent/run"
chmod 700 "$TERMUX_PREFIX/var/service/ssh-agent/run"
touch "$TERMUX_PREFIX/var/service/ssh-agent/down"
}
termux_step_post_massage() {
# Directories referenced by Include in ssh_config and sshd_config.
mkdir -p etc/ssh/ssh_config.d
mkdir -p etc/ssh/sshd_config.d
# Verify that we have man pages packaged.
# https://github.com/termux/termux-packages/issues/1538
local manpage
local -a EXPECTED_MAN_PAGES=(
'scp.1' 'ssh-add.1' 'ssh-agent.1' 'ssh-copy-id.1' 'ssh-keygen.1' 'ssh-keyscan.1' 'ssh.1'
'moduli.5' 'ssh_config.5' 'sshd_config.5'
'ssh-keysign.8' 'ssh-pkcs11-helper.8' 'ssh-sk-helper.8' 'sshd.8'
)
for manpage in "${EXPECTED_MAN_PAGES[@]}"; do
[[ -f "share/man/man${manpage#*.}/$manpage.gz" ]] || termux_error_exit "Missing man page $manpage in openssh"
done
cd "$TERMUX_PKG_MASSAGEDIR/../subpackages/openssh-sftp-server/massage/$TERMUX_PREFIX" || termux_error_exit "Failed to check openssh-sftp-server man pages"
for manpage in 'sftp.1' 'sftp-server.8'; do
[[ -f "share/man/man${manpage#*.}/$manpage.gz" ]] || termux_error_exit "Missing man page $manpage in openssh"
done
}
termux_step_create_debscripts() {
{
echo "#!$TERMUX_PREFIX/bin/sh"
echo "mkdir -p \"$TERMUX_PREFIX/var/empty\""
echo "mkdir -p \"\$HOME/.ssh\""
echo "touch \"\$HOME/.ssh/authorized_keys\""
echo "chmod 700 \"\$HOME/.ssh\""
echo "chmod 600 \"\$HOME/.ssh/authorized_keys\""
echo ""
echo "for a in rsa ecdsa ed25519; do"
echo " KEYFILE=\"$TERMUX_PREFIX/etc/ssh/ssh_host_\${a}_key\""
echo " test ! -f \"\$KEYFILE\" && ssh-keygen -N '' -t \$a -f \"\$KEYFILE\""
echo "done"
echo ""
echo "echo \"\""
echo "echo \"If you plan to use the 'ssh-agent'\""
echo "echo \"it is recommended to run it as a service.\""
echo "echo \"Run 'pkg i termux-services'\""
echo "echo \"to install the ('runit') service manager\""
echo "echo \"\""
echo "echo \"You can enable the ssh-agent service\""
echo "echo \"using 'sv-enable ssh-agent'\""
echo "echo \"You can also enable sshd to autostart\""
echo "echo \"using 'sv-enable sshd'\""
echo "exit 0"
} > postinst
chmod 0700 postinst
}