4commerce-technologies-AG / meteor

This is a fork of Meteor.js to support not yet official enabled architectures with an universal bundler. Meteor is an ultra-simple, database-everywhere, data-on-the-wire, pure-Javascript web framework. Read additional information about this fork at:
http://meteor-universal.tumblr.com/
Other
195 stars 16 forks source link

Build failing on fibers 1.0.1 #3

Closed archonic closed 9 years ago

archonic commented 9 years ago

Hi Tom - thanks so much for putting this together. You're helping me make beer with meteor :+1:

root@raspberry-pi:/opt/meteor# which node
/opt/node/bin/node
root@raspberry-pi:/opt/meteor# which npm
/opt/node/bin/npm
root@raspberry-pi:/opt/meteor# which mongo
/opt/mongo/bin/mongo
root@raspberry-pi:/opt/meteor# which mongod
/usr/bin/mongod

Here's what happens when building: https://gist.github.com/archonic/f9ed03bbf7644bd2fdb9

archonic commented 9 years ago

I updated npm from 1.3.24 to 2.1.12 with npm install -g npm and got past the fibers error. I'm installing using a minimal raspbian image that doesn't have sudo or users other than root and gyp was giving weird permissions warnings.

gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/0.10.25"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/tmp/generate-dev-bundle-4o1sOCx2/lib/node_modules/kexec/.node-gyp"

But, success none the less!

TomFreudenberg commented 9 years ago

Hi Josh ( @archonic ), Sorry about late response, I had not yet time to check your issue yet. Just to make it clear in case you close the issue already, is meteor now running on your side? Thanks for your feedback.

Tom

PS: I will make an update to latest meteor until weekend

archonic commented 9 years ago

I think that was a pretty quick response! The build seemed to finish, but meteor wasn't working. I tried recompiling but there seems to be a problem with the more recent version of npm. This is what the build output looks like now.

root@raspberry-pi:/opt/meteor# ./scripts/generate-dev-bundle.sh
Building dev bundle 0.3.61
BUILDING IN /tmp/generate-dev-bundle-fodhliVW
/opt/node/bin/node
/opt/node/bin/npm
./scripts/generate-dev-bundle.sh: line 147: 11093 Illegal instruction     npm install

Illegal instruction is only thing I can get out of npm now. I believe the update I did may have installed a version of npm that doesn't support ARM architecture, although I'm not sure why the last build appeared to work on the same version. which npm reports /opt/node/bin/npm which is a symlink to ../lib/node_modules/npm/bin/npm-cli.js

Not sure what my next step should be...

archonic commented 9 years ago

Huh, well I used the very simple instructions here to install a generically recent version of arm-linux node: http://www.schrankmonster.de/2014/03/22/install-nodejs-npm-raspberrypi-illegal-instruction-error-messages/

I had v0.11.9 installed and that package installed v0.10.33. After restarting bash, the node and npm paths pointed to /usr/local/bin instead of /opt/ and npm worked again.

The build appears to complete, but meteor commands are returning Illegal instruction :(.

https://gist.github.com/archonic/8005a6a3eb8be2a3de8c

This info may help:

root@raspberry-pi:/var/www/unit22# which node
/usr/local/bin/node
root@raspberry-pi:/var/www/unit22# which npm
/usr/local/bin/npm
root@raspberry-pi:/var/www/unit22# which mongo
/opt/mongo/bin/mongo
root@raspberry-pi:/var/www/unit22# which meteor
/opt/meteor/meteor
root@raspberry-pi:/var/www/unit22# node -v
v0.10.33
root@raspberry-pi:/var/www/unit22# npm -v
1.4.28
root@raspberry-pi:/var/www/unit22# mongo --version
MongoDB shell version: 2.1.1-pre-
root@raspberry-pi:/var/www/unit22# meteor --version
Illegal instruction

Update: I tried rebuilding and the github repo that didn't resolve before seemed to work this time. However meteor is still just always returning Illegal instruction.

TomFreudenberg commented 9 years ago

Hi Josh, hm seems that you are running into various pieces ;-)

Could you please have a look at issue #2

It is about something different than yours but Gabriel got his meteor running. So what is your current system (distro and release?). What is your hardware (Raspi A/B?)

Maybe it is an option to start with another clean image on second SD and try to build nodejs and mango by yourself like Gabriel did.

Could you give it a try?

archonic commented 9 years ago

Issue #2 helped me with a few things so far. I'm running a raspbian minimal image (http://www.linuxsystems.it/raspbian-wheezy-armhf-raspberry-pi-minimal-image/). Other than lacking sudo and users other than root, it's like any other minimal raspbian image. I'm running it on a Model A at the moment. My Model B appears to have issues with my SD card. A message about a timeout hardware interrupt comes up and another about reading blocks, then it seems to think all packages don't exist. It can't even find the shutdown or reboot. The Model A runs fine. I think it may actually be a power supply issue. If it's not, then my Model B is probably toast :(

