https://seesaawiki.jp/lifewithslackarmzaurus14_1/d/HTML/CSS/JavaScript%a4%ce%ce%fd%bd%ac%20local%20Web%a5%b5%a1%bc%a5%d0%20Node%2ejs の続き。
SoftwareDesignの記事を参考に、Node.jsの動作環境をmakeしてみる。
SDの記事と同じnodejs-6.4.0をmakeすることにした。が、nodejs-10以上でないと動か
ないものが出てきた。
node-v12.22.1:(PC/AT機)
(https://slackbuilds.org/slackbuilds/14.2/development/nodejs/nodejs.SlackBuild を参考に、)
sed -i “s|math.h|cmath|” src/node_crypto.cc
Slack-14.2$ CFLAGS=”-O2 -march=i686 -mtune=i686″ CXXFLAGS=”-O2 -march=i686 -mtune=i686″ \
\ ./configure –prefix=/usr (–disable-static 実行しなかった) \
\ –shared-zlib –without-snapshot
\WARNING: C++ compiler (CXX=g++, 5.3.0) too old, need g++ 6.3.0 or clang++ 8.0.0
\WARNING: warnings were emitted in the configure phase
\INFO: configure completed successfully
Slack-14.2$ make CFLAGS=”-O2 -march=i686 -mtune=i686″ CXXFLAGS=”-O2 -march=i686 -mtune=i686″
\g++ -o ~/myproj/slackware/14.2/node-v12.22.1/out/Release/obj.target/torque_base/deps/v8/src/torque/cfg.o ../deps/v8/src/torque/cfg.cc ‘-DV8_GYP_BUILD’ ‘-DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64’ ‘-D__STDC_FORMAT_MACROS’ ‘-DOPENSSL_NO_PINSHARED’ ‘-DOPENSSL_THREADS’ ‘-DV8_TARGET_ARCH_IA32’ ‘-DV8_EMBEDDER_STRING=”-node.46″‘ ‘-DENABLE_DISASSEMBLER’ ‘-DV8_PROMISE_INTERNAL_FIELD_COUNT=1’ ‘-DENABLE_MINOR_MC’ ‘-DOBJECT_PRINT’ ‘-DV8_INTL_SUPPORT’ ‘-DV8_CONCURRENT_MARKING’ ‘-DV8_ENABLE_LAZY_SOURCE_POSITIONS’ ‘-DV8_EMBEDDED_BUILTINS’ ‘-DV8_USE_SIPHASH’ ‘-DDISABLE_UNTRUSTED_CODE_MITIGATIONS’ ‘-DV8_WIN64_UNWINDING_INFO’ ‘-DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH’ -I../deps/v8 -I../deps/v8/include -pthread -Wno-unused-parameter -m32 -Wno-return-type -msse2 -mfpmath=sse -mmmx -fno-strict-aliasing -m32 -O3 -fno-omit-frame-pointer -fdata-sections -ffunction-sections -O3 -fno-rtti -std=gnu++1y -fexceptions -MMD -MF ~/myproj/slackware/14.2/node-v12.22.1/out/Release/.deps/~/myproj/slackware/14.2/node-v12.22.1/out/Release/obj.target/torque_base/deps/v8/src/torque/cfg.o.d.raw -O2 -march=i686 -mtune=i686 -c
\In file included from ../deps/v8/src/torque/cfg.h:13:0,
\ from ../deps/v8/src/torque/cfg.cc:5:
\../deps/v8/src/torque/ast.h: In static member function ‘static v8::internal::torque::ParameterList v8::internal::torque::ParameterList::Empty()’:
\../deps/v8/src/torque/ast.h:573:42: error: could not convert ‘<brace-enclosed initializer list>()’ from ‘<brace-enclosed initializer list>’ to ‘v8::internal::torque::ParameterList’
\ static ParameterList Empty() { return {}; }
\ ^
\tools/v8_gypfiles/torque_base.target.mk:153: recipe for target ‘~/myproj/slackware/14.2/node-v12.22.1/out/Release/obj.target/torque_base/deps/v8/src/torque/cfg.o’ failed
\make[1]: *** [~/myproj/slackware/14.2/node-v12.22.1/out/Release/obj.target/torque_base/deps/v8/src/torque/cfg.o] Error 1
\Makefile:104: recipe for target ‘node’ failed
\make: *** [node] Error 2
node-v10.24.1:(PC/AT機)
(https://slackbuilds.org/slackbuilds/14.2/development/nodejs/nodejs.SlackBuild を参考に、)
sed -i “s|math.h|cmath|” src/node_crypto.cc
Slack-14.2$ CFLAGS=”-O2 -march=i686 -mtune=i686″ CXXFLAGS=”-O2 -march=i686 -mtune=i686″ \
\ ./configure –prefix=/usr (–disable-static 実行しなかった) \
\ –shared-zlib –without-snapshot
Slack-14.2$ make CFLAGS=”-O2 -march=i686 -mtune=i686″ CXXFLAGS=”-O2 -march=i686 -mtune=i686″
Slack-14.2$ mkdir ~/package-nodejs
Slack-14.2$ make install DESTDIR=~/package-nodejs CFLAGS=”-O2 -march=i686 -mtune=i686″ CXXFLAGS=”-O2 -march=i686 -mtune=i686″ (エラーがなければ以降sudoで実行)
Slack-14.2$ rm -rf ~/package-nodejs
Slack-14.2$ sudo mkdir ~/package-nodejs
Slack-14.2$ sudo chown -R root:root ../node-v10.24.1
Slack-14.2$ sudo make install DESTDIR=~/package-nodejs CFLAGS=”-O2 -march=i686 -mtune=i686″ CXXFLAGS=”-O2 -march=i686 -mtune=i686″
Slack-14.2$ cd ~/package-nodejs
Slack-14.2$ find usr -print0 | xargs -0 file | grep -e “executable” -e “shared object” | grep ELF
Slack-14.2$ sudo strip –strip-unneeded usr/bin/node
Slack-14.2$ sudo gzip -9 usr/man/man?/*.?
\ Add bash completion file for npm.
Slack-14.2$ sudo install -D -m 644 https://slackbuilds.org/slackbuilds/14.2/development/nodejs/npm.sh usr/share/bash-completion/completions/npm
Slack-14.2$ sudo find usr -name “.git*” -exec rm -f \{\} \;
\ Set NODE_PATH to look for globally installed modules.
Slack-14.2$ sudo mkdir -p etc/profile.d
Slack-14.2$ sudo sh -c ‘cat > etc/profile.d/node.csh << EOF
#!/bin/csh
setenv NODE_PATH /usr/lib/node_modules
EOF’
Slack-14.2$ sudo sh -c ‘cat > etc/profile.d/node.sh << EOF
#!/bin/sh
export NODE_PATH=/usr/lib/node_modules
EOF’
Slack-14.2$ sudo chmod 0755 etc/profile.d/*
Slack-14.2$ sudo mv usr/doc/node usr/share/nodejs
Slack-14.2$ sudo mv usr/systemtap usr/share/systemtap
Slack-14.2$ sudo mkdir -p install
Slack-14.2$ sudo cp https://slackbuilds.org/slackbuilds/14.2/development/nodejs/slack-desc install/
Slack-14.2$ sudo makepkg ../nodejs-10.24.1-i686-1.tgz
WARNING: zero length file usr/lib/node_modules/npm/.npmrc
WARNING: zero length file usr/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py
WARNING: zero length file usr/lib/node_modules/npm/node_modules/smart-buffer/docs/ROADMAP.md
Slack-14.2$ sudo installpkg ../nodejs-10.24.1-i686-1.tgz
node-v12.14.1:(PC/AT機)
Slack-14.2$ CFLAGS=”-O2 -march=i686 -mtune=i686″ CXXFLAGS=”-O2 -march=i686 -mtune=i686″ \
\ ./configure –prefix=/usr –shared-zlib –without-snapshot
WARNING: C++ compiler (CXX=g++, 5.3.0) too old, need g++ 6.3.0 or clang++ 8.0.0
INFO: Using floating patch “tools/icu/patches/64/source/common/putil.cpp” from “tools/icu”
INFO: Using floating patch “tools/icu/patches/64/source/i18n/dtptngen.cpp” from “tools/icu”
WARNING: warnings were emitted in the configure phase
INFO: configure completed successfully
Slack-14.2$ make CFLAGS=”-O2 -march=i686 -mtune=i686″ CXXFLAGS=”-O2 -march=i686 -mtune=i686″
(node-v12.22.1と同じエラー)
GCC-6.3.0:(PC/AT機)
(https://www.linuxfromscratch.org/lfs/view/8.0/chapter06/gcc.html を参考に、)
(http://ftp.kddilabs.jp/Linux/distributions/Slackware/slackware-14.2/source/d/gcc/gcc.SlackBuild を参考に、)
Slack-14.2$ tar xzf https://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2
Slack-14.2$ cd gcc-6.3.0
Slack-14.2$ mkdir build; cd build
Slack-14.2$ SED=sed ../configure –prefix=/usr/local \
\ –enable-languages=c,c++ –disable-multilib –disable-bootstrap –with-system-zlib \
\ (–with-default-libstdcxx-abi=gcc4-compatible 付けなかった)
checking for the correct version of gmp.h… no
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
\
Slack-14.2$ sudo installpkg /mnt4/slackware/l/gmp-6.1.1-i586-1.txz
Slack-14.2$ sudo installpkg /mnt4/slackware/l/mpfr-3.1.4-i586-1.txz
Slack-14.2$ sudo installpkg /mnt4/slackware/l/libmpc-1.0.3-i486-1.txz
(再度configure)
\
Slack-14.2$ make
Slack-14.2$ mkdir ~/package-gcc-6.3.0
Slack-14.2$ make install DESTDIR=~/package-gcc-6.3.0
Slack-14.2$ rm -rf ~/package-gcc-6.3.0
Slack-14.2$ sudo mkdir ~/package-gcc-6.3.0
Slack-14.2$ sudo make install DESTDIR=~/package-gcc-6.3.0
Slack-14.2$ cd ~/package-gcc-6.3.0
Slack-14.2$ sudo ln -sv gcc usr/local/bin/cc
Slack-14.2$ sudo mkdir usr/local/lib/bfd-plugins
Slack-14.2$ sudo ln -sfv ../../libexec/gcc/i686-pc-linux-gnu/6.3.0/liblto_plugin.so usr/local/lib/bfd-plugins/
Slack-14.2$ sudo strip –strip-unneeded usr/local/bin/* usr/local/lib/*
Slack-14.2$ sudo makepkg ../gcc-6.3.0-i686-1.tgz
Slack-14.2$ sudo installpkg ../gcc-6.3.0-i686-1.tgz
gcc-6.3.0でmakeする時に以下に設定し、
Slack-14.2$ sudo ln -sf /usr/local/bin/cpp /lib
終わったら戻す。
Slack-14.2$ sudo ln -sf /usr/bin/cpp /lib
node-v12.22.1:(PC/AT機、GCC-6.3.0を使う)
Slack-14.2$ make clean (上でエラーしたものの続き)
Slack-14.2$ sudo ln -sf /usr/local/bin/cpp /lib
Slack-14.2$ CC=/usr/local/bin/gcc CXX=/usr/local/bin/g++ CFLAGS=”-O2 -march=i686 -mtune=i686″ \
\ CXXFLAGS=”-O2 -march=i686 -mtune=i686″ \
\./configure –prefix=/usr –shared-zlib –without-snapshot
INFO: configure completed successfully
Slack-14.2$ make CC=/usr/local/bin/gcc CXX=/usr/local/bin/g++ CFLAGS=”-O2 -march=i686 -mtune=i686″ CXXFLAGS=”-O2 -march=i686 -mtune=i686″
Slack-14.2$ mkdir ~/package-nodejs
Slack-14.2$ make install DESTDIR=~/package-nodejs CC=/usr/local/bin/gcc CXX=/usr/local/bin/g++ CFLAGS=”-O2 -march=i686 -mtune=i686″ CXXFLAGS=”-O2 -march=i686 -mtune=i686″ (エラーがなければ以降sudoで実行)
Slack-14.2$ rm -rf ~/package-nodejs
Slack-14.2$ sudo mkdir ~/package-nodejs
Slack-14.2$ sudo chown -R root:root ../node-v12.22.1
Slack-14.2$ sudo make install DESTDIR=~/package-nodejs CC=/usr/local/bin/gcc CXX=/usr/local/bin/g++ CFLAGS=”-O2 -march=i686 -mtune=i686″ CXXFLAGS=”-O2 -march=i686 -mtune=i686″
Slack-14.2$ cd ~/package-nodejs
Slack-14.2$ find usr -print0 | xargs -0 file | grep -e “executable” -e “shared object” | grep ELF
Slack-14.2$ sudo strip –strip-unneeded usr/bin/node
Slack-14.2$ sudo gzip -9 usr/man/man?/*.?
\ Add bash completion file for npm.
Slack-14.2$ sudo install -D -m 644 https://slackbuilds.org/slackbuilds/14.2/development/nodejs/npm.sh usr/share/bash-completion/completions/npm
Slack-14.2$ sudo find usr -name “.git*” -exec rm -f \{\} \;
\ Set NODE_PATH to look for globally installed modules.
Slack-14.2$ sudo mkdir -p etc/profile.d
Slack-14.2$ sudo sh -c ‘cat > etc/profile.d/node.csh << EOF
#!/bin/csh
setenv NODE_PATH /usr/lib/node_modules
EOF’
Slack-14.2$ sudo sh -c ‘cat > etc/profile.d/node.sh << EOF
#!/bin/sh
export NODE_PATH=/usr/lib/node_modules
EOF’
Slack-14.2$ sudo chmod 0755 etc/profile.d/*
Slack-14.2$ sudo mv usr/doc/node usr/share/nodejs
Slack-14.2$ sudo mv usr/systemtap usr/share/systemtap
Slack-14.2$ sudo mkdir -p install
Slack-14.2$ sudo cp https://slackbuilds.org/slackbuilds/14.2/development/nodejs/slack-desc install/
Slack-14.2$ sudo makepkg ../nodejs-12.22.1-i686-1.tgz
WARNING: zero length file usr/lib/node_modules/npm/.npmrc
WARNING: zero length file usr/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py
WARNING: zero length file usr/lib/node_modules/npm/node_modules/smart-buffer/docs/ROADMAP.md
Slack-14.2$ sudo removepkg /var/log/packages/nodejs-10.24.1-i686-1
WARNING: /usr/lib/node_modules/npm/node_modules/uri-js/package.json changed after package installation.
WARNING: /usr/lib/node_modules/npm/node_modules/util-deprecate/package.json changed after package installation.
WARNING: /usr/lib/node_modules/npm/node_modules/uuid/package.json changed after package installation.
WARNING: /usr/lib/node_modules/npm/node_modules/validate-npm-package-license/package.json changed after package installation.
\—
WARNING: Unique directory /usr/lib/node_modules/npm/docs/ contains new files
WARNING: Unique directory /usr/lib/node_modules/npm/ contains new files
WARNING: Unique directory /usr/lib/node_modules/ contains new files
(Slack-14.2$ sudo rm -rf /usr/lib/node_modules 実行しなかった。各モジュールを残した)
Slack-14.2$ sudo installpkg ../nodejs-12.22.1-i686-1.tgz
Slack-14.2$ sudo ln -sf /usr/bin/cpp /lib