mirror of
https://github.com/gentoo-mirror/guru.git
synced 2026-07-22 13:33:32 -04:00
node.eclass: allow packaged to bundle dev dependencies
this is useful to reduce the number of ebuilds Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
This commit is contained in:
@@ -9,7 +9,7 @@
|
|||||||
# @BLURB: Eclass used to create and maintain node based packages
|
# @BLURB: Eclass used to create and maintain node based packages
|
||||||
# @DESCRIPTION: Node eclass for nodejs' based packages
|
# @DESCRIPTION: Node eclass for nodejs' based packages
|
||||||
|
|
||||||
EXPORT_FUNCTIONS src_prepare src_compile src_install src_test src_configure
|
EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install src_test src_configure
|
||||||
|
|
||||||
SLOT="0"
|
SLOT="0"
|
||||||
PN_LEFT="${PN%%+*}"
|
PN_LEFT="${PN%%+*}"
|
||||||
@@ -17,12 +17,11 @@ PN_RIGHT="${PN#*+}"
|
|||||||
NODEJS_DEPEND="net-libs/nodejs"
|
NODEJS_DEPEND="net-libs/nodejs"
|
||||||
NODEJS_RDEPEND="${NODEJS_DEPEND}"
|
NODEJS_RDEPEND="${NODEJS_DEPEND}"
|
||||||
NODEJS_BDEPEND="
|
NODEJS_BDEPEND="
|
||||||
|
app-editors/vim-core
|
||||||
app-misc/jq
|
app-misc/jq
|
||||||
net-misc/rsync
|
|
||||||
|
|
||||||
net-libs/nodejs[npm]
|
net-libs/nodejs[npm]
|
||||||
|
net-misc/rsync
|
||||||
"
|
"
|
||||||
# || ( net-libs/nodejs[npm] dev-node/npm )
|
|
||||||
|
|
||||||
DEPEND="${NODEJS_DEPEND}"
|
DEPEND="${NODEJS_DEPEND}"
|
||||||
RDEPEND="${NODEJS_RDEPEND}"
|
RDEPEND="${NODEJS_RDEPEND}"
|
||||||
@@ -55,17 +54,22 @@ node_src_prepare() {
|
|||||||
#remove version constraints on dependencies
|
#remove version constraints on dependencies
|
||||||
jq 'if .dependencies? then .dependencies[] = "*" else . end' package.json > package.json.temp || die
|
jq 'if .dependencies? then .dependencies[] = "*" else . end' package.json > package.json.temp || die
|
||||||
mv package.json.temp package.json || die
|
mv package.json.temp package.json || die
|
||||||
jq 'if .devDependencies? then .devDependencies[] = "*" else . end' package.json > package.json.temp || die
|
if [[ "${NODE_BUNDLE}" != 1 ]]; then
|
||||||
mv package.json.temp package.json || die
|
jq 'if .devDependencies? then .devDependencies[] = "*" else . end' package.json > package.json.temp || die
|
||||||
|
mv package.json.temp package.json || die
|
||||||
|
fi
|
||||||
|
|
||||||
#here we trick npm into believing there are no dependencies so it will not try to fetch them
|
#here we trick npm into believing there are no dependencies so it will not try to fetch them
|
||||||
jq 'with_entries(if .key == "dependencies" then .key = "deps" else . end)' package.json > package.json.temp || die
|
jq 'with_entries(if .key == "dependencies" then .key = "deps" else . end)' package.json > package.json.temp || die
|
||||||
mv package.json.temp package.json || die
|
mv package.json.temp package.json || die
|
||||||
jq 'with_entries(if .key == "devDependencies" then .key = "devDeps" else . end)' package.json > package.json.temp || die
|
|
||||||
mv package.json.temp package.json || die
|
|
||||||
|
|
||||||
# are those useful?
|
if [[ "${NODE_BUNDLE}" != 1 ]]; then
|
||||||
rm -fv npm-shrinkwrap.json package-lock.json yarn.lock pnpm-lock.yaml || die
|
jq 'with_entries(if .key == "devDependencies" then .key = "devDeps" else . end)' package.json > package.json.temp || die
|
||||||
|
mv package.json.temp package.json || die
|
||||||
|
|
||||||
|
# are those useful?
|
||||||
|
rm -fv npm-shrinkwrap.json package-lock.json yarn.lock pnpm-lock.yaml || die
|
||||||
|
fi
|
||||||
|
|
||||||
#delete some trash
|
#delete some trash
|
||||||
find . -iname 'code-of-conduct*' -maxdepth 1 -exec rm -rv "{}" \; || die
|
find . -iname 'code-of-conduct*' -maxdepth 1 -exec rm -rv "{}" \; || die
|
||||||
@@ -87,9 +91,11 @@ node_src_configure() {
|
|||||||
export npm_config_prefix="${NODE_MODULE_PREFIX}"
|
export npm_config_prefix="${NODE_MODULE_PREFIX}"
|
||||||
#path to the headers needed by node-gyp
|
#path to the headers needed by node-gyp
|
||||||
export npm_config_nodedir="/usr/include/node"
|
export npm_config_nodedir="/usr/include/node"
|
||||||
# export npm_config_tmp="${T}"
|
#export npm_config_tmp="${T}"
|
||||||
|
|
||||||
in_iuse test || export NODE_ENV="production"
|
if [[ "${NODE_BUNDLE}" != 1 ]]; then
|
||||||
|
in_iuse test || export NODE_ENV="production"
|
||||||
|
fi
|
||||||
|
|
||||||
"${NPM}" config set offline true || die
|
"${NPM}" config set offline true || die
|
||||||
"${NPM}" config set audit false || die
|
"${NPM}" config set audit false || die
|
||||||
@@ -97,6 +103,9 @@ node_src_configure() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
node_src_compile() {
|
node_src_compile() {
|
||||||
|
if [[ "${NODE_BUNDLE}" == 1 ]]; then
|
||||||
|
"${NPM}" ci ${NPM_FLAGS} || die
|
||||||
|
fi
|
||||||
"${NPM}" install ${NPM_FLAGS} --global || die
|
"${NPM}" install ${NPM_FLAGS} --global || die
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,12 +113,21 @@ node_src_install() {
|
|||||||
#restore original package.json
|
#restore original package.json
|
||||||
jq 'with_entries(if .key == "deps" then .key = "dependencies" else . end)' package.json > package.json.temp || die
|
jq 'with_entries(if .key == "deps" then .key = "dependencies" else . end)' package.json > package.json.temp || die
|
||||||
mv package.json.temp package.json || die
|
mv package.json.temp package.json || die
|
||||||
jq 'with_entries(if .key == "devDeps" then .key = "devDependencies" else . end)' package.json > package.json.temp || die
|
if [[ "${NODE_BUNDLE}" != 1 ]]; then
|
||||||
mv package.json.temp package.json || die
|
jq 'with_entries(if .key == "devDeps" then .key = "devDependencies" else . end)' package.json > package.json.temp || die
|
||||||
|
mv package.json.temp package.json || die
|
||||||
|
fi
|
||||||
|
|
||||||
#should I delete all the dotfiles?
|
#should I delete all the dotfiles?
|
||||||
rm -rvf $(find . -iname ".[!.]*") || die
|
rm -rvf $(find . -iname ".[!.]*") || die
|
||||||
|
|
||||||
|
if [[ "${NODE_BUNDLE}" == 1 ]]; then
|
||||||
|
rm -fv npm-shrinkwrap.json package-lock.json yarn.lock pnpm-lock.yaml || die
|
||||||
|
|
||||||
|
# delete dev dependencies
|
||||||
|
rm -rf node_modules || die
|
||||||
|
fi
|
||||||
|
|
||||||
#install some files in the docdir
|
#install some files in the docdir
|
||||||
find . -iname "authors*" -maxdepth 1 -exec dodoc "{}" \; -exec rm "{}" \; || die
|
find . -iname "authors*" -maxdepth 1 -exec dodoc "{}" \; -exec rm "{}" \; || die
|
||||||
find . -iname "changelog*" -maxdepth 1 -exec dodoc "{}" \; -exec rm "{}" \; || die
|
find . -iname "changelog*" -maxdepth 1 -exec dodoc "{}" \; -exec rm "{}" \; || die
|
||||||
@@ -132,3 +150,69 @@ node_src_install() {
|
|||||||
node_src_test() {
|
node_src_test() {
|
||||||
npm test || die
|
npm test || die
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ugh
|
||||||
|
sha256sum() {
|
||||||
|
command sha256sum "$@" | cut -d ' ' -f 1
|
||||||
|
}
|
||||||
|
|
||||||
|
sha1sum() {
|
||||||
|
command sha1sum "$@" | cut -d ' ' -f 1
|
||||||
|
}
|
||||||
|
|
||||||
|
sha512sum() {
|
||||||
|
command sha512sum "$@" | cut -d ' ' -f 1
|
||||||
|
}
|
||||||
|
|
||||||
|
hex2base64() {
|
||||||
|
xxd -r -p | base64 -w 0
|
||||||
|
}
|
||||||
|
|
||||||
|
splithash() {
|
||||||
|
echo "${1:0:2}/${1:2:2}/${1:4}"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
newcacheline() {
|
||||||
|
read -r -d '' JSON <<-EOF
|
||||||
|
{"key":"pacote:tarball:file:$1","integrity":"sha1-$(sha1sum "$1" | hex2base64)","time":1604617124075,"size":$(wc -c < "$1")}
|
||||||
|
EOF
|
||||||
|
echo
|
||||||
|
echo -n "$(echo -n "$JSON" | sha1sum)"
|
||||||
|
echo -n ' '
|
||||||
|
echo "$JSON"
|
||||||
|
}
|
||||||
|
|
||||||
|
addsha1file() {
|
||||||
|
SHA1="$CACHEDIR/content-v2/sha1/$(splithash "$(sha1sum "$1")")"
|
||||||
|
mkdir -p "$(dirname "$SHA1")" || die
|
||||||
|
cp "$1" "$SHA1" || die
|
||||||
|
}
|
||||||
|
|
||||||
|
addsha512file() {
|
||||||
|
SHA="$CACHEDIR/content-v2/sha512/$(splithash "$(sha512sum "$1")")"
|
||||||
|
mkdir -p "$(dirname "$SHA")" || die
|
||||||
|
cp "$1" "$SHA" || die
|
||||||
|
}
|
||||||
|
|
||||||
|
# end ugh
|
||||||
|
|
||||||
|
npm_packages_uris() {
|
||||||
|
packages=("${@}")
|
||||||
|
for p in "${packages[@]}"; do
|
||||||
|
url="mirror://npm/${p} -> ${p//\//_}"
|
||||||
|
echo "${url}"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
node_src_unpack() {
|
||||||
|
unpack "${P}.tgz"
|
||||||
|
if [[ "${NODE_BUNDLE}" == 1 ]]; then
|
||||||
|
CACHEDIR="$(npm config get cache)/_cacache"
|
||||||
|
for file in "${DISTDIR}"/*.tgz; do
|
||||||
|
addsha1file "${file}" || die
|
||||||
|
addsha512file "${file}" || die
|
||||||
|
done
|
||||||
|
#npm cache verify || die # just for good luck
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user