From a4918afe5b023e0ca91dd0aa855dd508d91614dd Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Wed, 31 Oct 2018 08:57:29 +0100 Subject: [PATCH] - updated to 1.3.9 - added libdir, shared patches; build shared library - use optflags, added sse2 bcond --- vmaf-libdir.patch | 29 +++++++++++++++++ vmaf-shared.patch | 46 +++++++++++++++++++++++++++ vmaf.spec | 79 +++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 145 insertions(+), 9 deletions(-) create mode 100644 vmaf-libdir.patch create mode 100644 vmaf-shared.patch diff --git a/vmaf-libdir.patch b/vmaf-libdir.patch new file mode 100644 index 0000000..e981a31 --- /dev/null +++ b/vmaf-libdir.patch @@ -0,0 +1,29 @@ +--- vmaf-1.3.9/wrapper/Makefile.orig 2018-08-07 23:36:56.000000000 +0200 ++++ vmaf-1.3.9/wrapper/Makefile 2018-10-29 21:05:31.269560608 +0100 +@@ -9,6 +9,7 @@ + FEATURESRCDIR = $(TOP)/../feature/src + PTOOLSDIR = $(TOP)/../ptools + INSTALL_PREFIX = /usr/local ++LIBDIR = $(INSTALL_PREFIX)/lib + + OBJS = \ + $(OBJDIR)/alloc.o \ +@@ -170,14 +171,14 @@ + + .PHONY: install + install: +- mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/lib ++ mkdir -p $(DESTDIR)$(LIBDIR) + mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/include + mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/share +- mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/lib/pkgconfig +- cp $(LIBVMAF) $(DESTDIR)$(INSTALL_PREFIX)/lib/$(LIBVMAF) ++ mkdir -p $(DESTDIR)$(LIBDIR)/pkgconfig ++ cp $(LIBVMAF) $(DESTDIR)$(LIBDIR)/$(LIBVMAF) + cp src/libvmaf.h $(DESTDIR)$(INSTALL_PREFIX)/include/ + cp -r ../model $(DESTDIR)$(INSTALL_PREFIX)/share/ +- cp libvmaf.pc $(DESTDIR)$(INSTALL_PREFIX)/lib/pkgconfig/ ++ cp libvmaf.pc $(DESTDIR)$(LIBDIR)/pkgconfig/ + + .PHONY: uninstall + uninstall: diff --git a/vmaf-shared.patch b/vmaf-shared.patch new file mode 100644 index 0000000..47470b1 --- /dev/null +++ b/vmaf-shared.patch @@ -0,0 +1,46 @@ +--- vmaf-1.3.9/wrapper/Makefile.orig 2018-10-29 21:15:18.206220575 +0100 ++++ vmaf-1.3.9/wrapper/Makefile 2018-10-31 07:16:17.494822306 +0100 +@@ -1,7 +1,9 @@ + LIBVMAF = libvmaf.a ++LIBVMAFSO = libvmaf.so ++LIBVMAFSOVER = libvmaf.so.0 + + .PHONY: all +-all: $(LIBVMAF) vmafossexec ++all: $(LIBVMAF) $(LIBVMAFSO) vmafossexec + + TOP = $(shell pwd) + SRCDIR = $(TOP)/src +@@ -166,7 +168,11 @@ + $(LIBVMAF): $(OBJS) $(wildcard ../ptools/*.o) + ar rcs $@ $^ + +-vmafossexec: $(OBJDIR)/main.o $(LIBVMAF) ++$(LIBVMAFSO): $(OBJS) $(wildcard ../ptools/*.o) ++ $(CXX) $(LDFLAGS) $(CFLAGS) -shared -o $(LIBVMAFSOVER) -Wl,-soname,$(LIBVMAFSOVER) $^ -pthread ++ ln -sf $(LIBVMAFSOVER) $(LIBVMAFSO) ++ ++vmafossexec: $(OBJDIR)/main.o $(LIBVMAFSO) + $(CXX) -s -o $@ $(LDFLAGS) $^ -pthread + + .PHONY: install +@@ -175,6 +181,8 @@ + mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/include + mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/share + mkdir -p $(DESTDIR)$(LIBDIR)/pkgconfig ++ install $(LIBVMAFSOVER) $(DESTDIR)$(LIBDIR)/$(LIBVMAFSOVER) ++ ln -s $(LIBVMAFSOVER) $(DESTDIR)$(LIBDIR)/$(LIBVMAFSO) + cp $(LIBVMAF) $(DESTDIR)$(LIBDIR)/$(LIBVMAF) + cp src/libvmaf.h $(DESTDIR)$(INSTALL_PREFIX)/include/ + cp -r ../model $(DESTDIR)$(INSTALL_PREFIX)/share/ +--- vmaf-1.3.9/feature/Makefile.orig 2018-08-07 23:36:56.000000000 +0200 ++++ vmaf-1.3.9/feature/Makefile 2018-10-31 08:01:19.208124793 +0100 +@@ -5,7 +5,7 @@ + SRCDIR = $(TOP)/src + OBJDIR = $(TOP)/obj + TOOLDIR = $(TOP)/tool +-LIBVMAF = $(TOP)/../wrapper/libvmaf.a ++LIBVMAF = $(TOP)/../wrapper/libvmaf.so + + CFLAGS_COMMON = -g -O3 -fPIC -w -Wextra -pedantic + # CFLAGS_COMMON = -g -O0 -fPIC -Wall -Wextra -pedantic diff --git a/vmaf.spec b/vmaf.spec index e874b92..04276c2 100644 --- a/vmaf.spec +++ b/vmaf.spec @@ -1,37 +1,59 @@ # TODO: -# - shared library # - python package -# - optflags # - system libs if possible: # libsvm # wrapper/src/pugixml # ptools ? # ptools/opencontainers_1_8_4 ? +# +# Conditional build: +%bcond_with sse2 # use SSE2 instructions + +%ifarch pentium4 %{x8664} x32 +%define with_sse2 1 +%endif Summary: Netflix's VMAF library Summary(pl.UTF-8): Biblioteka Netflix VMAF Name: vmaf -Version: 1.3.1 -Release: 0.1 +Version: 1.3.9 +Release: 1 License: Apache v2.0 Group: Libraries #Source0Download: https://github.com/Netflix/vmaf/releases Source0: https://github.com/Netflix/vmaf/archive/v%{version}/%{name}-%{version}.tar.gz -# Source0-md5: 864c2c74649fd8770fd6a566fdaf6f35 +# Source0-md5: b5f39df007a66e6b6e284a820066bb70 +Patch0: %{name}-libdir.patch +Patch1: %{name}-shared.patch URL: https://github.com/Netflix/vmaf BuildRequires: libstdc++-devel >= 6:4.8 BuildRequires: sed >= 4.0 +Requires: %{name}-libs = %{version}-%{release} BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %description VMAF is a perceptual video quality assessment algorithm developed by Netflix. -#%description -l pl.UTF-8 +%description -l pl.UTF-8 +VMAF to percepcyjny algorytm oceny jakości obrazu tworzony przez +Netfliksa. + +%package libs +Summary: Netflix VMAF libary +Summary(pl.UTF-8): Biblioteka Netflix VMAF +Group: Libraries + +%description libs +Netflix VMAF libary. + +%description libs -l pl.UTF-8 +Biblioteka Netflix VMAF. %package devel Summary: Netflix VMAF SDK Summary(pl.UTF-8): Pakiet programistyczny Netflix VMAF Group: Development/Libraries +Requires: %{name}-libs = %{version}-%{release} Requires: libstdc++-devel >= 6:4.8 %description devel @@ -40,10 +62,32 @@ Netflix VMAF SDK. %description devel -l pl.UTF-8 Pakiet programistyczny Netflix VMAF. +%package static +Summary: Static Netflix VMAF library +Summary(pl.UTF-8): Statyczna biblioteka Netflix VMAF +Group: Development/Libraries +Requires: %{name}-devel = %{version}-%{release} + +%description static +Static Netflix VMAF library. + +%description static -l pl.UTF-8 +Statyczna biblioteka Netflix VMAF. + %prep %setup -q +%patch0 -p1 +%patch1 -p1 + +%if %{without sse2} +%{__sed} -i -e 's,#define ADM_OPT_RECIP_DIVISION,/* & */,' feature/src/adm_options.h +%endif %build +CFLAGS="%{rpmcflags}%{?with_sse2: -msse2}" \ +CXXFLAGS="%{rpmcxxflags}%{?with_sse2: -msse2}" \ +CPPFLAGS="%{rpmcppflags}" \ +LDFLAGS="%{rpmldflags}" \ %{__make} \ CC="%{__cc}" \ CXX="%{__cxx}" \ @@ -54,21 +98,38 @@ Pakiet programistyczny Netflix VMAF. %install rm -rf $RPM_BUILD_ROOT +install -d $RPM_BUILD_ROOT%{_bindir} -%{__make} install \ +%{__make} -C wrapper install \ DESTDIR=$RPM_BUILD_ROOT \ - PREFIX=%{_prefix} + INSTALL_PREFIX=%{_prefix} \ + LIBDIR=%{_libdir} + +install feature/{psnr,vmaf} $RPM_BUILD_ROOT%{_bindir} %clean rm -rf $RPM_BUILD_ROOT +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig + %files %defattr(644,root,root,755) %doc CHANGELOG.md FAQ.md NOTICE.md README.md VERSION +%attr(755,root,root) %{_bindir}/psnr +%attr(755,root,root) %{_bindir}/vmaf %{_datadir}/model +%files libs +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/libvmaf.so.0 + %files devel %defattr(644,root,root,755) -%{_libdir}/libvmaf.a +%attr(755,root,root) %{_libdir}/libvmaf.so %{_includedir}/libvmaf.h %{_pkgconfigdir}/libvmaf.pc + +%files static +%defattr(644,root,root,755) +%{_libdir}/libvmaf.a -- 2.44.0