PACKAGING: XIMEA drivers package specification

This commit is contained in:
Lukas Rucka
2020-05-31 22:03:22 +02:00
parent e48ac24a63
commit 8d33db41dc
13 changed files with 353 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
#!/usr/bin/make -f
SHELL=/bin/bash
DEB_BUILD_ROOT=$(shell realpath . )/debian/tmp
%:
dh $@
override_dh_auto_configure:
echo "no configure here"
override_dh_auto_build:
echo "dummy build"
override_dh_auto_install:
mkdir -p $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ximea_sdk_placeholder
ln -s ximea_sdk_placeholder $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ximea_sdk
touch $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ximea_sdk_placeholder/.keep

View File

@@ -0,0 +1,12 @@
# see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc
DEBTRANSFORM-TAR: dummy.tar.gz
DEBTRANSFORM-FILES-TAR: debian.tar.gz
DEBTRANSFORM-SERIES: debian-patches-series
Format: 1.0
Source: ultragrid-proprietary-drivers-ximea-placeholder
Binary: ultragrid-proprietary-drivers-ximea-placeholder
Architecture: any
Version: 20200227
Standards-Version: 3.9.6
Maintainer: Lukas Rucka <ultragrid-dev@cesnet.cz>
Build-Depends: debhelper (>= 7.0.50~), build-essential, coreutils, bash

View File

@@ -0,0 +1,52 @@
Name: ultragrid-proprietary-drivers-ximea-placeholder
Version: 20200227
Release: 1%{?dist}
Summary: Ultragrid drivers ximea pseudo package
Group: Applications/Multimedia
License: GPL
URL: http://www.ultragrid.cz
# replace this line with generated conflicts
Provides: ultragrid-proprietary-drivers-ximea-nightly
Provides: ultragrid-proprietary-drivers-ximea-release-1.6
BuildRequires: make, coreutils
Source0: dummy.tar.gz
%description
Inject dummy dependency
And create empty .keep file in correspoximeang location
# hack over the way fedora ignores dependences in /usr/lib/dir/*.so
%define _use_internal_dependency_generator 0
%define _missing_build_ids_terminate_build 0
%prep
#%setup -q
tar -xvf %{SOURCE0}
%build
%define debug_package %{nil}
echo "dummy build"
%install
mkdir -p ${RPM_BUILD_ROOT}/%{_prefix}/src/ultragrid-externals/ximea_sdk_placeholder
touch ${RPM_BUILD_ROOT}/%{_prefix}/src/ultragrid-externals/ximea_sdk_placeholder/.keep
ln -s ximea_sdk_placeholder ${RPM_BUILD_ROOT}/%{_prefix}/src/ultragrid-externals/ximea_sdk
export NO_BRP_CHECK_RPATH=true
%files
%defattr(-,root,root,-)
%{_prefix}/src/ultragrid-externals
%{_prefix}/src/ultragrid-externals/ximea_sdk_placeholder
%{_prefix}/src/ultragrid-externals/ximea_sdk_placeholder/.keep
%{_prefix}/src/ultragrid-externals/ximea_sdk
%changelog
* Thu Feb 27 2020 Lukas Rucka <ultragrid-dev@cesnet.cz>
- 20200227
- Create RPM such that proprietary driver requirements are satisfied

View File

@@ -0,0 +1,125 @@
#!/bin/bash
optpath=${RPM_BUILD_ROOT}/opt/XIMEA
platform_bits=64
api_version=2
mkdir -p ${RPM_BUILD_ROOT}/${SYSCONFDIR}/udev/rules.d/
cp libs/libusb/*.rules ${RPM_BUILD_ROOT}/${SYSCONFDIR}/udev/rules.d/
mkdir -p $optpath/bin $optpath/lib $optpath/src $optpath/CamTool $optpath/backup 2>/dev/null
mkdir -p "$optpath/data"
cp README* uninstall version_LINUX_SP.txt "$optpath"
touch $optpath/backup/files.txt
# libusb copy
cp -r libs/libusb/* $optpath/lib/
mkdir -p ${RPM_BUILD_ROOT}/${LIBDIR}
# install api
cp api/X$platform_bits/libm3api.so.$api_version ${RPM_BUILD_ROOT}/${LIBDIR}/libm3api.so.${api_version}.0.0 && \
ln -snf libm3api.so.$api_version ${RPM_BUILD_ROOT}/${LIBDIR}/libm3api.so
cp libs/gentl/X$platform_bits/libXIMEA_GenTL.cti $optpath/lib/
cp libs/gentl/X$platform_bits/libxiFapi_GenTL.cti $optpath/lib/
[ -e libs/xiapi_dng_store/X$platform_bits ] && cp libs/xiapi_dng_store/X$platform_bits/libxiapi_dng_store.so $optpath/lib/ || true
cp bin/xiSample.$platform_bits $optpath/bin/xiSample
cp "bin/xiCOP.$platform_bits" "$optpath/bin/xiCOP"
cp "data/fw_update_tools_map.xml" "$optpath/data/"
cp bin/streamViewer.$platform_bits $optpath/bin/streamViewer
mkdir -p ${RPM_BUILD_ROOT}/${DATADIR}/applications
newlauncher=${RPM_BUILD_ROOT}/${DATADIR}/applications/streamViewer.desktop
echo "[Desktop Entry]" >$newlauncher
echo "Version=1.0" >>$newlauncher
echo "Type=Application" >>$newlauncher
echo "Terminal=false" >>$newlauncher
echo "Icon[en_US]=gnome-panel-launcher" >>$newlauncher
echo "Name=streamViewer" >>$newlauncher
echo "Exec=$optpath/bin/streamViewer" >>$newlauncher
echo "Categories=AudioVideo;Player;Recorder;AudioVideo;Video;" >> $newlauncher
echo "GenericName=Stream Viewer Tool" >> $newlauncher
chmod a+x $newlauncher
echo Installing CamTool
libh264=libopenh264-1.4.0-linux"$platform_bits".so
# Remove files from previous versions since they can cause CamTool crashes
find "$optpath"/CamTool -mindepth 1 \! -name "$libh264" -delete
cp bin/xiCamTool $optpath/bin/
cp -R CamTool.$platform_bits/* $optpath/CamTool
# should be handled by download service
# if [! -e "$optpath"/CamTool/"$libh264" ] ; then
#wget -O "$optpath"/CamTool/"$libh264".bz2 http://ciscobinary.openh264.org/"$libh264".bz2
#bunzip2 "$optpath"/CamTool/"$libh264".bz2
#fi
newlauncher=${RPM_BUILD_ROOT}/${DATADIR}/applications/xiCamTool.desktop
echo "[Desktop Entry]" >$newlauncher
echo "Version=1.0" >>$newlauncher
echo "Type=Application" >>$newlauncher
echo "Terminal=false" >>$newlauncher
echo "Icon=/opt/XIMEA/CamTool/icon.png" >>$newlauncher
echo "Name=xiCamTool" >>$newlauncher
echo "Exec=$optpath/bin/xiCamTool" >>$newlauncher
echo "Categories=AudioVideo;Player;Recorder;AudioVideo;Video;" >> $newlauncher
echo "GenericName=Ximea Camera Viewer Tool" >> $newlauncher
chmod a+x $newlauncher
mkdir -p ${RPM_BUILD_ROOT}/${SYSCONFDIR}/modprobe.d/
echo install usbcore usbfs_memory_mb=0 > ${RPM_BUILD_ROOT}/${SYSCONFDIR}/modprobe.d/99-ximea-usbcore.conf
mkdir -p ${RPM_BUILD_ROOT}/${SYSCONFDIR}/profile.d
echo "export GENICAM_GENTL${platform_bits}_PATH=/opt/XIMEA/lib/" >> ${RPM_BUILD_ROOT}/${SYSCONFDIR}/profile.d/99-ximea-genicam.sh
# sample code
cp -R include $optpath/
cp -R examples $optpath/
cp -R samples $optpath/
# include dir
mkdir -p ${RPM_BUILD_ROOT}/${INCLUDEDIR}
ln -snf /opt/XIMEA/include ${RPM_BUILD_ROOT}/${INCLUDEDIR}/m3api
for d in api/Python/v*/ximea/libs/ ; do
pushd $d
rm -rf $(find . -mindepth 1 -maxdepth 1 -type d | grep -iv X64)
popd
done
# python wrappers - copypasted from the install script, except for ${RPM_BUILD_ROOT}
for py in python python2 python3
do
if type $py &>/dev/null
then
py_ver="$($py -c "import sys; pyver=sys.version_info[0]; print(pyver)")"
py_site_dir="$($py -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")"
if [ -n "$py_site_dir" ]
then
mkdir -p "${RPM_BUILD_ROOT}/$py_site_dir"/ximea
if [ "$py_ver" -gt 2 ]
then
echo "Installing python package version 3.x"
cp -R api/Python/v3/ximea "${RPM_BUILD_ROOT}/$py_site_dir"
else
echo "Installing python package version 2.x"
cp -R api/Python/v2/ximea "${RPM_BUILD_ROOT}/$py_site_dir"
fi
fi
fi
done
mkdir -p ${RPM_BUILD_ROOT}/${PREFIX}/src/ultragrid-externals/
ln -s /opt/XIMEA ${RPM_BUILD_ROOT}/${PREFIX}/src/ultragrid-externals/ximea_sdk
pushd ${RPM_BUILD_ROOT}/opt/XIMEA/lib
rm -rf $(find . -mindepth 1 -maxdepth 1 -type d | grep -v X64)
popd

View File

@@ -0,0 +1,23 @@
#!/usr/bin/make -f
SHELL=/bin/bash
DEB_BUILD_ROOT=$(shell realpath . )/debian/tmp
%:
dh $@
override_dh_auto_configure:
echo "no configure here"
override_dh_shlibdeps:
env LD_LIBRARY_PATH=$${LD_LIBRARY_PATH}:/usr/lib/x86_64-linux-gnu:/usr/lib:/opt/XIMEA/lib dh_shlibdeps -Xusr/src/ultragrid-externals -Xopt/XIMEA
# -- --ignore-missing-info
override_dh_auto_build:
echo placeholder
override_dh_auto_install:
chmod +x debian/buildscript.sh
env RPM_BUILD_ROOT=$(DEB_BUILD_ROOT) SYSCONFDIR=/etc LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH) DATADIR=/usr/share INCLUDEDIR=/usr/lib/$(DEB_HOST_MULTIARCH) PREFIX=/usr debian/buildscript.sh

View File

@@ -0,0 +1,15 @@
addFilter("ultragrid-proprietary-drivers-ximea.* devel-file-in-non-devel-package")
addFilter("ultragrid-proprietary-drivers-ximea.* file-contains-date-and-time")
addFilter("ultragrid-proprietary-drivers-ximea.* wrong-script-end-of-line-encoding")
addFilter("ultragrid-proprietary-drivers-ximea.* files-duplicate")
addFilter("ultragrid-proprietary-drivers-ximea.* binary-or-shlib-calls-gethostbyname")
addFilter("ultragrid-proprietary-drivers-ximea.* executable-stack")
addFilter("ultragrid-proprietary-drivers-ximea.* no-soname")
addFilter("ultragrid-proprietary-drivers-ximea.* hidden-file-or-dir")
addFilter("ultragrid-proprietary-drivers-ximea.* incorrect-fsf-address")
addFilter("ultragrid-proprietary-drivers-ximea.* zero-length")
addFilter("ultragrid-proprietary-drivers-ximea.* shared-lib-calls-exit")
addFilter("ultragrid-proprietary-drivers-ximea.* shlib-policy-missing-suffix")
addFilter("ultragrid-proprietary-drivers-ximea.* version-control-internal-file")
addFilter("ultragrid-proprietary-drivers-ximea.* no-rpm-opt-flags")
addFilter("ultragrid-proprietary-drivers-ximea.* non-executable-script")

View File

@@ -0,0 +1,12 @@
# see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc
DEBTRANSFORM-TAR: ximea-linux-upstream.tar.gz
DEBTRANSFORM-FILES-TAR: debian.tar.gz
DEBTRANSFORM-SERIES: debian-patches-series
Format: 1.0
Source: ultragrid-proprietary-drivers-ximea
Binary: ultragrid-proprietary-drivers-ximea
Architecture: any
Version: 20200109
Standards-Version: 3.9.6
Maintainer: Lukas Rucka <ultragrid-dev@cesnet.cz>
Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers, realpath, coreutils, autoconf, automake, linux-libc-dev, python3, python3-distutils-extra, bash, libraw1394-11, libtiff-dev, libusb-1.0-0

View File

@@ -0,0 +1,95 @@
Name: ultragrid-proprietary-drivers-ximea
Version: 20200109
Release: 1%{?dist}
Summary: Ultragrid drivers ximea pseudometapackage
Group: Applications/Multimedia
# not really GPL
License: Proprietary
URL: http://www.ximea.com
# replace this line with generated conflicts
Provides: ultragrid-proprietary-drivers-ximea-nightly
Provides: ultragrid-proprietary-drivers-ximea-release-1.6
BuildRequires: gcc-c++, make, automake, autoconf, coreutils
BuildRequires: libX11-devel, glew-devel, libXext-devel, glibc, ncurses-devel, qt-devel
BuildRequires: %kernel_module_package_buildreqs , kernel
Source0: ximea-linux-upstream.tar.gz
Source1: ultragrid-proprietary-drivers-ximea-rpmlintrc
Source2: debian.buildscript.sh
%description
Rewrite ximea installer to be compatible with packages,
essentially create rpm for ultragrid
+ udev rules for plugdev
- pci
- firewire
+ usb
* libusb copied to sdk, but not overriding system defaults
# hack over the way fedora ignores dependences in /usr/lib/dir/*.so
%define _use_internal_dependency_generator 0
%define __find_requires bash -c 'cd %{_builddir}/ ; cat final-requires'
%define __find_provides bash -c 'cd %{_builddir}/ ; cat final-provides'
%define _missing_build_ids_terminate_build 0
%prep
#%setup -q
tar -xvf %{SOURCE0} && cd package
%build
%define debug_package %{nil}
cd package
#env DESTDIR=${RPM_BUILD_ROOT} EUID=0 ./scripts/install_steps -x64 -noudev -nopci
%install
chmod +x %{SOURCE2}
pushd package
env RPM_BUILD_ROOT=${RPM_BUILD_ROOT} SYSCONFDIR=%{_sysconfdir} LIBDIR=%{_libdir} DATADIR=%{_datadir} INCLUDEDIR=%{_includedir} PREFIX=%{_prefix} %{SOURCE2}
popd
# generate dependencies
pushd $RPM_BUILD_ROOT
find . -iregex '.*\.so\(\.[0-9]+\)*$' -o -type f -executable | grep -vE '^\./opt' | /usr/lib/rpm/find-provides > ${RPM_BUILD_DIR}/package/install-provides
find . -iregex '.*\.so\(\.[0-9]+\)*$' -o -type f -executable | /usr/lib/rpm/find-provides > ${RPM_BUILD_DIR}/package/install-provides-full
find . -iregex '.*\.so\(\.[0-9]+\)*$' -o -type f -executable | /usr/lib/rpm/find-requires > ${RPM_BUILD_DIR}/package/install-requires
popd
#grep -vE 'lib.*\.so.*' install-provides > install-provides-nolibs
echo 'libopenh264.*.so.*' >> norequires
echo 'libjasper.*.so.*' >> norequires
echo 'libgst.*.0.10.*.so.*' >> norequires
echo 'libQt5EglDeviceIntegration.so.5.*' >> norequires
grep -v -F -f install-provides-full install-requires > install-requires-noself || true
grep -v -Ef noprovides install-provides > install-provides-result || true
grep -v -Ef norequires install-requires-noself > install-requires-result || true
cp install-requires-result final-requires
cp install-provides-result final-provides
export NO_BRP_CHECK_RPATH=true
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%defattr(-,root,root,-)
%{_sysconfdir}/udev/rules.d/*.rules
%{_sysconfdir}/modprobe.d/*.conf
%{_sysconfdir}/profile.d/*.sh
/opt/XIMEA
%{_libdir}/*
%{_includedir}/*
%{_prefix}/lib*/python*
%{_prefix}/src/ultragrid-externals
%{_prefix}/src/ultragrid-externals/ximea_sdk
%{_datadir}/applications/*.desktop
%changelog
* Thu Feb 27 2020 Lukas Rucka <ultragrid-dev@cesnet.cz>
- 20200227
- Create RPM such that mirrors ximea installed