1

Пытаюсь поставить skype call recorder.
Сперва поставил rpm с офф сайта. Но при работе программы нет иконки у значка в трее. Снес.
Теперь пробую tar. Много чего уже поставил по зависимостям, cmake наконец-то отработал, затем make дошёл до этого места.

$ make
Scanning dependencies of target Version
[  3%] Checking version.cpp
[  3%] Built target Version
[  6%] Generating qrc_resources.cxx
[ 10%] Generating moc_call.cxx
[ 13%] Generating moc_gui.cxx
[ 16%] Generating moc_preferences.cxx
[ 20%] Generating moc_recorder.cxx
[ 23%] Generating moc_skype.cxx
[ 26%] Generating moc_smartwidgets.cxx
[ 30%] Generating moc_trayicon.cxx
Scanning dependencies of target skype-call-recorder
[ 33%] Building CXX object CMakeFiles/skype-call-recorder.dir/call.o
[ 36%] Building CXX object CMakeFiles/skype-call-recorder.dir/common.o
[ 40%] Building CXX object CMakeFiles/skype-call-recorder.dir/gui.o
[ 43%] Building CXX object CMakeFiles/skype-call-recorder.dir/mp3writer.o
[ 46%] Building CXX object CMakeFiles/skype-call-recorder.dir/preferences.o
[ 50%] Building CXX object CMakeFiles/skype-call-recorder.dir/recorder.o
[ 53%] Building CXX object CMakeFiles/skype-call-recorder.dir/skype.o
[ 56%] Building CXX object CMakeFiles/skype-call-recorder.dir/trayicon.o
[ 60%] Building CXX object CMakeFiles/skype-call-recorder.dir/utils.o
[ 63%] Building CXX object CMakeFiles/skype-call-recorder.dir/version.o
[ 66%] Building CXX object CMakeFiles/skype-call-recorder.dir/vorbiswriter.o
[ 70%] Building CXX object CMakeFiles/skype-call-recorder.dir/wavewriter.o
[ 73%] Building CXX object CMakeFiles/skype-call-recorder.dir/writer.o
[ 76%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_call.o
[ 80%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_gui.o
[ 83%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_preferences.o
[ 86%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_recorder.o
[ 90%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_skype.o
[ 93%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_smartwidgets.o
[ 96%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_trayicon.o
[100%] Building CXX object CMakeFiles/skype-call-recorder.dir/qrc_resources.o
Linking CXX executable skype-call-recorder
/usr/bin/ld: CMakeFiles/skype-call-recorder.dir/vorbiswriter.o: undefined reference to symbol 'vorbis_block_init'
/usr/bin/ld: note: 'vorbis_block_init' is defined in DSO /usr/lib64/libvorbis.so.0 so try adding it to the linker command line
/usr/lib64/libvorbis.so.0: could not read symbols: Invalid operation
collect2: выполнение ld завершилось с кодом возврата 1
make[2]: *** [skype-call-recorder] Ошибка 1
make[1]: *** [CMakeFiles/skype-call-recorder.dir/all] Ошибка 2
make: *** [all] Ошибка 2

и дальше ни в какую. Изгуглился уже. Что ему надо?

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.

2

Ему надо исходники пропатчить, указав что надо использовать libvorbis.so.0

Аккаунт отключен по просьбе пользователя. (28.12.2014)

3

можно поподробнее, никогда патчаньем не занимался. Как это делается, где взять патч ну и так далее.

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.

4

Добавить надо где-то:
-lvorbis
Посмотрите где там перечисляются либы, они перечисляются, начинаясь с тире, а вместо lib(lib64) указывается просто l

Аккаунт отключен по просьбе пользователя. (28.12.2014)

5

Сделал так

$ grep -ER '[ ,;]-l' .
./CMakeFiles/skype-call-recorder.dir/link.txt:/usr/bin/c++   -Wall -W -pipe -fno-exceptions -O2 -s    CMakeFiles/skype-call-recorder.dir/call.o CMakeFiles/skype-call-recorder.dir/common.o CMakeFiles/skype-call-recorder.dir/gui.o CMakeFiles/skype-call-recorder.dir/mp3writer.o CMakeFiles/skype-call-recorder.dir/preferences.o CMakeFiles/skype-call-recorder.dir/recorder.o CMakeFiles/skype-call-recorder.dir/skype.o CMakeFiles/skype-call-recorder.dir/trayicon.o CMakeFiles/skype-call-recorder.dir/utils.o CMakeFiles/skype-call-recorder.dir/version.o CMakeFiles/skype-call-recorder.dir/vorbiswriter.o CMakeFiles/skype-call-recorder.dir/wavewriter.o CMakeFiles/skype-call-recorder.dir/writer.o CMakeFiles/skype-call-recorder.dir/moc_call.o CMakeFiles/skype-call-recorder.dir/moc_gui.o CMakeFiles/skype-call-recorder.dir/moc_preferences.o CMakeFiles/skype-call-recorder.dir/moc_recorder.o CMakeFiles/skype-call-recorder.dir/moc_skype.o CMakeFiles/skype-call-recorder.dir/moc_smartwidgets.o CMakeFiles/skype-call-recorder.dir/moc_trayicon.o CMakeFiles/skype-call-recorder.dir/qrc_resources.o  -o skype-call-recorder -rdynamic -lmp3lame -lid3 -lvorbisenc -lQtGui -lQtDBus -lQtXml -lQtNetwork -lQtCore
./CMakeFiles/CMakeOutput.log: /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/collect2 --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTryCompileExec /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crti.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/crtbegin.o -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3 -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../.. CMakeFiles/cmTryCompileExec.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/crtend.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crtn.o
./CMakeFiles/CMakeOutput.log:  link line: [ /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/collect2 --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTryCompileExec /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crti.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/crtbegin.o -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3 -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../.. CMakeFiles/cmTryCompileExec.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/crtend.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crtn.o]
./CMakeFiles/CMakeOutput.log: /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/collect2 --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTryCompileExec /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crti.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/crtbegin.o -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3 -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../.. CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/crtend.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crtn.o
./CMakeFiles/CMakeOutput.log:  link line: [ /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/collect2 --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTryCompileExec /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crti.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/crtbegin.o -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3 -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../.. CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/crtend.o /usr/lib/gcc/x86_64-mageia-linux-gnu/4.6.3/../../../../lib64/crtn.o]

Ничего больше не придумал. Но даже так попались только *.log и *.txt

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.

6

вот строчка:
-lQtGui -lQtDBus -lQtXml -lQtNetwork -lQtCore
допишите сюда попробуйте

Аккаунт отключен по просьбе пользователя. (28.12.2014)
Спасибо сказали: zrpg1

7

Пришлось дописать ещё -logg. И всё отлично. И значок в трее тоже есть.
Остался всего один вопрос, вроде тоже по теме. А как можно пакет rpm из этого собрать?

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.

8 (2012-10-11 22:51:39 отредактировано romkaromka)

Взять и сделать по аналогии. Наиболее подходящая аналогия: ftp://ftp.mageia.org.ru/mageia2/SRPMS/ rr42su. Скачать, открыть через file-roller.
Обязательно сообщите разработчикам о том, чего не хватило и пришлось дописать.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

9

на вики нашёл статью про сборку rpm. Твою smile Пока что разбираюсь.

romkaromka пишет:

Обязательно сообщите разработчикам о том, чего не хватило и пришлось дописать.

вот это проблема, дело в том что английский я почти не знаю, иначе давно бы уже все маны перечитал smile

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.

10

zRPG пишет:

вот это проблема, дело в том что английский я почти не знаю, иначе давно бы уже все маны перечитал smile

В гугле http://translate.google.ru/?hl=ru&tab=wT#ru/en/ написать односложные простые предложения. На первом месте обязательно подлежащее, на втором сказуемое, затем всё остальное - гугл переведет нормально.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

11

Вопросов тьма. Вот например:

У меня tar файл называется skype-call-recorder-0.8.tar.gz, в вики, в статье сборки rpm, в имени файла указан scr, что как я понимаю означает исходники, тогда получается что в моём архиве исходников нет?

Вот ещё один. В папку SOURCES кладём исходник и патчи. Архив выглядит так:

skype-call-recorder-0.8
├── call.cpp
├── call.h
├── CMakeLists.txt
├── CMakeModules
│   ├── Findid3.cmake
│   ├── Findlame.cmake
│   └── Findvorbisenc.cmake
├── common.cpp
├── common.h
├── COPYING
├── gitcommit
├── gui.cpp
├── gui.h
├── icon
│   ├── callstart.png
│   ├── icon.svg
│   ├── README
│   └── skypeblue.png
├── icongray.png
├── icon.png
├── INSTALL
├── makeversion
├── mp3writer.cpp
├── mp3writer.h
├── preferences.cpp
├── preferences.h
├── recorder.cpp
├── recorder.h
├── resources.qrc
├── skype-call-recorder.control
├── skype-call-recorder.desktop
├── skype-call-recorder.spec
├── skype.cpp
├── skype.h
├── smartwidgets.h
├── static
│   └── README
├── trayicon.cpp
├── trayicon.h
├── utils
│   ├── cmake-static
│   ├── setup-ccache
│   └── syncviewer
├── utils.cpp
├── utils.h
├── version
├── vorbiswriter.cpp
├── vorbiswriter.h
├── wavewriter.cpp
├── wavewriter.h
├── writer.cppallstart.png
└── writer.h

Если НАПРИМЕР надо пропатчить файл allstart.png то рядом с архивом tar в SOURCES надо положить файл разницы самого архива (то есть, распаковали архив изменили файл собрали архив обратно, затем сравнили два архива и файл разницы положили рядом) или просто файл разницы allstart.png положить прямо рядом с архивом tar?

Если дописывать -lvorbis и -logg приходится только после того как отработает cmake, то куда применять патч, до работы cmake?

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.

12

Вы можете после make в spec файле вызвать, например, sed и дописать куда нужно. Но лучше найти куда писать до make. Для простоты опять же можно так: Глава III. Добавление патча методом замены, локализация rpm-пакета.
link.txt разве нет?

Аккаунт отключен по просьбе пользователя. (28.12.2014)

13 (2012-10-18 02:56:02 отредактировано zrpg)

romkaromka пишет:

link.txt разве нет?

до работы cmake.

Вот что у меня получилось. Хотя делаю я это в первый раз, так что сильно не пинайте wink
skype-call-recorder.spec (обязательно его именем tar архива называть?)

Spoiler

%define rel 1
%define suff mrc.mga2

Name: skype-call-recorder
Version: 0.8
Release: %{rel}.%{suff}
Summary: запись звонков skype
URL: http://atdot.ch/scr
Group: Internet
License: GPL
Source0: %{name}-%{version}.tar.gz

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: gcc, make, cmake, kernel-devel, kernel-headers, %{_lib}lame-devel, %{_lib}id3-devel, %{_lib}qt4-devel, %{_lib}ogg-devel, %{_lib}vorbis-devel

%description
Запись разговоров через API Skype

%prep
%setup -q

%build
cmake .
sed -i 's/-lQtCore/-lQtCore -lvorbis -logg/' CMakeFiles/skype-call-recorder.dir/link.txt
make

%install
make DESTDIR=%{buildroot} install

%changelog

# rpmbuild -ba ./skype-call-recorder.spec 
Выполняется(%prep): /bin/sh -e /var/tmp/rpm-tmp.r1pFlS
+ umask 022
+ cd /root/rpmbuild/BUILD
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ cd /root/rpmbuild/BUILD
+ rm -rf skype-call-recorder-0.8
+ /bin/tar -xf -
+ /usr/bin/gzip -dc /root/rpmbuild/SOURCES/skype-call-recorder-0.8.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd skype-call-recorder-0.8
+ exit 0
Выполняется(%build): /bin/sh -e /var/tmp/rpm-tmp.nfoCCT
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd skype-call-recorder-0.8
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ cmake .
-- 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
-- Found lame: /usr/include/lame/lame.h /usr/lib64/libmp3lame.so
-- Found id3: /usr/include/id3/tag.h /usr/lib64/libid3.so
-- Found vorbisenc: /usr/include/vorbis/vorbisenc.h /usr/lib64/libvorbisenc.so
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt4: /usr/bin/qmake (found version "4.8.2")
-- Configuring done
-- Generating done
-- Build files have been written to: /root/rpmbuild/BUILD/skype-call-recorder-0.8
+ sed -i 's/-lQtCore/-lQtCore -lvorbis -logg/' CMakeFiles/skype-call-recorder.dir/link.txt
+ make
Scanning dependencies of target Version
[  3%] Checking version.cpp
[  3%] Built target Version
[  6%] Generating qrc_resources.cxx
[ 10%] Generating moc_call.cxx
[ 13%] Generating moc_gui.cxx
[ 16%] Generating moc_preferences.cxx
[ 20%] Generating moc_recorder.cxx
[ 23%] Generating moc_skype.cxx
[ 26%] Generating moc_smartwidgets.cxx
[ 30%] Generating moc_trayicon.cxx
Scanning dependencies of target skype-call-recorder
[ 33%] Building CXX object CMakeFiles/skype-call-recorder.dir/call.o
[ 36%] Building CXX object CMakeFiles/skype-call-recorder.dir/common.o                
[ 40%] Building CXX object CMakeFiles/skype-call-recorder.dir/gui.o                   
[ 43%] Building CXX object CMakeFiles/skype-call-recorder.dir/mp3writer.o             
[ 46%] Building CXX object CMakeFiles/skype-call-recorder.dir/preferences.o           
[ 50%] Building CXX object CMakeFiles/skype-call-recorder.dir/recorder.o              
[ 53%] Building CXX object CMakeFiles/skype-call-recorder.dir/skype.o                 
[ 56%] Building CXX object CMakeFiles/skype-call-recorder.dir/trayicon.o              
[ 60%] Building CXX object CMakeFiles/skype-call-recorder.dir/utils.o                 
[ 63%] Building CXX object CMakeFiles/skype-call-recorder.dir/version.o               
[ 66%] Building CXX object CMakeFiles/skype-call-recorder.dir/vorbiswriter.o          
[ 70%] Building CXX object CMakeFiles/skype-call-recorder.dir/wavewriter.o            
[ 73%] Building CXX object CMakeFiles/skype-call-recorder.dir/writer.o                
[ 76%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_call.o              
[ 80%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_gui.o               
[ 83%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_preferences.o       
[ 86%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_recorder.o          
[ 90%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_skype.o             
[ 93%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_smartwidgets.o      
[ 96%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_trayicon.o          
[100%] Building CXX object CMakeFiles/skype-call-recorder.dir/qrc_resources.o         
Linking CXX executable skype-call-recorder
[100%] Built target skype-call-recorder
+ exit 0
Выполняется(%install): /bin/sh -e /var/tmp/rpm-tmp.py3XmV
+ umask 022
+ cd /root/rpmbuild/BUILD
+ '[' /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64 '!=' / ']'
+ rm -rf /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64
++ dirname /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64
+ mkdir -p /root/rpmbuild/BUILDROOT
+ mkdir /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64
+ cd skype-call-recorder-0.8
+ '[' 1 -eq 1 ']'
+ make DESTDIR=/root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64 install
[  3%] Checking version.cpp
[  3%] Built target Version
[100%] Built target skype-call-recorder
Install the project...
-- Install configuration: "RELEASE"
-- Installing: /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64/usr/local/bin/skype-call-recorder
-- Installing: /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64/usr/local/share/applications/skype-call-recorder.desktop
-- Installing: /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64/usr/local/share/icons/hicolor/128x128/apps/skype-call-recorder.png
+ /usr/lib/rpm/mageia/find-debuginfo.sh /root/rpmbuild/BUILD/skype-call-recorder-0.8

+ '[' -n '' ']'
+ /usr/share/spec-helper/clean_files
+ '[' -n '' ']'
+ /usr/share/spec-helper/compress_files .xz
+ '[' -n '' ']'
+ /usr/share/spec-helper/relink_symlinks
+ '[' -n '' ']'
+ /usr/share/spec-helper/clean_perl
+ '[' -n '' ']'
+ /usr/share/spec-helper/lib_symlinks
+ '[' -n '' ']'
+ /usr/share/spec-helper/gprintify
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_mo
+ '[' -n '' ']'
+ /usr/share/spec-helper/translate_menu
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_pamd
+ '[' -n '' ']'
+ /usr/share/spec-helper/remove_info_dir
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_eol
+ '[' -n '' ']'
+ /usr/share/spec-helper/check_elf_files
Warning: unused libraries in /usr/local/bin/skype-call-recorder: libQtXml.so.4
 libgcc_s.so.1

+ /usr/lib/rpm/mageia/brp-java-repack-jars
Processing files: skype-call-recorder-debug-0.8-1.mrc.mga2.x86_64
Проверка на неупакованный(е) файл(ы): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64
ошибка: Обнаружен(ы) установленный(е) (но не упакованный(е)) файл(ы):
   /usr/local/bin/skype-call-recorder
   /usr/local/share/applications/skype-call-recorder.desktop
   /usr/local/share/icons/hicolor/128x128/apps/skype-call-recorder.png


Ошибки сборки пакетов:
    Обнаружен(ы) установленный(е) (но не упакованный(е)) файл(ы):
   /usr/local/bin/skype-call-recorder
   /usr/local/share/applications/skype-call-recorder.desktop
   /usr/local/share/icons/hicolor/128x128/apps/skype-call-recorder.png

Проверил наличие таких файлов в системе. Их нет. И чего он хочет?

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.

14 (2012-10-18 08:31:43 отредактировано romkaromka)

Спек называют по имени программы без указания версии.
1) Summary и description пишутся на английском.
2) Group: Internet - такой группы нет (см. https://wiki.mageia.org/en/RPM_groups_policy)
3) добавить в спек:
%files
/usr/local/bin/skype-call-recorder
/usr/local/share/applications/skype-call-recorder.desktop
/usr/local/share/icons/hicolor/128x128/apps/skype-call-recorder.png
И всё соберётся. Останется только подумать как изменить префикс с /usr/local на /usr. %PREFIX=/usr

Аккаунт отключен по просьбе пользователя. (28.12.2014)

15

zRPG пишет:

Сделал так

$ grep -ER '[ ,;]-l' .

Ничего больше не придумал. Но даже так попались только *.log и *.txt

Где сделали? В каталоге с исходником?

Mageia6, KDE, LXQt, x86_64.
Человек человеку - волк, а зомби зомби - зомби!

16

Архив исходников распаковать и поиском по содержимому найти. Например, grep -r чего_ищем.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

17

romkaromka пишет:

1) Summary и description пишутся на английском.

Summary: Skype call record
%description
Recording calls through Skype API
в гуголе переводил smile

romkaromka пишет:

2) Group: Internet - такой группы нет

Group: Networking/Other

%files
/usr/local/bin/skype-call-recorder
/usr/local/share/applications/skype-call-recorder.desktop
/usr/local/share/icons/hicolor/128x128/apps/skype-call-recorder.png

romkaromka пишет:

подумать как изменить префикс с /usr/local на /usr. %PREFIX=/usr

%install
make PREFIX=/usr DESTDIR=%{buildroot} install

теперь всё правильно?

Попробовал собрать, собралось с одним предупреждением,

Warning: unused libraries in /usr/local/bin/skype-call-recorder: libQtXml.so.4
 libgcc_s.so.1

Это нормально?

Zomby пишет:

Где сделали? В каталоге с исходником?

распаковал исходник, и в его главном каталоге. Меня правда смутило, что файл .txt . Сперва думал что это какой-то текстовый файл, описание или ещё что-то smile

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.

18

/usr/bin в спеке меняется на %{_bindir}
/usr/share в спеке меняется на %{_datadir}
Предупреждение нормально.
Если соберется для обоих архитектур, то всё ОК.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

19 (2012-10-21 13:52:17 отредактировано olelukoie)

zRPG пишет:
romkaromka пишет:

подумать как изменить префикс с /usr/local на /usr. %PREFIX=/usr

%install
make PREFIX=/usr DESTDIR=%{buildroot} install

теперь всё правильно?

Нет, не правильно:

1) Вместо 'cmake .' в секции %build надо вызывать макрос %cmake. Тогда и префикс будет правильным, и опции сборки такие, какие положено использовать в соответствии с политиками дистрибутива.
2) Если установка делается командой 'make DESTDIR=... install', то вместо нее надо в секции %install вызывать макрос %makeinstall_std. При этом префикс указывать не надо, он будет определен на стадии %build. Вообще изменять префикс установки на стадии установки опасно, так как прога может при сборке запоминать пути и потом не найдет своих компонент.

Да, кстати, %cmake для сборки создает директорию build, так что надо изменить команду sed соответствующим образом.

Спасибо сказали: romkaromka1

20 (2012-10-21 14:24:39 отредактировано olelukoie)

А чтобы добавить либы vorbis и org, надо использовать такой патч:

--- a/CMakeLists.txt    2008-11-19 01:39:18.000000000 +0300
+++ b/CMakeLists.txt    2012-10-21 15:11:47.750257840 +0400
@@ -75,7 +75,7 @@
 
 FIND_PACKAGE(vorbisenc REQUIRED)
 INCLUDE_DIRECTORIES(${VORBISENC_INCLUDE_DIR})
-SET(LIBRARIES ${LIBRARIES} ${VORBISENC_LIBRARY})
+SET(LIBRARIES ${LIBRARIES} ${VORBISENC_LIBRARY} vorbis ogg)
 
 # Qt

Использовать так:
1. Сохраняете этот код в текстовый файл с произвольным именем и расширением patch.
2. Копируете этот файл в директорию rpmbuild/SOURCES (туда же, где лежит архив с исходниками для сборки)
3. В спеке после строки 'Source: ...' добавляете строку:
Patch0: имя-файла-с-патчем.patch
Кстати, цифра 0 после слова Source не нужна, эта цифра используется, только если исходных файлов несколько.
4. В спеке после строки %setup добавляете строку с вызовом макроса %apply_patches

Все.

Спасибо сказали: romkaromka1

21

Кстати, народ, только мне одному кажется, что этот топик надо перенести в раздел "Обсуждение сборки пакетов"?

22

olelukoie пишет:

Кстати, народ, только мне одному кажется, что этот топик надо перенести в раздел "Обсуждение сборки пакетов"?

Перенес

Fedora & GNOME

23 (2012-10-22 16:46:03 отредактировано zrpg)

olelukoie пишет:

Кстати, народ, только мне одному кажется, что этот топик надо перенести в раздел "Обсуждение сборки пакетов"?

тема начиналась как сборка программы и никакого отношения к пакету rpm не имела. Затем я спросил про сборку rpm, так как думал что это просто, и ответ займёт максимум два поста. Что ж, оказалось что это совсем не быстро и не так-то просто.

olelukoie пишет:

Да, кстати, %cmake для сборки создает директорию build, так что надо изменить команду sed соответствующим образом.

вот так?

Spoiler

sed -i 's/-lQtCore/-lQtCore -lvorbis -logg/' build/CMakeFiles/skype-call-recorder.dir/link.txt

я так понимаю, раз применяется patch то команда sed уже не нужна?

В общем вот что с учётом изменений получилось

Spoiler

%define rel 1
%define suff mrc.mga2

Name: skype-call-recorder
Version: 0.8
Release: %{rel}.%{suff}
Summary: Skype call record
URL: http://atdot.ch/scr
Group: Networking/Other
License: GPL
Source: %{name}-%{version}.tar.gz
Patch: 1.patch

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: gcc, make, cmake, kernel-devel, kernel-headers, %{_lib}lame-devel, %{_lib}id3-devel, %{_lib}qt4-devel, %{_lib}ogg-devel, %{_lib}vorbis-devel

%description
Recording calls through Skype API

%prep
%setup -q
%apply_patches

%build
%cmake
make

%install
%makeinstall_std

%changelog

%files
/usr/local/bin/skype-call-recorder
/usr/local/share/applications/skype-call-recorder.desktop
/usr/local/share/icons/hicolor/128x128/apps/skype-call-recorder.png


# rpmbuild -ba ./skype-call-recorder.spec 
Выполняется(%prep): /bin/sh -e /var/tmp/rpm-tmp.1hl1zf
+ umask 022
+ cd /root/rpmbuild/BUILD
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ cd /root/rpmbuild/BUILD
+ rm -rf skype-call-recorder-0.8
+ /bin/tar -xf -
+ /usr/bin/gzip -dc /root/rpmbuild/SOURCES/skype-call-recorder-0.8.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd skype-call-recorder-0.8
+ /usr/bin/patch -U -s -p1 -b --suffix .2147483647 --fuzz=0 -i /root/rpmbuild/SOURCES/1.patch
+ exit 0
Выполняется(%build): /bin/sh -e /var/tmp/rpm-tmp.dkOpzD
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd skype-call-recorder-0.8
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ CFLAGS='-O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4'
+ export CFLAGS
+ CXXFLAGS='-O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4'
+ export CXXFLAGS
+ FFLAGS='-O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4'
+ export FFLAGS
+ LDFLAGS=' -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-O1 -Wl,--build-id -Wl,--enable-new-dtags'
+ export LDFLAGS
+ mkdir -p build
+ cd build
+ /usr/bin/cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_INSTALL_LIBDIR:PATH=/usr/lib64 -DINCLUDE_INSTALL_DIR:PATH=/usr/include -DLIB_INSTALL_DIR:PATH=/usr/lib64 -DSYSCONF_INSTALL_DIR:PATH=/etc -DSHARE_INSTALL_PREFIX:PATH=/usr/share -DCMAKE_BUILD_TYPE=release -DLIB_SUFFIX=64 -DCMAKE_SKIP_RPATH:BOOL=ON -DBUILD_SHARED_LIBS:BOOL=ON -DBUILD_STATIC_LIBS:BOOL=OFF '-DCMAKE_MODULE_LINKER_FLAGS=-Wl,--as-needed  -Wl,-z,relro -Wl,-O1 -Wl,--build-id -Wl,--enable-new-dtags'
-- 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
-- Found lame: /usr/include/lame/lame.h /usr/lib64/libmp3lame.so
-- Found id3: /usr/include/id3/tag.h /usr/lib64/libid3.so
-- Found vorbisenc: /usr/include/vorbis/vorbisenc.h /usr/lib64/libvorbisenc.so
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt4: /usr/bin/qmake (found version "4.8.2")
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    BUILD_STATIC_LIBS
    CMAKE_INSTALL_LIBDIR
    CMAKE_MODULE_LINKER_FLAGS
    INCLUDE_INSTALL_DIR
    LIB_INSTALL_DIR
    LIB_SUFFIX
    SHARE_INSTALL_PREFIX
    SYSCONF_INSTALL_DIR


-- Build files have been written to: /root/rpmbuild/BUILD/skype-call-recorder-0.8/build
+ make
Scanning dependencies of target Version
[  3%] Checking version.cpp
[  3%] Built target Version
[  6%] Generating qrc_resources.cxx
[ 10%] Generating moc_call.cxx
[ 13%] Generating moc_gui.cxx
[ 16%] Generating moc_preferences.cxx
[ 20%] Generating moc_recorder.cxx
[ 23%] Generating moc_skype.cxx
[ 26%] Generating moc_smartwidgets.cxx
[ 30%] Generating moc_trayicon.cxx
Scanning dependencies of target skype-call-recorder
[ 33%] Building CXX object CMakeFiles/skype-call-recorder.dir/call.o
[ 36%] Building CXX object CMakeFiles/skype-call-recorder.dir/common.o                                         
[ 40%] Building CXX object CMakeFiles/skype-call-recorder.dir/gui.o                                            
[ 43%] Building CXX object CMakeFiles/skype-call-recorder.dir/mp3writer.o                                      
[ 46%] Building CXX object CMakeFiles/skype-call-recorder.dir/preferences.o                                    
[ 50%] Building CXX object CMakeFiles/skype-call-recorder.dir/recorder.o                                       
[ 53%] Building CXX object CMakeFiles/skype-call-recorder.dir/skype.o                                          
[ 56%] Building CXX object CMakeFiles/skype-call-recorder.dir/trayicon.o
[ 60%] Building CXX object CMakeFiles/skype-call-recorder.dir/utils.o
[ 63%] Building CXX object CMakeFiles/skype-call-recorder.dir/version.o
[ 66%] Building CXX object CMakeFiles/skype-call-recorder.dir/vorbiswriter.o
[ 70%] Building CXX object CMakeFiles/skype-call-recorder.dir/wavewriter.o
[ 73%] Building CXX object CMakeFiles/skype-call-recorder.dir/writer.o
[ 76%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_call.o
[ 80%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_gui.o
[ 83%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_preferences.o
[ 86%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_recorder.o
[ 90%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_skype.o
[ 93%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_smartwidgets.o
[ 96%] Building CXX object CMakeFiles/skype-call-recorder.dir/moc_trayicon.o
[100%] Building CXX object CMakeFiles/skype-call-recorder.dir/qrc_resources.o
Linking CXX executable skype-call-recorder
[100%] Built target skype-call-recorder
+ exit 0
Выполняется(%install): /bin/sh -e /var/tmp/rpm-tmp.RvfAte
+ umask 022
+ cd /root/rpmbuild/BUILD
+ '[' /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64 '!=' / ']'
+ rm -rf /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64
++ dirname /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64
+ mkdir -p /root/rpmbuild/BUILDROOT
+ mkdir /root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64
+ cd skype-call-recorder-0.8
+ '[' 1 -eq 1 ']'
+ make DESTDIR=/root/rpmbuild/BUILDROOT/skype-call-recorder-0.8-1.mrc.mga2.x86_64 install
make: *** Нет правила для сборки цели `install'.  Останов.
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.RvfAte (%install)


Ошибки сборки пакетов:
    Неверный код возврата из /var/tmp/rpm-tmp.RvfAte (%install)

и снова не собирается

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.

24

На самом деле все собралось нормально. А вот make install не работает (make: *** Нет правила для сборки цели `install'.  Останов.). Надо глянуть исходники еще раз, а пока замечания по спеку:
1. Строку Release: %{rel}.%{suff} заменить на "Release: %mkrel 1"
2. Строки %define rel 1 и %define suff mrc.mga2 выкинуть. Вместо них создать в домашней директории юзера, под которым делаете сборку, файл .rpmmacros со следующим содержанием:

%packager              Ваше Имя <ваш@e-mail>
%distribution           Mageia
%vendor                 Mageia Russian Community
%distsuffix             .mrc.mga

Более подробно здесь. Кстати, собирать пакеты под рутом не надо.
3. Вместо make в разделе %build используйте макрос %make (это даст возможность задействовать многоядерность на многоядерных системах)

25 (2012-10-22 17:58:47 отредактировано olelukoie)

Так, по поводу %makeinstall_std - его надо в директории build вызывать, т.е. код будет такой:

%install
cd ./build
%makeinstall_std
cd ..

Последний "cd .." не обязателен.

И еще я заметил что значок проги имеет единственный размер 128х128. Это не очень хорошо, так как различные DE масштабируют значки с различным качеством. Гораздо лучше сгенерировать набор более мелких (16х16, 24х24, 32х32 и 48х48) на этапе установки (смотрите работу с imagemagick и последнее правило в CMakeLists.txt). Или вместо растрового значка использовать значок в формате SVG (он лежит в директории icon и из него генерится большой растровый значок). Его надо скопировать в hicolor/scalable/apps/%{name}.svg (но я не уверен, что все DE и оконные менеджеры поддерживают такие значки).

И еще по спеку: указывать в зависимостях сборки gcc, make, kernel-devel и kernel-headers не надо, тем более что пакеты kernel-* здесь вообще не нужны. А Ваши замечательные  %{_lib}lame-devel, %{_lib}id3-devel, %{_lib}qt4-devel, %{_lib}ogg-devel, %{_lib}vorbis-devel надо заменить на lame-devel, id3lib-devel, qt4-devel (ogg и vorbis в такой комбинации указывать не надо, поскольку они будут установлены автоматом как зависимости qt4-devel), и очень желательно каждую из зависимостей записать отдельной строкой вида "BuildRequires: зависимость".