repo/gentoo:master commit in: app-backup/tsm/

"Nowa Ammerlaan" <[email protected]> Mon, 03 Aug 2026 14:02:45 +0000 (UTC)
Newsgroups gmane.linux.gentoo.cvs
Message-ID <1785765757.51b43ab6bfe1513b9332a625310ac1da742708fc.nowa@gentoo>
commit:     51b43ab6bfe1513b9332a625310ac1da742708fc
Author:     Nowa Ammerlaan <nowa <AT> gentoo <DOT> org>
AuthorDate: Mon Aug  3 14:02:22 2026 +0000
Commit:     Nowa Ammerlaan <nowa <AT> gentoo <DOT> org>
CommitDate: Mon Aug  3 14:02:37 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=51b43ab6

app-backup/tsm: add 8.2.2.0

Signed-off-by: Nowa Ammerlaan <nowa <AT> gentoo.org>

 app-backup/tsm/Manifest           |   6 +
 app-backup/tsm/tsm-8.2.2.0.ebuild | 364 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 370 insertions(+)

diff --git a/app-backup/tsm/Manifest b/app-backup/tsm/Manifest
index 166f15f79359..4c94fe24c9ec 100644
--- a/app-backup/tsm/Manifest
+++ b/app-backup/tsm/Manifest
@@ -16,3 +16,9 @@ DIST 8.2.1.0-TIV-TSMBAC-LinuxS390.tar 534667510 BLAKE2B 83d027171b97bd00e1f886e6
 DIST 8.2.1.0-TIV-TSMBAC-LinuxX86.tar 633296192 BLAKE2B d51f36cdacf8391abd8ab32624356b6405343aa3e5629e73919f1957bc988c7207ab6ddf656c1a23569099a9896cfa4567fb927b9ee87d51d4412e5c8033dfc0 SHA512 1e59b8b24efc23ffa154ac06b120e9c088a132a31e0252edbb81ff0cba3635534c4278b1653611721ebd8404753cd6924bbab3f3fa22239d4061373af8961db4
 DIST 8.2.1.0-TIV-TSMHSM-LinuxPLEGPFS.tar 578225886 BLAKE2B de51bf747b35c1f95901b9ff95f32b7fa388c94cc2ce730db6bf94cc9453620a8bdec209bb362ae5808a2f048763456320d00b124b6784bd7cf2a8d57657a692 SHA512 df5b5996ed933e50c29fc901692bf85f70db65cfb76a78e8a44a9959920e1a9eca40fdbe55a225f9e640d748cb7d2a3af2c36e3074ee7d5663d14ed827fbb924
 DIST 8.2.1.0-TIV-TSMHSM-LinuxX86GPFS.tar 706597852 BLAKE2B a10850f7cddf058fd995500753f3d69c08c6a5eec9004043e28bc78c4dffc75e248b54158a71996144046cba2b0180e61478b80717b6d01d89d0e13b363c0b3e SHA512 27aa31511e4cd969ee0eaf052b583a0c63ec484d53eb5654c05bed4ce63ee3e4d78ada0733451680b8625ecafa4a614679c9a2a8cf6e0a38c0dfbac6b58e5b4e
+DIST 8.2.2.0-TIV-TSMBAC-LinuxPLE.tar 565012480 BLAKE2B 4c214833a3ff6155e4c9ae31550fe62aa9ff723998d1ca3f6b93de879b3f0bfe6b585f7c4b90b9e90bfb235ecd78a56cdca2cf7ddaf50e5631866b7639308f4b SHA512 01c917a55a2c40733e0ca226f0576b4e9fec936ca3e95e9f1d85d870ca64af8e246f165ee7c2beed65105849bdbbc5dfafc562439980373d22c494394b2e5f9a
+DIST 8.2.2.0-TIV-TSMBAC-LinuxPPC.tar 68966400 BLAKE2B 51a914f1e1bcc0ef0a2c5a5d0bd0d9d832db834e0ff41a58bc06ebf1b68b89ea8229792222af2c4428f5768ee7cf6119dc5ac3ba85670a6b33611e2c5c57e2f5 SHA512 f7e8781a6077565614ecea075995f9515f144b4395ce27d855124e22f50f6bf5e3213807523a2205dc099cf125d43e6aab8c3e63df8bd470517bb66154ccf6eb
+DIST 8.2.2.0-TIV-TSMBAC-LinuxS390.tar 561233920 BLAKE2B 7a490a7401fa669d71822653e812b8e1e7c0ce7d205b90c5c0c42299cd89342ab73d82df5b58988882fc45efe2f715814e5df3dda51d2c5e9035e0f2a2192da4 SHA512 35ff1b48a45561e4157e1623ac8db4325bf8f95bf9f759174500d3e3c7bf835e3c2cfeb92e8b08c96c73aa6685084ec6fd59a05adaef367397e7c4c281838199
+DIST 8.2.2.0-TIV-TSMBAC-LinuxX86.tar 656312320 BLAKE2B 812d026a49a4e3f3c929e9db6ffb7f181bb1e9f5e7810c7275ec1d2bfe2775479adcae01d43baf3443a1e13e2289b4fb2c3487a366f3e1ed611263624c3f537b SHA512 70ad082f70f920326637d48a2070d7079c1c3babcfb67ed7c0756addd1208377de652f05844eb6c19a292d0a062d82a0d75933df82553aa06d7e8bad85959b50
+DIST 8.2.2.0-TIV-TSMHSM-LinuxPLEGPFS.tar 602583040 BLAKE2B 20fa5d710f125cf3f8eb1fbc90041c7377dc55f107116be87760e377e72e017cf1c73753a810b7c03d69bdccd599767cd6566eef329feec528f1fa0040018962 SHA512 2a70ac823a6d5f6bb9eb184c95e7d94b458708badc2d5d92bcff54dc547f9f0812a0875f582b088d7f53fed2c474f3ff91e7fb0227e30bd6f4d22613c50ca865
+DIST 8.2.2.0-TIV-TSMHSM-LinuxX86GPFS.tar 778280960 BLAKE2B d922cf51cee7b04c55d1a79aac7c293dc74003d502b9c6d4a9efda8eae13464a53bf43a2fe89279148d2aa061470bd67373be47ebd7ff308a92d3cdacd873cea SHA512 eaf6cfb59a557f2d87ca7eca48af4cdbf99bb18d9d218475bda6c3c21f3a842ccbae4bb4de39e46e293f696629f9e93b20c6799f6dcacf65e2279a8812de9bbe

