Skip to content
This repository has been archived by the owner on Jul 24, 2024. It is now read-only.

Build failures on OpenBSD 6.6 #2840

Closed
morgant opened this issue Jan 31, 2020 · 11 comments
Closed

Build failures on OpenBSD 6.6 #2840

morgant opened this issue Jan 31, 2020 · 11 comments

Comments

@morgant
Copy link

morgant commented Jan 31, 2020

  • NPM version (npm -v): 6.9.0
  • Node version (node -v): 10.16.3
  • Node Process (node -p process.versions):
{ http_parser: '2.8.0',
  node: '10.16.3',
  v8: '6.8.275.32-node.54',
  uv: '1.28.0',
  zlib: '1.2.11',
  brotli: '1.0.7',
  ares: '1.15.0',
  modules: '64',
  nghttp2: '1.39.2',
  napi: '4',
  openssl: '1.1.1c',
  icu: '64.2',
  unicode: '12.1',
  cldr: '35.1',
  tz: '2019a' }
  • Node Platform (node -p process.platform): openbsd
  • Node architecture (node -p process.arch): x64
  • node-sass version (node -p "require('node-sass').info"): n/a
  • npm node-sass versions (npm ls node-sass): n/a

Get the following build errors when I check out the node-sass repo and attempt an npm install:

npm WARN deprecated istanbul@0.4.5: This module is no longer maintained, try thi
s instead:                                                                      
npm WARN deprecated   npm i nyc                                                 
npm WARN deprecated Visit https://istanbul.js.org/integrations for other alterna
tives.                                                                          
npm WARN deprecated json3@3.3.2: Please use the native JSON object instead of JS
ON 3                                                                            
npm WARN deprecated circular-json@0.3.3: CircularJSON is in maintenance only, fl
atted is its successor.                                                         
                                                                                
> node-sass@4.13.1 install /home/username/Projects/node-sass                   
> node scripts/install.js                                                       
                                                                                
Downloading binary from https://github.com/sass/node-sass/releases/download/v4.1
3.1/openbsd-x64-64_binding.node                                                 
Cannot download "https://github.com/sass/node-sass/releases/download/v4.13.1/ope
nbsd-x64-64_binding.node":                                                      
                                                                                
HTTP error 404 Not Found                                                        
                                                                                
Hint: If github.com is not accessible in your location                          
      try setting a proxy via HTTP_PROXY, e.g.                                  
                                                                                
      export HTTP_PROXY=http://example.com:1234                                 
                                                                                
or configure npm proxy via                                                      
                                                                                
      npm config set proxy http://example.com:8080                              
                                                                                
> node-sass@4.13.1 postinstall /home/username/Projects/node-sass               
> node scripts/build.js                                                         
                                                                                
