[oe] [PATCH] [v2] added recipe for nodejs

Jason Kridner jkridner at beagleboard.org
Tue Aug 24 01:18:37 UTC 2010


On Sat, Aug 21, 2010 at 11:28 PM, AJ ONeal <coolaj86 at gmail.com> wrote:
> ---
>  recipes/nodejs/files/libev-cross-cc.patch          |   18 ++++++++++++
>  recipes/nodejs/files/node-cross-cc.patch           |   14 ++++++++++
>  .../node-dont-include-hosts-usr-include.patch      |   22 +++++++++++++++
>  recipes/nodejs/nodejs_0.2.0.bb                     |   28 ++++++++++++++++++++
>  4 files changed, 82 insertions(+), 0 deletions(-)
>  create mode 100644 recipes/nodejs/files/libev-cross-cc.patch
>  create mode 100644 recipes/nodejs/files/node-cross-cc.patch
>  create mode 100644 recipes/nodejs/files/node-dont-include-hosts-usr-include.patch
>  create mode 100644 recipes/nodejs/nodejs_0.2.0.bb
>
> diff --git a/recipes/nodejs/files/libev-cross-cc.patch b/recipes/nodejs/files/libev-cross-cc.patch
> new file mode 100644
> index 0000000..446015b
> --- /dev/null
> +++ b/recipes/nodejs/files/libev-cross-cc.patch
> @@ -0,0 +1,18 @@
> +diff --git node-v0.2.0/deps/libev/wscript.orig node-v0.2.0/deps/libev/wscript
> +index 19e7bb2..f0a3d3b 100644
> +--- node-v0.2.0/deps/libev/wscript.orig
> ++++ node-v0.2.0/deps/libev/wscript
> +@@ -52,7 +52,12 @@ def configure(conf):
> +           return 0;
> +       }
> +   """
> +-  conf.check_cc(fragment=code, define_name="HAVE_CLOCK_SYSCALL", execute=True,
> ++  # TODO determine this dynamically
> ++  CROSS = True
> ++  execute = True
> ++  if CROSS:
> ++    execute = False
> ++  conf.check_cc(fragment=code, define_name="HAVE_CLOCK_SYSCALL", execute=execute,
> +                 msg="Checking for SYS_clock_gettime")
> +
> +   have_librt = conf.check(lib='rt', uselib_store='RT')
> diff --git a/recipes/nodejs/files/node-cross-cc.patch b/recipes/nodejs/files/node-cross-cc.patch
> new file mode 100644
> index 0000000..48a6226
> --- /dev/null
> +++ b/recipes/nodejs/files/node-cross-cc.patch
> @@ -0,0 +1,14 @@
> +diff --git node-v0.2.0/wscript.orig node-v0.2.0/wscript
> +index df9ef53..a55d464 100644
> +--- node-v0.2.0/wscript.orig
> ++++ node-v0.2.0/wscript
> +@@ -326,6 +326,9 @@ def v8_cmd(bld, variant):
> +   arch = ""
> +   if bld.env['DEST_CPU'] == 'x86_64':
> +     arch = "arch=x64"
> ++  # XXX Better support cross-compilation
> ++  else:
> ++    arch = "arch=" + bld.env['DEST_CPU']
> +
> +   if variant == "default":
> +     mode = "release"
> diff --git a/recipes/nodejs/files/node-dont-include-hosts-usr-include.patch b/recipes/nodejs/files/node-dont-include-hosts-usr-include.patch
> new file mode 100644
> index 0000000..edbf7c4
> --- /dev/null
> +++ b/recipes/nodejs/files/node-dont-include-hosts-usr-include.patch
> @@ -0,0 +1,22 @@
> +diff --git node-v0.2.0/wscript.orig node-v0.2.0/wscript
> +index 3c5ebc5..905bd58 100644
> +--- node-v0.2.0/wscript.orig
> ++++ node-v0.2.0/wscript
> +@@ -162,11 +162,12 @@ def configure(conf):
> +   if Options.options.efence:
> +     conf.check(lib='efence', libpath=['/usr/lib', '/usr/local/lib'], uselib_store='EFENCE')
> +
> +-  if not conf.check(lib="execinfo", includes=['/usr/include', '/usr/local/include'], libpath=['/usr/lib', '/usr/local/lib'], uselib_store="EXECINFO"):
> +-    # Note on Darwin/OS X: This will fail, but will still be used as the
> +-    # execinfo stuff are part of the standard library.
> +-    if sys.platform.startswith("freebsd"):
> +-      conf.fatal("Install the libexecinfo port from /usr/ports/devel/libexecinfo.")
> ++  # OpenEmbedded doesn't like us checking here
> ++  #if not conf.check(lib="execinfo", includes=['/usr/include', '/usr/local/include'], libpath=['/usr/lib', '/usr/local/lib'], uselib_store="EXECINFO"):
> ++  #  # Note on Darwin/OS X: This will fail, but will still be used as the
> ++  #  # execinfo stuff are part of the standard library.
> ++  #  if sys.platform.startswith("freebsd"):
> ++  #    conf.fatal("Install the libexecinfo port from /usr/ports/devel/libexecinfo.")
> +
> +   if not Options.options.without_ssl:
> +     if conf.check_cfg(package='openssl',
> diff --git a/recipes/nodejs/nodejs_0.2.0.bb b/recipes/nodejs/nodejs_0.2.0.bb
> new file mode 100644
> index 0000000..83bfa2e
> --- /dev/null
> +++ b/recipes/nodejs/nodejs_0.2.0.bb
> @@ -0,0 +1,28 @@
> +DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
> +HOMEPAGE = "http://nodejs.org"
> +LICENSE = "MIT"
> +DEPENDS = "openssl"
> +SRC_URI = " \
> +  http://nodejs.org/dist/node-v${PV}.tar.gz \
> +  file://node-cross-cc.patch \
> +  file://libev-cross-cc.patch \
> +  file://node-dont-include-hosts-usr-include.patch \
> +"
> +#file://libev-arm-cross.patch \
> +SRC_URI[md5sum] = "99a6dacc44b3f9c6ec376ccb446dd0b8"
> +SRC_URI[sha256sum] = "3d3eff9287c9917af4044f3cef99ae5b17946710a71e83039de4fcb4b0a26631"
> +S = "${WORKDIR}/node-v${PV}"
> +do_configure () {
> +  ./configure --prefix=${D} --without-snapshot
> +}
> +do_compile () {
> +  make
> +}
> +do_install () {
> +  #oe_runmake install # doesn't install to correct location
> +
> +  # This works
> +  install -d ${D}${bindir}/
> +  install -m 0755 ${S}/node ${D}${bindir}/
> +}
> +FILES_${PN} = "${bindir}/node"
> --
> 1.6.0.4

I confirmed that this builds fine--haven't run-tested it yet.  'git
am' gave me some trailing whitespace warnings, but I can't otherwise
comment on the patch.




More information about the Openembedded-devel mailing list