diff --git a/app-backup/tsm/tsm-8.2.2.0.ebuild b/app-backup/tsm/tsm-8.2.2.0.ebuild
new file mode 100644
index 000000000000..736a2dabed28
--- /dev/null
+++ b/app-backup/tsm/tsm-8.2.2.0.ebuild
@@ -0,0 +1,364 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+RPM_COMPRESS_TYPE=bzip2,lzma,xz,zstd
+MODULES_OPTIONAL_IUSE=journal
+MODULES_KERNEL_MAX=6.1
+inherit desktop linux-mod-r1 rpm toolchain-funcs pax-utils xdg
+
+DESCRIPTION="IBM Storage Protect (former Tivoli Storage Manager) Backup/Archive Client, API"
+HOMEPAGE="https://www.ibm.com/products/storage-protect"
+
+BASE_URI="https://public.dhe.ibm.com/storage/tivoli-storage-management/"
+if [[ $(ver_cut 4) == 0 ]]; then
+	BASE_URI+="maintenance/client/v$(ver_cut 1)r$(ver_cut 2)/Linux/"
+else
+	BASE_URI+="patches/client/v$(ver_cut 1)r$(ver_cut 2)/Linux/"
+fi
+
+SRC_URI="
+	amd64? (
+		!gpfs? ( ${BASE_URI}LinuxX86/BA/v$(ver_rs 1-3 '' $(ver_cut 1-3))/${PV}-TIV-TSMBAC-LinuxX86.tar )
+		gpfs? ( ${BASE_URI}LinuxX86/HSMGPFS/v$(ver_rs 1-3 '' $(ver_cut 1-3))/${PV}-TIV-TSMHSM-LinuxX86GPFS.tar )
+	)
+	ppc64? (
+		!gpfs? (
+			${BASE_URI}LinuxPPC/v$(ver_rs 1-3 '' $(ver_cut 1-3))/${PV}-TIV-TSMBAC-LinuxPPC.tar
+			${BASE_URI}LinuxPLE/BA/v$(ver_rs 1-3 '' $(ver_cut 1-3))/${PV}-TIV-TSMBAC-LinuxPLE.tar
+		)
+		gpfs? ( ${BASE_URI}LinuxPLE/HSMGPFS/v$(ver_rs 1-3 '' $(ver_cut 1-3))/${PV}-TIV-TSMHSM-LinuxPLEGPFS.tar )
+	)
+	s390? ( ${BASE_URI}LinuxzSeries/BA/v$(ver_rs 1-3 '' $(ver_cut 1-3))/${PV}-TIV-TSMBAC-LinuxS390.tar )
+"
+S="${WORKDIR}"
+
+LICENSE="
+	Apache-1.1 Apache-2.0 JDOM BSD-2 CC-PD Boost-1.0 MIT CPL-1.0 HPND
+	Exolab dom4j EPL-1.0 FTL icu unicode IBM Info-ZIP LGPL-2 LGPL-2.1
+	openafs-krb5-a ZLIB MPL-1.0 MPL-1.1 NPL-1.1 openssl OPENLDAP RSA
+	public-domain W3C gSOAP libpng tsm || ( BSD GPL-2+ )
+"
+
+SLOT="0"
+KEYWORDS="~amd64" # ppc64 s390 -*
+
+IUSE="gpfs gui"
+# GPFS is not supported for journal-based backups on Linux
+REQUIRED_USE="journal? ( !gpfs )"
+
+RESTRICT="strip bindist mirror" # Breaks libPiIMG.so and libPiSNAP.so
+QA_PREBUILT="/opt/*"
+PLOCALE_BACKUP="en_US"
+PLOCALES="
+	cs_CZ de_DE en_US es_ES fr_FR hu_HU it_IT ja_JP ko_KR pl_PL pt_BR
+	ru_RU zh_CN zh_TW
+"
+
+MY_LANGS="
+	cs:CS_CZ de:DE_DE es:ES_ES fr:FR_FR hu:HU_HU it:IT_IT ja:JA_JP
+	ko:KO_KR pl:PL_PL pt-BR:PT_BR ru:RU_RU zh-CN:ZH_CN zh-TW:ZH_TW
+"
+for lang in ${MY_LANGS}; do
+	IUSE+=" l10n_${lang%:*}"
+done
+
+BDEPEND="
+	app-arch/xz-utils[extra-filters(+)]
+	gui? ( media-gfx/imagemagick[png] )
+"
+DEPEND="
+	acct-group/tsm
+"
+RDEPEND="
+	acct-group/tsm
+	dev-libs/expat
+	dev-libs/json-c:0/5.1
+	>=dev-libs/openssl-3.3.0:0/3
+	dev-libs/libxml2:2
+	net-misc/curl[openssl]
+	sys-apps/acl
+	sys-fs/fuse:0
+	virtual/zlib:0/1
+	|| (
+		sys-libs/libxcrypt:0/1[compat]
+		sys-libs/glibc:2.2[crypt(-)]
+	)
+	gpfs? ( || (
+		app-shells/ksh
+		app-shells/loksh
+	) )
+	gui? (
+		media-libs/alsa-lib
+		virtual/jre
+		x11-libs/libXft
+	)
+"
+
+src_unpack() {
+	if use amd64; then
+		if use gpfs; then
+			unpack "${PV}-TIV-TSMHSM-LinuxX86GPFS.tar"
+		else
+			unpack "${PV}-TIV-TSMBAC-LinuxX86.tar"
+		fi
+	elif use ppc64; then
+		if [[ $(tc-endian) == big ]]; then
+			if use gpfs; then
+				die "GPFS not supported on big endian"
+			else
+				unpack "${PV}-TIV-TSMBAC-LinuxPPC.tar"
+			fi
+		else
+			if use gpfs; then
+				unpack "${PV}-TIV-TSMHSM-LinuxPLEGPFS.tar"
+			else
+				unpack "${PV}-TIV-TSMBAC-LinuxPLE.tar"
+			fi
+		fi
+	elif use s390; then
+		if use gpfs; then
+			die "GPFS not supported on s390"
+		else
+			unpack "${PV}-TIV-TSMBAC-LinuxS390.tar"
+		fi
+	else
+		die "Unsupported architecture"
+	fi
+
+	if ! use gui; then
+		rm -f TIVsm-WEBGUI.*.rpm || die
+	fi
+
+	if ! use journal; then
+		rm -f TIVsm-JBB.*.rpm || die
+	fi
+
+	mkdir rpms_unpacked || die
+	pushd rpms_unpacked >/dev/null || die
+	rpm_unpack ./../*.rpm
+	popd >/dev/null || die
+
+	use journal && unpack "${S}/TIVsm-filepath-source.tar.gz"
+}
+
+src_prepare() {
+	default
+	local lang
+	for lang in ${MY_LANGS}; do
+		if ! use l10n_${lang%:*}; then
+			find -type d -name "${lang#*:}" -exec rm -r {} + || die
+		fi
+	done
+}
+
+src_compile() {
+	local modlist=( filepath=:jbb_gpl )
+	local modargs=(
+		KDIR="${KV_OUT_DIR}" RELNUM=${PV}
+		# The usage of arch is non-standard here
+		$(usev amd64 ARCH=x86_64)
+		$(usev ppc64 ARCH=ppc64)
+	)
+	linux-mod-r1_src_compile
+}
+
+src_install() {
+	mv rpms_unpacked/* "${ED}" || die
+
+	# Don't bundle java
+	if [[ -e "${ED}/opt/tivoli/tsm/tdpvmware/common/jre" ]]; then
+		rm -r "${ED}/opt/tivoli/tsm/tdpvmware/common/jre" || die
+	fi
+
+	# The RPM files contain postinstall scripts which can be extracted
+	# e.g. using https://bugs.gentoo.org/attachment.cgi?id=234663 .
+	# Below we try to mimic the behaviour of these scripts.
+	# We don't deal with SELinux compliance (yet), though.
+
+	# Mimic TIVsm-API64 postinstall script
+	for i in "${ED}/opt/tivoli/tsm/client/api/bin64/"*.so; do
+		dosym "../../opt/tivoli/tsm/client/api/bin64/$(basename "${i}")" \
+			"/usr/$(get_libdir)/$(basename "${i}")"
+	done
+
+	# The TIVsm-BA postinstall script only does messages and ancient upgrades
+
+	# The gscrypt64 postinstall script only deals with s390[x] SELinux
+	# and the symlink for the iccs library which we handle in the loop below.
+
+	# Move stuff from /usr/local to /opt, #452332
+	mv "${ED}/usr/local/ibm" "${ED}/opt/" || die
+	rmdir "${ED}/usr/local" || die
+
+	# Mimic gskssl64 postinstall script
+	for i in "${ED}/opt/ibm/gsk8_64/lib64/"*.so; do
+		dosym "../../opt/ibm/gsk8_64/lib64/$(basename "${i}")" \
+			"/usr/$(get_libdir)/$(basename "${i}")"
+	done
+	for i in "${ED}/opt/ibm/gsk8_64/bin/"*; do
+		dosym "../../opt/ibm/gsk8_64/bin/$(basename "${i}")" \
+			"/usr/bin/$(basename "${i//8/}")"
+	done
+
+	# Done with the postinstall scripts as the RPMs contain them.
+	# Now on to some more Gentoo-specific installation.
+
+	rm -rf "${ED}/usr/lib/.build-id" &> /dev/null
+	if [[ -d "${ED}/usr/lib" ]]; then
+		rmdir "${ED}/usr/lib" || die "Using 32bit lib dir in 64bit only system"
+	fi
+
+	# Avoid "QA Notice: Found an absolute symlink in a library directory"
+	local target
+	find "${ED}"/usr/lib* -lname '/*' | while read i; do
+		target=$(readlink "${i}")
+		rm -v "${i}" || die
+		dosym "../..${target}" "${i#${ED}/}"
+	done
+
+	keepdir /var/log/tsm
+	insinto /etc/logrotate.d
+	newins "${FILESDIR}/tsm.logrotate" tsm
+
+	keepdir /etc/tivoli
+
+	cp -a "${ED}/opt/tivoli/tsm/client/ba/bin/dsm.sys.smp" "${ED}/etc/tivoli/dsm.sys" || die
+	echo '	 PasswordDir "/etc/tivoli/"' >> "${ED}/etc/tivoli/dsm.sys"
+	echo '	 PasswordAccess generate' >> "${ED}/etc/tivoli/dsm.sys"
+
+	# Added the hostname to be more friendly, the admin will need to edit this file anyway
+	echo '	 NodeName' $(hostname) >> "${ED}/etc/tivoli/dsm.sys"
+	echo '	 ErrorLogName "/var/log/tsm/dsmerror.log"' >> "${ED}/etc/tivoli/dsm.sys"
+	echo '	 SchedLogName "/var/log/tsm/dsmsched.log"' >> "${ED}/etc/tivoli/dsm.sys"
+	dosym ../../../../../../etc/tivoli/dsm.sys /opt/tivoli/tsm/client/ba/bin/dsm.sys
+
+	cp -a "${ED}/opt/tivoli/tsm/client/ba/bin/dsm.opt.smp" "${ED}/etc/tivoli/dsm.opt" || die
+	dosym ../../../../../../etc/tivoli/dsm.opt /opt/tivoli/tsm/client/ba/bin/dsm.opt
+
+	if use journal; then
+		touch "${ED}/etc/tivoli/tsmjbbd.ini" || die
+		dosym ../../../../../../etc/tivoli/tsmjbbd.ini /opt/tivoli/tsm/client/ba/bin/tsmjbbd.ini
+	fi
+
+	chown -R root:tsm "${ED}/etc/tivoli" || die
+	chmod -R 0660 "${ED}/etc/tivoli/"* || die
+
+	# Setup the env
+	newenvd - 80tivoli <<-EOF
+		DSM_CONFIG="/etc/tivoli/dsm.opt"
+		DSM_DIR="/opt/tivoli/tsm/client/ba/bin"
+		DSM_LOG="/var/log/tsm"
+		# ROOTPATH="/opt/tivoli/tsm/client/ba/bin"
+	EOF
+
+	insinto /etc/revdep-rebuild
+	newins - 80${PN} <<-EOF
+		SEARCH_DIRS_MASK="/opt/tivoli/tsm/client/ba/bin"
+	EOF
+
+	# https://www.ibm.com/support/pages/apar/IT46420
+	insinto /etc/tivoli
+	newins - dsmcad.lang <<-EOF
+		LANG=en_US
+		LC_ALL=en_US
+	EOF
+	dosym ../../../../../../etc/tivoli/dsmcad.lang /opt/tivoli/tsm/client/ba/bin/dsmcad.lang
+
+	# Need this for hardened, otherwise a cryptic "connection to server lost" message appears
+	pax-mark -m "${ED}/opt/tivoli/tsm/client/ba/bin/dsmc"
+
+	if use gui; then
+		magick "${ED}/opt/tivoli/tsm/client/ba/bin/favicon.ico" "${T}/ibm.png" || die
+		doicon -s 16 "${T}/ibm.png"
+		make_desktop_entry dsmj "IBM Storage Protect" ibm System
+
+		# Respect our java setting
+		sed -e '/JAVA_HOME=/d' \
+			-i "${ED}/opt/tivoli/tsm/tdpvmware/common/scripts/webserver" || die
+	fi
+
+	# Ensure the services can start on Gentoo, respect our java setting
+	sed -e 's/Ubuntu/Gentoo/g' \
+		-i "${ED}/opt/tivoli/tsm/client/ba/bin/rc."* || die
+	sed -e 's/DSM_LOG=\/opt\/tivoli\/tsm\/client\/ba\/bin/DSM_LOG=\/var\/log\/tsm/g' \
+		-e '/JAVA_HOME=/d' \
+		-e '/PATH=/d' \
+		-e '/LD_LIBRARY_PATH=/d' \
+		-i "${ED}/opt/tivoli/tsm/client/ba/bin/"*.service || die
+
+	# Overwrite with relative symlinks
+	dosym ../../opt/tivoli/tsm/client/ba/bin/rc.dsmcad /etc/init.d/dsmcad
+	if use gui; then
+		dosym ../../opt/tivoli/tsm/tdpvmware/common/scripts/webserver /etc/init.d/webserver
+	else
+		rm -f "${ED}/etc/init.d/webserver" || die
+	fi
+	if use journal; then
+		dosym ../../opt/tivoli/tsm/client/ba/bin/rc.tsmjbb /etc/init.d/tsmjbbd
+	else
+		rm -f "${ED}/etc/init.d/tsmjbbd" || die
+	fi
+
+	dosym ../../../../opt/tivoli/tsm/client/ba/bin/dsmcad.service /usr/lib/systemd/system/dsmcad.service
+	if use journal; then
+		dosym ../../../../opt/tivoli/tsm/client/ba/bin/tsmjbbd.service /usr/lib/systemd/system/tsmjbbd.service
+	else
+		rm -f "${ED}/usr/lib/systemd/system/tsmjbbd.service" || die
+	fi
+
+	# Unbundle ssl
+	rm "${ED}/opt/tivoli/tsm/client/api/bin64/libcrypto.so.3" || die
+	dosym ../../../../../../usr/$(get_libdir)/libcrypto.so.3 \
+		/opt/tivoli/tsm/client/api/bin64/libcrypto.so.3
+	rm "${ED}/opt/tivoli/tsm/client/api/bin64/libssl.so.3" || die
+	dosym ../../../../../../usr/$(get_libdir)/libssl.so.3 \
+		/opt/tivoli/tsm/client/api/bin64/libssl.so.3
+	if ! use gpfs; then
+		rm "${ED}/opt/tivoli/tsm/client/ba/bin/plugins/netappmgm/libcrypto.so.3" || die
+		dosym /../../../../../../../../usr/$(get_libdir)/libcrypto.so.3 \
+			/opt/tivoli/tsm/client/ba/bin/plugins/netappmgm/libcrypto.so.3
+		rm "${ED}/opt/tivoli/tsm/client/ba/bin/plugins/netappmgm/libssl.so.3" || die
+		dosym /../../../../../../../../usr/$(get_libdir)/libssl.so.3 \
+			/opt/tivoli/tsm/client/ba/bin/plugins/netappmgm/libssl.so.3
+		# Unbundle curl
+		rm "${ED}/opt/tivoli/tsm/client/ba/bin/plugins/netappmgm/libcurl.so" || die
+		dosym /../../../../../../../../usr/$(get_libdir)/libcurl.so \
+			/opt/tivoli/tsm/client/ba/bin/plugins/netappmgm/libcurl.so
+		# Unbundle json-c
+		rm "${ED}/opt/tivoli/tsm/client/ba/bin/plugins/netappmgm/libjson-c.so" || die
+		dosym /../../../../../../../../usr/$(get_libdir)/libjson-c.so \
+			/opt/tivoli/tsm/client/ba/bin/plugins/netappmgm/libjson-c.so
+	fi
+
+	linux-mod-r1_src_install
+}
+
+pkg_postinst() {
+	xdg_pkg_postinst
+
+	local i dirs
+	for i in "${EROOT}/var/log/tsm/dsm"{error,instr,j,sched,webcl}.log; do
+		if [[ ! -e ${i} ]]; then
+			touch ${i} || die
+			chown root:tsm ${i} || die
+			chmod 0660 ${i} || die
+		fi
+	done
+
+	# Bug #375041: the log directory itself should not be world writable.
+	# Have to do this in postinst due to bug #141619
+	chown root:tsm "${EROOT}/var/log/tsm" || die
+	chmod 0750 "${EROOT}/var/log/tsm" || die
+
+	# Bug 508052: directories used to be too restrictive, have to widen perms.
+	dirs=( "${EROOT}/opt/tivoli" $(find "${EROOT}/opt/tivoli/tsm" -type d) )
+	chown root:root "${dirs[@]}" || die
+	chmod 0755 "${dirs[@]}" || die
+
+	linux-mod-r1_pkg_postinst
+
+	elog
+	elog "To use the client as a regular user, add the user to the \"tsm\" group"
+}