Автор Тема: Научите меня, пожалуйста, составлять файл spec  (Прочитано 27315 раз)

Alexei_VM

  • Гость
Найдите разницу:

Цитировать
+ cmake . -DCMAKE_INSTALL_PREFIX=/usr BLA-BLA-BLA

и

Цитировать
Please create a separate build
  directory and run 'cmake path_to_source [options]' there.

Alexei_VM

  • Гость
cmake /home/lanuhum/RPM/SOURCES/aqsis-1.4.1

И еще раз: зачем вы в СПЕК пишете АБСОЛЮТНЫЕ пути? Вы вообще в курсе, что по спеку пакет должен собираться на ЛЮБОМ компьютере, а не только там, где есть юзер lanuhum?

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
 Я пишу абсолютные пути, чтобы исключить ошибку в своей сборке хотя бы изначально. Тем более, если вы внимательно смотрите, то увидите и  уловите тоже разницу, что я и так и так пишу, только это без толку. Я вообще не должен никаких путей писать. Чего ей вообще нужно я не понимаю

[lanuhum@localhost ~]$ rpmbuild -bb /home/lanuhum/RPM/SPECS/aqsis.spec
Выполняется(%prep): /bin/sh -e /home/lanuhum/tmp/rpm-tmp.73141
+ umask 022
+ /bin/mkdir -p /home/lanuhum/RPM/BUILD - директория создана!!!
+ cd /home/lanuhum/RPM/BUILD
+ cd /home/lanuhum/RPM/BUILD
+ rm -rf aqsis-1.4.1
+ echo 'Source #0 (aqsis-1.4.1.tar.gz):'
Source #0 (aqsis-1.4.1.tar.gz):
+ /bin/gzip -dc /home/lanuhum/RPM/SOURCES/aqsis-1.4.1.tar.gz
+ /bin/tar -xf -      архив распакован!!!
+ cd aqsis-1.4.1    зашла в каталог
+ /bin/chmod -c -Rf u+rwX,go-w .
+ exit 0
Выполняется(%build): /bin/sh -e /home/lanuhum/tmp/rpm-tmp.73141
+ umask 022
+ /bin/mkdir -p /home/lanuhum/RPM/BUILD
+ cd /home/lanuhum/RPM/BUILD
+ cd aqsis-1.4.1
+ mkdir build   Ей нужен отдельный - НА!!!
+ pushd ./build
~/RPM/BUILD/aqsis-1.4.1/build ~/RPM/BUILD/aqsis-1.4.1
+ cmake /home/lanuhum/RPM/SOURCES/aqsis-1.4.1 заменить на точку? соберётся? -DCMAKE_INSTALL_PREFIX=/usr -DAQSIS_USE_FLTK:BOOL=ON -DAQSIS_USE_OPENEXR:BOOL=ON -DAQSIS_BOOST_LIB_SUFFIX:STRING=-mt -DCMAKE_CMAKE_BUILD_TYPE=Release -DAQSIS_ENABLE_TESTING:BOOL=OFF -DAQSIS_USE_PLUGINS:BOOL=ON -DAQSIS_USE_TIMERS:BOOL=ON -DSYSCONFDIR:STRING=/etc -DLIBDIR=/usr/lib64 -DDEFAULT_DISPLAYPATH=/usr/lib64/aqsis
CMake Error at cmake/modules/OutOfSourceBuild.cmake:4 (MESSAGE):
  Aqsis requires an out of source build.  Please create a separate build - Где ей его создавать?
  directory and run 'cmake path_to_source [options]' there.
Call Stack (most recent call first):
  CMakeLists.txt:21 (INCLUDE)[/quote]
« Последнее редактирование: 11.01.2009 15:35:36 от Skull »

Alexei_VM

  • Гость
заменить на точку? соберётся?

Нет, конечно. Знаете разницу между точкой и двумя точками?

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Цитировать
Знаете разницу между точкой и двумя точками?
Не знаю...От этого не собирается?

Вот я взял фрагмент, из спека lmms из пакета src альтлинуксового репозитория,созданного профессионалом, без абсолютных путей. Она тоже смаке собирается:
Цитировать
%prep
%setup -q
##find ./plugins -type f -print0 | xargs -r0 %__subst "s|(LDFLAGS)|(LDFLAGS) \$(QT_LDADD) -lpthread |g"
##find ./plugins -type f -print0 | xargs -r0 %__subst "s|(LIBS)|(LIBS) \$(QT_LDADD) -lpthread |g"

%build
cmake . -DCMAKE_INSTALL_PREFIX=/usr