All of the packages pertaining to meteor (node, npm, mongo) are at acceptable versions, and work (as far as I can tell). Meteor finishes building, but any meteor commands (after restarting shell) just return 'Illegal operation'. I'll try verifying that npm, node and mongo commands actually work. If that doesn't, I'll start of a fresh raspbian image.

TomFreudenberg commented 9 years ago

Hey Josh, keep my fingers crossed. If you can't make it, I can try to assist you on weekend with my Rapi B model. Currently I am just working on UDOO devices, so I had to reactivate the Raspi.

archonic commented 9 years ago

I can start mongod and view the admin interface. npm installs packages just fine. node applications run properly. I got my Model B behaving (at least for now) and tried again to rebuild meteor. I noticed in the section about removal in the readme, it says "Meteor installs itself inside your home directory". There's no meteor directory in /usr/local/bin - only node and npm directories. The home directory of my root user on this minimal raspbian image is just /root. There's no meteor directory there either.

Perhaps the user setup on my version of raspbian is having the build script not copy the completed build to the right place?

Update: Scratch that! I have no idea why it worked this time around, but it does. Yay! I think perhaps before I was trying to build meteor with a less than ideal npm version. There is however a new problem. Starting unit22 (my meteor app) has the process hang on logging: updating npm dependencies -- cli-color.... It says Updating package catalogue with the ASCII spinning thing and never gets past it. I'll figure that out tomorrow.

TomFreudenberg commented 9 years ago

Hi Josh, what you could try is: build the application for production instead of just running it via meteor. This will also speed up the startup of your application. In that case you have to make sure that the system wide mongodb is running. When you start your application in production mode, meteor wil not start updater or local mongo etc. This is sometimes better to get whats running that the spinning ascii.

archonic commented 9 years ago

I ran meteor run --production and that got further. Now it says this:

root@raspberry-pi:/var/www/unit22# meteor run --production
=> Running Meteor from a checkout -- overrides project version (Meteor 1.0)
[[[[[ /var/www/unit22 ]]]]]

=> Started proxy.
db level locking enabled: 1
Unexpected mongo exit code 48. Restarting.
db level locking enabled: 1
Unexpected mongo exit code 48. Restarting.
db level locking enabled: 1
Unexpected mongo exit code 48. Restarting.
Can't start Mongo server.
MongoDB exited because its port was closed, or was already
taken by a previous instance of MongoDB

Check for other processes listening on port 3001
or other Meteor instances running in the same project.
root@raspberry-pi:/var/www/unit22#

Nothing is running on port 3001 and shutting down mongod just tells me it wasn't running. I believe it's because meteor is trying to run it's own mongod instance instead of connecting to the version I compiled. I'll let you know if I find the fix!

TPXP commented 9 years ago

If meteor cannot launch mongod correctly, then try to run your own, and ask meteor to connect to it using the MONGO_URL constant. To do so, launch it like this : $ MONGO_URL=mongodb://127.0.0.1:27017/<db's name (test for example)> meteor

archonic commented 9 years ago

I found that running the mongo console was failing to connect. I got rid of the lock file and repaired and restarted but the console still can't connect. I tried running meteor anyways and this was the result.

root@raspberry-pi:/var/www/unit22# MONGO_URL=mongodb://127.0.0.1:27017/test meteor
=> Running Meteor from a checkout -- overrides project version (Meteor 1.0)
[[[[[ /var/www/unit22 ]]]]]

=> Started proxy.
Failed to record package usage.              /
(This error is hidden when you are not running Meteor from a checkout.)
Error: DDP connection timed out
    at Object.Future.wait (/opt/meteor/dev_bundle/lib/node_modules/fibers/future.js:326:15)
    at new ServiceConnection (/opt/meteor/tools/service-connection.js:85:17)
    at connectToPackagesStatsServer (/opt/meteor/tools/stats.js:167:14)
    at /opt/meteor/tools/stats.js:87:18
    - - - - -
    at packages/ddp/stream_client_nodejs.js:135
    at _.extend.withValue (packages/meteor/dynamics_nodejs.js:56)
    at packages/meteor/timers.js:6
    at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108)

minifiers: updating npm dependencies -- uglify-js, css-parse, css-stringify...
webapp: updating npm dependencies -- connect, send, useragent...
mongo: updating npm dependencies -- mongodb...
http: updating npm dependencies -- request...
compileLess: updating npm dependencies -- less...
=> Started your app.

=> App running at: http://localhost:3000/

Unfortunately the browser isn't receiving any data, so it might as well not be running. Not sure if I should try recompiling mongo or just give up.