Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support OpenBSD - generating dev_bundle #29

Open
TomFreudenberg opened this issue Nov 6, 2015 · 8 comments
Open

Support OpenBSD - generating dev_bundle #29

TomFreudenberg opened this issue Nov 6, 2015 · 8 comments

Comments

@TomFreudenberg
Copy link
Member

Following tasks has to be done in addition to FreeBSD so that meteor can build the dev_bundle

  1. replace cp -a in node-gyp into cp -pPR
  2. Do the above for npm 1.4.28 and npm 3.1.2
  3. Before running install of the tools bundle, junst create the npm install [email protected]. If sqlite3 is build after NAN then the build crashes.

Use enough memory on the server

@TomFreudenberg
Copy link
Member Author

Make python available for env

ln -s /usr/local/bin/python2.7 /usr/local/bin/python

Install packages via

pkg_add

@TomFreudenberg
Copy link
Member Author

pkg_add flock

@TomFreudenberg
Copy link
Member Author

resize /tmp or change place for build bundle

check free space (df) befor generate_dev_bundle

@Anabar
Copy link

Anabar commented Nov 10, 2015

You ought to add node: pkg_add node

@TomFreudenberg
Copy link
Member Author

@Anabar:

You ought to add node: pkg_add node

Hmm, anybody may use meteor with a system installed version of nodejs. But the stable releases from meteor are delivered with a standard builtin dev_tools_bundle that contains nodejs. I did a number of work to be able to build and provide that "same regular stable release of node" with the dev_bundles from our bintray repos. I guess it makes it much easier in case of errors during development to know, that not the runtime engine is maybe the reason because it differs.

I will add a not to the hints section about using the OS dependent nodejs release.

Thanks for feedback

@TomFreudenberg
Copy link
Member Author

add info about doas and libs... to section for OpenBSD 5.8

@TomFreudenberg
Copy link
Member Author

write some guide how to run a meteor app in production

To use in a production it is necessary to suggest the procedure of deploy on *BSD analogously as here on Ubuntu1, especially Step Four.

Ref is comment from @Anabar at meteor forum

@jphovila
Copy link

jphovila commented Aug 24, 2016

The above instructions seem to be somewhat outdated.

Several things have changed since OpenBSD 5.7, which appears to be the latest version "almost supported" by MeteorJS.

I'm attempting to create dev_bundle on a 64-bit CURRENT branch of OpenBSD, version number being 6.0 at the moment.

After lots (and lots) of trials, errors and debugging, I managed to overcome all other obstacles (including some version(s) of cc1plus not supporting the -std=gnu++0x option) but I can't get past the "File name too long for ustar" issue.

Here's what I've done this far:

I've made Python available for env by issuing doas ln -s /usr/local/bin/python2.7 /usr/local/bin/python

I've installed the necessary packages using pkg_add: doas pkg_add bash flock git gmake mongodb

I have NOT replaced the command cp -a with cp -pPR in node-gyp, since I could not find cp -a anywhere within the node-gyp script

I did NOT install [email protected] since npm install [email protected] did not work out:

npm ERR! OpenBSD 6.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "[email protected]"
npm ERR! node v4.4.7
npm ERR! npm  v2.15.8
npm ERR! code ENOTSUP

npm ERR! notsup Unsupported
npm ERR! notsup Not compatible with your version of node/npm: [email protected]
npm ERR! notsup Required: {"node":">= 0.10.0 < 0.11.0 || >= 0.11.13 < 0.13.0"}
npm ERR! notsup Actual:   {"npm":"2.15.8","node":"4.4.7"}

npm ERR! Please include the following file with any support request:
npm ERR!     /home/turvamies/meteor/npm-debug.log

Since current version of Meteor appears to be using version 3.1.3 of sqlite3, I did npm install [email protected] which went through fine.

When trying to run ./scripts/generate-dev-bundle.sh, a problem came up that had to do with cc1plus not recognizing the command line option "-std=gnu++0x":

$ ./scripts/generate-dev-bundle.sh
...
> [email protected] install /tmp/generate-dev-bundle-xxlwQI1Y/build/npm-tool-install/node_modules/sqlite3
> node-pre-gyp install --fallback-to-build

gmake: Entering directory '/tmp/generate-dev-bundle-xxlwQI1Y/build/npm-tool-install/node_modules/sqlite3/build'
  ACTION deps_sqlite3_gyp_action_before_build_target_unpack_sqlite_dep Release/obj/gen/sqlite-autoconf-3090100/sqlite3.c
  TOUCH Release/obj.target/deps/action_before_build.stamp
  CC(target) Release/obj.target/sqlite3/gen/sqlite-autoconf-3090100/sqlite3.o
Release/obj/gen/sqlite-autoconf-3090100/sqlite3.c: In function 'sqlite3PagerSetBusyhandler':|
Release/obj/gen/sqlite-autoconf-3090100/sqlite3.c:46591: warning: dereferencing type-punned pointer will break strict-aliasing rules
Release/obj/gen/sqlite-autoconf-3090100/sqlite3.c: In function 'fts3auxConnectMethod':
Release/obj/gen/sqlite-autoconf-3090100/sqlite3.c:141873: warning: passing argument 1 of 'sqlite3Fts3Dequote' discards qualifiers from pointer target type
  AR(target) Release/obj.target/deps/sqlite3.a
  COPY Release/sqlite3.a
  CXX(target) Release/obj.target/node_sqlite3/src/database.o