Где здесь создание каких-то дополнительных каталогов? Нету. Соберётся Lmms по такому спеку? Aqsis нет:
Цитировать
Выполняется(%build): /bin/sh -e /home/lanuhum/tmp/rpm-tmp.78947
+ umask 022
+ /bin/mkdir -p /home/lanuhum/RPM/BUILD
+ cd /home/lanuhum/RPM/BUILD
+ cd aqsis-1.4.1
+ cmake . -DCMAKE_INSTALL_PREFIX=/usr -DAQSIS_USE_FLTK:BOOL=ON -DAQSIS_USE_OPENEXR:BOOL=ON -DAQSIS_BOOST_LIB_SUFFIX:STRING=-mt -DCMAKE_CMAKE_BUILD_TYPE=Release -DAQSIS_ENABLE_TESTING:BOOL=OFF -DAQSIS_USE_PLUGINS:BOOL=ON -DAQSIS_USE_TIMERS:BOOL=ON -DSYSCONFDIR:STRING=/etc -DLIBDIR=/usr/lib64 -DDEFAULT_DISPLAYPATH=/usr/lib64/aqsis
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Error at cmake/modules/OutOfSourceBuild.cmake:4 (MESSAGE):
  Aqsis requires an out of source build.  Please create a separate build
  directory and run 'cmake path_to_source [options]' there.
Call Stack (most recent call first):
  CMakeLists.txt:21 (INCLUDE)


-- Configuring incomplete, errors occurred!
ошибка: Неверный код возврата из /home/lanuhum/tmp/rpm-tmp.78947 (%build)


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

Alexei_VM

  • Гость
Цитировать
Знаете разницу между точкой и двумя точками?
Не знаю...От этого не собирается?

Пока не узнаете, точно не соберется. Кстати, ".." в Виндовз означают ровно то же, что и в Линукс.

Вобщем, читайте тут http://linux.armd.ru/ru/documentation/metod/filesystem_use/, можно сразу поиском по подстроке "..".

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Цитировать
Пока не узнаете, точно не соберется.
Да и хрен с ней. Если бы она собралась при абсолютных путях, я бы поинтересовался, как корректно заменить абсолютные пути относительными, чтобы собрать src.rpm для пользователей,а так, ну его на фиг. Я выучу страниц 500 самого нудного на свете текста, а потом выяснится, что Альтлинукс нисколько не Дебиан и разработчики решили какой-то модуль в тарабахмарабах пакете не собирать, да, так и останусь без этого грёбаного пакета.

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Кстати, в спеке нужно было написать ни что-то типа, как вы, Alexei_VM , советовали: mkdir build, pushd ./build, а  mkdir BUILDDIR
cd BUILDDIR, тогда можно было бы продвинуться аж до такого состояния:
Цитировать
Выполняется(%build): /bin/sh -e /home/lanuhum/tmp/rpm-tmp.73547
+ umask 022
+ /bin/mkdir -p /home/lanuhum/RPM/BUILD
+ cd /home/lanuhum/RPM/BUILD
+ cd aqsis-1.4.1
+ mkdir BUILDDIR
+ cd BUILDDIR
+ cmake /home/lanuhum/RPM/BUILD/aqsis-1.4.1 -DCMAKE_INSTALL_PREFIX=/usr -DAQSIS_USE_FLTK:BOOL=ON -DAQSIS_USE_OPENEXR:BOOL=ON -DAQSIS_BOOST_LIB_SUFFIX:STRING=-mt -DCMAKE_CMAKE_BUILD_TYPE=Release -DAQSIS_ENABLE_TESTING:BOOL=OFF -DAQSIS_USE_PLUGINS:BOOL=ON -DAQSIS_USE_TIMERS:BOOL=ON -DSYSCONFDIR:STRING=/etc -DLIBDIR=/usr/lib64 -DDEFAULT_DISPLAYPATH=/usr/lib64/aqsis
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Warning (dev) at CMakeLists.txt:177 (ADD_DEFINITIONS):
  Policy CMP0005 is not set: Preprocessor definition values are now escaped
  automatically.  Run "cmake --help-policy CMP0005" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at cmake/platform/linux.cmake:46 (ADD_DEFINITIONS):
  Policy CMP0005 is not set: Preprocessor definition values are now escaped
  automatically.  Run "cmake --help-policy CMP0005" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt:194 (INCLUDE)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at shadercompiler/aqsltell/CMakeLists.txt:11 (ADD_DEFINITIONS):
  Policy CMP0005 is not set: Preprocessor definition values are now escaped
  automatically.  Run "cmake --help-policy CMP0005" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
AQSIS_BOOST_FILESYSTEM_LIBRARY (ADVANCED)
    linked by target "aqsl" in directory /home/lanuhum/RPM/BUILD/aqsis-1.4.1/shadercompiler/aqsl
