SPEC: kernel-usb-media-pwcx.spec

Bobby Spark sparky w servek.sparky.homelinux.org
Pią, 9 Lip 2004, 17:31:46 CEST


To jest moja poropozycja na rozwiązanie pwcxa w kernelu:
Moduł pwc ten z linusowego kernela niech zostanie nietknięty
(i wyrzucić z config-{up,smp} CONFIG_USB_PWCX=m bo to trochę zmienia moduł pwc.ko)
A pwc zdolnego do używania pwcx kompilować w pakiecie, potem przed instalacją
będzie on zastępował starego pwc.ko a po odinstalowaniu będzie go spowrotem 
dawał na miejsce.
Ewentualnie można też kompilować już w kernelu pwc.ko z obsługą pwcxa
(CONFIG_USB_PWCX=m w config) a moduł pwcx w osobnym pakiecie,
tylko należy pamiętać żeby pwc w ketnelu był >= 9.0 bo inne
nie są kompatybilne w kernelach 2.6 z pwcx'em.

Pewnie bredzę a wy już o tym wszystkim wiecie, no ale to nic :D

Proszę przynajmniej o rozwarzenie tego pomysłu.

Budowanie na innych architekturach niż ix86 raczej jest do poprawki.

Sparky{PI]
-------------- następna część ---------
# $Revision:$, $Date:$
%bcond_without	dist_kernel     # without distribution kernel
%bcond_without	smp
%bcond_with	verbose

%define		_ver_major	9
%define		_pwcx_ver_minor	0
%define		_pwc_ver_minor	0.1

%define		_pwcx_ver	%{_ver_major}.%{_pwcx_ver_minor}
%define		_pwc_ver	%{_ver_major}.%{_pwc_ver_minor}

%define		_for_kernel	2.6

Summary:	Linux decompressor module for Philips webcams
Summary(pl):	Moduł dekompresora dla kamer Philipsa
Group:		Base/Kernel
Name:		kernel-usb-media-pwcx
Version:	%{_pwc_ver}
%define	_rel	1
Release:	%{_rel}@%{_kernel_ver_str}
License:	Philips B.V.
Vendor:		Nemosoft Unv.
Source0:	http://www.smcc.demon.nl/webcam/pwc-%{version}.tar.gz
# Source0-md5:	421476a59ed54ce3b374b0043060e354
Source1:	http://www.smcc.demon.nl/webcam/pwcx-%{_pwcx_ver}.tar.gz
# Source1-md5:	73907e7e1ae7c311553182569ce6ab1c
URL:		http://www.smcc.demon.nl/webcam/
BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
ExclusiveArch:	%{ix86} x86_64 ppc
%{?with_dist_kernel:BuildRequires: kernel-module-build }
%{?with_dist_kernel:%requires_releq_kernel_up}
Requires(post,postun):	/sbin/depmod

%description
Decompresor module for Philips webcams, this allows you to use higher
resoluwion and framerate. Working cameras: Philips: PCA645VC and
646VC, "Vesta", "Vesta Pro", "Vesta Scan", "ToUCam XS" (PCVC720K/40,
/20 is supported by ov511), "ToUCam Fun", "ToUCam Pro", "ToUCam Scan",
"ToUCam II", "ToUCam Pro II"; Askey VC010; Creative Labs Webcam: 5
(the old one; USB Product ID: 0x400C) and Pro Ex Logitech QuickCam
3000 Pro, 4000 Pro, Notebook Pro, Zoom and Orbit/Sphere; Samsung
MPC-C10 and MPC-C30; Sotec Afina Eye; Visionite VCS UM100 and VCS
UC300


%description -l pl
Moduł dekompresujący obraz z kamer na chipie Philipsa, umożliwia to
uzyskanie większej rozdzielczości i ilości klatek. Działające kamery:
Philips: PCA645VC and 646VC, "Vesta", "Vesta Pro", "Vesta Scan",
"ToUCam XS" (PCVC720K/40, K/20 dzjała z ov511), "ToUCam Fun", "ToUCam
Pro", "ToUCam Scan", "ToUCam II", "ToUCam Pro II"; Askey VC010;
Creative Labs Webcam: 5 (stary typ; USB Product ID: 0x400C) i Pro Ex
Logitech QuickCam 3000 Pro, 4000 Pro, Notebook Pro, Zoom i
Orbit/Sphere; Samsung MPC-C10 and MPC-C30; Sotec Afina Eye; Visionite
VCS UM100 i VCS UC300


