summaryrefslogtreecommitdiff
blob: a8eb7fee247f0c485b0590f65934625aee6982b2 (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
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
# Copyright 1999-2018 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit autotools systemd

DESCRIPTION="Displays real-time system information from your Linux/*BSD box on a LCD"
HOMEPAGE="http://www.lcdproc.org/"
SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.gz
	https://raw.githubusercontent.com/lcdproc/lcdproc/master/docs/lcdproc-user/drivers/linux_input.docbook"

KEYWORDS="~amd64 ~ppc ~x86"
LICENSE="GPL-2"
SLOT="0"
IUSE="debug doc ethlcd extra-charmaps freetype menu nfs png samba test-menu"
REQUIRED_USE="ethlcd? ( lcd_devices_hd44780 )
	freetype? ( lcd_devices_glcd )
	png? ( lcd_devices_glcd )"

# Define the list of valid lcd devices.
# Some drivers were removed from this list:
# - svga: It needs media-libs/svgalib, which is masked and obsolete.
IUSE_LCD_DEVICES=( bayrad CFontz CFontzPacket curses CwLnx ea65
	EyeboxOne futaba g15 glcd glcdlib glk hd44780 i2500vfd
	icp_a106 imon imonlcd IOWarrior irman irtrans
	joy lb216 lcdm001 lcterm linux_input lirc lis MD8800 mdm166a
	ms6931 mtc_s16209x MtxOrb mx5000 NoritakeVFD
	Olimex_MOD_LCD1x9 picolcd pyramid rawserial
	sdeclcd sed1330 sed1520 serialPOS serialVFD
	shuttleVFD sli stv5730 SureElec t6963 text
	tyan ula200 vlsys_m428 xosd yard2LCD )

# Add supported drivers from 'IUSE_LCD_DEVICES' to 'IUSE' and 'REQUIRED_USE'
REQUIRED_USE+=" || ( "
for LCD_DEVICE in "${IUSE_LCD_DEVICES[@]}"; do
	LCD_DEVICE="${LCD_DEVICE,,}"
	IUSE+=" lcd_devices_${LCD_DEVICE} "
	REQUIRED_USE+=" lcd_devices_${LCD_DEVICE} "
done
REQUIRED_USE+=" ) "
unset LCD_DEVICE

# Define dependencies for all drivers in 'IUSE_LCD_DEVICES'
DEPEND_LCD_DEVICES="lcd_devices_cfontz? ( dev-libs/libhid:= )
	lcd_devices_cfontzpacket? ( dev-libs/libhid:= )
	lcd_devices_cwlnx? ( dev-libs/libhid:= )
	lcd_devices_futaba? ( virtual/libusb:1= )
	lcd_devices_g15? ( app-misc/g15daemon
		dev-libs/libg15render:=
		virtual/libusb:0= )
	lcd_devices_glcd? ( app-misc/glcdprocdriver:=
		dev-embedded/libftdi:1=
		dev-libs/libhid:=
		dev-libs/serdisplib:=
		virtual/libusb:0=
		x11-libs/libX11:= )
	lcd_devices_hd44780? ( dev-embedded/libftdi:1=
		dev-libs/libugpio:=
		virtual/libusb:0= )
	lcd_devices_i2500vfd? ( dev-embedded/libftdi:1= )
	lcd_devices_irman? ( media-libs/libirman:= )
	lcd_devices_iowarrior? ( virtual/libusb:0= )
	lcd_devices_lirc? ( app-misc/lirc )
	lcd_devices_lis? ( dev-embedded/libftdi:1= )
	lcd_devices_lb216? ( dev-libs/libhid:= )
	lcd_devices_mdm166a? ( dev-libs/libhid:= )
	lcd_devices_mtc_s16209x? ( dev-libs/libhid:= )
	lcd_devices_mx5000? ( app-misc/mx5000tools )
	lcd_devices_noritakevfd? ( dev-libs/libhid:= )
	lcd_devices_picolcd? ( virtual/libusb:1= )
	lcd_devices_shuttlevfd? ( virtual/libusb:0= )
	lcd_devices_ula200? ( dev-embedded/libftdi:1= )
	lcd_devices_xosd? ( x11-libs/libX11:=
		x11-libs/xosd:= )"

RDEPEND="${DEPEND_LCD_DEVICES}"
DEPEND="${RDEPEND}
	doc? ( app-doc/doxygen[dot]
		app-text/xmlto )
	freetype? ( media-libs/freetype:2= )
	nfs? ( net-fs/nfs-utils )
	png? ( media-libs/libpng:0= )
	samba? ( net-fs/samba )"

DOCS=( "CREDITS.md" "TODO" )

PATCHES=(
	"${FILESDIR}/${P}-fix-parallel-make.patch"
	"${FILESDIR}/${P}-use-freetype2-pkg-config.patch"
)

src_unpack() {
	unpack ${P}.tar.gz

	# Copy missing docbook or the buildung of the lcdproc-user docbook will fail
	cp "${DISTDIR}"/linux_input.docbook "${S}"/docs/lcdproc-user/drivers/linux_input.docbook || die
}

src_prepare() {
	default

	# Fix path for modules
	sed -e "37s:server/drivers:/usr/$(get_libdir)/lcdproc:" -i LCDd.conf || die

	eautoreconf
}

src_configure() {
	# Enable all users enabled lcd devices
	local myeconfargs_lcd_devices
	for lcd_device in "${IUSE_LCD_DEVICES[@]}"; do
		if use "lcd_devices_${lcd_device,,}"; then
			myeconfargs_lcd_devices+=",${lcd_device}"
		fi
	done

	local enable_ftdi="--disable-libftdi"
	if use lcd_devices_glcd || use lcd_devices_hd44780 || use lcd_devices_i2500vfd || use lcd_devices_lis || use lcd_devices_ula200; then
		enable_ftdi="--enable-libftdi"
	fi

	local enable_hid="--disable-libhid"
	if use lcd_devices_cfontz || use lcd_devices_cfontzpacket || use lcd_devices_cwlnx || use lcd_devices_glcd || use lcd_devices_lb216 || use lcd_devices_mdm166a || use lcd_devices_mtc_s16209x || use lcd_devices_noritakevfd; then
		enable_hid="--enable-libhid"
	fi

	local enable_png="--disable-libpng"
	use lcd_devices_glcd && enable_png=""

	local enable_usb0="--disable-libusb"
	if use lcd_devices_futaba || use lcd_devices_g15 || use lcd_devices_glcd || use lcd_devices_hd44780 || use lcd_devices_iowarrior || use lcd_devices_picolcd || use lcd_devices_shuttlevfd; then
		enable_usb0="--enable-libusb"
	fi

	local enable_usb1="--disable-libusb-1-0"
	if use lcd_devices_futaba || use lcd_devices_picolcd; then
		enable_usb1="--enable-libusb-1-0"
	fi

	local enable_x11="--disable-libX11"
	use lcd_devices_glcd && enable_x11="--enable-libX11"

	local myeconfargs=(
		--enable-drivers="${myeconfargs_lcd_devices#,}"
		$(use_enable debug)
		$(use_enable doc doxygen)
		$(use_enable doc dot)
		$(use_enable doc html-dox)
		$(use_enable doc latex-dox)
		$(use_enable ethlcd)
		$(use_enable extra-charmaps)
		$(use_enable freetype)
		$(use_enable menu lcdproc-menus)
		$(use_enable nfs stat-nfs)
		$(use_enable samba stat-smbfs)
		$(use_enable test-menu testmenus)
		${enable_ftdi}
		${enable_hid}
		${enable_png}
		${enable_usb0}
		${enable_usb1}
		${enable_x11}
		--with-lcdport="13666"
		--with-pidfile-dir="/run"
		--without-included-getopt
	)

	econf "${myeconfargs[@]}"
}

src_compile() {
	default

	if use doc; then
		emake dox

		local docbook
		for docbook in lcdproc-user lcdproc-dev; do
			cd "${S}"/docs/"${docbook}" || die
			xmlto html "${docbook}".docbook || die
		done
	fi
}

src_install() {
	default

	# Move example clients from '/usr/bin' into '/usr/share/lcdproc/clients'
	rm -f "${ED%/}"/usr/bin/{fortune,lcdident,lcdmetar,iosock,tail,x11amp}.pl || die
	insinto /usr/share/lcdproc/clients
	doins clients/examples/*.pl clients/metar/*.pl

	newinitd "${FILESDIR}"/LCDd.initd LCDd
	newinitd "${FILESDIR}"/lcdexec.initd lcdexec
	newinitd "${FILESDIR}"/lcdproc.initd lcdproc

	systemd_dounit "${FILESDIR}"/LCDd.service
	systemd_dounit "${FILESDIR}"/lcdexec.service
	systemd_dounit "${FILESDIR}"/lcdproc.service

	if use doc; then
		dodoc -r docs/html

		local docbook
		for docbook in lcdproc-user lcdproc-dev; do
			docinto "${docbook}"
			dodoc docs/"${docbook}"/*.html
		done
	fi
}