mirror of
git://slackware.nl/current.git
synced 2025-01-06 05:25:20 +01:00
ffd548b099
a/lrzip-0.650-x86_64-1.txz: Upgraded. d/mercurial-6.1-x86_64-1.txz: Upgraded. l/nodejs-16.14.0-x86_64-1.txz: Added. Thanks to Audrius Kažukauskas, Ryan P.C. McQuen, and Willy Sudiarto Raharjo for the slackbuilds.org version of the build script.
166 lines
4.9 KiB
Bash
Executable file
166 lines
4.9 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Copyright 2022 Patrick J. Volkerding, Sebeka, Minnesota, USA
|
|
# All rights reserved.
|
|
#
|
|
# Thanks to Audrius Kažukauskas, Ryan P.C. McQuen, and Willy Sudiarto Raharjo
|
|
# for the slackbuilds.org version of this script.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version, with the following exception:
|
|
# the text of the GPL license may be omitted.
|
|
#
|
|
# You may have received a copy of the GNU General Public License
|
|
# along with this program (most likely, a file named COPYING). If
|
|
# not, see <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
cd $(dirname $0) ; CWD=$(pwd)
|
|
|
|
PKGNAM=nodejs
|
|
SRCNAM=node
|
|
VERSION=${VERSION:-$(echo $SRCNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev | tr -d v)}
|
|
BUILD=${BUILD:-1}
|
|
|
|
# Automatically determine the architecture we're building on:
|
|
if [ -z "$ARCH" ]; then
|
|
case "$(uname -m)" in
|
|
i?86) ARCH=i586 ;;
|
|
arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;;
|
|
# Unless $ARCH is already set, use uname -m for all other archs:
|
|
*) ARCH=$(uname -m) ;;
|
|
esac
|
|
export ARCH
|
|
fi
|
|
|
|
# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
|
|
# the name of the created package would be, and then exit. This information
|
|
# could be useful to other scripts.
|
|
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
|
|
echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
|
|
exit 0
|
|
fi
|
|
|
|
NUMJOBS=${NUMJOBS:-" -j $(expr $(nproc) + 1) "}
|
|
|
|
if [ "$ARCH" = "i586" ]; then
|
|
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
|
|
LIBDIRSUFFIX=""
|
|
elif [ "$ARCH" = "i686" ]; then
|
|
SLKCFLAGS="-O2 -march=i686"
|
|
LIBDIRSUFFIX=""
|
|
elif [ "$ARCH" = "s390" ]; then
|
|
SLKCFLAGS="-O2"
|
|
LIBDIRSUFFIX=""
|
|
elif [ "$ARCH" = "x86_64" ]; then
|
|
SLKCFLAGS="-O2 -fPIC"
|
|
LIBDIRSUFFIX="64"
|
|
elif [ "$ARCH" = "armv7hl" ]; then
|
|
SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16"
|
|
LIBDIRSUFFIX=""
|
|
else
|
|
SLKCFLAGS="-O2"
|
|
LIBDIRSUFFIX=""
|
|
fi
|
|
|
|
TMP=${TMP:-/tmp}
|
|
PKG=$TMP/package-$PKGNAM
|
|
|
|
rm -rf $PKG
|
|
mkdir -p $TMP $PKG
|
|
|
|
cd $TMP
|
|
rm -rf $SRCNAM-v${VERSION}
|
|
tar xvf $CWD/$SRCNAM-v${VERSION}.tar.?z || exit 1
|
|
cd $SRCNAM-v${VERSION} || exit 1
|
|
|
|
chown -R root:root .
|
|
find . \
|
|
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
|
|
-exec chmod 755 {} \+ -o \
|
|
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
|
|
-exec chmod 644 {} \+
|
|
|
|
## Fix libdir for 64-bit:
|
|
sed -i "s|lib/|lib${LIBDIRSUFFIX}/|g" tools/install.py
|
|
sed -i "s/'lib'/'lib${LIBDIRSUFFIX}'/" lib/module.js
|
|
sed -i "s|\"lib\"|\"lib${LIBDIRSUFFIX}\"|" deps/npm/lib/npm.js
|
|
|
|
# Not sure if this one is really needed.
|
|
#sed -i "s|math.h|cmath|" src/node_crypto.cc
|
|
|
|
./configure \
|
|
--prefix=/usr \
|
|
--with-intl=system-icu \
|
|
--shared-openssl \
|
|
--shared-zlib \
|
|
--shared-libuv \
|
|
--experimental-http-parser \
|
|
--shared-nghttp2 \
|
|
--shared-cares \
|
|
--shared-brotli || exit 1
|
|
# --shared-v8
|
|
# --shared-http-parser
|
|
|
|
export CFLAGS="$SLKCFLAGS"
|
|
export CXXFLAGS="$SLKCFLAGS"
|
|
make $NUMJOBS || make || exit 1
|
|
make install DESTDIR=$PKG || exit 1
|
|
|
|
# Strip binaries:
|
|
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
|
|
|
|
# Relocate manual pages:
|
|
if [ -d $PKG/usr/share/man ]; then
|
|
mv $PKG/usr/share/man $PKG/usr
|
|
fi
|
|
|
|
# Compress manual pages:
|
|
find $PKG/usr/man -type f -exec gzip -9 {} \+
|
|
for i in $( find $PKG/usr/man -type l ) ; do
|
|
ln -s $( readlink $i ).gz $i.gz
|
|
rm $i
|
|
done
|
|
|
|
# Remove unneeded files:
|
|
find $PKG/usr \( -name '.git*' \) -exec rm -f {} \;
|
|
|
|
# Set NODE_PATH to look for globally installed modules:
|
|
mkdir -p $PKG/etc/profile.d
|
|
cat > $PKG/etc/profile.d/${PKGNAM}.csh << EOF
|
|
#!/bin/csh
|
|
setenv NODE_PATH /usr/lib${LIBDIRSUFFIX}/node_modules
|
|
EOF
|
|
cat > $PKG/etc/profile.d/${PKGNAM}.sh << EOF
|
|
#!/bin/sh
|
|
export NODE_PATH=/usr/lib${LIBDIRSUFFIX}/node_modules
|
|
EOF
|
|
chmod 0755 $PKG/etc/profile.d/*
|
|
|
|
# Symlink bash-completion if needed:
|
|
mkdir -p $PKG/usr/share/bash-completion/completions
|
|
if [ ! -r $PKG/usr/share/bash-completion/completions/npm -a -r $PKG/usr/lib${LIBDIRSUFFIX}/node_modules/npm/lib/utils/completion.sh ]; then
|
|
( cd $PKG/usr/share/bash-completion/completions/npm ; ln -sf ../../../lib${LIBDIRSUFFIX}/node_modules/npm/lib/utils/completion.sh npm )
|
|
fi
|
|
|
|
# Add a documentation directory:
|
|
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
|
|
cp -a \
|
|
AUTHORS* BUILDING* CHANGELOG* CODE_OF_CONDUCT* CONTRIBUTING* GOVERNANCE* LICENSE* README* SECURITY* \
|
|
$PKG/usr/doc/${PKGNAM}-$VERSION
|
|
|
|
# If there's a CHANGELOG, installing at least part of the recent history
|
|
# is useful, but don't let it get totally out of control:
|
|
if [ -r CHANGELOG ]; then
|
|
DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
|
|
cat CHANGELOG | head -n 1000 > $DOCSDIR/CHANGELOG
|
|
touch -r CHANGELOG $DOCSDIR/CHANGELOG
|
|
fi
|
|
|
|
mkdir -p $PKG/install
|
|
cat $CWD/slack-desc > $PKG/install/slack-desc
|
|
|
|
cd $PKG
|
|
/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
|