%if %{with smp}
%package -n kernel-smp-usb-media-pwcx
Summary:	Linux decompressor module for Philips webcams for SMP kernels
Summary(pl):	Moduł dekompresora dla kamer Philipsa do kerneli SMP
Release:	%{_rel}@%{_kernel_ver_str}
Group:		Base/Kernel
%{?with_dist_kernel:BuildRequires: kernel-module-build }
%{?with_dist_kernel:%requires_releq_kernel_smp}
Requires(post,postun):	/sbin/depmod

%description -n kernel-smp-usb-media-pwcx
Decompresor module for Philips webcams for SMP kernel, this allows you
to use higher resoluwion and framerate. Working cameras: Philips:
PCA645VC and 646VC, "Vesta", "Vesta Pro", "Vesta Scan", "ToUCam XS"
(PCVC720K/40, /20 is supported by ov511), "ToUCam Fun", "ToUCam Pro",
"ToUCam Scan", "ToUCam II", "ToUCam Pro II"; Askey VC010; Creative
Labs Webcam: 5 (the old one; USB Product ID: 0x400C) and Pro Ex
Logitech QuickCam 3000 Pro, 4000 Pro, Notebook Pro, Zoom and
Orbit/Sphere; Samsung MPC-C10 and MPC-C30; Sotec Afina Eye; Visionite
VCS UM100 and VCS UC300

%description -n kernel-smp-usb-media-pwcx -l pl
Moduł do kerneli SMP dekompresujący obraz z kamer na chipie Philipsa,
umożliwia to uzyskanie większej rozdzielczości i ilości klatek.
Działające kamery: Philips: PCA645VC and 646VC, "Vesta", "Vesta Pro",
"Vesta Scan", "ToUCam XS" (PCVC720K/40, K/20 dzjała z ov511), "ToUCam
Fun", "ToUCam Pro", "ToUCam Scan", "ToUCam II", "ToUCam Pro II"; Askey
VC010; Creative Labs Webcam: 5 (stary typ; USB Product ID: 0x400C) i
Pro Ex Logitech QuickCam 3000 Pro, 4000 Pro, Notebook Pro, Zoom i
Orbit/Sphere; Samsung MPC-C10 and MPC-C30; Sotec Afina Eye; Visionite
VCS UM100 i VCS UC300

%endif


%package -n libpwcx
Summary:	Library libpwcx.a for external image decompression.
Summary(pl):	Biblioteka libpwcx.a służąza do dekompresji poza jądrem.
Group:		Development/Libraries
Requires(post,postun):	/sbin/ldconfig

%description -n libpwcx
Library libpwcx.a for image decompression from camera out of linux's
kernel, for example in a program on annother computer.
+ source of testpwcx

%description -n libpwcx -l pl
Boblioteka libpwcx.a służąca do dekompresji danych z kamery poza
jądrem linuxa, np. w programie to potrafiącym na innym komputerze.
+ kod programu testpwcx


%prep
%setup -q -b 1 -q -n pwcx-%{_pwcx_ver}
mv x86 i386
mv powerpc ppc


