Автор Тема: Как собирать пакеты "чайнику"  (Прочитано 33245 раз)

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Как собирать пакеты "чайнику"
« Ответ #15 : 15.11.2008 19:39:54 »
Цитировать
А спек писать - не так уж и сложно, фактически - это сценарий последовательности действий configure/make/make install. Возьмите любой спек, посмотрите.

А вы думаете я не интересовался? Взял, посмотрел. Ничего абсолютно не понял.  SRC и бинарные пакеты animorph, mhgui, makehuman я нашёл только для Федоры и Сусе. Сусины rpm в Мандриву не стали, федорины стали. Поэтому объектом для изучения я попытался взять федорины src. Установил animorph-src, открыл spec. Сразу в глаза бросились какие-то патчи. Мама мия, откуда? Я в альте безо всяких патчей собрал же и работает. Ну, и какие тут слова заменяют сценарий ./configure, make & make install?

Цитировать
Name:           animorph
Version:        0.3
Release:        3%{?dist}
Summary:        3D Animation and Morph Library

Group:          System Environment/Libraries
License:        GPLv3+
URL:            http://www.dedalo-3d.com
Source0:        http://downloads.sourceforge.net/makehuman/%{name}-%{version}.tar.gz
Patch0:         animorph-0.2-pkgconfig.patch
Patch1:         animorph-0.3-gcc43.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)



%description
3D Animation and Morph Library


%package        devel
Summary:        Development files for %{name}
Group:          Development/Libraries
Requires:       %{name} = %{version}-%{release}
Requires:       pkgconfig

%description    devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.


%prep
%setup -q
# We need to fix CRLF first
for f in animorph*.in AUTHORS COPYING TODO; do
  sed -i 's/\r//' $f
  touch -r README $f
done
%patch0 -p1 -b .pkgconfig
%patch1 -p1 -b .gcc43

# prevent timestramps changes from patch1
pushd include/animorph
for f in util.h BodySettings.h FaceGroup.h Hotspot.h;do
touch -r $f.gcc43 $f
done
popd

%build
%configure --disable-static
make %{?_smp_mflags}


%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p -c"
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'

# Removes doc
rm -rf $RPM_BUILD_ROOT%{_prefix}/doc

%clean
rm -rf $RPM_BUILD_ROOT

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig


%files
%defattr(-,root,root,-)
%doc AUTHORS TODO
%{_libdir}/*.so.*

%files devel
%defattr(-,root,root,-)
%{_includedir}/%{name}/
%{_libdir}/*.so
%{_libdir}/pkgconfig/%{name}.pc


%changelog
* Sat Feb  9 2008 kwizart < kwizart at gmail.com > - 0.3-3
- Rebuild for gcc43

* Fri Jan  4 2008 kwizart < kwizart at gmail.com > - 0.3-2
- Fix for gcc43

* Thu Jan  3 2008 kwizart < kwizart at gmail.com > - 0.3-1
- Update to 0.3
- License is now GPLv3+

* Wed Sep 12 2007 kwizart < kwizart at gmail.com > - 0.2-2
- Change license to GPLv2+ as said in the source code
- Remove BR glibc-headers
- Change summary (taken from animorph.pc)

* Fri Jul 20 2007 kwizart < kwizart at gmail.com > - 0.2-1
- Initial spec file for Fedora

Может, проще тот костыль до ума было довести тому, кто его создал, нежели каждому учиться разобраться в таком сложном тексте? Я собирал в бете Мандривы lmms-0.4.0 rc с помощью checkinstall. Нашлась проблема - после удаления этого пакета из системы домашний каталог стал собственностью рута и мне пришлось написать пару строчек в терминале:
chown lanuhum /home/lanuhum
chgrp lanuhum /home/lanuhum

Поверьте, это намного легче, чем составить spec. И, не стану утверждать, но уже в стабильной мандриве и сия чаша меня, по-моему, миновала. А разглядывать пакет в бинокль, выискивая отклонения от стандартов - это тоже не для меня. Для меня работает - хорошо, не работает - плохо. Уверен, что многие пакеты собраны не checkinstall, а не работают вообще. И какой смысл в их безупречной сборке, если они не работают? Я уже упоминал kompozer. Ругается на Мозиллу и всё, хоть ты на нём выспись...Во всех линуксах, и не у меня одного...

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Как собирать пакеты "чайнику"
« Ответ #16 : 15.11.2008 19:44:40 »
Цитировать
Я видел пакеты мандривовские, собранные через тот костыль, о котором Вы говорите. Это тихий ужас.

Я уж было испугался, что вы мои видели пакеты, но потом успокоился, ведь я же ещё не публиковал на них ссылку, да и собирал я их из src с помощью rpmbuild -bb...

Drool

  • Гость
Как собирать пакеты "чайнику"
« Ответ #17 : 15.11.2008 19:54:36 »
Нашлась проблема - после удаления этого пакета из системы домашний каталог стал собственностью рута и мне пришлось написать пару строчек в терминале:
chown lanuhum /home/lanuhum
chgrp lanuhum /home/lanuhum

Поверьте - эта проблема для 98% посетителей этого форума станет причиной переустановки системы. Лучше или освоить написание спеков, либо осилить багзиллу и вешать туда запросы собрать то-то и то-то, обновить или еще чего. Но более эффективно - таки спеки писать. Это я Вам говорю как чайник, довольно долгое время клянчивший в рассылке собрать то, бэкпортировать это.

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Как собирать пакеты "чайнику"
« Ответ #18 : 15.11.2008 20:11:53 »
Цитировать
Но более эффективно - таки спеки писать. Это я Вам говорю как чайник, довольно долгое время клянчивший в рассылке собрать то, бэкпортировать это.

Drool, спасибо, открываю тему: Научите меня составлять spec. А что? Я когда-то нереальным считал вообще сборку из исходников.  Для меня отсутствие бинарного пакета было равно отсутствию программы вообще.

Alexei_VM

  • Гость
Как собирать пакеты "чайнику"
« Ответ #19 : 15.11.2008 20:55:37 »
Сразу в глаза бросились какие-то патчи. Мама мия, откуда?

А вы в другой раз глазки направьте на просмотр содержимого патчей. Они, между прочим, есть обычные текстовый файлы (в 99% случаев). И сразу станет ясно, что это и зачем.

Ну, и какие тут слова заменяют сценарий ./configure, make & make install?

Вас научить пользоваться поиском в вашем текстовом редакторе? Или сами справитесь?

Для меня работает - хорошо, не работает - плохо.

Госспади, да делайте так, как вам нравится. Только тогда избавьте нас от выслушивания ваших собственноручно созданных проблем.

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Как собирать пакеты "чайнику"
« Ответ #20 : 15.11.2008 23:26:45 »
Цитировать
А вы в другой раз глазки направьте на просмотр содержимого патчей. Они, между прочим, есть обычные текстовый файлы (в 99% случаев). И сразу станет ясно, что это и зачем.

Ясней не бывает!!! Откуда я вообще могу подозревать, что мне при сборке необходимо будет внести коррективы относительно какого-то там, например, BodySettings.h по поводу gcc43?

Цитировать
diff -up animorph-0.3/include/animorph/Hotspot.h.gcc43 animorph-0.3/include/animorph/Hotspot.h
--- animorph-0.3/include/animorph/Hotspot.h.gcc43   2007-11-25 10:34:57.000000000 +0100
+++ animorph-0.3/include/animorph/Hotspot.h   2008-01-04 17:40:58.000000000 +0100
@@ -36,6 +36,7 @@
 #include <vector>
 #include <iostream>
 #include <fstream>
+#include <cstring>
 #include "FileReader.h"
 
 namespace Animorph {
diff -up animorph-0.3/include/animorph/BodySettings.h.gcc43 animorph-0.3/include/animorph/BodySettings.h
--- animorph-0.3/include/animorph/BodySettings.h.gcc43   2007-12-02 23:30:40.000000000 +0100
+++ animorph-0.3/include/animorph/BodySettings.h   2008-01-04 17:40:58.000000000 +0100
@@ -34,6 +34,7 @@
 
 #include <iostream>
 #include <fstream>
+#include <cstring>
 #include <map>
 #include <vector>
 #include "FileReader.h"
diff -up animorph-0.3/include/animorph/FaceGroup.h.gcc43 animorph-0.3/include/animorph/FaceGroup.h
--- animorph-0.3/include/animorph/FaceGroup.h.gcc43   2007-12-02 23:30:40.000000000 +0100
+++ animorph-0.3/include/animorph/FaceGroup.h   2008-01-04 17:40:58.000000000 +0100
@@ -29,6 +29,7 @@
 
 #include <map>
 #include <ios>
+#include <cstring>
 #include "Face.h"
 #include "FaceVector.h"
 #include "FileWriter.h"
diff -up animorph-0.3/include/animorph/util.h.gcc43 animorph-0.3/include/animorph/util.h
--- animorph-0.3/include/animorph/util.h.gcc43   2007-11-25 10:34:57.000000000 +0100
+++ animorph-0.3/include/animorph/util.h   2008-01-04 17:40:58.000000000 +0100
@@ -37,6 +37,7 @@
 #include <iomanip>
 #include <vector>
 #include <iostream>
+#include <cstdlib>
 #include "Vector3.h"
 #include "Vertex.h"
 #include "VertexVector.h"

Цитировать
Вас научить пользоваться поиском в вашем текстовом редакторе? Или сами справитесь?
Не, не справлюсь, научите!  Тут строчек много, есть между ними %make  и что, глядя на неё можно догадаться, что это сценарий?

Цитировать
Только тогда избавьте нас от выслушивания ваших собственноручно созданных проблем.

Это не моя проблема, что в системе Альтлинукс 4.1-desktop-x86_64 нет бинарного пакета checkinstall, а в i586 есть. Это не моя проблема, что этот пакет не собирается из src, в который включён spec не мной - олухом безграмотным составленный, а специалистом в области линуксоидных наук. (Представляю я, как от моих спеков программы начнут собираться, если этим спекам спецы толку дать не могут!!!)
Просто у нас любят с больной головы на здоровую всё перекладывать...

Drool

  • Гость
Как собирать пакеты "чайнику"
« Ответ #21 : 15.11.2008 23:34:30 »
Откуда я вообще могу подозревать, что мне при сборке необходимо будет внести коррективы относительно какого-то там, например, BodySettings.h по поводу gcc43?

checkinstall не избавит Вас от этих изменений.

P.S. Мантейнера checkinstall спрашивали что и как? Кто, кроме него, лучше может ответить почему там есть, а там нет.

P.P.S. Смутно помнится из рассылки - мантейнер checkinstall не рекомендует пользоваться этой утилитой ;)

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Как собирать пакеты "чайнику"
« Ответ #22 : 16.11.2008 00:41:06 »
Цитировать
checkinstall не избавит Вас от этих изменений.
Но и научившись создавать спеки я не смогу собирать пакеты. Тут целая наука, смотрю. Вот сейчас,попробовал всё же с этим animorph, будь он неладен разобраться в Мандриве. Сообразил вот что, что этот патч для gcc43. Gcc43 у меня нет, значит патч не нужен. Убрал его из спека. Вроде побежало всё в терминале, уже чуть ура не закричал

Цитировать
checking whether ln -s works... yes
checking how to recognize dependent libraries... pass_all
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking how to run the C++ preprocessor... x86_64-mandriva-linux-gnu-g++ -E
checking the maximum length of command line arguments... 1572864
checking command to parse /usr/bin/nm -B output from x86_64-mandriva-linux-gnu-gcc object... ok
checking for objdir... .libs
checking for x86_64-mandriva-linux-gnu-ar... no
checking for ar... ar
checking for x86_64-mandriva-linux-gnu-ranlib... no
checking for ranlib... ranlib
checking for x86_64-mandriva-linux-gnu-strip... no
checking for strip... strip
checking for correct ltmain.sh version... no
configure: error:

*** [Gentoo] sanity check failed! ***
*** libtool.m4 and ltmain.sh have a version mismatch! ***
*** (libtool.m4 = 1.5.24, ltmain.sh = 1.5.26) ***

Please run:

  libtoolize --copy --force

if appropriate, please contact the maintainer of this
package (or your distribution) for help.

ошибка: Неверный код возврата из /var/tmp/rpm-tmp.22335 (%build)


Ошибки сборки пакетов:
    Неверный код возврата из /var/tmp/rpm-tmp.22335 (%build)
[root@localhost ~]#

Цитировать
[root@localhost ~]# libtoolize --copy --force
libtoolize: `configure.ac' does not exist
Try `libtoolize --help' for more information.
[root@localhost ~]#

Что ему дальше не хватает, я уже не знаю, но уверен, что, если бы я этим занялся в Альте - такая же ерунда была бы. Но тут-то уже не спекфайл, как я догадываюсь, виноват. И, какую науку мне ещё осваивать помимо спекфайлов, чтоб собрать пару программ:что собой представляет libtool-base и почему она везде разная?

Drool

  • Гость
Как собирать пакеты "чайнику"
« Ответ #23 : 16.11.2008 00:44:37 »
Я бы для начала перед вызовом %configure вставил "autoreconf -fisv" в спеке. Как это сделать при использовании checkinstall - я не знаю.

Drool

  • Гость
Как собирать пакеты "чайнику"
« Ответ #24 : 16.11.2008 00:53:08 »
И, какую науку мне ещё осваивать помимо спекфайлов, чтоб собрать пару программ

Эта наука называется "сборка программ из исходных текстов" и она есть не кнопка "Далее", к сожалению. Единого рецепта нет - софт на GTK, QT, что там еще может быть собираться могут по-разному - через configure, cmake, scons, qmake и хрен знает что еще, что там придумает автор софтины.

P.S. Интересно было бы найти мои первые письма в рассылку :) Хехе, нашел одно из того периода: http://lists.altlinux.org/pipermail/community/2004-October/330761.html

Alexei_VM

  • Гость
Как собирать пакеты "чайнику"
« Ответ #25 : 16.11.2008 02:44:50 »
Ясней не бывает!!! Откуда я вообще могу подозревать, что мне при сборке необходимо будет внести коррективы относительно какого-то там, например, BodySettings.h по поводу gcc43?

Вы? Ниоткуда. Именно поэтому вам НЕ стоит заниматься сборкой программ каким-бы то ни было способом, а особенно через configure/make/make install.

Более опытные люди соберут за вас программу, устранят все грабли по ее собрке и совместимости с другими пакетами, приложат файлы desktop, иконки и прочее. И результатом их работы будет ПАКЕТ (rpm, deb и т.п.).

Если вы и теперь не понимаете, зачем нужны пакеты, и почему НЕ нужны программы типа checkinstall, то разговаривать с вами по этой теме я не вижу смысла.

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Как собирать пакеты "чайнику"
« Ответ #26 : 16.11.2008 12:33:46 »
Цитировать
Если вы и теперь не понимаете, зачем нужны пакеты, и почему НЕ нужны программы типа checkinstall, то разговаривать с вами по этой теме я не вижу смысла.

Про checkinstall я веду уже сейчас разговор не потому, что она мне нужна, а потому что она имея профессионально составленный файл spec не собирается из src.
Хотя, признаюсь, всё же ещё не понял, почему работающая программа собранная checkinstall хуже,чем неработающая, собранная hasher? Вам порой не кажется, что вы просто чудик?

Цитировать
Именно поэтому вам НЕ стоит заниматься сборкой программ каким-бы то ни было способом, а особенно через configure/make/make install.

А это ещё почему? Ну, извините, нужно было раньше предупреждать, что не стоит, а то я уже собрал. От себя хочу сказать, что уважаю тех авторов программ, которые думают о пользователе, о его уровне неподготовленности и не выпендриваются всякими заморочками. Поэтому их программы корректно собираются даже такими попугаями, как я. Им бы ещё подумать над gui, чтоб мышкой тыкать в кнопки с надписями configure, make, make install. Ну, это не за горами. Такая приблуда уже есть у cmake. Так что, несмотря на ваш консерватизм, Alexei_VM, прогресс кое-какой в Линуксе идёт  :-[

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Как собирать пакеты "чайнику"
« Ответ #27 : 16.11.2008 12:50:05 »
Цитировать
P.S. Интересно было бы найти мои первые письма в рассылку  :) Хехе, нашел одно из того периода:


Ну, одно дело, когда Qt-mt не установлено, и, совсем другое дело, когда у тебя libtool установлена полным комплектом, а сборка на неё ругается. Это уже, я считаю, другой уровень знаний требуется, чтоб разобраться,так ведь?

Drool

  • Гость
Как собирать пакеты "чайнику"
« Ответ #28 : 16.11.2008 15:23:18 »
Хотя, признаюсь, всё же ещё не понял, почему работающая программа собранная checkinstall хуже,чем неработающая, собранная hasher?

Вы сами упомянули как каталог пользователя стал рутовым. Такая шняга тянет на расстрел на месте автора checkinstall путем 20 лет строгого расстрела через повешение. Вы все еще считаете ее хорошей?

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Как собирать пакеты "чайнику"
« Ответ #29 : 16.11.2008 16:00:54 »
Цитировать
Вы все еще считаете ее хорошей?

Ни в коем случае хорошей я её не считаю.
Но, при отсутствии альтернативы и известных подводных камнях, я считаю допустимым её использование на данном этапе развития Линукса. Достаточно поставить в известность пользователя, сказав, что без высшего образования по системам unix вы сможете собрать себе программку с помощью недоделанной ещё утилиты, и программка успешно будет работать, но, запомните одно:если вы эту программку удалите, то случится неприятность, которую ликвидировать можно будет такой-то вот записью в терминале. Всё!
 Разговор же на тему обязательного освоения gtk, qt, c++,perl, ruby и ещё и ещё только для того, чтобы желая поиграть можно было самому собрать, считаю не лучше той самой злосчастной утилиты checkinstall. Если ещё не хуже заставлять пользователя учить фундаментальные основы, нежели пользоваться пусть несовершенной пока ещё какой-то там утилитой, заменяющей в одночасье все эти знания.