deodar
deodar copied to clipboard
Не собирается под арч.
Решил PKGBUILD под арч написать и столкнулся с тем, что у меня не собирается.
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ] make: Entering directory '/home/dronte/deodar/src/deodar/glxwin/build' CXX(target) Release/obj.target/glxwin/glxwin.o In file included from ../glxwin.cpp:36:0: ../glxwin.h:27:38: fatal error: freetype/freetype.h: No such file or directory #include <freetype/freetype.h> ^ У меня все лежит в другой папке freetype2 /usr/include/freetype2/freetype.h
Система - Archlinux.
если не трудно, поменяйте путь к инклюду, он прописан (в странном месте) в файле bindings.gyp
Что-то я не могу найти этого файла. К тому же, как я сказал, я писал PKGBUILD. Нельзя что-то сделать, чтобы это работало универсально?
поясните что вы делаете? я не знаю что такое PKGBUILD
вот файл упомянутый https://github.com/exebook/glxwin/blob/master/binding.gyp
в крайнем случае можно скомпилировать просто запустив gcc или clang, но там тоже придётся пути к либам указывать
Не совсем в тему, но, возможно, кому-то поможет. У меня при выполнении cd x11clip; node-gyp configure build
была такая ошибка (следовал инструкции).
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/kyrylo/Dropbox/code/kyrylo/deodar/x11clip/build'
CXX(target) Release/obj.target/x11clip/x11clip.o
SOLINK_MODULE(target) Release/obj.target/x11clip.node
/bin/ld: cannot find -lv8
collect2: error: ld returned 1 exit status
x11clip.target.mk:116: recipe for target 'Release/obj.target/x11clip.node' failed
make: *** [Release/obj.target/x11clip.node] Error 1
make: Leaving directory '/home/kyrylo/Dropbox/code/kyrylo/deodar/x11clip/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:797:12)
gyp ERR! System Linux 3.13.8-1-ARCH
gyp ERR! command "node" "/bin/node-gyp" "configure" "build" "--python" "python2"
gyp ERR! cwd /home/kyrylo/Dropbox/code/kyrylo/deodar/x11clip
gyp ERR! node -v v0.10.26
gyp ERR! node-gyp -v v0.13.0
gyp ERR! not ok
Решилось установкой v8.
sudo pacman -S v8
Кстати, если у вас стоит Питон 3, то билду это не понравится. Нужно выполнять команду так: node-gyp configure build --python python2
(предварительно убедившись в наличии Питона 2).
ценная инфа, попробую в вики страничку сделать)
Прошу прощение за флуд, а как запустить теперь (я профан в Ноде)?
пхах, это не флуд, это важный вопрос!
node deodar.js
В этом файле написано "include_dirs": ["/usr/include/freetype2", "osnova", "extra"], но по адресу /usr/include/freetype2/freetype ничего не лежит.
Если заменить #include<freetype/freetype.h> на #include<freetype.h> тогда оно компилируется но при запуске вылетает ошибка /home/dronte/deodar/src/deodar/intervision/display.js:53
dnaof(this, undefined, fonts[f].name, fontSize, fonts[f].extra_x, fonts[f].tu
^
TypeError: Cannot read property 'name' of undefined
at X.TGLXVision.can.init (/home/dronte/deodar/src/deodar/intervision/display.js:53:33)
at dnaof (/home/dronte/deodar/src/deodar/dnaof/dnaof.js:43:29)
at X.TDeodar.can.init (/home/dronte/deodar/src/deodar/deodar.js:194:2)
at Function.X.create (/home/dronte/deodar/src/deodar/dnaof/dnaof.js:24:35)
at Object.
PKGBUILD - это способ распространения пакетов в Arch gnu/linux по сути это скрипт который скачивает, собирает и устанавливает программу. Его можно положить в репозиторий(что я и собираюсь сделать) и тогда пользователи смогут ставить deodar одной командой.
кажется случилось страшное и функция поиска шрифтов ни нашла ни одного. если не затруднит посмотрите первые 20 строчек display.js как они работают.
видимо Arch gnu/linux имеет другой набор шрифтов либо путь к ним не такой как в убунтах. Это нормально, просто я не знаю сам где там что в этом знаменитом дистрибе.
А где лежит display.js
?
Тьфу, всё, разобрался :)
Да, действительно, дело в шрифтах. У нас все шрифты лежат в /usr/share/fonts/TTF мы можем совместными усилиями добиться переносимости кода между дистрибутивами?
displya.js -- это часть самого деодара.
deodar/intervision/display.js
https://github.com/exebook/intervision/blob/master/display.js
конечно можем!
вы сделайте чтобы у вас работало а я придумаю как соединить
Пока что на ум прихожит использование fc-list
и парсинг выхлопа :)
У меня работает. для этого я
- изменил include, как писал выше.
- переписал пути к шрифтам. Можно это сделать параметрами configure или как-то так?
пока можно просто добавить /usr/share/fonts/TTF в список сканируемых каталогов
а можете сделать find /usr/share/fonts/TTF|grep Mono
чтобы я знал какие там есть моно шрифты
у меня лично стоят вот эти: /usr/share/fonts/TTF/DejaVuSansMono.ttf /usr/share/fonts/TTF/DejaVuSansMono-BoldOblique.ttf /usr/share/fonts/TTF/DejaVuSansMono-Oblique.ttf /usr/share/fonts/TTF/FreeMonoBold.ttf /usr/share/fonts/TTF/DejaVuSansMono-Bold.ttf /usr/share/fonts/TTF/FreeMono.ttf /usr/share/fonts/TTF/FreeMonoBoldOblique.ttf /usr/share/fonts/TTF/FreeMonoOblique.ttf
прикрутил fc-list, на Mint работает. пожалуйста проверьте на Arch
Да, если исправить инклуд, то все в порядке. Исправьте инклуд пожалуйста.
Проблема в том, что вы написали "Если заменить #include на #include тогда оно компилируется" и я не понимаю, что это значит. Скорее всего гитхаб съел какие-то символы, а может в чём-то другом дело. Я ещё вчера об этом подумал, но забыл спросить, что на самом деле надо поменять и на что.
О, оказывается если у комента нажать кнопку правки, то можно увидеть в чём дело, оказывается надо заменить freetype/freetype.h на просто freetype.h. Посмотрю что можно сделать.
да я именно про это говорил.
вот что у меня будет если сделать как вы предложили:
/usr/include/ft2build.h:56:38: fatal error: freetype/config/ftheader.h: No such file or directory
так что это не вариант. можете выполнить комманду чтобы я понял что к чему
find /usr/include|grep -E '(freetype.h|ft2)'
В том-то и дело, что в разных системах заголовочные файлы лежат в разных местах, и надо придумать универсальный метод. Попробуйте на вашей системе заменить freetype/freetype.h на freetype.h и изменить в binding.gyp строчку "include_dirs": ["/usr/include/freetype2", "osnova", "extra"], на "include_dirs": ["/usr/include/freetype2","/usr/include/freetype2/freetype", "osnova", "extra"],
о, заработало) попробуйте плз похоже вы придумали универсальный метод
У меня работает, но тепеь еще проблема - нужно уметь говорить npm-gyp install чтобы установить x11clip и glxwin в систему. Желательно это делать так: npm-gyp install --prefix dir чтобы он ставился в директорию dir