We have moved to Git. This repository is only provided for compatibility with old installations. Learn how to migrate your installation here.

changeset 255:3c90d8644fec

[sync] imported 5fd794d..e0462cd from upstream commit e0462cd710b265e96775b0c1b2a595338010243e Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Tue Jun 20 23:36:12 2023 +0200 app-office/softmaker-office[-nx]: added (2024.)1200 revision; subscription product NX is now a separate installation
author Migration Sync <gentoo-overlay@megacoffee.net>
date Tue, 20 Jun 2023 21:45:02 +0000
parents f8f6e50d5c79
children 4b4e15f89c46
files app-office/softmaker-office-nx/Manifest app-office/softmaker-office-nx/softmaker-office-nx-1200.ebuild app-office/softmaker-office/Manifest app-office/softmaker-office/softmaker-office-2021.1034-r1.ebuild app-office/softmaker-office/softmaker-office-2021.1060-r1.ebuild app-office/softmaker-office/softmaker-office-2021.1062-r1.ebuild app-office/softmaker-office/softmaker-office-2021.1064.ebuild app-office/softmaker-office/softmaker-office-2024.1200.ebuild
diffstat 8 files changed, 530 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app-office/softmaker-office-nx/Manifest	Tue Jun 20 21:45:02 2023 +0000
@@ -0,0 +1,2 @@
+DIST softmaker-office-nx-1200-amd64.tgz 302290160 BLAKE2B 88ad24b2d86888f8906f79142528fea5de4abe5910bcdb187e821330d00a6d8d6b1a228e6f4cd0d48fe782ae19a302f6c8a0fddbc9a15a8ad16864c8ba36177f SHA512 1b4309ee538fc4767b78b27198b201fae308fa0fab46b986df96001c8990132ef15f20a2cebbe826e6b67c688793c1cbce9bded89eecfcedcea3389761bb9d2a
+EBUILD softmaker-office-nx-1200.ebuild 11028 BLAKE2B 633090ba48c4a31574a59de3885d7531ece2e92c79a2cb374abca04807dc3c4f4b2cfee6587f8d72dac2e1fd8bd9c06640874f2dedca36635d5398dfc58f2665 SHA512 2549a3caf2309fd8d0e5108498aa6fd8e59aecd8e773453749fae9065b4c122a20956dc5f1d87b230f806c93915ffff5bfb542bfd5bbdf3e608e12d54a2a99f3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app-office/softmaker-office-nx/softmaker-office-nx-1200.ebuild	Tue Jun 20 21:45:02 2023 +0000
@@ -0,0 +1,253 @@
+# Copyright 1999-2023 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop xdg-utils
+
+DESCRIPTION="SoftMaker Office NX - an office suite featuring a word processor (TextMaker), spreadsheets (PlanMaker) and slides software (Presentations)"
+HOMEPAGE="https://www.softmaker.com/en/softmaker-office"
+
+SRC_URI="https://www.softmaker.net/down/softmaker-office-nx-${PV//\./-}-amd64.tgz"
+
+LICENSE="SoftMakerOffice"
+SLOT="0"
+KEYWORDS="~amd64"
+
+# .deb dependencies as of 20 Jun 2023, version 1200:
+#
+#   DEBIAN                                        GENTOO
+#
+#   libcurl4 | libcurl3 (>= 7.16.2)            => net-misc/curl
+#   libc6 (>= 2.17)                            => sys-libs/glibc
+#   libgcc1 (>= 1:4.2)                         => sys-devel/gcc
+#   libgl1-mesa-glx | libgl1                   => virtual/opengl
+#   libglib2.0-0 (>= 2.12.0)                   => dev-libs/glib *
+#   libgstreamer1.0-0 (>= 1.0.0)               => media-libs/gstreamer *
+#   libgstreamer-plugins-base1.0-0 (>= 1.0.0)  => media-libs/gst-plugins-base
+#   libstdc++6 (>= 5.2)                        => sys-devel/gcc
+#   libx11-6                                   => x11-libs/libX11
+#   libxext6                                   => x11-libs/libXext
+#   libxmu6                                    => x11-libs/libXmu
+#   libxrandr2 (>= 2:1.2.99.3)                 => x11-libs/libXrandr
+#   libxrender1                                => x11-libs/libXrender
+
+DEPEND="
+	!app-office/softmaker-office
+
+	app-arch/tar
+	app-arch/xz-utils
+"
+RDEPEND="${DEPEND}
+	net-misc/curl
+	sys-libs/glibc
+	sys-devel/gcc
+	virtual/opengl
+	dev-libs/glib
+	media-libs/gstreamer
+	media-libs/gst-plugins-base
+	x11-libs/libX11
+	x11-libs/libXext
+	x11-libs/libXmu
+	x11-libs/libXrandr
+	x11-libs/libXrender
+"
+
+S="${WORKDIR}"
+
+INNER_ARCHIVE="officenx.tar.lzma"
+EXTRACTED_INNER_ARCHIVE="${WORKDIR}/extracted"
+
+FINAL_INSTALL_DIR="/opt/softmaker-office-nx"
+INSTALL_DIR="${D}${FINAL_INSTALL_DIR}"
+
+# disable QA check for pre-stripped binaries
+QA_PRESTRIPPED="
+	${FINAL_INSTALL_DIR}/dpf3/libCSegmentation.so
+	${FINAL_INSTALL_DIR}/dpf3/libCTokenizer.so
+	${FINAL_INSTALL_DIR}/dpf3/libDpfDict.so
+	${FINAL_INSTALL_DIR}/dpf3/libgamorphDpf.so
+	${FINAL_INSTALL_DIR}/dpf3/libSGAnalyseSP.so
+	${FINAL_INSTALL_DIR}/dpf3/libsprt4-7-0-instance-01.so
+	${FINAL_INSTALL_DIR}/dpf3/libsprt4-7-0-instance-02.so
+	${FINAL_INSTALL_DIR}/dpf3/libsprt4-7-0-instance-03.so
+	${FINAL_INSTALL_DIR}/dpf3/libsprt4-7-0.so
+	${FINAL_INSTALL_DIR}/dpf3/libsx.so
+	${FINAL_INSTALL_DIR}/textmaker
+	${FINAL_INSTALL_DIR}/presentations
+	${FINAL_INSTALL_DIR}/planmaker
+"
+
+# disable QA checks for upstream .desktop files
+QA_DESKTOP_FILE="
+	usr/share/applications/planmaker-nx.desktop
+	usr/share/applications/presentations-nx.desktop
+	usr/share/applications/textmaker-nx.desktop
+"
+
+src_unpack() {
+	unpack ${A} || "Failed to unpack outer archive"
+	
+	mkdir ${EXTRACTED_INNER_ARCHIVE}
+	cd ${EXTRACTED_INNER_ARCHIVE} || die "Failed to switch to extraction directory"
+	
+	tar xJf ${WORKDIR}/${INNER_ARCHIVE} || die "Failed to extract ${INNER_ARCHIVE}"
+}
+
+src_prepare() {
+	## extract all lines defining functions from original install script so we can import it
+	# first make sure we actually have the expected revision
+	expected_hash="c8311d35ff044ec05386050eb053af30"
+	actual_hash=$(md5sum "${WORKDIR}/installofficenx" | cut -c'-32')
+	[[ "${actual_hash}" == "${expected_hash}" ]] || die "Unexpected file hash on install script, unable to extract functions. Expected MD5 ${expected_hash}, got: ${actual_hash}"
+	
+	# extract
+	tail -n 1592 ${WORKDIR}/installofficenx | head -n 1354 >${WORKDIR}/smoffice-install-functions.sh
+	
+	# mandatory since EAPI 6
+	eapply_user
+}
+
+src_compile() {
+	. ${WORKDIR}/smoffice-install-functions.sh
+	
+	# set variables needed by original install script
+	APPBINPATH="${WORKDIR}" # install script function will write there during installation
+	SRCPATH="${EXTRACTED_INNER_ARCHIVE}" # install script function will read from there during installation
+	APPPATH="${FINAL_INSTALL_DIR}" # generated script will run files from there after installation
+
+	## create_script
+	UNINSTALLSCRIPT="${APPBINPATH}/uninstall_smofficenx" # irrelevant but function will generate that file nevertheless
+	REMOVEICONSSCRIPT="${APPBINPATH}/remove_icons.sh" # also irrelevant but needed
+	
+	# somehow the base file for the (irrelevant) uninstall script does not exist after unpacking, replace by dummy
+	echo '#dummy' >$SRCPATH/mime/uninst1
+	
+	# run original create_script function
+	# arg 1 = version
+	# arg 2 = fixed to "1" by original install script
+	# arg 3 = empty to indicate global installation
+	(set -e; create_script nx "1" "") || die "Failed to run original create_script"
+
+	## create_desktop1 to create .desktop files
+	# run original create_desktop functions
+	# arg 1 = version
+	# arg 2 = "0" assumes /usr/bin for installation, "1" uses APPBINPATH which would be wrong for this ebuild
+	(set -e; create_desktop1 nx "0") || die "Failed to run original create_desktop1"
+	
+	## do not run create_desktop2 as it would install the files (this will be done separately by this ebuild)
+}
+
+src_install() {
+	# all pre-built binaries should go into /opt and be symlinked to usr/bin etc.
+	
+	# copy everything from inner archive to /opt install dir
+	insinto ${FINAL_INSTALL_DIR}
+	doins -r ${EXTRACTED_INNER_ARCHIVE}/*
+
+	# redo the executables (otherwise they miss permission)
+	exeinto ${FINAL_INSTALL_DIR}
+	doexe ${EXTRACTED_INNER_ARCHIVE}/planmaker
+	doexe ${EXTRACTED_INNER_ARCHIVE}/presentations
+	doexe ${EXTRACTED_INNER_ARCHIVE}/textmaker
+
+	# install the original wrapper scripts to /usr/bin
+	dobin ${WORKDIR}/planmakernx
+	dobin ${WORKDIR}/presentationsnx
+	dobin ${WORKDIR}/textmakernx
+
+	# symlink .desktop entries
+	for app in planmaker presentations textmaker; do
+		dosym ${FINAL_INSTALL_DIR}/mime/${app}-nx.desktop /usr/share/applications/${app}-nx.desktop
+	done
+	
+	# MIME definition
+	# TODO: split to separate files?
+	# TODO: separate SoftMaker Office's own from generic definitions? (generic = MS Office etc.)
+	insinto /usr/share/mime/application/
+	doins ${EXTRACTED_INNER_ARCHIVE}/mime/softmaker-office-nx.xml
+	
+	## icons (see original copy_icons function)
+	# TODO: do not install what we do not need when separated
+
+	# app icons
+	for app in prl tml pml; do
+		for size in 16 24 32 48 64 128 256 512 1024; do
+			newicon -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/${app}_${size}.png" "application-x-${app}nx.png"
+		done
+	done
+	
+	# MIME icons
+	for size in 16 24 32 48 64 128 256 512 1024; do
+		## text documents
+		# SoftOffice => tmd icon
+		for mime in application-x-tmd application-x-tmv; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_${size}.png" ${mime}.png
+		done
+		
+		# MS Office => tmd_mso icon
+		for mime in application-rtf text-rtf application-msword application-msword-template application-vnd.ms-word application-x-doc application-x-pocket-word application-vnd.openxmlformats-officedocument.wordprocessingml.document application-vnd.openxmlformats-officedocument.wordprocessingml.template application-vnd.ms-word.document.macroenabled.12 application-vnd.ms-word.template.macroenabled.12; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_mso_${size}.png" ${mime}.png
+		done
+		
+		# OpenDocument => tmd_oth icon
+		for mime in application-x-pocket-word application-vnd.oasis.opendocument.text text-rtf application-vnd.sun.xml.writer application-vnd.sun.xml.writer.template application-vnd.wordperfect application-vnd.oasis.opendocument.text-template application-vnd.oasis.opendocument.text application-vnd.sun.xml.writer application-vnd.sun.xml.writer.template application-x-dbf; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_oth_${size}.png" ${mime}.png
+		done
+		
+		## spreadsheet documents
+		# SoftOffice? => pmd icon
+		for mime in application-x-pmd application-x-pmv application-x-pmdx application-x-pagemaker; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_${size}.png" ${mime}.png
+		done
+		
+		# MS Office => pmd_mso icon
+		for mime in application-x-sylk application-excel application-x-excel application-x-ms-excel application-x-msexcel application-x-xls application-xls application-vnd.ms-excel application-vnd.openxmlformats-officedocument.spreadsheetml.sheet application-vnd.openxmlformats-officedocument.spreadsheetml.template application-vnd.ms-excel.sheet.macroenabled.12 application-vnd.ms-excel.template.macroenabled.12 text-spreadsheet; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_mso_${size}.png" ${mime}.png
+		done
+		
+		# OpenDocument and generic? => pmd_oth icon
+		for mime in text-csv application-x-dif application-x-prn application-vnd.stardivision.calc; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_oth_${size}.png" ${mime}.png
+		done
+		
+		## presentations
+		# SoftOffice => prd icon
+		for mime in application-x-prd application-x-prs application-x-prv; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/prd_${size}.png" ${mime}.png
+		done
+		
+		# MS Office => prd_mso icon
+		for mime in application-ppt application-mspowerpoint application-vnd.ms-powerpoint application-vnd.ms-powerpoint.presentation.macroenabled.12 application-vnd.ms-powerpoint.slideshow.macroEnabled.12 application-vnd.openxmlformats-officedocument.presentationml.presentation application-vnd.openxmlformats-officedocument.presentationml.template application-vnd.openxmlformats-officedocument.presentationml.slideshow; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/prd_mso_${size}.png" ${mime}.png
+		done
+		
+		## trailing in original function
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_${size}.png" application-x-tmd.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_mso_${size}.png" application-x-tmd-mso.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_oth_${size}.png" application-x-tmd-oth.png
+		
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_${size}.png" application-x-pmd.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_mso_${size}.png" application-x-pmd-mso.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_oth_${size}.png" application-x-pmd-oth.png
+		
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/prd_${size}.png" application-x-prd.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/prd_mso_${size}.png" application-x-prd-mso.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/prd_oth_${size}.png" application-x-prd-oth.png
+	done
+	
+	# TODO: what about the provided fonts, theres no global registration in the original install script?
+}
+
+pkg_postinst() {
+	xdg_icon_cache_update
+	xdg_desktop_database_update
+	xdg_mimeinfo_database_update
+}
+
+pkg_postrm() {
+	xdg_icon_cache_update
+	xdg_desktop_database_update
+	xdg_mimeinfo_database_update
+}
+
--- a/app-office/softmaker-office/Manifest	Sun Jun 04 22:00:02 2023 +0000
+++ b/app-office/softmaker-office/Manifest	Tue Jun 20 21:45:02 2023 +0000
@@ -2,7 +2,9 @@
 DIST softmaker-office-2021-1060-amd64.tgz 334243460 BLAKE2B a479662eb8ae86a3ec64fd7286ff0f03ca7909e7954c93eb91ca128f8be0c35aef378d904fd41e4ea46e6bc80a6356860de963058fb7795ad9378c8edafafdfb SHA512 36d6cf49c3dce821f50ebef60e6ae48cd97ad9507cb7af7bc1500977c03d24f197b7b7036e92b9b5c3bc387d1d3fac2cc156022e4294c71ad998e8e8e3649c9d
 DIST softmaker-office-2021-1062-amd64.tgz 333885529 BLAKE2B 0fb1c35bca771635c7fb966871901479129fcd545095343fc781f2914c02f4656ac550ed5178f5b622013a26557d58a583f1d635ce92c35fd26abfdf254f5f32 SHA512 bd26ba8e580faabd11ceffc4dee64da6404bc41874fa1c0aecbc20094da811670fd07451a7eb1f4760fad38f17e4f8761313f77dd6ebdf936256546df7bd98bf
 DIST softmaker-office-2021-1064-amd64.tgz 322931084 BLAKE2B 7b38726c3ba6cce00a6c16c9161dfe262a13b6005696cc7df823b9b894e75ffeeee44caad8c6ce2509083d7edef8f5e9c61b8418361a3ea72414af697b551ed3 SHA512 64f6f0148c000c57dcd5753e3d2f0e7d97645e6a53073e25464876101cde7124fe5197f27bf9e27d33b8558d61397c34775cc2b9d173ea081f7fc1212ca7a42f
-EBUILD softmaker-office-2021.1034-r1.ebuild 10705 BLAKE2B 17c0ce69b981fd27bb5c80b86b655cd1f1fb74727582c0830c45717a0ca64ba0324df957f3813bdb169605655ea18ad348b8950b0bd6468533044e4bcb6f7032 SHA512 2edf232ac36f91e5ecefb313631f190334bbe2df19a5caaa704d8788b9e97ca3a9e041ac9bdc0acd6fe22f0170420a54aa2d9b404c75f176485225cbf76f80ce
-EBUILD softmaker-office-2021.1060-r1.ebuild 10705 BLAKE2B af4aea5e79d2566ca7fbf76e3a57632cc9c894bdf8bf1fe8fb893f83542c0a480facf1c9fe1730c0e4528eb9b2bf34bb1b667129ca81ea9f918d27dddd1cdc1f SHA512 a6153275a10a5214dace286f9d6b7e9f1a9c2904309e417d2bc6d8bc947fae018d95934fd60ddcfca4491c370c3302fed078744eaf08cc74d188efdf4eb99054
-EBUILD softmaker-office-2021.1062-r1.ebuild 10705 BLAKE2B 1fedd031e464adb36ed03c5f142ee490fc6feffc92e2cf6cb49d87d2f5a1d587da0c2a15591ab55117da6dc4ebfa0223058e247192bb3bc67d05d25a38256fdc SHA512 51604b5b5efa223821164933eeb2c35b66edb7ebf22a26d561a0afb6f6c584e7141986d76b96981a34a4c0cad35335c5bf5197963aa9cb9dba9474d5de3f8544
-EBUILD softmaker-office-2021.1064.ebuild 10704 BLAKE2B 343492c9cb97e98bdf768337b3e494246db1d1415453d5b1fd3d37a4ac6dfae93cb66daaba723f090ed4bc72b211adcf6c49e819f7c58a412a0f323efd407b33 SHA512 368d5f4eb99c21efe65f265692526a9e19fc8f209ea467cce6abae18e999b33cf7d864fd62d88d4ee9dbb4f45d8282cb80c2d30afa682623218cf411c6022d8a
+DIST softmaker-office-2024-1200-amd64.tgz 302053854 BLAKE2B e07250d4e66ccdaeb139afc148a1f17fc6da84e91d7cf1a434eaf40e0e149cbea2b65ff6678fe759a99990f21347175e5436e23e528df49a59e3c17f82878d6d SHA512 6501fb01bee9b85ac2b728b3e30e63781f30bfdecb5a7fc1d7526e470cbc79081332167eafd1e14b181e2b55e46db3110b61dd1dde4b835ee1ceebbb51b5a5e4
+EBUILD softmaker-office-2021.1034-r1.ebuild 10739 BLAKE2B dcc14603cc4a138a1fe76317199862329db13613374258e332230ec0ed305c69b9269e13fcae279abfda9ca53f450435bfacd61f5b28c862dca350b22ffdf5f1 SHA512 2aa966aad24c09796023651fec44ff9843516932724392a046862899ca50d741a87843a58e3c3ba5f0e135c272e23eb0c8157921f2fa2c001a823b7bc95d274f
+EBUILD softmaker-office-2021.1060-r1.ebuild 10739 BLAKE2B 389f58261968e30260362c636fee4a43ace3afc8b4807c942125e94f1f89ab6532a27b3a039ab505d8a3fee09568e394a655a0b230da160e98c9d9fc7049b308 SHA512 34ba9bfa2f00b2a2885cc87225d50209960c89c715bc1c78faeab4e62a8e17905c6ed2248c8265419bde219994461fb6520ef375cadf780c26d21531b87145f3
+EBUILD softmaker-office-2021.1062-r1.ebuild 10739 BLAKE2B e397a1f36d011e56886f5684eab598cc339bc56af0efc19e772a8b943df444854bb05c704a373417aecd238d9b9e6421042cb5bc44215cab23e7bfb63a09d09b SHA512 44fc3d5b2886c8a67575d3fbf0f4247de81c4b55b03df578500c55764860314610f5334649a1fff0ca001c84ac7afd2f28b4354e8c6bf749b36a3a6813318498
+EBUILD softmaker-office-2021.1064.ebuild 10738 BLAKE2B e2e6ceef27975ddf762bfb59db8aa25634b03fff94e46c1d2ec95c5b0ce269c91e43db8ec84ac6958190a00a6294eaecd86aedcceb0f265aa39b6f30ee3520ae SHA512 82543c08093336c58c660c7b76bb007deb170c668238eb4fd3505b61944156fe29ad347fe3269507f462b27cbecd95cdd466ca7b7f0b339453798fb8481c744a
+EBUILD softmaker-office-2024.1200.ebuild 11558 BLAKE2B 57720685429b840a5bbef25e0a87da3319dae9e7afca05166c9f87afe178917334054f5dbc6b32c0f984df493af1f1431ea478d4132fcdd0c8ea8c41498169d0 SHA512 029e839fcfb2002f9e8dd0b4b7660fa0af0483d88a9f5bbb6fe2cb9b6fe9edb22cc7788ddd1b6a648b428de2e879f428a9ca7077679956780b430604e61c51c5
--- a/app-office/softmaker-office/softmaker-office-2021.1034-r1.ebuild	Sun Jun 04 22:00:02 2023 +0000
+++ b/app-office/softmaker-office/softmaker-office-2021.1034-r1.ebuild	Tue Jun 20 21:45:02 2023 +0000
@@ -30,6 +30,8 @@
 #   libxrender1                       => x11-libs/libXrender
 
 DEPEND="
+	!app-office/softmaker-office-nx
+
 	app-arch/tar
 	app-arch/xz-utils
 "
--- a/app-office/softmaker-office/softmaker-office-2021.1060-r1.ebuild	Sun Jun 04 22:00:02 2023 +0000
+++ b/app-office/softmaker-office/softmaker-office-2021.1060-r1.ebuild	Tue Jun 20 21:45:02 2023 +0000
@@ -30,6 +30,8 @@
 #   libxrender1                       => x11-libs/libXrender
 
 DEPEND="
+	!app-office/softmaker-office-nx
+
 	app-arch/tar
 	app-arch/xz-utils
 "
--- a/app-office/softmaker-office/softmaker-office-2021.1062-r1.ebuild	Sun Jun 04 22:00:02 2023 +0000
+++ b/app-office/softmaker-office/softmaker-office-2021.1062-r1.ebuild	Tue Jun 20 21:45:02 2023 +0000
@@ -30,6 +30,8 @@
 #   libxrender1                       => x11-libs/libXrender
 
 DEPEND="
+	!app-office/softmaker-office-nx
+
 	app-arch/tar
 	app-arch/xz-utils
 "
--- a/app-office/softmaker-office/softmaker-office-2021.1064.ebuild	Sun Jun 04 22:00:02 2023 +0000
+++ b/app-office/softmaker-office/softmaker-office-2021.1064.ebuild	Tue Jun 20 21:45:02 2023 +0000
@@ -30,6 +30,8 @@
 #   libxrender1                       => x11-libs/libXrender
 
 DEPEND="
+	!app-office/softmaker-office-nx
+
 	app-arch/tar
 	app-arch/xz-utils
 "
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app-office/softmaker-office/softmaker-office-2024.1200.ebuild	Tue Jun 20 21:45:02 2023 +0000
@@ -0,0 +1,261 @@
+# Copyright 1999-2023 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop xdg-utils
+
+DESCRIPTION="SoftMaker Office - an office suite featuring a word processor (TextMaker), spreadsheets (PlanMaker) and slides software (Presentations)"
+HOMEPAGE="https://www.softmaker.com/en/softmaker-office"
+
+SRC_URI="https://www.softmaker.net/down/softmaker-office-${PV//\./-}-amd64.tgz"
+
+LICENSE="SoftMakerOffice"
+SLOT="0"
+
+# empty keywords = hardmask
+# reason: Products got split, subscription no longer unlocks 2024 but the separate NX product.
+#         I have the subscription so I cannot maintain this ebuild any more.
+#         Use app-office/softmaker-office-nx instead if you have the subscription.
+#         The ebuild is still here for reference if someone wants to pick it up, I was already
+#         done adapting it before I noticed that my product key does not unlock the installation.
+KEYWORDS=""
+
+#KEYWORDS="~amd64"
+
+# .deb dependencies as of 20 Jun 2023, version 2024-1200:
+#
+#   DEBIAN                                        GENTOO
+#
+#   libcurl4 | libcurl3 (>= 7.16.2)            => net-misc/curl
+#   libc6 (>= 2.17)                            => sys-libs/glibc
+#   libgcc1 (>= 1:4.2)                         => sys-devel/gcc
+#   libgl1-mesa-glx | libgl1                   => virtual/opengl
+#   libglib2.0-0 (>= 2.12.0)                   => dev-libs/glib *
+#   libgstreamer1.0-0 (>= 1.0.0)               => media-libs/gstreamer *
+#   libgstreamer-plugins-base1.0-0 (>= 1.0.0)  => media-libs/gst-plugins-base
+#   libstdc++6 (>= 5.2)                        => sys-devel/gcc
+#   libx11-6                                   => x11-libs/libX11
+#   libxext6                                   => x11-libs/libXext
+#   libxmu6                                    => x11-libs/libXmu
+#   libxrandr2 (>= 2:1.2.99.3)                 => x11-libs/libXrandr
+#   libxrender1                                => x11-libs/libXrender
+
+DEPEND="
+	app-arch/tar
+	app-arch/xz-utils
+"
+RDEPEND="${DEPEND}
+	net-misc/curl
+	sys-libs/glibc
+	sys-devel/gcc
+	virtual/opengl
+	dev-libs/glib
+	media-libs/gstreamer
+	media-libs/gst-plugins-base
+	x11-libs/libX11
+	x11-libs/libXext
+	x11-libs/libXmu
+	x11-libs/libXrandr
+	x11-libs/libXrender
+"
+
+S="${WORKDIR}"
+
+INNER_ARCHIVE="office2024.tar.lzma"
+EXTRACTED_INNER_ARCHIVE="${WORKDIR}/extracted"
+
+FINAL_INSTALL_DIR="/opt/softmaker-office"
+INSTALL_DIR="${D}${FINAL_INSTALL_DIR}"
+
+# disable QA check for pre-stripped binaries
+QA_PRESTRIPPED="
+	${FINAL_INSTALL_DIR}/dpf3/libCSegmentation.so
+	${FINAL_INSTALL_DIR}/dpf3/libCTokenizer.so
+	${FINAL_INSTALL_DIR}/dpf3/libDpfDict.so
+	${FINAL_INSTALL_DIR}/dpf3/libgamorphDpf.so
+	${FINAL_INSTALL_DIR}/dpf3/libSGAnalyseSP.so
+	${FINAL_INSTALL_DIR}/dpf3/libsprt4-7-0-instance-01.so
+	${FINAL_INSTALL_DIR}/dpf3/libsprt4-7-0-instance-02.so
+	${FINAL_INSTALL_DIR}/dpf3/libsprt4-7-0-instance-03.so
+	${FINAL_INSTALL_DIR}/dpf3/libsprt4-7-0.so
+	${FINAL_INSTALL_DIR}/dpf3/libsx.so
+	${FINAL_INSTALL_DIR}/textmaker
+	${FINAL_INSTALL_DIR}/presentations
+	${FINAL_INSTALL_DIR}/planmaker
+"
+
+# disable QA checks for upstream .desktop files
+QA_DESKTOP_FILE="
+	usr/share/applications/planmaker-2024.desktop
+	usr/share/applications/presentations-2024.desktop
+	usr/share/applications/textmaker-2024.desktop
+"
+
+src_unpack() {
+	unpack ${A} || "Failed to unpack outer archive"
+	
+	mkdir ${EXTRACTED_INNER_ARCHIVE}
+	cd ${EXTRACTED_INNER_ARCHIVE} || die "Failed to switch to extraction directory"
+	
+	tar xJf ${WORKDIR}/${INNER_ARCHIVE} || die "Failed to extract ${INNER_ARCHIVE}"
+}
+
+src_prepare() {
+	## extract all lines defining functions from original install script so we can import it
+	# first make sure we actually have the expected revision
+	expected_hash="e3640f93e074c49bb5504ff0827213e7"
+	actual_hash=$(md5sum "${WORKDIR}/installsmoffice" | cut -c'-32')
+	[[ "${actual_hash}" == "${expected_hash}" ]] || die "Unexpected file hash on install script, unable to extract functions. Expected MD5 ${expected_hash}, got: ${actual_hash}"
+	
+	# extract
+	tail -n 1592 ${WORKDIR}/installsmoffice | head -n 1354 >${WORKDIR}/smoffice-install-functions.sh
+	
+	# mandatory since EAPI 6
+	eapply_user
+}
+
+src_compile() {
+	. ${WORKDIR}/smoffice-install-functions.sh
+	
+	# set variables needed by original install script
+	APPBINPATH="${WORKDIR}" # install script function will write there during installation
+	SRCPATH="${EXTRACTED_INNER_ARCHIVE}" # install script function will read from there during installation
+	APPPATH="${FINAL_INSTALL_DIR}" # generated script will run files from there after installation
+
+	## create_script
+	UNINSTALLSCRIPT="${APPBINPATH}/uninstall_smoffice2024" # irrelevant but function will generate that file nevertheless
+	REMOVEICONSSCRIPT="${APPBINPATH}/remove_icons.sh" # also irrelevant but needed
+	
+	# somehow the base file for the (irrelevant) uninstall script does not exist after unpacking, replace by dummy
+	echo '#dummy' >$SRCPATH/mime/uninst1
+	
+	# run original create_script function
+	# arg 1 = version
+	# arg 2 = fixed to "1" by original install script
+	# arg 3 = empty to indicate global installation
+	(set -e; create_script 2024 "1" "") || die "Failed to run original create_script"
+
+	## create_desktop1 to create .desktop files
+	# run original create_desktop functions
+	# arg 1 = version
+	# arg 2 = "0" assumes /usr/bin for installation, "1" uses APPBINPATH which would be wrong for this ebuild
+	(set -e; create_desktop1 2024 "0") || die "Failed to run original create_desktop1"
+	
+	## do not run create_desktop2 as it would install the files (this will be done separately by this ebuild)
+}
+
+src_install() {
+	# all pre-built binaries should go into /opt and be symlinked to usr/bin etc.
+	
+	# copy everything from inner archive to /opt install dir
+	insinto ${FINAL_INSTALL_DIR}
+	doins -r ${EXTRACTED_INNER_ARCHIVE}/*
+
+	# redo the executables (otherwise they miss permission)
+	exeinto ${FINAL_INSTALL_DIR}
+	doexe ${EXTRACTED_INNER_ARCHIVE}/planmaker
+	doexe ${EXTRACTED_INNER_ARCHIVE}/presentations
+	doexe ${EXTRACTED_INNER_ARCHIVE}/textmaker
+
+	# install the original wrapper scripts to /usr/bin
+	dobin ${WORKDIR}/planmaker24
+	dobin ${WORKDIR}/presentations24
+	dobin ${WORKDIR}/textmaker24
+
+	# symlink .desktop entries
+	for app in planmaker presentations textmaker; do
+		dosym ${FINAL_INSTALL_DIR}/mime/${app}-2024.desktop /usr/share/applications/${app}-2024.desktop
+	done
+	
+	# MIME definition
+	# TODO: split to separate files?
+	# TODO: separate SoftMaker Office's own from generic definitions? (generic = MS Office etc.)
+	insinto /usr/share/mime/application/
+	doins ${EXTRACTED_INNER_ARCHIVE}/mime/softmaker-office-2024.xml
+	
+	## icons (see original copy_icons function)
+	# TODO: do not install what we do not need when separated
+	# FIXME: 1024 is not supported by desktop eclass yet
+
+	# app icons
+	for app in prl tml pml; do
+		for size in 16 24 32 48 64 128 256 512 1024; do
+			newicon -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/${app}_${size}.png" "application-x-${app}24.png"
+		done
+	done
+	
+	# MIME icons
+	for size in 16 24 32 48 64 128 256 512 1024; do
+		## text documents
+		# SoftOffice => tmd icon
+		for mime in application-x-tmd application-x-tmv; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_${size}.png" ${mime}.png
+		done
+		
+		# MS Office => tmd_mso icon
+		for mime in application-rtf text-rtf application-msword application-msword-template application-vnd.ms-word application-x-doc application-x-pocket-word application-vnd.openxmlformats-officedocument.wordprocessingml.document application-vnd.openxmlformats-officedocument.wordprocessingml.template application-vnd.ms-word.document.macroenabled.12 application-vnd.ms-word.template.macroenabled.12; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_mso_${size}.png" ${mime}.png
+		done
+		
+		# OpenDocument => tmd_oth icon
+		for mime in application-x-pocket-word application-vnd.oasis.opendocument.text text-rtf application-vnd.sun.xml.writer application-vnd.sun.xml.writer.template application-vnd.wordperfect application-vnd.oasis.opendocument.text-template application-vnd.oasis.opendocument.text application-vnd.sun.xml.writer application-vnd.sun.xml.writer.template application-x-dbf; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_oth_${size}.png" ${mime}.png
+		done
+		
+		## spreadsheet documents
+		# SoftOffice? => pmd icon
+		for mime in application-x-pmd application-x-pmv application-x-pmdx application-x-pagemaker; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_${size}.png" ${mime}.png
+		done
+		
+		# MS Office => pmd_mso icon
+		for mime in application-x-sylk application-excel application-x-excel application-x-ms-excel application-x-msexcel application-x-xls application-xls application-vnd.ms-excel application-vnd.openxmlformats-officedocument.spreadsheetml.sheet application-vnd.openxmlformats-officedocument.spreadsheetml.template application-vnd.ms-excel.sheet.macroenabled.12 application-vnd.ms-excel.template.macroenabled.12 text-spreadsheet; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_mso_${size}.png" ${mime}.png
+		done
+		
+		# OpenDocument and generic? => pmd_oth icon
+		for mime in text-csv application-x-dif application-x-prn application-vnd.stardivision.calc; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_oth_${size}.png" ${mime}.png
+		done
+		
+		## presentations
+		# SoftOffice => prd icon
+		for mime in application-x-prd application-x-prs application-x-prv; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/prd_${size}.png" ${mime}.png
+		done
+		
+		# MS Office => prd_mso icon
+		for mime in application-ppt application-mspowerpoint application-vnd.ms-powerpoint application-vnd.ms-powerpoint.presentation.macroenabled.12 application-vnd.ms-powerpoint.slideshow.macroEnabled.12 application-vnd.openxmlformats-officedocument.presentationml.presentation application-vnd.openxmlformats-officedocument.presentationml.template application-vnd.openxmlformats-officedocument.presentationml.slideshow; do
+			newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/prd_mso_${size}.png" ${mime}.png
+		done
+		
+		## trailing in original function
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_${size}.png" application-x-tmd.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_mso_${size}.png" application-x-tmd-mso.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/tmd_oth_${size}.png" application-x-tmd-oth.png
+		
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_${size}.png" application-x-pmd.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_mso_${size}.png" application-x-pmd-mso.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/pmd_oth_${size}.png" application-x-pmd-oth.png
+		
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/prd_${size}.png" application-x-prd.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/prd_mso_${size}.png" application-x-prd-mso.png
+		newicon -c mimetypes -s ${size} "${EXTRACTED_INNER_ARCHIVE}/icons/prd_oth_${size}.png" application-x-prd-oth.png
+	done
+	
+	# TODO: what about the provided fonts, theres no global registration in the original install script?
+}
+
+pkg_postinst() {
+	xdg_icon_cache_update
+	xdg_desktop_database_update
+	xdg_mimeinfo_database_update
+}
+
+pkg_postrm() {
+	xdg_icon_cache_update
+	xdg_desktop_database_update
+	xdg_mimeinfo_database_update
+}
+