1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
|
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/media-libs/libgphoto2/libgphoto2-2.5.4-r1.ebuild,v 1.10 2014/08/25 10:59:53 ago Exp $
# TODO
# 1. Track upstream bug --disable-docs does not work.
# http://sourceforge.net/tracker/index.php?func=detail&aid=1643870&group_id=8874&atid=108874
EAPI="5"
inherit autotools eutils multilib multilib-minimal udev user
DESCRIPTION="Library that implements support for numerous digital cameras"
HOMEPAGE="http://www.gphoto.org/"
SRC_URI="mirror://sourceforge/gphoto/${P}.tar.bz2"
LICENSE="GPL-2"
SLOT="0/6" # libgphoto2.so soname version
KEYWORDS="alpha amd64 ~arm hppa ia64 ppc ppc64 ~sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~ia64-linux ~x86-linux"
IUSE="doc examples exif gd jpeg nls serial zeroconf"
# By default, drivers for all supported cameras will be compiled.
# If you want to only compile for specific camera(s), set CAMERAS
# environment to a space-separated list (no commas) of drivers that
# you want to build.
IUSE_CAMERAS="
adc65 agfa_cl20 aox ax203
barbie
canon casio_qv clicksmart310
digigr8 digita dimagev dimera3500 directory
enigma13
fuji
gsmart300
hp215
iclick
jamcam jd11 jl2005a jl2005c
kodak_dc120 kodak_dc210 kodak_dc240 kodak_dc3200 kodak_ez200 konica konica_qm150
largan lg_gsm
mars mustek
panasonic_coolshot panasonic_l859 panasonic_dc1000 panasonic_dc1580 pccam300 pccam600 pentax polaroid_pdc320 polaroid_pdc640 polaroid_pdc700 ptp2
ricoh ricoh_g3
samsung sierra sipix_blink2 sipix_web2 smal sonix sony_dscf1 sony_dscf55 soundvision spca50x sq905 st2205 stv0674 stv0680 sx330z
toshiba_pdrm11 topfield tp6801
"
for camera in ${IUSE_CAMERAS}; do
IUSE="${IUSE} cameras_${camera}"
done
# libgphoto2 actually links to libtool
RDEPEND="
>=dev-libs/libxml2-2.9.1-r4:2[${MULTILIB_USEDEP}]
>=sys-devel/libtool-2.4.2-r1[${MULTILIB_USEDEP}]
>=virtual/libusb-1-r1:1[${MULTILIB_USEDEP}]
cameras_ax203? ( >=media-libs/gd-2.0.35-r4:=[${MULTILIB_USEDEP}] )
cameras_st2205? ( >=media-libs/gd-2.0.35-r4:=[${MULTILIB_USEDEP}] )
exif? ( >=media-libs/libexif-0.6.21-r1:=[${MULTILIB_USEDEP}] )
gd? ( >=media-libs/gd-2.0.35-r4[jpeg=,${MULTILIB_USEDEP}] )
jpeg? ( >=virtual/jpeg-0-r2:0[${MULTILIB_USEDEP}] )
serial? ( >=dev-libs/lockdev-1.0.3.1.2-r2[${MULTILIB_USEDEP}] )
zeroconf? ( >=net-dns/avahi-0.6.31-r2[mdnsresponder-compat,${MULTILIB_USEDEP}] )
!<sys-fs/udev-175
abi_x86_32? (
!<=app-emulation/emul-linux-x86-medialibs-20140508
!app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)]
)"
DEPEND="${RDEPEND}
dev-util/gtk-doc-am
sys-devel/flex
>=sys-devel/gettext-0.14.1
>=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
doc? ( app-doc/doxygen )
"
MULTILIB_CHOST_TOOLS=(
/usr/bin/gphoto2-port-config
/usr/bin/gphoto2-config
)
pkg_pretend() {
if ! echo "${USE}" | grep "cameras_" > /dev/null 2>&1; then
einfo "No camera drivers will be built since you did not specify any."
fi
}
pkg_setup() {
enewgroup plugdev
}
src_prepare() {
# Handle examples ourselves
sed 's/^\(SUBDIRS =.*\)examples\(.*\)$/\1\2/' -i Makefile.am Makefile.in \
|| die "examples sed failed"
# Fix pkgconfig file when USE="-exif"
# https://sourceforge.net/p/gphoto/bugs/980/
if ! use exif; then
sed -i "s/, @REQUIREMENTS_FOR_LIBEXIF@//" libgphoto2.pc.in || die " libgphoto2.pc sed failed"
fi
sed -e 's/sleep 2//' -i m4m/gp-camlibs.m4 || die
# Fix USE=zeroconf, bug #283332
# https://sourceforge.net/p/gphoto/bugs/981/
epatch "${FILESDIR}/${PN}-2.4.7-respect-bonjour.patch"
eautoreconf
}
multilib_src_configure() {
local cameras
local cam
local cam_warn=no
for cam in ${IUSE_CAMERAS} ; do
if use "cameras_${cam}"; then
cameras="${cameras},${cam}"
else
cam_warn=yes
fi
done
if [ "${cam_warn}" = "yes" ]; then
[ -z "${cameras}" ] || cameras="${cameras:1}"
einfo "Enabled camera drivers: ${cameras:-none}"
ewarn "Upstream will not support you if you do not compile all camera drivers first"
else
cameras="all"
einfo "Enabled camera drivers: all"
fi
local myconf
use doc || myconf=( ac_cv_path_DOXYGEN=false )
# gd detection is broken: https://sourceforge.net/p/gphoto/bugs/982/
if use gd; then
export LIBGD_CFLAGS=" "
export LIBGD_LIBS="-lgd"
fi
# Upstream doesn't default to --enable-option-checking due having another
# configure in libgphoto2_port/ that also needs to be checked on every bump
#
# Serial port uses either lockdev or ttylock, but we don't have ttylock
ECONF_SOURCE=${S} \
econf \
--disable-docs \
--disable-gp2ddb \
$(use_with zeroconf bonjour) \
$(use_enable nls) \
$(use_with exif libexif auto) \
$(use_with gd) \
$(use_with jpeg) \
$(use_enable serial) \
$(use_enable serial lockdev) \
--with-libusb=no \
--with-libusb-1.0=auto \
--disable-ttylock \
--with-camlibs=${cameras} \
--with-doc-dir="${EPREFIX}"/usr/share/doc/${PF} \
--with-html-dir="${EPREFIX}"/usr/share/doc/${PF}/html \
--with-hotplug-doc-dir="${EPREFIX}"/usr/share/doc/${PF}/hotplug \
--with-rpmbuild=$(type -P true) \
udevscriptdir="$(get_udevdir)" \
"${myconf[@]}"
}
multilib_src_compile() {
default
if multilib_is_native_abi && use doc; then
doxygen doc/Doxyfile || die "Documentation generation failed"
fi
}
multilib_src_install_all() {
# Empty dependency_libs in .la files, bug #386665
find "${ED}" -name '*.la' -exec sed -i -e "/^dependency_libs/s:=.*:='':" {} +
# Remove recursive symlink
# https://sourceforge.net/p/gphoto/bugs/983/
rm "${ED}/usr/include/gphoto2/gphoto2" || die
# Clean up unwanted files
rm "${ED}/usr/share/doc/${PF}/"{ABOUT-NLS,COPYING} || die "rm failed"
dodoc ChangeLog NEWS* README* AUTHORS TESTERS MAINTAINERS HACKING
if use examples; then
insinto /usr/share/doc/${PF}/examples
doins examples/README examples/*.c examples/*.h
fi
# FIXME: fixup autoconf bug
if ! use doc && [ -d "${ED}/usr/share/doc/${PF}/apidocs.html" ]; then
rm -fr "${ED}/usr/share/doc/${PF}/apidocs.html"
fi
# end fixup
local udev_rules cam_list
udev_rules="$(get_udevdir)/rules.d/70-libgphoto2.rules"
cam_list="/usr/$(get_libdir)/libgphoto2/print-camera-list"
if [ -x "${ED}"${cam_list} ]; then
# Let print-camera-list find libgphoto2.so
export LD_LIBRARY_PATH="${ED}/usr/$(get_libdir)"
# Let libgphoto2 find its camera-modules
export CAMLIBS="${ED}/usr/$(get_libdir)/libgphoto2/${PV}"
einfo "Generating UDEV-rules ..."
mkdir -p "${ED}"/${udev_rules%/*}
echo -e "# do not edit this file, it will be overwritten on update\n#" \
> "${ED}"/${udev_rules}
"${ED}"${cam_list} udev-rules version 175 group plugdev >> "${ED}"/${udev_rules} \
|| die "failed to create udev-rules"
else
eerror "Unable to find print-camera-list"
eerror "and therefore unable to generate hotplug usermap."
eerror "You will have to manually generate it by running:"
eerror " ${cam_list} udev-rules version 175 group plugdev > ${udev_rules}"
fi
}
pkg_postinst() {
if ! has_version "sys-auth/consolekit[acl]" && ! has_version "sys-apps/systemd[acl]" ; then
elog "Don't forget to add yourself to the plugdev group "
elog "if you want to be able to access your camera."
fi
local old_udev_rules="${EROOT}"etc/udev/rules.d/99-libgphoto2.rules
if [[ -f ${old_udev_rules} ]]; then
rm -f "${old_udev_rules}"
fi
}
|