public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Haelwenn Monnier" <contact@hacktivis.me>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/proj/guru:master commit in: eclass/
Date: Thu,  5 May 2022 14:42:28 +0000 (UTC)	[thread overview]
Message-ID: <1651735937.14617d41adcaac22702439046b5dad6a5979ac94.lanodan@gentoo> (raw)

commit:     14617d41adcaac22702439046b5dad6a5979ac94
Author:     Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Thu May  5 07:24:49 2022 +0000
Commit:     Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Thu May  5 07:32:17 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=14617d41

octaveforge.eclass: move octaveforge makefile logic into the eclass

Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>

 eclass/octaveforge.eclass | 128 +++++++++++++++++++++++++++++++++++-----------
 1 file changed, 99 insertions(+), 29 deletions(-)

diff --git a/eclass/octaveforge.eclass b/eclass/octaveforge.eclass
index 590f21a1c..7f5f38dee 100644
--- a/eclass/octaveforge.eclass
+++ b/eclass/octaveforge.eclass
@@ -17,12 +17,7 @@ case ${EAPI} in
 	*) die "${ECLASS}: EAPI ${EAPI} unsupported."
 esac
 
-EXPORT_FUNCTIONS src_unpack src_prepare src_install pkg_postinst pkg_prerm pkg_postrm
-
-# @ECLASS-VARIABLE: OCTAVEFORGE_CAT
-# @DESCRIPTION:
-# the octave-forge category of the package.
-OCTAVEFORGE_CAT="${OCTAVEFORGE_CAT:-main}"
+EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install pkg_postinst pkg_prerm pkg_postrm
 
 # @ECLASS-VARIABLE: REPO_URI
 # @DESCRIPTION:
@@ -48,7 +43,6 @@ OCT_BIN="$(type -p octave)"
 
 SRC_URI="
 	mirror://sourceforge/octave/${P}.tar.gz
-	${REPO_URI}/packages/package_Makefile.in -> octaveforge_Makefile
 	${REPO_URI}/packages/package_configure.in -> octaveforge_configure
 "
 SLOT="0"
@@ -68,12 +62,7 @@ octaveforge_src_unpack() {
 # @DESCRIPTION:
 # function to add octaveforge specific makefile and configure and run autogen.sh if available
 octaveforge_src_prepare() {
-	for filename in Makefile configure; do
-		cp "${DISTDIR}/octaveforge_${filename}" "${S}/${filename}" || die
-	done
-
-	#octave_config_info is deprecated in octave5
-	sed -i 's|octave_config_info|__octave_config_info__|g' Makefile || die
+	cp "${DISTDIR}/octaveforge_configure" "${S}/configure" || die
 
 	chmod 0755 "${S}/configure" || die
 	if [[ -e "${S}/src/autogen.sh" ]]; then
@@ -87,12 +76,87 @@ octaveforge_src_prepare() {
 	eapply_user
 }
 
+octaveforge_src_compile() {
+	PKGDIR="$(pwd | sed -e 's|^.*/||' || die)"
+	export OCT_PACKAGE="${TMPDIR}/${PKGDIR}.tar.gz"
+	export OCT_PKG=$(echo "${PKGDIR}" | sed -e 's|^\(.*\)-.*|\1|' || die)
+	export MKOCTFILE="mkoctfile -v"
+
+	cmd="disp(__octave_config_info__('octlibdir'));"
+	OCTLIBDIR=$(octavecommand "${cmd}" || die)
+	export LFLAGS="-L${OCTLIBDIR}"
+
+	if [[ -e src/Makefile ]]; then
+		emake -C src all
+	fi
+
+	if [[ -e src/Makefile ]]; then
+		mv src/Makefile src/Makefile.disable || die
+	fi
+	if [[ -e src/configure ]]; then
+		mv src/configure src/configure.disable || die
+	fi
+
+	pushd .. || die
+	tar -czf "${OCT_PACKAGE}" "${PKGDIR}" || die
+}
+
 # @FUNCTION: octaveforge_src_install
 # @DESCRIPTION:
 # function to install the octave package
 # documentation to docsdir
 octaveforge_src_install() {
-	emake DESTDIR="${D}" DISTPKG='Gentoo' install
+	TMPDIR="${T}"
+	DESTDIR="${D}"
+	DISTPKG='Gentoo'
+
+	pushd ../ || die
+	if [[ "X${DISTPKG}X" != "XX" ]]; then
+		stripcmd="
+			unlink(pkg('local_list'));
+			unlink(pkg('global_list'));
+		"
+	fi
+	if [[ "X${DESTDIR}X" = "XX" ]]; then
+		cmd="
+			warning('off','all');
+			pkg('install','${OCT_PACKAGE}');l=pkg('list');
+			disp(l{cellfun(@(x)strcmp(x.name,'${OCT_PKG}'),l)}.dir);
+		"
+		oct_pkgdir=$(octavecommand "${cmd}${stripcmd}" || die)
+	else
+		cmd="disp(fullfile(OCTAVE_HOME(),'share','octave'));"
+		shareprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
+		cmd="disp(fullfile(__octave_config_info__('libexecdir'),'octave'));"
+		libexecprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
+		octprefix="${shareprefix}/packages" || die
+		archprefix="${libexecprefix}/packages" || die
+		if [[ ! -e "${octprefix}" ]]; then
+			mkdir -p "${octprefix}" || die
+		fi
+		if [[ ! -e "${archprefix}" ]]; then
+			mkdir -p "${archprefix}" || die
+		fi
+		cmd="
+			warning('off','all');
+			pkg('prefix','${octprefix}','${archprefix}');
+			pkg('global_list',fullfile('${shareprefix}','octave_packages'));
+			pkg('local_list',fullfile('${shareprefix}','octave_packages'));
+			pkg('install','-nodeps','-verbose','${OCT_PACKAGE}');
+		"
+		octavecommand "${cmd}" || die
+		cmd="
+			warning('off','all');
+			pkg('prefix','${octprefix}','${archprefix}');
+			pkg('global_list',fullfile('${shareprefix}','octave_packages'));
+			pkg('local_list',fullfile('${shareprefix}','octave_packages'));
+			l=pkg('list');
+			disp(l{cellfun(@(x)strcmp(x.name,'${OCT_PKG}'),l)}.dir);
+		"
+		oct_pkgdir=$(octavecommand "${cmd}${stripcmd}" || die)
+	fi
+	export oct_pkgdir
+
 	if [[ -d doc/ ]]; then
 		dodoc -r doc/*
 	fi
@@ -106,7 +170,8 @@ octaveforge_pkg_postinst() {
 	if [[ ! -d "${OCT_PKGDIR}" ]] ; then
 		mkdir -p "${OCT_PKGDIR}" || die
 	fi
-	"${OCT_BIN}" -H -q --no-site-file --eval "pkg('rebuild');" &> /dev/null || die 'failed to register the package.'
+	cmd="pkg('rebuild');"
+	octavecommand "${cmd}" || die 'failed to register the package.'
 }
 
 # @FUNCTION: octaveforge_pkg_prerm
@@ -114,21 +179,21 @@ octaveforge_pkg_postinst() {
 # function that will run on_uninstall routines to prepare the package to remove
 octaveforge_pkg_prerm() {
 	einfo 'Running on_uninstall routines to prepare the package to remove.'
-	local pkgdir=$(
-		"${OCT_BIN}" -H -q --no-site-file --eval "
-			pkg('rebuild');
-			l = pkg('list');
-			disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
-		"
-	)
-	rm -f "${pkgdir}/packinfo/on_uninstall.m" || die
-	if [[ -e "${pkgdir}/packinfo/on_uninstall.m.orig" ]]; then
-		mv "$pkgdir"/packinfo/on_uninstall.m{.orig,} || die
-		cd "$pkgdir/packinfo" || die
-		"${OCT_BIN}" -H -q --no-site-file --eval "
+	cmd="
+		pkg('rebuild');
+		l = pkg('list');
+		disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
+	"
+	oct_pkgdir=$(octavecommand "${cmd}" || die)
+	rm -f "${oct_pkgdir}/packinfo/on_uninstall.m" || die
+	if [[ -e "${oct_pkgdir}/packinfo/on_uninstall.m.orig" ]]; then
+		mv "$oct_pkgdir"/packinfo/on_uninstall.m{.orig,} || die
+		pushd "$oct_pkgdir/packinfo" || die
+		cmd="
 			l = pkg('list');
 			on_uninstall(l{cellfun(@(x)strcmp(x.name,'${PN}'), l)});
-		" &> /dev/null || die 'failed to remove the package'
+		"
+		octavecommand "${cmd}" || die 'failed to remove the package'
 	fi
 }
 
@@ -140,5 +205,10 @@ octaveforge_pkg_postrm() {
 	if [[ ! -d "${OCT_PKGDIR}" ]] ; then
 		mkdir -p "${OCT_PKGDIR}" || die
 	fi
-	"${OCT_BIN}" -H --silent --eval 'pkg rebuild' &> /dev/null || die 'failed to rebuild the package database'
+	cmd="pkg('rebuild');"
+	"${OCT_BIN}" -H --silent "${cmd}" || die 'failed to rebuild the package database'
+}
+
+octavecommand() {
+	"${OCT_BIN}" -H -q --no-site-file --eval "$1"
 }


             reply	other threads:[~2022-05-05 14:42 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-05 14:42 Haelwenn Monnier [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-11-27 14:34 [gentoo-commits] repo/proj/guru:master commit in: eclass/ David Roman
2024-10-19  0:05 David Roman
2024-07-14 17:47 [gentoo-commits] repo/proj/guru:dev " Florian Schmaus
2024-07-14 17:47 ` [gentoo-commits] repo/proj/guru:master " Florian Schmaus
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-01 13:50 David Roman
2024-04-27 11:10 David Roman
2024-04-01 11:32 Julien Roy
2024-03-31 17:57 Julien Roy
2024-03-31 17:49 [gentoo-commits] repo/proj/guru:dev " Julien Roy
2024-03-31 17:57 ` [gentoo-commits] repo/proj/guru:master " Julien Roy
2024-02-05 11:57 David Roman
2024-02-05 11:57 David Roman
2024-02-05 11:57 David Roman
2024-02-05 11:57 David Roman
2024-01-20 22:13 David Roman
2024-01-03 15:20 David Roman
2023-10-05 14:25 Viorel Munteanu
2023-10-05  6:18 Viorel Munteanu
2023-08-30  5:30 [gentoo-commits] repo/proj/guru:dev " Viorel Munteanu
2023-08-30  5:36 ` [gentoo-commits] repo/proj/guru:master " Viorel Munteanu
2023-08-07 12:51 David Roman
2023-08-07 12:51 David Roman
2023-08-04  7:26 [gentoo-commits] repo/proj/guru:dev " Florian Schmaus
2023-08-04  7:26 ` [gentoo-commits] repo/proj/guru:master " Florian Schmaus
2023-08-04  7:26 [gentoo-commits] repo/proj/guru:dev " Florian Schmaus
2023-08-04  7:26 ` [gentoo-commits] repo/proj/guru:master " Florian Schmaus
2023-07-17 14:24 Florian Schmaus
2023-06-26 11:24 Andrew Ammerlaan
2023-05-22  5:17 Viorel Munteanu
2023-05-22  5:17 Viorel Munteanu
2023-05-11 14:32 Andrew Ammerlaan
2023-05-11 14:32 Andrew Ammerlaan
2023-05-11 14:32 Andrew Ammerlaan
2023-05-11 14:32 Andrew Ammerlaan
2023-05-11 14:32 Andrew Ammerlaan
2023-04-13  7:02 Florian Schmaus
2023-04-01 21:30 Haelwenn Monnier
2023-04-01 21:30 Haelwenn Monnier
2023-04-01 21:30 Haelwenn Monnier
2023-02-27 15:06 Florian Schmaus
2023-02-27 15:06 Florian Schmaus
2023-01-08 10:27 Florian Schmaus
2022-12-09 16:26 Ronny Gutbrod
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-16 19:33 Florian Schmaus
2022-11-16 19:33 Florian Schmaus
2022-11-16 19:33 Florian Schmaus
2022-11-05 15:26 Arthur Zamarin
2022-07-20  9:35 Andrew Ammerlaan
2022-07-20  9:35 Andrew Ammerlaan
2022-07-20  9:35 Andrew Ammerlaan
2022-07-20  9:35 Andrew Ammerlaan
2022-07-20  9:35 Andrew Ammerlaan
2022-07-11  6:54 Andrew Ammerlaan
2022-06-30 17:39 Florian Schmaus
2022-06-29 15:38 Florian Schmaus
2022-06-29 15:38 Florian Schmaus
2022-06-14 18:35 Haelwenn Monnier
2022-06-14 18:35 Haelwenn Monnier
2022-06-14 18:35 Haelwenn Monnier
2022-05-12  9:14 Andrew Ammerlaan
2022-05-05 14:42 Haelwenn Monnier
2022-05-05 14:42 Haelwenn Monnier
2022-04-15 20:58 Haelwenn Monnier
2022-04-15 20:58 Haelwenn Monnier
2022-04-14 13:31 Andrew Ammerlaan
2022-04-12 19:35 Ronny Gutbrod
2022-04-12 19:35 Ronny Gutbrod
2022-04-12 19:35 Ronny Gutbrod
2022-02-20  8:46 Florian Schmaus
2022-02-20  8:46 Florian Schmaus
2021-10-06  1:13 Theo Anderson
2021-09-30 19:39 Arthur Zamarin
2021-09-08 15:20 Arthur Zamarin
2021-07-26 14:05 Andrew Ammerlaan
2021-06-02 16:00 Andrew Ammerlaan
2021-05-24 22:25 Haelwenn Monnier
2021-05-17 19:11 Andrew Ammerlaan
2021-03-16 10:49 Andrew Ammerlaan
2021-03-15 10:58 Andrew Ammerlaan
2021-03-15 10:58 Andrew Ammerlaan
2020-12-06 10:46 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
2020-12-06 10:49 ` [gentoo-commits] repo/proj/guru:master " Andrew Ammerlaan
2020-05-07 11:13 Andrew Ammerlaan
2020-05-07 11:13 Andrew Ammerlaan
2020-05-01 15:39 Andrew Ammerlaan
2020-04-28  8:01 Andrew Ammerlaan
2020-04-28  7:44 Andrew Ammerlaan
2020-04-21 10:23 Andrew Ammerlaan
2020-04-21 10:20 Andrew Ammerlaan
2020-04-07  7:42 Andrew Ammerlaan
2020-04-07  7:42 Andrew Ammerlaan
2020-04-07  7:27 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
2020-04-07  7:42 ` [gentoo-commits] repo/proj/guru:master " Andrew Ammerlaan
2020-04-07  7:16 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
2020-04-07  7:42 ` [gentoo-commits] repo/proj/guru:master " Andrew Ammerlaan
2020-04-06 18:26 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
2020-04-07  7:42 ` [gentoo-commits] repo/proj/guru:master " Andrew Ammerlaan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1651735937.14617d41adcaac22702439046b5dad6a5979ac94.lanodan@gentoo \
    --to=contact@hacktivis.me \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox