summaryrefslogtreecommitdiff
blob: 55186e5b176367725949315ec69805a4ffcfb1ed (plain)
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
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/media-libs/libgphoto2/libgphoto2-2.3.1-r2.ebuild,v 1.2 2007/01/31 18:52:49 alonbl 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
# 2. Track upstream bug udevscriptdir does not work.
#	http://sourceforge.net/tracker/index.php?func=detail&aid=1646520&group_id=8874&atid=108874
#	http://sourceforge.net/tracker/index.php?func=detail&aid=1648346&group_id=8874&atid=108874
# 3. Track upstream bug regarding rpm usage.
#	http://sourceforge.net/tracker/index.php?func=detail&aid=1643813&group_id=8874&atid=358874

inherit eutils

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"
KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"

IUSE="nls doc exif hal kernel_linux"
RESTRICT="test"

# By default, drivers for all supported cards will be compiled.
# If you want to only compile for specific card(s), set CAMERAS
# environment to a comma-separated list (no spaces) of drivers that
# you want to build.
IUSE_CAMERAS="adc65 agfa-cl20 aox barbie canon casio clicksmart310 digigr8 digita
dimera directory enigma13 fuji gsmart300 hp215 iclick jamcam jd11 kodak
konica largan lg_gsm mars minolta mustek panasonic pccam300 pccam600
polaroid ptp2 ricoh samsung sierra sipix smal sonix sonydscf1 sonydscf55
soundvision spca50x sq905 stv0674 stv0680 sx330z template toshiba"

for camera in ${IUSE_CAMERAS}; do
	IUSE="${IUSE} cameras_${camera}"
done

RDEPEND="exif? ( >=media-libs/libexif-0.5.9 )
	hal? ( >=sys-apps/hal-0.5 )
	sys-devel/libtool"
DEPEND="${RDEPEND}
	dev-util/pkgconfig
	doc? ( app-doc/doxygen )"

pkg_setup() {
	if ! echo "${USE}" | grep "cameras_" > /dev/null 2>&1; then
		einfo "libgphoto2 supports: all ${IUSE_CAMERAS}"
		einfo "All camera drivers will be built since you did not specify"
		einfo "via the CAMERAS variable what camera you use."
		ewarn "NOTICE: Upstream will not support you if you do not compile all camera drivers first"
	fi

	enewgroup plugdev || die "Error creating plugdev group"
}

src_unpack() {
	unpack ${A}
	cd "${S}"
	epatch "${FILESDIR}/${P}-rpm.patch"

	# Fix for udev >= 098 rules generation
	epatch "${FILESDIR}"/${P}-udev-rules-fix.diff
}

src_compile() {
	local cameras
	local cam
	for cam in ${IUSE_CAMERAS} ; do
		use "cameras_${cam}" && cameras="${cameras},${cam}"
	done
	[ -z "${cameras}" ] \
		&& cameras="all" \
		|| cameras="${cameras:1}"

	einfo "Enabled camera drivers: ${cameras}"
	[ "${cameras}" != "all" ] && \
		ewarn "Upstream will not support you if you do not compile all camera drivers first"

	CFLAGS="${CFLAGS} -DCANON_EXPERIMENTAL_20D"

	local myconf

	use exif \
		&& myconf="${myconf} --with-exif-prefix=/usr" \
		|| myconf="${myconf} --without-exif"

	econf \
		--with-drivers=${cameras} \
		--with-doc-dir=/usr/share/doc/${PF} \
		--with-html-dir=/usr/share/doc/${PF}/html \
		--with-hotplug-doc-dir=/usr/share/doc/${PF}/hotplug \
		$(use_enable nls) \
		--with-rpmbuild=/bin/true \
		--disable-docs \
		udevscriptdir=/lib/udev \
		GTKDOC=/bin/true \
		${myconf} || die "econf failed"
#		$(use_enable doc docs) \	TODO

	emake || die "make failed"
}

src_install() {
	emake DESTDIR=${D} install || die "install failed"

	# fixup autoconf bug TODO
	if ! use doc && [ -d ${D}/usr/share/doc/${PF}/apidocs.html ]; then
		rm -fr "${D}/usr/share/doc/${PF}/apidocs.html"
	fi
	# end fixup

	# fixup udevscriptdir is not working TODO
	dodir /lib
	mv "${D}/usr/lib/udev" "${D}/lib"
	# end fixup

	dodoc ChangeLog NEWS* README AUTHORS TESTERS MAINTAINERS HACKING

	HAL_FDI="/usr/share/hal/fdi/information/10freedesktop/10-camera-libgphoto2.fdi"
	UDEV_RULES="/etc/udev/rules.d/99-libgphoto2.rules"

	if [ -x ${D}/usr/$(get_libdir)/libgphoto2/print-camera-list ]; then
		# Let print-camera-list find libgphoto2.so
		export LD_LIBRARY_PATH="${D}/usr/$(get_libdir)"
		# Let libgphoto2 find its camera-modules
		export CAMLIBS="${D}/usr/$(get_libdir)/libgphoto2/${PV}"

		if use hal; then
			einfo "Generating HAL FDI files ..."
			mkdir -p ${D}/${HAL_FDI%/*}
			${D}/usr/$(get_libdir)/libgphoto2/print-camera-list hal-fdi >> ${D}/${HAL_FDI} \
				|| die "failed to create hal-fdi"
		fi

		einfo "Generating UDEV-rules ..."
		mkdir -p ${D}/${UDEV_RULES%/*}
		${D}/usr/$(get_libdir)/libgphoto2/print-camera-list \
			udev-rules-0.98	group plugdev mode 0660 >> ${D}/${UDEV_RULES} \
			|| die "failed to create udev-rules"
	else
		eerror "Unable to find ${ROOT}/usr/$(get_libdir)/libgphoto2/print-camera-list"
		eerror "and therefore unable to generate hotplug usermap or HAL FDI files."
		eerror "You will have to manually generate it by running:"
		eerror " /usr/$(get_libdir)/libgphoto2/print-camera-list udev-rules-0.98 group plugdev mode 0660 > ${UDEV_RULES}"
		eerror " /usr/$(get_libdir)/libgphoto2/print-camera-list hal-fdi > ${HAL_FDI}"
	fi

}

pkg_postinst() {
	elog "Don't forget to add yourself to the plugdev group "
	elog "if you want to be able to access your camera."
}