AQSIS_BOOST_REGEX_LIBRARY (ADVANCED)
    linked by target "eqsl" in directory /home/lanuhum/RPM/BUILD/aqsis-1.4.1/tools/eqsl
AQSIS_BOOST_THREAD_LIBRARY (ADVANCED)
    linked by target "eqsl" in directory /home/lanuhum/RPM/BUILD/aqsis-1.4.1/tools/eqsl
AQSIS_BOOST_WAVE_LIBRARY (ADVANCED)
    linked by target "aqsl" in directory /home/lanuhum/RPM/BUILD/aqsis-1.4.1/shadercompiler/aqsl
AQSIS_TIFFXX_LIBRARIES (ADVANCED)
    linked by target "aqsistex" in directory /home/lanuhum/RPM/BUILD/aqsis-1.4.1/texturing/texlib
    linked by target "shadervm" in directory /home/lanuhum/RPM/BUILD/aqsis-1.4.1/shadercompiler/shadervm
    linked by target "aqsislib" in directory /home/lanuhum/RPM/BUILD/aqsis-1.4.1/renderer/render
    linked by target "aqsis" in directory /home/lanuhum/RPM/BUILD/aqsis-1.4.1/renderer/aqsis
    linked by target "slxargs" in directory /home/lanuhum/RPM/BUILD/aqsis-1.4.1/shadercompiler/slxargs
    linked by target "aqsltell" in directory /home/lanuhum/RPM/BUILD/aqsis-1.4.1/shadercompiler/aqsltell
    linked by target "teqser" in directory /home/lanuhum/RPM/BUILD/aqsis-1.4.1/texturing/teqser

-- Configuring incomplete, errors occurred!
ошибка: Неверный код возврата из /home/lanuhum/tmp/rpm-tmp.73547 (%build)


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

Погорячился я в той теме, про Cmake. написав, что продвинулся, наоборот, следующие мои действия привели меня к тому, что Cmake даже не начинала своей деятельности, поэтому и про полицию ничего не писала...

Alexei_VM

  • Гость
Погорячился я в той теме, про Cmake. написав, что продвинулся, наоборот, следующие мои действия привели меня к тому, что Cmake даже не начинала своей деятельности, поэтому и про полицию ничего не писала...

Покопались бы пол-часика в этих cmake-конфигах, почитали бы http://wiki.aqsis.org/doc/dev/build

Тогда бы вычислили, что надо запускать cmake в виде
cmake -DAQSIS_BOOST_LIB_SUFFIX="-mt.so" -DAQSIS_BOOST_LIB_PREFIX="lib"   ../

Естественно, для всех boost-библиотек должны стоять соответствующие devel-пакеты.

P.S. А дальше придется бороться с libtiff :) Но это уже вторая серия.

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Да уж...Дело в том, что я начал сборку с версии 1.2, написанную под scons. Тот выдал ошибку. Тогда я взял новейшую 1.4 с офсайта, а она под Смаке написана и снова проблемы. Я решил по своему пока. Установил новейшую версию scons и та преспокойненько собрала  aqsis-1.2:
Цитировать
Записан: /home/lanuhum/RPM/RPMS/x86_64/aqsis-1.2.0-1alt.x86_64.rpm
Записан: /home/lanuhum/RPM/RPMS/x86_64/libaqsis-1.2.0-1alt.x86_64.rpm
Записан: /home/lanuhum/RPM/RPMS/x86_64/libaqsis-devel-1.2.0-1alt.x86_64.rpm

В связи с этим у меня такая просьба к вам, Alexei_VM : проверьте, пожалуйста, этот спек и подскажите, что нужно откорректировать, чтобы он стал настоящим. Особенно меня интересует как сделать так, чтобы при сборке х86-64 записывалось в имя 64, или это необязательно? И финал меня интересует : %changelog. Туда нужно что-то добавлять, оттуда удалять?
Цитировать
%define name      aqsis
%define version      1.2.0
#define snapshot   2006-12-23
%define release      1alt
%define lib_name_orig   libaqsis
%define lib_major   1
%define lib_name   libaqsis

Summary:   Open source RenderMan-compliant 3D rendering solution
Name:           %{name}
Version:        %{version}
Release:        %{release}
License:   GPL
Url:      http://www.aqsis.com/
Group:      Graphics
#Source:      %{name}-%{version}-%{snapshot}.tar.bz2
Source:      %{name}-%{version}.tar.bz2
BuildRoot:   %{_tmppath}/%{name}-buildroot
Requires:   %{lib_name} = %{version}
BuildRequires:   freeglut-devel
BuildRequires:   libtiff-devel
BuildRequires:   XFree86-devel
BuildRequires:   bison
BuildRequires:   flex
BuildRequires:  fltk-devel
BuildRequires:   scons
BuildRequires:   xsltproc
BuildRequires:   openexr-devel
BuildRequires:   zlib-devel
BuildRequires:   boost-devel

