harmony gem issue

Hello everyone,

saravanan@ubuntu:~$ ruby -v

ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]

saravanan@ubuntu:~$ rails -v

Rails 4.0.3

saravanan@ubuntu:~$ rvm -v

rvm 1.24.4 (stable) by Wayne E. Seguin wayneeseguin@gmail.com, Michal Papis mpapis@gmail.com [https://rvm.io/]

I am trying to install “harmony” gem for data scraping.

saravanan@ubuntu:~$ gem install harmony

Building native extensions. This could take a while…

ERROR: Error installing harmony:

ERROR: Failed to build gem native extension.

/home/saravanan/.rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb

creating cache ./config.cache

checking host system type… x86_64-unknown-linux-gnu

checking target system type… x86_64-unknown-linux-gnu

checking build system type… x86_64-unknown-linux-gnu

checking for mawk… mawk

checking for gcc… gcc

checking whether the C compiler (gcc ) works… yes

checking whether the C compiler (gcc ) is a cross-compiler… no

checking whether we are using GNU C… yes

checking whether gcc accepts -g… yes

checking for c++… c++

checking whether the C++ compiler (c++ ) works… yes

checking whether the C++ compiler (c++ ) is a cross-compiler… no

checking whether we are using GNU C++… yes

checking whether c++ accepts -g… yes

checking for ranlib… ranlib

checking for as… /usr/bin/as

checking for ar… ar

checking for ld… ld

checking for strip… strip

checking for windres… no

checking whether gcc and cc understand -c and -o together… yes

checking how to run the C preprocessor… gcc -E

checking how to run the C++ preprocessor… c++ -E

checking for a BSD compatible install… /usr/bin/install -c

checking whether ln -s works… yes

checking for perl5… no

checking for perl… /usr/bin/perl

checking for minimum required perl version >= 5.006… 5.014002

checking for full perl installation… yes

checking for python… /usr/bin/python

checking for doxygen… :

checking for whoami… /usr/bin/whoami

checking for autoconf… /usr/bin/autoconf

checking for unzip… /usr/bin/unzip

checking for zip… /usr/bin/zip

checking for makedepend… no

checking for xargs… /usr/bin/xargs

checking for gmake… no

checking for make… /usr/bin/make

checking for X… libraries , headers

checking for dnet_ntoa in -ldnet… no

checking for dnet_ntoa in -ldnet_stub… no

checking for gethostbyname… yes

checking for connect… yes

checking for remove… yes

checking for shmat… yes

checking for IceConnectionNumber in -lICE… yes

checking whether the compiler supports -Wno-invalid-offsetof… yes

checking whether the compiler supports -Wno-variadic-macros… yes

checking whether ld has archive extraction flags… yes

checking that static assertion macros used in autoconf tests work… yes

checking for 64-bit OS… yes

checking for ANSI C header files… yes

checking for working const… yes

checking for mode_t… yes

checking for off_t… yes

checking for pid_t… yes

checking for size_t… yes

checking for st_blksize in struct stat… yes

checking for siginfo_t… yes

checking for stdint.h… yes

checking for the size of void*… 8

checking for the alignment of void*… 8

checking for the size of double… 8

checking for int16_t… yes

checking for int32_t… yes

checking for int64_t… yes

checking for int64… no

checking for uint… yes

checking for uint_t… no

checking for uint16_t… no

checking for uname.domainname… yes

checking for uname.__domainname… no

checking for visibility(hidden) attribute… yes

checking for visibility(default) attribute… yes

checking for visibility pragma support… yes

checking For gcc visibility bug with class-level attributes (GCC bug 26905)… no

checking For x86_64 gcc visibility bug with builtins (GCC bug 20297)… no

checking for dirent.h that defines DIR… yes

checking for opendir in -ldir… no

checking for sys/byteorder.h… no

checking for compat.h… no

checking for getopt.h… yes

checking for sys/bitypes.h… yes

checking for memory.h… yes

checking for unistd.h… yes

checking for gnu/libc-version.h… yes

checking for nl_types.h… yes

checking for malloc.h… yes

checking for X11/XKBlib.h… yes

checking for sys/statvfs.h… yes

checking for sys/statfs.h… yes

checking for sys/vfs.h… yes

checking for sys/mount.h… yes

checking for mmintrin.h… yes

checking for new… yes

checking for sys/cdefs.h… yes

checking for gethostbyname_r in -lc_r… no

checking for atan in -lm… yes

checking for dlopen in -ldl… yes

checking for dlfcn.h… yes

checking for dladdr… yes

checking for socket in -lsocket… no

checking for pthread_create in -lpthreads… no

checking for pthread_create in -lpthread… yes

checking whether gcc accepts -pthread… yes

checking whether mmap() sees write()s… yes

checking whether gcc needs -traditional… no

checking for 8-bit clean memcmp… yes

checking for fchmod… yes

checking for flockfile… yes

checking for getc_unlocked… yes

checking for _getc_nolock… no

checking for getpagesize… yes

checking for lchown… yes

checking for localtime_r… yes

checking for lstat64… yes

checking for memmove… yes

checking for random… yes

checking for rint… yes

checking for sbrk… yes

checking for snprintf… yes

checking for stat64… yes

checking for statvfs… yes

checking for statvfs64… yes

checking for strerror… yes

checking for strtok_r… yes

checking for truncate64… yes

checking for wcrtomb… yes

checking for mbrtowc… yes

checking for res_ninit()… yes

checking for gnu_get_libc_version()… yes

checking for iconv in -lc… yes

checking for iconv()… yes

checking for iconv() with const input… no

checking for an implementation of va_copy()… yes

checking for an implementation of __va_copy()… yes

checking whether va_lists can be copied by value… no

checking for C++ exceptions flag… -fno-exceptions

checking for gcc 3.0 ABI… yes

checking for C++ “explicit” keyword… yes

checking for C++ “typename” keyword… yes

checking for modern C++ template specialization syntax support… yes

checking whether partial template specialization works… yes

checking whether operators must be re-defined for templates derived from templates… no

checking whether we need to cast a derived template to pass as its base class… no

checking whether the compiler can resolve const ambiguities for templates… yes

checking whether the C++ “using” keyword can change access… yes

checking whether the C++ “using” keyword resolves ambiguity… yes

checking for “std::” namespace… yes

checking whether standard template operator!=() is ambiguous… unambiguous

checking for C++ reinterpret_cast… yes

checking for C++ dynamic_cast to void*… yes

checking whether C++ requires implementation of unused virtual methods… yes

checking for trouble comparing to zero near std::operator!=()… no

checking for LC_MESSAGES… yes

checking for valid optimization flags… yes

checking for __cxa_demangle… yes

checking for unwind.h… yes

checking for _Unwind_Backtrace… yes

checking for gcc -pipe support… yes

checking whether compiler supports -Wno-long-long… yes

checking whether C compiler supports -fprofile-generate… yes

checking whether C++ compiler has -pedantic long long bug… no

checking for correct temporary object destruction order… yes

checking for correct overload resolution with const and templates… no

checking for tm_zone tm_gmtoff in struct tm… yes

checking for setlocale… yes

creating js-confdefs.h

==== js-confdefs.h =================================

/* List of defines generated by configure. Included with preprocessor flag,

  • -include, to avoid long list of -D defines on the compile command-line.

  • Do not edit.

*/

#ifndef JS_CONFDEFS_H

#define JS_CONFDEFS_H

#define CPP_THROW_NEW throw()

#define D_INO d_ino

#define EDITLINE 1

#define HAVE_64BIT_OS 1

#define HAVE_CPP_ACCESS_CHANGING_USING 1

#define HAVE_CPP_AMBIGUITY_RESOLVING_USING 1

#define HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR 1

#define HAVE_CPP_EXPLICIT 1

#define HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX 1

#define HAVE_CPP_NAMESPACE_STD 1

#define HAVE_CPP_NEW_CASTS 1

#define HAVE_CPP_PARTIAL_SPECIALIZATION 1

#define HAVE_CPP_TYPENAME 1

#define HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL 1

#define HAVE_DIRENT_H 1

#define HAVE_DLADDR 1

#define HAVE_FCHMOD 1

#define HAVE_FLOCKFILE 1

#define HAVE_GETC_UNLOCKED 1

#define HAVE_GETOPT_H 1

#define HAVE_GETPAGESIZE 1

#define HAVE_GNU_GET_LIBC_VERSION 1

#define HAVE_GNU_LIBC_VERSION_H 1

#define HAVE_I18N_LC_MESSAGES 1

#define HAVE_ICONV 1

#define HAVE_INT16_T 1

#define HAVE_INT32_T 1

#define HAVE_INT64_T 1

#define HAVE_LCHOWN 1

#define HAVE_LIBDL 1

#define HAVE_LIBM 1

#define HAVE_LOCALTIME_R 1

#define HAVE_LSTAT64 1

#define HAVE_MALLOC_H 1

#define HAVE_MBRTOWC 1

#define HAVE_MEMMOVE 1

#define HAVE_MEMORY_H 1

#define HAVE_MMINTRIN_H 1

#define HAVE_NL_TYPES_H 1

#define HAVE_RANDOM 1

#define HAVE_RES_NINIT 1

#define HAVE_RINT 1

#define HAVE_SBRK 1

#define HAVE_SETLOCALE 1

#define HAVE_SIGINFO_T 1

#define HAVE_SNPRINTF 1

#define HAVE_STAT64 1

#define HAVE_STATVFS 1

#define HAVE_STATVFS64 1

#define HAVE_STRERROR 1

#define HAVE_STRTOK_R 1

#define HAVE_ST_BLKSIZE 1

#define HAVE_SYS_BITYPES_H 1

#define HAVE_SYS_CDEFS_H 1

#define HAVE_SYS_MOUNT_H 1

#define HAVE_SYS_STATFS_H 1

#define HAVE_SYS_STATVFS_H 1

#define HAVE_SYS_VFS_H 1

#define HAVE_TM_ZONE_TM_GMTOFF 1

#define HAVE_TRUNCATE64 1

#define HAVE_UINT 1

#define HAVE_UNAME_DOMAINNAME_FIELD 1

#define HAVE_UNISTD_H 1

#define HAVE_VA_COPY 1

#define HAVE_VA_LIST_AS_ARRAY 1

#define HAVE_VISIBILITY_ATTRIBUTE 1

#define HAVE_VISIBILITY_HIDDEN_ATTRIBUTE 1

#define HAVE_WCRTOMB 1

#define HAVE_X11_XKBLIB_H 1

#define HAVE__UNWIND_BACKTRACE 1

#define HAVE___CXA_DEMANGLE 1

#define JS_ALIGN_OF_POINTER 8

#define JS_BITS_PER_WORD_LOG2 6

#define JS_BYTES_PER_DOUBLE 8

#define JS_BYTES_PER_WORD 8

#define JS_HAVE_STDINT_H 1

#define MOZ_DLL_SUFFIX “.so”

#define NEED_CPP_UNUSED_IMPLEMENTATIONS 1

#define NEW_H

#define STDC_HEADERS 1

#define UNIX_ASYNC_DNS 1

#define VA_COPY va_copy

#define XP_UNIX 1

#define _REENTRANT 1

#endif /* JS_CONFDEFS_H */

creating Makefile

creating shell/Makefile

creating lirasm/Makefile

creating jsapi-tests/Makefile

creating tests/Makefile

creating config/Makefile

creating config/mkdepend/Makefile

creating editline/Makefile

updating cache ./config.cache

creating ./config.status

creating config/autoconf.mk

creating js-config.h

invoking make to create js-config script

rm -f js-config.tmp

sed < js-config.in > js-config.tmp \

-e 's|@prefix@|/usr/local|' \

-e 's|@exec_prefix@|/usr/local|' \

-e 's|@includedir@|/usr/local/include|' \

-e 's|@libdir@|/usr/local/lib|' \

-e 's|@MOZILLA_VERSION@||' \

-e 's|@LIBRARY_NAME@|mozjs|' \

-e 's|@NSPR_CFLAGS@||' \

-e 's|@JS_CONFIG_LIBS@| -ldl -lm  -lm -ldl |' \

-e 's|@MOZ_JS_LIBS@|-L/usr/local/lib -lmozjs|' \

&& mv js-config.tmp js-config && chmod +x js-config

make export

make[1]: Entering directory `/home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey’

make -C config/ nsinstall

make[2]: Entering directory `/home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/config’

nsinstall.c

gcc -o host_nsinstall.o -c -DXP_UNIX -O3 -DUNICODE -D_UNICODE -I. -I. -I…/dist/include -I…/dist/include/nsprpub nsinstall.c

pathsub.c

gcc -o host_pathsub.o -c -DXP_UNIX -O3 -DUNICODE -D_UNICODE -I. -I. -I…/dist/include -I…/dist/include/nsprpub pathsub.c

gcc -o nsinstall -DXP_UNIX -O3 -DUNICODE -D_UNICODE host_nsinstall.o host_pathsub.o

make[2]: Leaving directory `/home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/config’

Creating /home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/.deps

make[2]: Entering directory `/home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/config’

rm -f nfspwd

cp nfspwd.pl nfspwd

chmod +x nfspwd

/home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/config/nsinstall -R nsinstall …/dist/bin

if test ! -d system_wrappers_js; then mkdir system_wrappers_js; fi

/usr/bin/perl ./preprocessor.pl -DOSTYPE="Linux3.8" -DOSARCH=Linux -DHAVE_64BIT_OS=1 -DD_INO=d_ino -DSTDC_HEADERS=1 -DHAVE_ST_BLKSIZE=1 -DHAVE_SIGINFO_T=1 -DJS_HAVE_STDINT_H=1 -DJS_BYTES_PER_WORD=8 -DJS_BITS_PER_WORD_LOG2=6 -DJS_ALIGN_OF_POINTER=8 -DJS_BYTES_PER_DOUBLE=8 -DHAVE_INT16_T=1 -DHAVE_INT32_T=1 -DHAVE_INT64_T=1 -DHAVE_UINT=1 -DHAVE_UNAME_DOMAINNAME_FIELD=1 -DHAVE_VISIBILITY_HIDDEN_ATTRIBUTE=1 -DHAVE_VISIBILITY_ATTRIBUTE=1 -DHAVE_DIRENT_H=1 -DHAVE_GETOPT_H=1 -DHAVE_SYS_BITYPES_H=1 -DHAVE_MEMORY_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GNU_LIBC_VERSION_H=1 -DHAVE_NL_TYPES_H=1 -DHAVE_MALLOC_H=1 -DHAVE_X11_XKBLIB_H=1 -DHAVE_SYS_STATVFS_H=1 -DHAVE_SYS_STATFS_H=1 -DHAVE_SYS_VFS_H=1 -DHAVE_SYS_MOUNT_H=1 -

make[2]: Nothing to be done for `tools’.

make[2]: Leaving directory `/home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/jsapi-tests’

make[2]: Entering directory `/home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/tests’

make[2]: Nothing to be done for `tools’.

make[2]: Leaving directory `/home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/tests’

make[1]: Leaving directory `/home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey’

checking for jsautocfg.h in /home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey… yes

checking for jsapi.h in /home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey… yes

creating Makefile

make “DESTDIR=”

compiling immutable_node.cc

In file included from /home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/jsinterp.h:48:0,

from /home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/jscntxt.h:53,

from immutable_node.h:5,

from immutable_node.cc:1:

/home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/jsfun.h: In function ‘js_ArgsPrivateNative* js_GetArgsPrivateNative(JSObject*)’:

/home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/vendor/tracemonkey/jsfun.h:233:55: warning: converting to non-pointer type ‘long unsigned int’ from NULL [-Wconversion-null]

compiling global.cc

compiling js_land_proxy.cc

In file included from js_land_proxy.cc:1:0:

js_land_proxy.h:11:18: fatal error: node.h: No such file or directory

compilation terminated.

make: *** [js_land_proxy.o] Error 1

Gem files will remain installed in /home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3 for inspection.

Results logged to /home/saravanan/.rvm/gems/ruby-2.0.0-p353@pjtat/gems/johnson-2.0.0.pre3/ext/tracemonkey/gem_make.out

saravanan@ubuntu:~$

looks like the harmony gem depends on the johnson gem which depends on nodejs which, of course, isn’t a gem. try installing nodejs - see: nodejs.org.

rick