Сборка contextify завершается с ошибкой: поле 'time' имеет неполный тип
Фон: я использую jquery
протестировать код JavaScript (который использует объекты jQuery) с nodeunit
, Для JQuery мне нужно jsdom
обеспечить window
объект. Сборка JSDOM терпит неудачу, потому что это требует contextify
, который не основан на 64-битном Debian. Я тестировал его на Linux Mint, как в стандартной версии Ubuntu, так и в Debian. Результат один и тот же.
Проблема: node.js в обоих случаях является версией 0.11.11 и собрана из репозитория git. При строительстве, time
, it_interval
и многие другие являются неполными. Зачем?
Полный журнал сборки находится здесь: http://pastebin.com/iTq75435 Он начинается с:
npm http GET https://registry.npmjs.org/contextify
npm http 304 https://registry.npmjs.org/contextify
npm http GET https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/bindings
> contextify@0.1.6 install /tmp/node_modules/contextify
> node-gyp rebuild
make: Entering directory `/tmp/node_modules/contextify/build'
CXX(target) Release/obj.target/contextify/src/contextify.o
In file included from /home/sie/.node-gyp/0.11.11/src/node.h:61:0,
from ../src/contextify.cc:1:
/home/sie/.node-gyp/0.11.11/deps/v8/include/v8.h: In member function ‘void v8::ReturnValue<T>::Set(uint32_t)’:
/home/sie/.node-gyp/0.11.11/deps/v8/include/v8.h:5816:31: warning: typedef ‘I’ locally defined but not used [-Wunused-local-typedefs]
typedef internal::Internals I;
^
In file included from /usr/include/x86_64-linux-gnu/bits/time.h:86:0,
from /usr/include/time.h:41,
from /usr/include/pthread.h:24,
from /usr/include/x86_64-linux-gnu/c++/4.8/bits/gthr-default.h:35,
from /usr/include/x86_64-linux-gnu/c++/4.8/bits/gthr.h:148,
from /usr/include/c++/4.8/ext/atomicity.h:35,
from /usr/include/c++/4.8/bits/basic_string.h:39,
from /usr/include/c++/4.8/string:52,
from ../src/contextify.cc:3:
/usr/include/x86_64-linux-gnu/bits/timex.h: At global scope:
/usr/include/x86_64-linux-gnu/bits/timex.h:36:18: error: field ‘time’ has incomplete type
struct timeval time; /* (read only) */
^
In file included from /usr/include/pthread.h:24:0,
from /usr/include/x86_64-linux-gnu/c++/4.8/bits/gthr-default.h:35,
from /usr/include/x86_64-linux-gnu/c++/4.8/bits/gthr.h:148,
from /usr/include/c++/4.8/ext/atomicity.h:35,
from /usr/include/c++/4.8/bits/basic_string.h:39,
from /usr/include/c++/4.8/string:52,
from ../src/contextify.cc:3:
/usr/include/time.h:163:21: error: field ‘it_interval’ has incomplete type
struct timespec it_interval;
^
/usr/include/time.h:164:21: error: field ‘it_value’ has incomplete type
struct timespec it_value;
^
/usr/include/time.h:189:8: error: ‘clock_t’ does not name a type
extern clock_t clock (void) __THROW;
^
/usr/include/time.h:192:8: error: ‘time_t’ does not name a type
extern time_t time (time_t *__timer) __THROW;
^
/usr/include/time.h:195:25: error: ‘time_t’ was not declared in this scope
extern double difftime (time_t __time1, time_t __time0)
1 ответ
Я уже предложил это как комментарий, но я также опубликую это как ответ здесь.
Использование нестабильных версий программного обеспечения может быть опасным. Часто библиотеки настраиваются для работы с прошлой и текущей версиями, но не всегда с будущими версиями. Особенно будущие версии, которые постоянно меняются. 0.11, вероятно, устарело или изменяет некоторые функции 0.10, которые ожидает ваша библиотека.