cc1plus: error: unrecognized command line option "-std=gnu++0x"
gmake: *** [node_sqlite3.target.mk:108: Release/obj.target/node_sqlite3/src/database.o] Error 1
gmake: Leaving directory '/tmp/generate-dev-bundle-xxlwQI1Y/build/npm-tool-install/node_modules/sqlite3/build'

I found a total of FOUR different verions of cc1plus in my OpenBSD box.

These two support the std=gnu++0x option:

/usr/local/libexec/gcc/x86_64-unknown-openbsd6.0/4.9.3/cc1plus
/usr/local/libexec/gcc/avr/4.3.4/cc1plus

These two DO NOT support the std=gnu++0x option:

/usr/obj/gnu/usr.bin/cc/cc1plus/cc1plus
/usr/lib/gcc-lib/amd64-unknown-openbsd6.0/4.2.1/cc1plus

So I did a dirty little hack, replacing cc1plus version 4.2.1 with 4.9.3:

$ doas mv /usr/lib/gcc-lib/amd64-unknown-openbsd6.0/4.2.1/cc1plus /usr/lib/gcc-lib/amd64-unknown-openbsd6.0/4.2.1/cc1plus.DIST
$ doas ln -s /usr/local/libexec/gcc/x86_64-unknown-openbsd6.0/4.9.3/cc1plus /usr/lib/gcc-lib/amd64-unknown-openbsd6.0/4.2.1/cc1plus

Almost there! At this point I'm able to compile everything. The only remaining problem is that pax/tar can not handle too long path/file names. Everything goes fine until the bundling phase, where some paths are too long for pax/tar:

$ ./scripts/generate-dev-bundle.sh
...
BUNDLING
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-computed-properties/node_modules/babel-helper-define-map/node_modules/babel-helper-function-name/node_modules/babel-helper-get-function-arity
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-computed-properties/node_modules/babel-helper-define-map/node_modules/babel-helper-function-name/node_modules/babel-helper-get-function-arity/package.json
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-computed-properties/node_modules/babel-helper-define-map/node_modules/babel-helper-function-name/node_modules/babel-helper-get-function-arity/.npmignore
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-computed-properties/node_modules/babel-helper-define-map/node_modules/babel-helper-function-name/node_modules/babel-helper-get-function-arity/README.md
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-computed-properties/node_modules/babel-helper-define-map/node_modules/babel-helper-function-name/node_modules/babel-helper-get-function-arity/lib
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-computed-properties/node_modules/babel-helper-define-map/node_modules/babel-helper-function-name/node_modules/babel-helper-get-function-arity/lib/index.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-parameters/node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-parameters/node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-parameters/node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/license
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-parameters/node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-parameters/node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-parameters/node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-parameters/node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/license
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-parameters/node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-generator/node_modules/detect-indent/node_modules/repeating/node_modules/is-finite/package.json
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-generator/node_modules/detect-indent/node_modules/repeating/node_modules/is-finite/node_modules
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-generator/node_modules/detect-indent/node_modules/repeating/node_modules/is-finite/node_modules/number-is-nan
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-generator/node_modules/detect-indent/node_modules/repeating/node_modules/is-finite/node_modules/number-is-nan/package.json
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-generator/node_modules/detect-indent/node_modules/repeating/node_modules/is-finite/node_modules/number-is-nan/index.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-generator/node_modules/detect-indent/node_modules/repeating/node_modules/is-finite/node_modules/number-is-nan/license
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-generator/node_modules/detect-indent/node_modules/repeating/node_modules/is-finite/node_modules/number-is-nan/readme.md
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/lib/source-map/binary-search.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/lib/source-map/source-map-consumer.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/lib/source-map/source-map-generator.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/test/source-map/test-array-set.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/test/source-map/test-base64-vlq.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/test/source-map/test-base64.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/test/source-map/test-binary-search.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/test/source-map/test-dog-fooding.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/test/source-map/test-source-map-consumer.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/test/source-map/test-source-map-generator.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/test/source-map/test-source-node.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/package.json
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/README.md
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/amdefine.js
tar: File name too long for ustar 
./lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-regenerator/node_modules/babel-core/node_mod
ules/babel-register/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/intercept.js

When trying to run meteor, it complains about ansi-regex module missing:

$ ./meteor
It's the first time you've run Meteor from a git checkout.
I will download a kit containing all of Meteor's dependencies.
Skipping download and installing kit from /home/turvamies/meteor/dev_bundle_OpenBSD_amd64_0.6.15.tar.gz
Installed dependency kit v0.6.15 in dev_bundle.

module.js:327
    throw err;
    ^

Error: Cannot find module 'ansi-regex'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> 
(/home/turvamies/meteor/dev_bundle/lib/node_modules/meteor-babel/node_modules/babel-preset-meteor/node_modules/babel-plugin-transform-es2015-parameters/node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/strip-ansi/index.js:2:17)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Module.Mp.load (/home/turvamies/meteor/dev_bundle/lib/node_modules/meteor-babel/node_modules/reify/node/runtime.js:16:23)
    at Function.Module._load (module.js:300:12)

If I'm not completely mistaken, there's no "good" way around the above final issue other than somehow hacking the paths to be shorter. I did try replacing OpenBSD's native tar with Gnu tar (gtar), but that didn't work out either; it resulted in some endless loop somewhere between compiling sqlite3 and the bundling phase.

Any thoughts on how to proceed from here?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants