View Raw Ebuild
# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit git-r3
DESCRIPTION="ApiNATOMY model converter"
HOMEPAGE="https://github.com/open-physiology/open-physiology-viewer"
EGIT_REPO_URI="https://github.com/open-physiology/open-physiology-viewer.git"
LICENSE="Apache-2.0"
SLOT="9999"
KEYWORDS=""
BDEPEND="
>=net-libs/nodejs-18[npm]"
RDEPEND="
net-libs/nodejs"
src_unpack() {
# NOTE for this to work you must have run the command npm with no arguments
# by itself as root at least once, otherwise npm will continually try to
# create /etc/npm, this is a bug in the gentoo patch for node which doesn't
# correctly handle the fact that the code it is patching assumes that the
# user will always have permission to try to mkdir, however in here that is
# a sandbox violation
git-r3_src_unpack
ewarn "Running npm install in src_unpack. This violates various security assumptions. You have been warned."
pushd ${S}
npm install --legacy-peer-deps || die
pushd wrapper
npm install --legacy-peer-deps || die
popd
popd
}
src_prepare () {
# move modules inside bin to simplify packaging later, node will still find it
mv ${S}/wrapper/node_modules ${S}/wrapper/bin/ || die
default
}
src_configure () {
# change the conver path in wrapper/bin/model/filehandler.js
# to point to ./converter directly since we relocate it below
sed -i "s,require('../../../dist/converter'),require('./converter')," wrapper/bin/model/filehandler.js || die
}
src_compile() {
npm run build || die
mv ./dist/converter.js wrapper/bin/model/
}
src_install() {
INSINTO=/usr/lib64/node_modules/apinat
dodir ${INSINTO}
cp -Rp ${S}/wrapper/bin ${ED}${INSINTO}
dosym ${INSINTO}/bin/converter.js /usr/bin/apinat-converter
}