Page 1 of 2

Порт для FreeBSD

PostPosted: Tue Nov 10, 2009 4:33 pm
by bsam
Бодрый день!

Благодаря инструкциям на форуме написал порт для FreeBSD.

1. Пришлось ещё в Makefile сделать sed -e 's:lrelease:lrelease-qt4:g' -e 's:/usr/share:/usr/local/share:g'. Возможно, это нужно только для FreeBSD, но нельзя ли сделать что-нибудь типа настраиваемого PREFIX? В самом Makefile присутствует переменная INSTALL_ROOT, но никак не используется. И все пути прописаны без её учёта. Правда, судя по названию, это не совсем та переменная.

2. Сборка безусловно зависит от hunspell. Можно это как-либо обусловить? Лично мне венгерский не очень нужен. :D

Спасибо за отличную программу. После успешного тестирования обязательно порт закомичу.

--
WBR, bsam

Re: Порт для FreeBSD

PostPosted: Tue Nov 10, 2009 4:41 pm
by ikm
1. Пишите, что нужно изменить/добавить в goldendict.pro.
2. Прочтите описание этой библиотеки.

Re: Порт для FreeBSD

PostPosted: Tue Nov 10, 2009 4:48 pm
by bsam
Ага, понял, куда копать. Спасибо. Будут новости, отпишу.

Re: Порт для FreeBSD

PostPosted: Tue Nov 10, 2009 5:05 pm
by bsam
Первая часть патча вводит PREFIX там, где был абсолютный путь. Вторая часть (по-видимому, нужна только для FreeBSD и может остаться патчем в порту) использует имя lrelease-qt4.

Code: Select all
--- goldendict.pro.orig   2009-05-24 23:28:51.000000000 +0400
+++ goldendict.pro   2009-11-10 19:54:31.000000000 +0300
@@ -41,16 +41,16 @@
     locale.files = locale/*.qm
     INSTALLS += target \
         locale
-    icons.path = /usr/share/pixmaps
+    icons.path = $$PREFIX/share/pixmaps
     icons.files = redist/icons/*.*
     INSTALLS += icons
-    icons2.path = /usr/share/app-install/icons
+    icons2.path = $$PREFIX/share/app-install/icons
     icons2.files = redist/icons/*.*
     INSTALLS += icons2
-    desktops.path = /usr/share/applications
+    desktops.path = $$PREFIX/share/applications
     desktops.files = redist/*.desktop
     INSTALLS += desktops
-    desktops2.path = /usr/share/app-install/desktop
+    desktops2.path = $$PREFIX/share/app-install/desktop
     desktops2.files = redist/*.desktop
     INSTALLS += desktops2
 }
@@ -196,7 +196,7 @@
 TRANSLATIONS += locale/ru.ts
 
 # This makes qmake generate translations
-isEmpty(QMAKE_LRELEASE):QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
+isEmpty(QMAKE_LRELEASE):QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease-qt4
 TS_OUT = $$TRANSLATIONS
 TS_OUT ~= s/.ts/.qm
 TSQM.name = lrelease \

Re: Порт для FreeBSD

PostPosted: Tue Nov 10, 2009 6:55 pm
by ikm
Спасибо, закоммитил.

Re: Порт для FreeBSD

PostPosted: Wed Nov 11, 2009 10:07 am
by bsam
Не создаётся цель install_locale: в Makefile. Происходит это вследствие того, что в goldendict.pro указано:
Code: Select all
locale.files = locale/*.qm

А на момент формирования Makefile такого файла не существует. В качестве workaroud делаю "touch locale/ru.qm", потом создаю Makefile. В этом случае цель install_locale: создаётся и ru.qm после сборки устанавливается.

Вопрос: это только во FreeBSD так?

Re: Порт для FreeBSD

PostPosted: Wed Nov 11, 2009 10:32 am
by bsam
bsam wrote:В этом случае цель install_locale: создаётся и ru.qm после сборки устанавливается.

Ай, ru.qm устанавливается, но нулевой длины. :( То есть он не переписывается при сборке, если такой файл уже существует. Хм, пока оставил копирование системными средствами.

Re: Порт для FreeBSD

PostPosted: Wed Nov 11, 2009 10:48 am
by ikm
Если честно, понятия не имею. qmake вообще довольно плохо документирован, и что у нас там в .pro-файле написано - наполовину магия.

Re: Порт для FreeBSD

PostPosted: Wed Nov 11, 2009 4:12 pm
by bsam
Посмотрел аналоги (использующие qmake и файлы проектов *.pro) во FreeBSD. Например, порт editors/texmaker. Там в дистрибутиве вместе с исходниками идут уже готовые *.qm файлы. Они не компилируются, а просто устанавливаются. Видимо, это стандарт для qmake и файлов локализации.

Re: Порт для FreeBSD

PostPosted: Wed Nov 11, 2009 5:00 pm
by bsam
Предлагаю рассмотреть возможность внесения изменений в goldendict.pro:
Code: Select all
--- goldendict.pro.orig 2009-11-11 19:25:24.000000000 +0300
+++ goldendict.pro      2009-11-11 19:35:19.000000000 +0300
@@ -35,24 +35,20 @@
     LIBS += -lXtst
     PREFIX = $$(PREFIX)
     isEmpty( PREFIX ):PREFIX = /usr/local
+    isEmpty( DESKTOPDIR ):DESKTOPDIR = /usr/share/applications
+    isEmpty( ICONDIR ):ICONDIR = /usr/share/pixmaps
     DEFINES += PROGRAM_DATA_DIR=\\\"$$PREFIX/share/apps/goldendict/\\\"
     target.path = $$PREFIX/bin/
     locale.path = $$PREFIX/share/apps/goldendict/locale/
     locale.files = locale/*.qm
     INSTALLS += target \
         locale
-    icons.path = /usr/share/pixmaps
-    icons.files = redist/icons/*.*
+    icons.path = $$ICONDIR/goldendict
+    icons.files = icons/*.png
     INSTALLS += icons
-    icons2.path = /usr/share/app-install/icons
-    icons2.files = redist/icons/*.*
-    INSTALLS += icons2
-    desktops.path = /usr/share/applications
-    desktops.files = redist/*.desktop
+    desktops.path = $$DESKTOPDIR
+    desktops.files = redist/goldendict.desktop
     INSTALLS += desktops
-    desktops2.path = /usr/share/app-install/desktop
-    desktops2.files = redist/*.desktop
-    INSTALLS += desktops2
 }
 DEFINES += PROGRAM_VERSION=\\\"$$VERSION\\\"


- добавлено определение двух переменных, если они ещё не пределены: DESKTOPDIR, ICONDIR;
- убираем установку icons2, desktops2; устанавливать в двух каталогах одно и тоже, по-видимому, не надо; как раз определение вышеуказанных переменных должно сделать своё дело -- в разных дистрибутивах будут использоваться нужные только им каталоги;
- для ICONDIR предлагаю в качестве подкаталога добавлять goldendict к стандартному расположению иконок, так как наименования файлов могут с какой-либо программой пересечься (либо переименовать сами файлы -- добавить к ним префикс, например, goldendict-);
- меняем исходный каталог для иконок на icons/ (redist/icons/ был, по-моему, указан ошибочно);
- применяем маску *.png для файлов иконок, поскольку в icons/ есть ещё и *.ico от Windows.

--
WBR, bsam