Наверняка у многих есть чем поделиться.
Предлагаю в этой теме делится spec-файлами и патчами для интересных программ, которые по тем или иным причинам осуствуют в репозиториях.
В формате:
1. Название
2. Краткое описание программы
3. Ссылка на исходники
4. spec
5. патч (-и) если критичны для сборки.
Замечания исправления привествуются.
Делимся spec-файлами (Программы, которых нет в репозиториях)
Модератор: Модераторы разделов
-
- Сообщения: 345
- ОС: Fedora
Re: Делимся spec-файлами
Fraunhofer FDK AAC Codec Library
Высококачественный open-source AAC-энкодер разработанный Fraunhofer IIS. Оффициальный релиз для Android. Имеет обвязку для ffmpeg ( --enable-libfdk-aac). Лицензия проприетарная - FDK License.
fdk-aac.spec:
Nero AAC Codec Pack
Пакет содержит консольные утилиты: качественный энкодер, декодер и утилита для работы с тегами MP4-файла.
Проприетарная лицензия не позволяет распостранение, но позволяет свободное использование в некоммерческих целях.
Утилиты бинарные (без исходников).
Архив с бинарниками: http://ftp6.nero.com/tools/NeroAACCodec-1.5.1.zip
NeroAACCodec.spec:
Высококачественный open-source AAC-энкодер разработанный Fraunhofer IIS. Оффициальный релиз для Android. Имеет обвязку для ffmpeg ( --enable-libfdk-aac). Лицензия проприетарная - FDK License.
fdk-aac.spec:
Код: Выделить всё
Summary: Fraunhofer FDK AAC is a high-quality open-source AAC codec library
Name: fdk-aac
Version: 0.1.4
Release: 9%{?dist}
License: FDK License
#The license included by Fraunhofer in the FDK source code specifically allows distribution in source or binary forms, but does not license patented technologies described by the source code. It goes on to say that it can only be distributed as authorized by patent licenses [6], which significantly impacts the earlier statement allowing distribution. For this reason, and a limitation on charging for software that includes the library, the license is considered non-free.
URL: http://sourceforge.net/projects/opencore-amr
Source0: http://downloads.sourceforge.net/opencore-amr/%{name}-%{version}.tar.gz
%description
The Fraunhofer FDK AAC Codec Library ("FDK AAC Codec") is software that
implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding
scheme for digital audio.
%package devel
Summary: Development package for %{name}
Requires: %{name} = %{version}-%{release}
%description devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.
%prep
%setup -q
%build
#Explicitly force building in C++98 mode for Version: 0.1.4
export CXXFLAGS="-O2 -march=native -fno-exceptions -fno-rtti -std=c++98"
%configure \
--disable-silent-rules \
--disable-static
# --enable-shared
make %{?_smp_mflags}
%install
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p"
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%defattr(-,root,root,-)
%doc ChangeLog NOTICE
%{_libdir}/*.so.*
%files devel
%defattr(-,root,root,-)
%doc documentation/*.pdf
%dir %{_includedir}/fdk-aac
%{_includedir}/fdk-aac/*.h
%{_libdir}/*.so
%{_libdir}/pkgconfig/%{name}.pc
%changelog
Nero AAC Codec Pack
Пакет содержит консольные утилиты: качественный энкодер, декодер и утилита для работы с тегами MP4-файла.
Проприетарная лицензия не позволяет распостранение, но позволяет свободное использование в некоммерческих целях.
Утилиты бинарные (без исходников).
Архив с бинарниками: http://ftp6.nero.com/tools/NeroAACCodec-1.5.1.zip
NeroAACCodec.spec:
Код: Выделить всё
Name: NeroAACCodec
Version: 1.5.1
Release: 1%{?dist}
Summary: Nero Digital Audio Decoder/Encoder
License: Nero AG license
URL: http://www.nero.com/eng/company/about-nero/nero-aac-codec.php
Source0: http://ftp6.nero.com/tools/%{name}-%{version}.zip
BuildRequires: unzip
Requires: glibc(x86-32) libstdc++(x86-32)
%description
Nero AAC Codec, formerly known as the Nero DIgital Audio Decoder/Encoder,
is a reference quality MPEG-4 & 3GPP audio codec.
This package includes the encoder, a decoder and a MP4 tagging utility.
%prep
%setup -q -c
%build
%install
mkdir -p %{buildroot}%{_bindir}/
cp -p linux/neroAac* %{buildroot}%{_bindir}/
%files
%attr(0644, root, root) %doc *.txt NeroAAC_tut.pdf
%attr(0755, root, root) %{_bindir}/neroAac*
%changelog
-
- Сообщения: 345
- ОС: Fedora
Re: Делимся spec-файлами
AtomicParlsey
Очень гибкая консольная утилита для чтения/записи метаданных mp4-фалов (m4a, m4b, m4p, m4v и mp4).
Исходники: http://sourceforge.net/projects/atomicpars....0.zip/download
AtomicParsley.spec
AtomicParsley-0.9.0-fix_bad_math.patch
Очень гибкая консольная утилита для чтения/записи метаданных mp4-фалов (m4a, m4b, m4p, m4v и mp4).
Исходники: http://sourceforge.net/projects/atomicpars....0.zip/download
AtomicParsley.spec
Код: Выделить всё
Name: AtomicParsley
Version: 0.9.0
Release: 1%{?dist}
Summary: Command-Line Program to Read and Set MP4 Metadata Tags
License: GPLv2+
URL: http://atomicparsley.sourceforge.net
Source0: http://prdownloads.sourceforge.net/atomicparsley/%{name}-source-%{version}.zip
Patch0: AtomicParsley-0.9.0-fix_bad_math.patch
BuildRequires: glibc-devel libstdc++-devel
BuildRequires: unzip
%description
AtomicParsley is a lightweight command line program that can read and set
metadata tags in MPEG-4 files & 3gp assets in 3GPP/3GPP2 files.
%prep
%setup -q -n "%{name}-source-%{version}"
%patch0
%__sed -i '
s/g++/$CXX/g;
s/-g//g;
s/-O2/$OPTFLAGS/g;
' build
%__sed -i '1aset -e' build
%build
CXX="%__cxx" \
OPTFLAGS="%{optflags} -Wall -Wno-deprecated -fno-strict-aliasing" \
./build
%install
%__install -D -m0755 %{name} "%{buildroot}%{_bindir}/%{name}"
%clean
%__rm -rf "%{buildroot}"
%files
%doc COPYING
%doc *.rtf
%{_bindir}/%{name}
%changelog
AtomicParsley-0.9.0-fix_bad_math.patch
Код: Выделить всё
--- AtomicParsley.cpp.orig 2006-09-15 19:22:34.000000000 +0300
+++ AtomicParsley.cpp 2013-08-11 11:32:29.655982772 +0300
@@ -1447,7 +1447,7 @@
uint32_t atom_offsets = 0;
char* uuid_outfile = (char*)calloc(1, sizeof(char)*MAXPATHLEN+1); //malloc a new string because it may be a cli arg for a specific output path
if (output_path == NULL) {
- char* orig_suffix = strrchr(originating_file, '.');
+ const char* orig_suffix = strrchr(originating_file, '.');
if (orig_suffix == NULL) {
fprintf(stdout, "AP warning: a file extension for the input file was not found.\n\tGlobbing onto original filename...\n");
path_len = strlen(originating_file);
@@ -4030,21 +4030,21 @@
//+8 so that 'free' can be accommodated; can't write a 'free' atom of length = 5 - min is 8; OR it disappears entirely
if ( (int)udta_dynamics.max_usable_free_space >= userdata_difference + 8 ||
userdata_difference <= -8 ||
- ( (int)udta_dynamics.max_usable_free_space >= 8 && -8 < userdata_difference < 0 ) ||
+ ( (int)udta_dynamics.max_usable_free_space >= 8 && -8 < userdata_difference && userdata_difference< 0 ) ||
(int)udta_dynamics.max_usable_free_space == userdata_difference) {
//fprintf(stdout, "Dynamically update possible: change = %i, free = %i\n", userdata_difference , udta_dynamics.max_usable_free_space);
if (!moov_atom_was_mooved) { //only allow dynamic updating when moov precedes any mdat atoms...
udta_dynamics.dynamic_updating = true;
} else {
//if there is insufficient padding when moov is rearranged to precede mdat, add default padding
- if (pad_prefs.minimum_required_padding_size < udta_dynamics.max_usable_free_space < pad_prefs.default_padding_size) {
+ if (pad_prefs.minimum_required_padding_size < udta_dynamics.max_usable_free_space && udta_dynamics.max_usable_free_space < pad_prefs.default_padding_size) {
APar_ForcePadding(pad_prefs.default_padding_size);
}
APar_DetermineAtomLengths();
return;
}
//fprintf(stdout, "I'm here %u , %u, %i - %i\n", udta_dynamics.max_usable_free_space, pad_prefs.default_padding_size, udta_dynamics.free_atom_repository, udta_dynamics.free_atom_secondary_repository);
- if (pad_prefs.minimum_required_padding_size < udta_dynamics.max_usable_free_space < pad_prefs.default_padding_size) {
+ if (pad_prefs.minimum_required_padding_size < udta_dynamics.max_usable_free_space && udta_dynamics.max_usable_free_space < pad_prefs.default_padding_size) {
APar_ForcePadding(pad_prefs.default_padding_size);
}
if (pad_prefs.minimum_required_padding_size > udta_dynamics.max_usable_free_space) {
@@ -4462,7 +4462,7 @@
#endif
void APar_DeriveNewPath(const char *filePath, char* temp_path, int output_type, const char* file_kind, char* forced_suffix, bool random_filename = true) {
- char* suffix = NULL;
+ const char* suffix = NULL;
if (forced_suffix == NULL) {
suffix = strrchr(filePath, '.');
} else {
@@ -4480,7 +4480,7 @@
memcpy(temp_path, filePath, base_len);
memcpy(temp_path + base_len, file_kind, strlen(file_kind));
#else
- char* file_name = strrchr(filePath, '/');
+ const char* file_name = strrchr(filePath, '/');
size_t file_name_len = strlen(file_name);
memcpy(temp_path, filePath, filepath_len-file_name_len+1);
memcpy(temp_path + strlen(temp_path), ".", 1);
@@ -5006,7 +5006,7 @@
free_modified_name = true;
if (forced_suffix_type == FORCE_M4B_TYPE) { //using --stik Audiobook with --overWrite will change the original file's extension
uint16_t filename_len = strlen(m4aFile);
- char* suffix = strrchr(m4aFile, '.');
+ const char* suffix = strrchr(m4aFile, '.');
memcpy(originating_file, m4aFile, filename_len+1 );
memcpy(originating_file + (filename_len - strlen(suffix) ), ".m4b", 5 );
}
-
- Сообщения: 345
- ОС: Fedora
Re: Делимся spec-файлами
HandBrake
Отличный конвертер с графическим интерфейсом (имеет также интерфейс командной строки). Недавно появилась русская локализация графического интерфейса.
Скрипт получения исходников handbrake-snapshot.sh
HandBrake.spec
Отличный конвертер с графическим интерфейсом (имеет также интерфейс командной строки). Недавно появилась русская локализация графического интерфейса.
Скрипт получения исходников handbrake-snapshot.sh
Код: Выделить всё
#!/bin/bash
set -e
tmp=$(mktemp -d)
trap cleanup EXIT
cleanup() {
set +e
[ -z "$tmp" -o ! -d "$tmp" ] || rm -rf "$tmp"
}
unset CDPATH
pwd=$(pwd)
svn=$(date +%Y%m%d)
cd "$tmp"
svn co svn://svn.handbrake.fr/HandBrake/trunk HandBrake-$svn
revision=$(svnversion HandBrake-$svn)
tar Jcf "$pwd"/HandBrake-$svn.tar.xz HandBrake-$svn
cd - >/dev/null
HandBrake.spec
Код: Выделить всё
%global svndate 20130813
%global svnrev 5675
Name: HandBrake
Version: 0.9.9
Release: 1.%{svndate}svn%{?dist}
Summary: A program to transcode DVDs and other sources to MPEG-4 and MKV
License: GPLv2+
URL: http://handbrake.fr/
Source0: HandBrake-%{svndate}.tar.xz
Source1: handbrake-snapshot.sh
BuildRequires: intltool libtool
BuildRequires: yasm
BuildRequires: zlib-devel
BuildRequires: bzip2-devel
BuildRequires: fribidi-devel
# GUI Requirements
BuildRequires: gtk3-devel
BuildRequires: webkitgtk3-devel
BuildRequires: dbus-glib-devel
BuildRequires: libgudev1-devel
BuildRequires: libnotify-devel
BuildRequires: gstreamer1-devel
BuildRequires: gstreamer1-plugins-base-devel
# Required for upcoming 0.9.9
BuildRequires: libass-devel
BuildRequires: libsamplerate-devel
BuildRequires: libvorbis-devel
BuildRequires: libtheora-devel
Requires: hicolor-icon-theme
%description
HandBrake is an open-source, GPL-licensed, multiplatform, multithreaded video
transcoder, available for MacOS X, Linux and Windows.
%package gui
Summary: A program to transcode DVDs and other sources to MPEG-4 and MKV
Group: Applications/Multimedia
Provides: %{name}-gtk = %{version}-%{release}
Obsoletes: %{name}-gtk < %{version}-%{release}
Requires: libdvdcss
%description gui
HandBrake is an open-source, GPL-licensed, multi-platform, multi-threaded
transcoder, available for MacOS X, Linux and Windows.
This is the GTK GUI (graphical user interface) version of HandBrake.
%package cli
Summary: A program to transcode DVDs and other sources to MPEG-4 and MKV
Group: Applications/Multimedia
Provides: %{name} = %{version}-%{release}
Obsoletes: %{name} < %{version}-%{release}
Requires: libdvdcss
%description cli
HandBrake is an open-source, GPL-licensed, multi-platform, multi-threaded
transcoder, available for MacOS X, Linux and Windows.
This is the CLI (command line interface) version of HandBrake.
%prep
%setup -q -n %{name}-%{svndate}
%build
export CFLAGS="%{optflags}"
export CXXFLAGS="%{optflags}"
export LDFLAGS="%{optflags}"
./configure --launch
pushd build
make %{?_smp_mflags}
%install
mkdir _docs
iconv -f ISO-8859-1 -t UTF-8 CREDITS > _docs/CREDITS
iconv -f ISO-8859-1 -t UTF-8 THANKS > _docs/THANKS
cat > build/GNUmakefile.custom.defs <<EOF
CONF.args = --prefix=%{buildroot}%{_prefix}
PREFIX = %{buildroot}%{_prefix}
PREFIX/ = %{buildroot}%{_prefix}/
EOF
make -C build install-strip
rm -f %{buildroot}%{_datadir}/icons/hicolor/icon-theme.cache
install -D -m 0644 gtk/src/hb-icon.16.png \
%{buildroot}%{_datadir}/icons/hicolor/16x16/apps/hb-icon.png
install -D -m 0644 gtk/src/hb-icon.22.png \
%{buildroot}%{_datadir}/icons/hicolor/22x22/apps/hb-icon.png
install -D -m 0644 gtk/src/hb-icon.24.png \
%{buildroot}%{_datadir}/icons/hicolor/24x24/apps/hb-icon.png
install -D -m 0644 gtk/src/hb-icon.32.png \
%{buildroot}%{_datadir}/icons/hicolor/32x32/apps/hb-icon.png
install -D -m 0644 gtk/src/hb-icon.48.png \
%{buildroot}%{_datadir}/icons/hicolor/48x48/apps/hb-icon.png
install -D -m 0644 gtk/src/hb-icon.64.png \
%{buildroot}%{_datadir}/icons/hicolor/64x64/apps/hb-icon.png
install -D -m 0644 gtk/src/hb-icon.128.png \
%{buildroot}%{_datadir}/icons/hicolor/128x128/apps/hb-icon.png
install -D -m 0644 gtk/src/hb-icon.256.png \
%{buildroot}%{_datadir}/icons/hicolor/256x256/apps/hb-icon.png
install -D -m 0644 gtk/src/hb-icon.512.png \
%{buildroot}%{_datadir}/icons/hicolor/scalable/apps/hb-icon.png
%find_lang ghb
%clean
rm -rf %{buildroot}
%post
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
/usr/bin/update-desktop-database &> /dev/null || :
%postun
if [ $1 -eq 0 ] ; then
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
fi
/usr/bin/update-desktop-database &> /dev/null || :
%files gui -f ghb.lang
%doc AUTHORS COPYING _docs/CREDITS NEWS _docs/THANKS TRANSLATIONS
%{_bindir}/ghb
%{_datadir}/applications/ghb.desktop
%{_datadir}/icons/hicolor/*/apps/hb-icon.png
%files cli
%doc AUTHORS COPYING _docs/CREDITS NEWS _docs/THANKS TRANSLATIONS
%{_bindir}/HandBrakeCLI
%changelog
-
- Сообщения: 1699
- ОС: Fedora 32
Re: Делимся spec-файлами
Несколько замечаний:
1. Лучше не использовать макросы и переменные одновременно. Например вместо $RPM_BUILD_ROOT лучше использовать %{buildroot}.
2. В секции %install можно удалить rm -rf $RPM_BUILD_ROOT, это делается автоматом.
3. Секцию %clean тоже можно удалить.
4. В секции %files не надо использовать %defattr.
5. Вместо
надо использовать макрос %configure
1. Лучше не использовать макросы и переменные одновременно. Например вместо $RPM_BUILD_ROOT лучше использовать %{buildroot}.
2. В секции %install можно удалить rm -rf $RPM_BUILD_ROOT, это делается автоматом.
3. Секцию %clean тоже можно удалить.
4. В секции %files не надо использовать %defattr.
5. Вместо
Код: Выделить всё
export CFLAGS="%{optflags}"
export CXXFLAGS="%{optflags}"
export LDFLAGS="%{optflags}"
./configure
надо использовать макрос %configure
Спасибо сказали:
-
- Сообщения: 345
- ОС: Fedora
Re: Делимся spec-файлами
Vascom писал(а): ↑28.08.2013 16:24Вместо
Код: Выделить всё
export CFLAGS="%{optflags}" export CXXFLAGS="%{optflags}" export LDFLAGS="%{optflags}" ./configure
надо использовать макрос %configure
Как именно? Простая замена не проходит:
Код: Выделить всё
configure.py: error: no such option: --host
-
- Сообщения: 1699
- ОС: Fedora 32
Re: Делимся spec-файлами
Разве там по запуску ./configure запускается configure.py?