| 5 |
5 |
|
| 6 |
6 |
DISTUTILS_OPTIONAL=1
|
| 7 |
7 |
DISTUTILS_USE_PEP517=setuptools
|
| 8 |
|
PYTHON_COMPAT=( python3_{11..13} )
|
|
8 |
PYTHON_COMPAT=( python3_{11..14} )
|
| 9 |
9 |
SCONS_MIN_VERSION="2.3.0"
|
| 10 |
10 |
|
| 11 |
|
inherit distutils-r1 scons-utils systemd toolchain-funcs udev
|
|
11 |
inherit distutils-r1 optfeature scons-utils systemd toolchain-funcs udev
|
| 12 |
12 |
|
| 13 |
13 |
if [[ ${PV} == 9999 ]] ; then
|
| 14 |
14 |
EGIT_REPO_URI="https://gitlab.com/gpsd/gpsd.git"
|
| 15 |
15 |
inherit git-r3
|
| 16 |
16 |
else
|
| 17 |
|
SRC_URI="mirror://nongnu/${PN}/${P}.tar.xz"
|
| 18 |
|
KEYWORDS="amd64 arm ~arm64 ~loong ~ppc ppc64 ~riscv ~sparc ~x86"
|
|
17 |
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/garyemiller.asc
|
|
18 |
inherit verify-sig
|
|
19 |
SRC_URI="
|
|
20 |
mirror://nongnu/${PN}/${P}.tar.xz
|
|
21 |
verify-sig? ( mirror://nongnu/${PN}/${P}.tar.xz.sig )
|
|
22 |
"
|
|
23 |
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
|
| 19 |
24 |
fi
|
| 20 |
25 |
|
| 21 |
26 |
DESCRIPTION="GPS daemon and library for USB/serial GPS devices and GPS/mapping clients"
|
| ... | ... | |
| 30 |
35 |
sirf skytraq superstar2 tnt tripmate tsip
|
| 31 |
36 |
)
|
| 32 |
37 |
IUSE_GPSD_PROTOCOLS=${GPSD_PROTOCOLS[@]/#/+gpsd_protocols_}
|
| 33 |
|
IUSE="${IUSE_GPSD_PROTOCOLS} bluetooth +cxx dbus debug latency-timing ncurses ntp qt6 selinux +shm static systemd test udev usb X"
|
|
38 |
IUSE="${IUSE_GPSD_PROTOCOLS} bluetooth +cxx dbus debug latency-timing ncurses ntp qt6 selinux +shm systemd test udev usb"
|
| 34 |
39 |
REQUIRED_USE="
|
| 35 |
40 |
gpsd_protocols_nmea2000? ( gpsd_protocols_aivdm )
|
| 36 |
41 |
${PYTHON_REQUIRED_USE}
|
| ... | ... | |
| 38 |
43 |
"
|
| 39 |
44 |
RESTRICT="!test? ( test )"
|
| 40 |
45 |
|
| 41 |
|
RDEPEND="
|
|
46 |
DEPEND="
|
| 42 |
47 |
acct-user/gpsd
|
| 43 |
48 |
acct-group/dialout
|
| 44 |
49 |
>=net-misc/pps-tools-0.0.20120407
|
|
50 |
sys-libs/libcap
|
| 45 |
51 |
bluetooth? ( net-wireless/bluez:= )
|
| 46 |
52 |
dbus? (
|
| 47 |
53 |
sys-apps/dbus
|
| 48 |
54 |
dev-libs/dbus-glib
|
| 49 |
55 |
)
|
| 50 |
56 |
ncurses? ( sys-libs/ncurses:= )
|
| 51 |
|
ntp? ( || (
|
| 52 |
|
net-misc/ntp
|
| 53 |
|
net-misc/ntpsec
|
| 54 |
|
net-misc/chrony
|
| 55 |
|
) )
|
| 56 |
57 |
qt6? ( dev-qt/qtbase:6[network] )
|
| 57 |
58 |
${PYTHON_DEPS}
|
| 58 |
59 |
dev-python/pyserial[${PYTHON_USEDEP}]
|
| 59 |
60 |
usb? ( virtual/libusb:1 )
|
| 60 |
|
X? ( dev-python/pygobject:3[cairo,${PYTHON_USEDEP}] )"
|
| 61 |
|
DEPEND="${RDEPEND}"
|
| 62 |
|
BDEPEND="virtual/pkgconfig
|
|
61 |
"
|
|
62 |
RDEPEND="
|
|
63 |
${DEPEND}
|
|
64 |
ntp? ( || (
|
|
65 |
net-misc/ntpsec
|
|
66 |
net-misc/chrony
|
|
67 |
net-misc/ntp
|
|
68 |
) )
|
|
69 |
selinux? ( sec-policy/selinux-gpsd )
|
|
70 |
"
|
|
71 |
BDEPEND="
|
|
72 |
virtual/pkgconfig
|
| 63 |
73 |
$(python_gen_any_dep 'dev-build/scons[${PYTHON_USEDEP}]')
|
| 64 |
74 |
${DISTUTILS_DEPS}
|
| 65 |
|
test? ( app-alternatives/bc )"
|
| 66 |
|
RDEPEND+=" selinux? ( sec-policy/selinux-gpsd )"
|
|
75 |
test? ( app-alternatives/bc )
|
|
76 |
"
|
| 67 |
77 |
|
| 68 |
|
# asciidoctor package is for man page generation
|
| 69 |
78 |
if [[ ${PV} == *9999* ]] ; then
|
|
79 |
# asciidoctor package is for man page generation
|
| 70 |
80 |
BDEPEND+=" dev-ruby/asciidoctor"
|
|
81 |
else
|
|
82 |
BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-garyemiller )"
|
| 71 |
83 |
fi
|
| 72 |
84 |
|
| 73 |
85 |
PATCHES=(
|
| 74 |
|
"${FILESDIR}/${P}-qt6.patch" # bug 962118, in git master
|
| 75 |
86 |
"${FILESDIR}/${PN}-drop-dia.patch" # bugs 836730, 967742
|
| 76 |
87 |
"${FILESDIR}/${PN}-no-class.patch" # from Portage
|
| 77 |
88 |
)
|
| ... | ... | |
| 101 |
112 |
python_prepare_all() {
|
| 102 |
113 |
python_setup
|
| 103 |
114 |
|
| 104 |
|
# bug #796476
|
| 105 |
|
python_export_utf8_locale
|
| 106 |
|
|
| 107 |
|
# Extract python info out of SConscript so we can use saner distribute
|
| 108 |
|
pyarray() { sed -n "/^ *$1 *= *\\[/,/\\]/p" SConscript ; }
|
| 109 |
|
local pyprogs=$(pyarray python_progs)
|
| 110 |
|
local pybins=$("${PYTHON}" -c "${pyprogs}; \
|
| 111 |
|
print(list(set(python_progs) - {'xgps', 'xgpsspeed', 'ubxtool', 'zerk'}))" || die "Unable to list pybins")
|
| 112 |
|
# Handle conditional tools manually. #666734
|
| 113 |
|
use X && pybins+="+ ['xgps', 'xgpsspeed']"
|
| 114 |
|
pybins+="+ ['ubxtool']"
|
| 115 |
|
use gpsd_protocols_greis && pybins+="+ ['zerk']"
|
| 116 |
|
local pysrcs=$(pyarray packet_ffi_extension)
|
| 117 |
|
local packet=$("${PYTHON}" -c "${pysrcs}; print(packet_ffi_extension)" || die "Unable to extract packet types")
|
| 118 |
|
|
| 119 |
115 |
pyvar() { sed -n "/^ *$1 *=/s:.*= *::p" SConscript ; }
|
| 120 |
116 |
pyvar2() { sed -n "/^ *$1 *=/s:.*= *::p" SConstruct ; }
|
| 121 |
117 |
|
| 122 |
118 |
# Post 3.19 the clienthelpers were merged into gps.packet
|
| 123 |
119 |
|
| 124 |
|
# TODO: Fix hardcoding https://gpsd.io/ for now for @URL@
|
| 125 |
120 |
sed \
|
| 126 |
121 |
-e "s|@VERSION@|$(pyvar2 gpsd_version | sed -e 's:\"::g')|" \
|
| 127 |
|
-e "s|@URL@|https://gpsd.io/|" \
|
| 128 |
122 |
-e "s|@DEVMAIL@|$(pyvar devmail)|" \
|
| 129 |
|
-e "s|@SCRIPTS@|${pybins}|" \
|
| 130 |
123 |
-e "s|@DOWNLOAD@|$(pyvar download)|" \
|
| 131 |
124 |
-e "s|@IRCCHAN@|$(pyvar ircchan)|" \
|
| 132 |
125 |
-e "s|@ISSUES@|$(pyvar bugtracker)|" \
|
| ... | ... | |
| 156 |
149 |
nostrip=True
|
| 157 |
150 |
systemd=$(usex systemd)
|
| 158 |
151 |
unitdir="$(systemd_get_systemunitdir)"
|
| 159 |
|
shared=$(usex !static True False)
|
|
152 |
shared=True
|
| 160 |
153 |
bluez=$(usex bluetooth)
|
| 161 |
154 |
libgpsmm=$(usex cxx)
|
| 162 |
155 |
clientdebug=$(usex debug)
|
| ... | ... | |
| 178 |
171 |
scons_opts+=( manbuild=False )
|
| 179 |
172 |
fi
|
| 180 |
173 |
|
| 181 |
|
use X && scons_opts+=( xgps=1 xgpsspeed=1 )
|
| 182 |
174 |
use qt6 && scons_opts+=( qt_versioned=6 )
|
| 183 |
175 |
|
| 184 |
176 |
# enable specified protocols
|
| ... | ... | |
| 193 |
185 |
|
| 194 |
186 |
src_compile() {
|
| 195 |
187 |
export CHRPATH=
|
| 196 |
|
tc-export CC CXX PKG_CONFIG
|
|
188 |
tc-export AR CC CXX PKG_CONFIG
|
| 197 |
189 |
export SHLINKFLAGS=${LDFLAGS} LINKFLAGS=${LDFLAGS}
|
| 198 |
190 |
escons "${scons_opts[@]}"
|
| 199 |
191 |
|
| ... | ... | |
| 214 |
206 |
|
| 215 |
207 |
python_install() {
|
| 216 |
208 |
while read -d '' -r file ; do
|
| 217 |
|
grep -q "#!/usr/bin/env python" "${file}" && python_doscript "${file}"
|
|
209 |
grep -q "#! \?/usr/bin/env python" "${file}" && python_doscript "${file}"
|
| 218 |
210 |
done < <(find "${T}"/scripts -type f -print0)
|
| 219 |
211 |
|
| 220 |
212 |
distutils-r1_python_install
|
| ... | ... | |
| 241 |
233 |
|
| 242 |
234 |
pkg_postinst() {
|
| 243 |
235 |
use udev && udev_reload
|
|
236 |
optfeature "gpsplot" dev-python/matplotlib
|
|
237 |
optfeature "xgpsd and xgpsspeed" dev-python/pygobject[cairo]
|
|
238 |
}
|
|
239 |
|
|
240 |
pkg_postrm() {
|
|
241 |
use udev && udev_reload
|
| 244 |
242 |
}
|