%build
#cofigure
mv ../pwc-%{_pwc_ver}/%{_for_kernel}/* ./
cp %{_target_base_arch}/libpwcx.a ./
mv pwcx/* ./
cat << EOF > Makefile
pwc-objs	:= pwc-if.o pwc-misc.o pwc-ctrl.o pwc-uncompress.o
pwcx-objs	:= pwcx-glue.o libpwcx.a
obj-m	:= pwc.o
obj-m	+= pwcx.o
CFLAGS += -DCONFIG_USB_PWCX -DCONFIG_USB_PWCX_MODULE
EOF

#make
for cfg in %{?with_dist_kernel:%{?with_smp:smp} up}%{!?with_dist_kernel:nondist}; do
	if [ ! -r "%{_kernelsrcdir}/config-$cfg" ]; then
		exit 1
	fi
	rm -rf include
	install -d include/{linux,config}
	ln -sf %{_kernelsrcdir}/config-$cfg .config
	ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h include/linux/autoconf.h
	ln -sf %{_kernelsrcdir}/include/asm-%{_target_base_arch} include/asm
	touch include/config/MARKER
	%{__make} -C %{_kernelsrcdir} clean modules \
		RCS_FIND_IGNORE="-name '*.ko' -o -name libpwcx.a -o" \
		M=$PWD O=$PWD \
		%{?with_verbose:V=1}
	mv pwc{,-$cfg}.ko
	mv pwcx{,-$cfg}.ko
done



%install
rm -rf $RPM_BUILD_ROOT

install -d $RPM_BUILD_ROOT%{_prefix}/lib
install -m 755 libpwcx.a $RPM_BUILD_ROOT%{_prefix}/lib
install -d $RPM_BUILD_ROOT%{_prefix}/src/examples
cp -rf testpwcx $RPM_BUILD_ROOT%{_prefix}/src/examples/
install README $RPM_BUILD_ROOT%{_prefix}/src/examples/testpwcx/

install -d $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/kernel/drivers/usb/media
install pwc-%{?with_dist_kernel:up}%{!?with_dist_kernel:nondist}.ko \
        $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/kernel/drivers/usb/media/pwc.ko
install pwcx-%{?with_dist_kernel:up}%{!?with_dist_kernel:nondist}.ko \
        $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/kernel/drivers/usb/media/pwcx.ko
%if %{with smp} && %{with dist_kernel}
install -d $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}smp/kernel/drivers/usb/media
install pwc-smp.ko \
        $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}smp/kernel/drivers/usb/media/pwc.ko
install pwcx-smp.ko \
        $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}smp/kernel/drivers/usb/media/pwcx.ko
%endif


%clean
rm -rf $RPM_BUILD_ROOT

%pre
if [ -r /lib/modules/%{_kernel_ver}/kernel/drivers/usb/media/pwc.ko ]; then
	mv /lib/modules/%{_kernel_ver}/kernel/drivers/usb/media/pwc.ko{,-old}
fi

%post
%depmod %{_kernel_ver}

%postun
if [ -r /lib/modules/%{_kernel_ver}/kernel/drivers/usb/media/pwc.ko-old -a ! -r /lib/modules/%{_kernel_ver}/kernel/drivers/usb/media/pwc.ko[.]* ]; then
	# if there is pwc.ko-old and isn't pwc.ko or pwc.ko.* (there shouldn't
	# be more pwc.ko* than pwx.ko-old and one of: pwc.ko, pwc.ko.gz)
	mv /lib/modules/%{_kernel_ver}/kernel/drivers/usb/media/pwc.ko{-old,}
fi
%depmod %{_kernel_ver}

%if %{with smp} && %{with dist_kernel}
%pre -n kernel-smp-usb-media-pwcx
if [ -r /lib/modules/%{_kernel_ver}smp/kernel/drivers/usb/media/pwc.ko ]; then
	mv /lib/modules/%{_kernel_ver}smp/kernel/drivers/usb/media/pwc.ko{,-old}
fi

%post -n kernel-smp-usb-media-pwcx
%depmod %{_kernel_ver}

%postun -n kernel-smp-usb-media-pwcx
if [ -r /lib/modules/%{_kernel_ver}/kernel/drivers/usb/media/pwc.ko-old -a ! -r /lib/modules/%{_kernel_ver}/kernel/drivers/usb/media/pwc.ko[.]* ]; then
	mv /lib/modules/%{_kernel_ver}/kernel/drivers/usb/media/pwc.ko{-old,}
fi
%depmod %{_kernel_ver}
%endif

%post -n libpwcx -p /sbin/ldconfig
%postun -n libpwcx -p /sbin/ldconfig


%files
%defattr(644,root,root,755)
%doc README philips.txt
%attr(644,root,root) /lib/modules/%{_kernel_ver}/kernel/drivers/usb/media/*

%if %{with smp} && %{with dist_kernel}
%files -n kernel-smp-usb-media-pwcx
%defattr(644,root,root,755)
%doc README philips.txt
%attr(644,root,root) /lib/modules/%{_kernel_ver}smp/kernel/drivers/usb/media/*
%endif

%files -n libpwcx
%defattr(644,root,root,755)
%attr(755,root,root) %{_prefix}/lib/libpwcx.a
%attr(755,root,root) %{_prefix}/src/examples/testpwcx/
%attr(644,root,root) %{_prefix}/src/examples/testpwcx/*


%define date	%(echo `LC_ALL="C" date +"%a %b %d %Y"`)
%changelog
* %{date} PLD Team <feedback w pld-linux.org>
All persons listed below can be reached at <cvs_login>@pld-linux.org

$Log:$


Więcej informacji o liście dyskusyjnej pld-devel-pl