Re: MyTetra v.1.30. Обсуждение, вопросы.
Unnamed_Hero пишет:Проблема описана в этой ветке. http://webhamster.ru/punbb/viewtopic.php?pid=244#p244. В версии 1.28 была та же проблема, и о ней было сообщено в соответсвующей теме.
Подробнее - программа ставится в /usr/local - это жёстко прописано в файле проекта.
Бинарник программы помещается в не в /usr/local, а в /usr/local/bin:
Я имел ввиду общую подпапку, но не важно.
BINARY_INSTALL_PATH=/usr/local/bin
Установка в /usr/local/bin вроде как удовлетворяет POSIX стандарту.
Удовлетворяет, никто не спорит, но, я повторюсь, сейчас на 99,9% нет пакетов в любой современной Linux-системе, которые ставятся в /usr/local (имею ввиду пакеты из репозитария). Эта папка предназначена для личных нужд пользователя, туда ставят пакеты в обход пакетного менеджера системы, через make && make install.
Unnamed_Hero пишет:Это неудобно для мейнтейнеров пакетов, если они заходят включить пакет с mytetra в репозитарий своего любимого дистрибутива. Уже много лет пакеты принято ставить в /usr. Патч, предложенный мной, решает эту проблему. При этом, если хочется ставить в /usr/local, то это легко делается с помощью PREFIX (пример в моём изначальном сообщении).
Неудобно? Сейчас установка сводится к командам:
qmake mytetra.pro make make install
C новым патчем ничего не изменится.
После вашего исправления, как нужно будет делать установку? Я понял, что:
1. Создать каталог pkgdir
2. Сделать в нем sh-скрипт следующего содержания:
qmake *.pro PREFIX=/usr || exit 1 make -j${numjobs} || exit 1 make INSTALL_ROOT=${pkgdir} install || exit 1
В чем прелесть таких запутанных действий? И откуда берется значение переменной ${pkgdir}?
Это я как пример показал скрипт для сборки готового пакета для последующей установки через пакетный менеджер. Для пользователей, которые захотят установить из исходников ничего не изменится.
Кроме того, будет ли теперь работать сборка под MeeGo?
В секции про MeeGo ничего не менялось, должно работать.
Кроме того, вы удалили опцию QMAKE_LFLAGS += -L/usr/lib/qt4/lib, без нее у меня сборка не работает.
Вообще, всё должно подхватываться автоматически. У меня подхватывается и эта строка игнорируется. В новом патче я убрал комментирование. Правда, на будущее - не у всех пользователей библиотеки лежать в /usr/lib/. На 64-битных системах в 99% случаях это /usr/lib64/.
Кроме того, патч не накладывается. Копирую в отдельную директорию файл mytetra.pro, туда же кладу ваш файл path_hero.diff с содержимым, начинащимся с "---". Даю команду:
patch -p1 < path_hero.diff
Мне в ответ:
patch: **** Only garbage was found in the patch input.
Так что накатить изменения не могу.
Я не нашёл, как прикладывать файлы к сообщениям, а при ручном копипасте с пастбина патчи ломаются. В личку скинул прямой линк на новый пачт.
Для общественности показываю тут, ибо он маленький.
Двоичные файлы 1.orig/bin/mytetra и 1.orif/bin/mytetra различаются
diff -uNr 1.orig/mytetra.pro 1.orif/mytetra.pro
--- 1.orig/mytetra.pro 2011-07-11 01:39:39.000000000 +0400
+++ 1.orif/mytetra.pro 2011-08-05 09:06:18.000000000 +0400
@@ -19,10 +19,14 @@
FORMS =
QMAKE_LFLAGS += -L/usr/lib/qt4/lib
+isEmpty ( PREFIX ) {
+PREFIX=/usr/local
+}
+
!contains(TARGET_OS_IS_MEEGO, 1) {
message(Building the any OS version...)
SYSTEM_PROGRAM_NAME=mytetra
- BINARY_INSTALL_PATH=/usr/local/bin
+ BINARY_INSTALL_PATH=$${PREFIX}/bin
} else {
message(Building the MeeGo OS version...)
SYSTEM_PROGRAM_NAME=ru.webhamster.mytetra
Добавляет возможность указать префикс для бинарных файлов. По-умолчанию, это /usr/local (файлы ставятся в bin, значит получится /usr/local/bin). Если сказать
qmake *.pro PREFIX=/usr
то префикс поменяется на /usr/bin. Если ничего не говорить, а писать как раньше, то ничего не изменится.