Building node.js on Cygwin (Windows)

Building node.js on Cygwin (Windows)

NOTE: v0.2.6 and v0.3.1 build on Cygwin. The versions between v0.3.1 and v0.4.0 do not. Since v0.4.0 node builds again on Cygwin. Since v0.4.3 node requires gcc4-g++ on Cygwin.

This tutorial will guide you through setting up the latest stable version of node.js on Cygwin. You don’t need to have a working Cygwin install.

  1. Grab and install Cygwin.
  2. Using setup.exe from Cygwin (1), install the following packages required to compile node.js:
    • devel → gcc4-g++ [Builds v0.4.2 and earlier use gcc-g++]
    • devel → git
    • devel → make
    • devel → pkg-config
    • devel → zlib-devel
    • libs → openssl-devel
    • net → openssl
    • python → python

    You may also want to install the following: * editors → vim or editors → nano for (4) below * web → curl if you wish to install npm, node’s package manager

    You can use the search box at the top-left to locate packages quickly.

  3. It’s time to clone the Git repository and build node.js. Start a new Cygwin shell (bash, zsh, etc.), openStart → Cygwin → Cygwin Bash Shell. Run the following commands:
    $ cd ~ $ git clone git://github.com/joyent/node.git $ cd node $ git fetch --all # if the above fails complaining --all is not recognised, try: git fetch origin $ git tag $ git checkout [latest stable tag from previous command, e.g., v0.2.5] $ ./configure # Pre-emptively create out/default just in case https://github.com/joyent/node/issues/1734 is not fixed $ mkdir -p out/default $ make $ make install 

    It is recommended you checkout a stable tag since most of the time building master fails. If you receive an error at any of the above steps, look further down for possible solutions.

  4. Set up Domain Name Resolution (DNS)Cygwin internally uses Windows for DNS queries. node.js uses the c-ares library that relies on /etc/resolv.conf. Cygwin ships with an empty /etc/resolv.conf. In order to enabled networking from your scripts, add these IPs to the file (Google Public DNS):
    $ vim /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 

    For Vim newbies: use i to enter insert mode, <Esc>:wq to exit insert mode, enter the command window, write and quit. If you are uncomfortable with Vim, use nano /etc/resolv.conf instead.

    Note even if /etc/resolv.conf is correctly set to Google DNS, ECONNREFUSED will happen on .listen() if Windows is not connected to the Internet and you attempt to listen at localhost or the machine name (ie. joeslaptop etc.) Only workaround for offline Windows (such as a development VM) to successfully .listen() at the local host is to use 127.0.0.1 explicitly, neither localhost nor the machine name will currently (0.4.5) resolve when offline.

    If you cannot ping the Google DNS IPs listed above (because of a firewall, for instance) you will have to use different IPs. Open a DOS prompt and run “ipconfig /all”, which will list the DNS servers that Windows is currently using. Try using those IPs (prefixed with “namesever “) in the resolve.conf instead.

Build Problems

python.exe: Can’t Open File ‘waf-light’:

C:\Program Files\Python26\python.exe: can't open file '/home/stan/node/tools/waf-light': [Errno 2] No such file or directory

This is not an issue with node.js. You are using the Windows version of python in Cygwin. It doesn’t know how to process Cygwin style path names. You need to remove the Windows version (or make sure is not in the PATH) and install the Cygwin version of Python using setup.exe.

# Update PATH before running ./configure for node.js
export PATH=/usr/bin:$PATH

Unable to Remap to Same Address as Parent

fatal error – unable to remap \?\C:\cygwin\lib\python2.6\lib-dynload\time.dll to same address as parent: 0×360000 != 0×3E0000

This is not an issue with node.js either. Install base → rebase using setup.exe first then close all Cygwin instances. Start dash or ash(located in the bin directory under Cygwin’s installation) and run:

$ /bin/rebaseall -v

It should finish with no errors. If instead the above results in an error like:

rebaseall:'/cygdrive/c/Users/ADMINI~1/AppData/Local/Temp' is not writable

Open up a Cygwin shell and run:

$ chmod 777 ~/AppData/Local/Temp

Close your shell window and repeat the steps above.

Once you are done, restart your PC. Remember to close all open Cygwin shells before using rebaseall.

If you still get similar messages during configure, try following the suggestions found here:http://code.google.com/p/chromium/wiki/CygwinDllRemappingFailure

../deps/v8/tools/jsmin.py SyntaxError: invalid syntax

Cygwin uses a different way of handling symlinks than a regular Unix system. If you cloned node.js using msysGit it’s likely you’ll end up here as well. Open up jsmin.py in an editor – you will see the actual path it needs to be symlinked to. To address this, start a new Cygwin shell andcd to the cloned node.js directory. Run:

# from the node.js cloned repository directory, run:
$ cd tools
$ ln -fs `cat jsmin.py`
$ cd ..

Re-run ./configure.

Exception: supported architectures are arm, ia32, x64 but NOT ‘x86’.

Cygwin is returning the wrong CPU architecture (usually uname from minGw gets in the way). Use the dest-cpu flag with the value of ia32:

$ ./configure --dest-cpu=ia32

Build failed: -> task failed (err #2): {task: libv8.a SConstruct -> libv8.a}

This comes about when $SHELL has a windows based path instead of a unix based one. E.g., C:\bin\bash instead of of /bin/bash. So, try,

$ export SHELL=/bin/bash

and re-run make.

You may also experience this problem when trying to build v0.4.0, try updating your version of gcc (v8 in v0.4.0 requires gcc-4.x to compile).

Build failed: -> src/eio/eio.c:1014: error: storage size ofbuf’ isn’t known

See https://github.com/joyent/node/issues/1483

cannot find config.h

You have to remove the old build files.

$ git clean -f -d -x

and re-run make.

cannot find a c compiler OR an error message that mentions rebase (cannot rebase)

You might be on Windows 7. Open up c:\cygwin\bin\ash.exe` then type

$ /bin/rebaseall

If the rebase fails (as on Win7 x64), you may need to edit the rebase script

Go to at line# 110 in /bin/rebaseall file and add: -e ‘/\/sys-root\/mingw\/bin/d’

Ex. in Cygwin 1.7.9 (current as of writing this)

  sed -e '/cygwin1\.dll$/d' -e '/cyglsa.*\.dll$/d' -e 's/^/\//' >"$TmpFile"

becomes

  sed -e '/\/sys-root\/mingw\/bin/d' -e '/cygwin1\.dll$/d' -e '/cyglsa.*\.dll$/d' -e 's/^/\//' >"$TmpFile"

Reference : https://github.com/joyent/node/wiki/Building-node.js-on-Cygwin-(Windows)

Advertisements

Ajax IM — Instant Messaging framework

What is Ajax IM?

Ajax IM (“Ajax Instant Messenger”) is a browser-centric instant messaging framework. It uses AJAX to create a real-time (or near real-time) IM environment that can be used in conjunction with existing community and commercial software, or simply as a stand-alone product.

Ajax IM has been truly rebuilt from the bot­tom up, imple­ment­ing the lat­est libraries, tech­niques, and shini­ness includ­ing jQuery, local ses­sion stor­age (using HTML5 or Flash), Node.js, and much more.

Installation.

Let’s get you set up, shall we?

By default, there are two choices for installation: thePHP-based or standalone servers. While thestandalone server is recommended for scaling and extensibility, it requires you to be on a VPS or dedicated server. On the other hand, the PHP-basedserver does not have this requirement, though it is recommended that you use a server other than Apache in this case

Step 1 — Extract

After downloading the latest version, extract the archive into its own folder. Upload all included files to your server.

Step 2 — Configure and Install

Change the permissions for config.php andjs/im.js to 755 (writable). Additionally, if you plan on using a library that uses the standalone Node.js server (NodeJS or NodeJS Guests), set the permissions for node/config.js to 755 as well. The install script will need to alter these files during installation (unless you handle installation manually).

In your browser, navigate to install.php in the folder where you uploaded Ajax IM (e.g.,http://yoursite.com/ajaxim/install.php). The installer will guide you through the steps and configuration options for setting up Ajax IM, the database (if necessary), and the standalone server (if necessary).

Note: After completing installation, deleteinstall.php.

config.php     →   0755 (rwxrw-rw--)
js/
 ↳ im.js       →   0755 (rwxrw-rw--)
node/
 ↳ config.js   →   0755 (rwxrw-rw--)

Step 3 — Implement

To use Ajax IM on your website, you’ll only need to manually include the im.load.js script in your pages. The script will automatically test for and include any of the dependencies and the main Ajax IM library.

If you’re using the included MySQL database engine and the Default or NodeJS server libraries, you should read either the Quick Start with PHP or Quick Start with Node.js guides.

<script type="text/javascript"
   src="ajaxim/js/im.load.js"></script>

Step 4 — Finished

That’s it! There really isn’t anything more to the installation.

For more information about integrating Ajax IM with your database, take a look at the documentation; also be sure to check out the add-ons (coming soon) page for alternative server scripts, database engines, and modifications.

Reference : http://ajaxim.com/installation/