New user registration is currently disabled due to spam abuse / Регистрация новых пользователей в настоящее время приостановлена из-за злоупотреблений спаммерами

Порт для FreeBSD

Ветка для общения разработчиков и координации разработки

Порт для FreeBSD

Postby bsam » Tue Nov 10, 2009 4:33 pm

Бодрый день!

Благодаря инструкциям на форуме написал порт для 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
bsam
 
Posts: 11
Joined: Sun Nov 08, 2009 9:54 pm

Re: Порт для FreeBSD

Postby ikm » Tue Nov 10, 2009 4:41 pm

1. Пишите, что нужно изменить/добавить в goldendict.pro.
2. Прочтите описание этой библиотеки.
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Порт для FreeBSD

Postby bsam » Tue Nov 10, 2009 4:48 pm

Ага, понял, куда копать. Спасибо. Будут новости, отпишу.
bsam
 
Posts: 11
Joined: Sun Nov 08, 2009 9:54 pm

Re: Порт для FreeBSD

Postby bsam » Tue Nov 10, 2009 5:05 pm

Первая часть патча вводит 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 \
bsam
 
Posts: 11
Joined: Sun Nov 08, 2009 9:54 pm

Re: Порт для FreeBSD

Postby ikm » Tue Nov 10, 2009 6:55 pm

Спасибо, закоммитил.
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Порт для FreeBSD

Postby bsam » Wed Nov 11, 2009 10:07 am

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

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

Вопрос: это только во FreeBSD так?
bsam
 
Posts: 11
Joined: Sun Nov 08, 2009 9:54 pm

Re: Порт для FreeBSD

Postby bsam » Wed Nov 11, 2009 10:32 am

bsam wrote:В этом случае цель install_locale: создаётся и ru.qm после сборки устанавливается.

Ай, ru.qm устанавливается, но нулевой длины. :( То есть он не переписывается при сборке, если такой файл уже существует. Хм, пока оставил копирование системными средствами.
bsam
 
Posts: 11
Joined: Sun Nov 08, 2009 9:54 pm

Re: Порт для FreeBSD

Postby ikm » Wed Nov 11, 2009 10:48 am

Если честно, понятия не имею. qmake вообще довольно плохо документирован, и что у нас там в .pro-файле написано - наполовину магия.
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Порт для FreeBSD

Postby bsam » Wed Nov 11, 2009 4:12 pm

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

Re: Порт для FreeBSD

Postby bsam » Wed Nov 11, 2009 5:00 pm

Предлагаю рассмотреть возможность внесения изменений в 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
bsam
 
Posts: 11
Joined: Sun Nov 08, 2009 9:54 pm

Next

Return to Разработка

Who is online

Users browsing this forum: No registered users and 11 guests