%description
Tha Aqsis rendering system consists of a set of libraries and applications for
creating high-quality computer imagery using the Pixar RenderMan Interface.

%package -n libaqsis
Summary: Aqsis rendering system
License: GPL/LGPL
Group: System/Libraries

%description -n %{lib_name}
The Aqsis library.

%package -n libaqsis-devel
Summary: Aqsis rendering system
License: GPL
Group: Development/C++
Requires: %{lib_name} >= %{version}
Provides: libaqsis-devel = %{version}

%description -n %{lib_name}-devel
The Aqsis library developpement files.

%prep
%setup -q

%build
export CFLAGS=$RPM_OPT_FLAGS
export CXXFLAGS=$RPM_OPT_FLAGS
scons %{?_smp_mflags} destdir=$RPM_BUILD_ROOT \
                install_prefix=%{_prefix} \
                sysconfdir=%{_sysconfdir} \
      libdir=%{_libdir} \
                no_rpath=true \
                build

%install
rm -rf $RPM_BUILD_ROOT
export CFLAGS=$RPM_OPT_FLAGS
export CXXFLAGS=$RPM_OPT_FLAGS
scons install

chmod a+rx $RPM_BUILD_ROOT%{_datadir}/%{name}/content/ribs/*/*/*.sh
sed -i 's|/usr/bin/bash|/bin/bash|' $RPM_BUILD_ROOT%{_datadir}/%{name}/content/ribs/*/*/*.sh

%clean
rm -rf $RPM_BUILD_ROOT

%post -n %{lib_name} -p /sbin/ldconfig

%postun -n %{lib_name} -p /sbin/ldconfig

%files
%defattr(-,root,root)
%{_bindir}/*
%doc AUTHORS COPYING INSTALL README ReleaseNotes
%{_datadir}/%{name}
%config(noreplace) %{_sysconfdir}/*
%exclude %{_datadir}/%{name}/content/ribs/*/*/*.bat

%files -n %{lib_name}
%defattr(-,root,root)
%{_libdir}/%{name}
%{_libdir}/*.so.*

%files -n %{lib_name}-devel
%defattr(-,root,root)
%{_libdir}/*.so
%{_includedir}/*


%changelog
* Mon Feb 19 2007 Pascal Terjan <pterjan@mandriva.org> 1.2.0-1mdv2007.0
+ Revision: 122889
- fix release
- 1.2.0 final
- Drop patch0

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Час от часу не легче. Раскудрить твою через коромысоло!
Собраться собралось, но установка требует:
Цитировать
[root@localhost ~]# rpm -Uhv /home/lanuhum/RPM/RPMS/x86_64/aqsis-1.2.0-1alt.x86_64.rpm
error: failed dependencies:
        python2.5(OpenGL)   is needed by aqsis-1.2.0-1alt
        python2.5(cgkit)   is needed by aqsis-1.2.0-1alt
[root@localhost ~]#

Это что ему надо?

Оффлайн LanuHum

  • Завсегдатай
  • *
  • Сообщений: 171
    • Email
Ага, один модуль нашёл, а этот где? (cgkit) ?

Drool

  • Гость
Drool ,это две ваши цитаты. Вы, вообще, контролируете ситуацию? Вы даёте ссылку на реконф, про который сами говорите, что он не всем подходит, и про который я вам говорю, что мне не подходит. Вы сами запутываете, а потом хотите, чтобы меньше вопросов было...

Я не запутываю. И ситуацию пытаетесь контролировать Вы, а не я. Я то тут при чем? ;)
Вы ведь не указали какую ошибку выдает при попытке использовать autoreconf, а гентушная ругань лечится именно так.

Drool

  • Гость
Час от часу не легче. Раскудрить твою через коромысоло!
Собраться собралось, но установка требует:
Цитировать
[root@localhost ~]# rpm -Uhv /home/lanuhum/RPM/RPMS/x86_64/aqsis-1.2.0-1alt.x86_64.rpm
error: failed dependencies:
        python2.5(OpenGL)   is needed by aqsis-1.2.0-1alt
        python2.5(cgkit)   is needed by aqsis-1.2.0-1alt
[root@localhost ~]#

Это что ему надо?

Ему надо
apt-get install /home/lanuhum/RPM/RPMS/x86_64/aqsis-1.2.0-1alt.x86_64.rpm

Drool

  • Гость
%define release      1alt

Замените 1alt на alt1. Потом натравите на спек cleanup_spec из пакета rpm-utils, поудаляйте все записи BuildRequires и натравите на спек buildreq -bi из того же самого пакета.