Building: /usr/local/bin/node /home/username/Projects/node-sass/node_modules/no
de-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libs
ass_ldflags= --libsass_library=                                                 
gyp info it worked if it ends with ok                                           
gyp verb cli [ '/usr/local/bin/node',
gyp verb cli   '/home/username/Projects/node-sass/node_modules/node-gyp/bin/nod
e-gyp.js',
gyp verb cli   'rebuild',
gyp verb cli   '--verbose',
gyp verb cli   '--libsass_ext=',
gyp verb cli   '--libsass_cflags=',
gyp verb cli   '--libsass_ldflags=',
gyp verb cli   '--libsass_library=' ]
gyp info using node-gyp@3.8.0
gyp info using node@10.16.3 | openbsd | x64
gyp verb command rebuild []
gyp verb command clean []
gyp verb clean removing "build" directory
gyp verb command configure []
gyp verb check python checking for Python executable "python2" in the PATH
gyp verb `which` succeeded python2 /usr/local/bin/python2
gyp verb check python version `/usr/local/bin/python2 -c "import sys; print "2.7
.16
gyp verb check python version .%s.%s" % sys.version_info[:3];"` returned: %j
gyp verb get node dir no --target version specified, falling back to host node v
ersion: 10.16.3
gyp verb command install [ '10.16.3' ]
gyp verb install input version string "10.16.3"
gyp verb install installing version: 10.16.3
gyp verb install --ensure was passed, so won't reinstall if already installed
gyp verb install version is already installed, need to check "installVersion"
gyp verb got "installVersion" 9
gyp verb needs "installVersion" 9
gyp verb install version is good
gyp verb get node dir target node version installed: 10.16.3
gyp verb build dir attempting to create "build" dir: /home/username/Projects/no
de-sass/build
gyp verb build dir "build" dir needed to be created? /home/username/Projects/no
de-sass/build
gyp verb build/config.gypi creating config file
gyp verb build/config.gypi writing out config file: /home/username/Projects/nod
e-sass/build/config.gypi
gyp verb config.gypi checking for gypi file: /home/username/Projects/node-sass/
config.gypi
gyp verb common.gypi checking for gypi file: /home/username/Projects/node-sass/
common.gypi
gyp verb gyp gyp format was not specified; forcing "make"
gyp info spawn /usr/local/bin/python2
gyp info spawn args [ '/home/username/Projects/node-sass/node_modules/node-gyp/
gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/username/Projects/node-sass/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/username/Projects/node-sass/node_modules/node-gyp/
addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/username/.node-gyp/10.16.3/include/node/common.gyp
i',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/username/.node-gyp/10.16.3',
gyp info spawn args   '-Dnode_gyp_dir=/home/username/Projects/node-sass/node_mo
dules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/home/username/.node-gyp/10.16.3/<(targe
t_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/home/username/Projects/node-sass',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ] 
gyp verb command build []
gyp verb build type Release
gyp verb architecture x64
gyp verb node dev dir /home/username/.node-gyp/10.16.3
gyp verb `which` succeeded for `gmake` /usr/local/bin/gmake
gyp info spawn gmake
gyp info spawn args [ 'V=1', 'BUILDTYPE=Release', '-C', 'build' ]
gmake: Entering directory '/home/username/Projects/node-sass/build'
  g++ '-DNODE_GYP_MODULE_NAME=libsass' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=
1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' 
'-DLIBSASS_VERSION="3.5.4"' -I/home/username/.node-gyp/10.16.3/include/node -I/
home/username/.node-gyp/10.16.3/src -I/home/username/.node-gyp/10.16.3/deps/op
enssl/config -I/home/username/.node-gyp/10.16.3/deps/openssl/openssl/include -I
/home/username/.node-gyp/10.16.3/deps/uv/include -I/home/username/.node-gyp/10
.16.3/deps/zlib -I/home/username/.node-gyp/10.16.3/deps/v8/include -I../src/lib
sass/include  -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -I/usr/loc
al/include -O3 -fno-omit-frame-pointer -std=gnu++1y -std=c++0x -fexceptions -frt
ti -MMD -MF ./Release/.deps/Release/obj.target/libsass/src/libsass/src/ast.o.d.r
aw   -c -o Release/obj.target/libsass/src/libsass/src/ast.o ../src/libsass/src/a
st.cpp
cc1plus: error: unrecognized command line option "-std=gnu++1y"
cc1plus: error: unrecognized command line option "-std=c++0x"
gmake: *** [src/libsass.target.mk:152: Release/obj.target/libsass/src/libsass/sr
c/ast.o] Error 1
gmake: Leaving directory '/home/username/Projects/node-sass/build'
gyp ERR! build error  
gyp ERR! stack Error: `gmake` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/username/Projects/node-sass/no
de_modules/node-gyp/lib/build.js:262:23) 
gyp ERR! stack     at ChildProcess.emit (events.js:198:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_proces
s.js:248:12)
gyp ERR! System OpenBSD 6.6
gyp ERR! command "/usr/local/bin/node" "/home/username/Projects/node-sass/node_
modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libs
ass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /home/username/Projects/node-sass
gyp ERR! node -v v10.16.3
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok 
Build failed with error code: 1
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.13.1 postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the node-sass@4.13.1 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional log
ging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/username/.npm/_logs/2020-01-31T21_14_48_905Z-debug.log

libsass 3.6.1 is available via pkg_add libsass, but I see that libsass 3.6 support (#2685) is not due until version 5.x (#2111).

@nschonni
Copy link
Contributor

Sorry, OpenBSD isn't a platform we support

@saper
Copy link
Member

saper commented Jan 31, 2020

Let me help you anyway - node-sass releases are tightly bound to some corresponding libsass version. I would advice against trying to build node-sass binding against pre-installed library from OpenBSD ports unless you are 100% sure you have the matching libsass version. (package.json file contains this information if there are no slip-ups like #2621). There are flags to do this if you like - just check my experimental FreeBSD port tree at https://github.com/saper/ports-exp/tree/master/textproc/node-sass

Your particular problem here is the compiler. What is the g++ version you are using right now?

@saper saper reopened this Jan 31, 2020
@morgant
Copy link
Author

morgant commented Jan 31, 2020

@saper Thank you for your time! I was just exploring the g++ versions available on OpenBSD due to the errors and it appears that g++ 4.2.1 (so pre-C++11) is in base, though g++ 8.3.0 is available in ports as eg++.

I found your instructions on Clang Support on FreeBSD and tried a CXX=clang++ npm install. That seemed to work.

@qbit
Copy link

qbit commented Jan 31, 2020

Hi,

On OpenBSD you need to use clang++ (CXX=/usr/bin/clang++):

$ env CXX=/usr/bin/clang++ npm install node-sass
$ node
> var s = require('node-sass');
undefined
> console.log(s.info)
node-sass       4.13.1  (Wrapper)       [JavaScript]
libsass         3.5.4   (Sass Compiler) [C/C++]
undefined
> process.versions
{ http_parser: '2.8.0',
  node: '10.18.0',
  v8: '6.8.275.32-node.54',
  uv: '1.28.0',
  zlib: '1.2.11',
  brotli: '1.0.7',
  ares: '1.15.0',
  modules: '64',
  nghttp2: '1.39.2',
  napi: '5',
  openssl: '1.1.1d',
  icu: '64.2',
  unicode: '12.1',
  cldr: '35.1',
  tz: '2019a' }
>

@morgant
Copy link
Author

morgant commented Jan 31, 2020

Thanks @qbit, I had just found that.

@saper
Copy link
Member

saper commented Jan 31, 2020

Great - if someone from OpenBSD community would like to prepare a port and build binaries, we could add them to the official matrix - this way a proper binary will be downloaded automatically via npm without the need to compile anything.

Important: please use the same C++11 compiler that has been used to compile node itself to avoid runtime C++ ABI incompatibilities.

@saper saper closed this as completed Jan 31, 2020
@ghost
Copy link

ghost commented Feb 10, 2020

Yes - please add support someone. OpenBSD is years ahead of any other Unix-based platform, period.

Thanks @morgant and @qbit for your insights.

People don't forget to add this to your /etc/zprofile (Zsh):

export CC=/usr/bin/clang
export CXX=/usr/bin/clang++

@qbit
Copy link

qbit commented Feb 10, 2020

@ratahtatah I would avoid setting them globally, doing so will force everything to use clang, not just npm.

A better alternative would be to make an npm alias, something like:

alias npm='env CXX=/usr/bin/clang++ npm'

That way only npm will be impacted.

@anon987654321
Copy link

anon987654321 commented May 5, 2020

This problem is back you guys: #2916

@saper
Copy link
Member

saper commented May 5, 2020

@anon987654321 This is because we do not distribute OpenBSD binaries with the node-sass releases. See also #2885 (comment)

@anon987654321
Copy link

The fix is here: https://marc.info/?l=openbsd-ports&m=160657052927238

ln -s /usr/local/bin/node /tmp/node

Don't forget to replace gcc with clang:

export CC=/usr/bin/clang
export CXX=/usr/bin/clang++

Shoutout to Solene for the help.

# for free to subscribe to this conversation on GitHub. Already have an account? #.
Projects
None yet
Development

No branches or pull requests

5 participants