meta-sysmocom-bsp/recipes-extra/gpsd/gpsd_3.24.bb

151 lines
4.7 KiB
BlitzBasic
Raw Normal View History

SUMMARY = "A TCP/IP Daemon simplifying the communication with GPS devices"
SECTION = "console/network"
gpsd: upgrade to 3.24 Usually when upgrading packages, we just copy the upstream package and adjust it slightly. I've looked at the upstream package here: https://git.openembedded.org/meta-openembedded/tree/meta-oe/recipes-navigation/gpsd (HEAD at f3d14d41ad60d2d52a0ea795ae10fe0882146ed1) But as I compared both packaging trees, I found ours is quite different than upstream. We have a lot of additional patches, still use python2 and have these extra files: ├── gpsd │ ├── 60-gpsd.rules │ ├── gpsd │ ├── gpsd-default │ ├── gpsd.service │ ├── oc2g │ │ ├── gpsd-default │ │ └── gpsd.service │ ├── sysmobts2100 │ │ └── gpsd-default │ ├── sysmobts-v2 │ │ └── gpsd-default │ └── sysmocom-idu │ └── gpsd-default Therefore I didn't start with the upstream packaging but instead increased the gpsd version in our packaging and went through each patch to see if it can be dropped or needs to be forward ported. Change the version by renaming the .bb file. Reset the version of the recipe (PR) back to "r0" again, as it is common practice after changing the package version. The previous value "r3.20" looked a bit like a package version, but it's not that. Rebase patches: * 0001-gps2udp-Add-a-label-timestamp-and-mac-address-to-eac.patch * 0002-gps2udp-leave-argv-untouched.patch (leave-argv-untouched.patch) * 0003-tsip-configure-and-enable-1PPS.patch (gpsd-tsip-pps.patch) Add build fixes: * 0004-SConscript-force-use-of-pthread.patch Drop patches: * 0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch: unused in previous version * 0001-SConstruct-disable-html-and-man-docs-building-becaus.patch: doesn't apply, instead disable docs building via manbuild='no' * 0002-SConstruct-respect-sysroot-also-in-SPLINTOPTS.patch: not needed anymore (no splintopts line in 3.24) * gpsd-3.3-ldflags.patch: fixed upstream * no-rpath-please.patch: doesn't apply, not needed anymore (see 5df2de36 in gpsd.git) Related: https://docs.yoctoproject.org/bitbake/2.2/bitbake-user-manual/bitbake-user-manual-ref-variables.html#term-PR Related: SYS#6222 Change-Id: I2debe481c5f1cc4ee8290ad0dc883d6a4ea73741
2022-12-13 12:28:40 +00:00
LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=7a5d174db44ec45f9638b2c747806821"
DEPENDS = "ncurses python"
PROVIDES = "virtual/gpsd"
gpsd: upgrade to 3.24 Usually when upgrading packages, we just copy the upstream package and adjust it slightly. I've looked at the upstream package here: https://git.openembedded.org/meta-openembedded/tree/meta-oe/recipes-navigation/gpsd (HEAD at f3d14d41ad60d2d52a0ea795ae10fe0882146ed1) But as I compared both packaging trees, I found ours is quite different than upstream. We have a lot of additional patches, still use python2 and have these extra files: ├── gpsd │ ├── 60-gpsd.rules │ ├── gpsd │ ├── gpsd-default │ ├── gpsd.service │ ├── oc2g │ │ ├── gpsd-default │ │ └── gpsd.service │ ├── sysmobts2100 │ │ └── gpsd-default │ ├── sysmobts-v2 │ │ └── gpsd-default │ └── sysmocom-idu │ └── gpsd-default Therefore I didn't start with the upstream packaging but instead increased the gpsd version in our packaging and went through each patch to see if it can be dropped or needs to be forward ported. Change the version by renaming the .bb file. Reset the version of the recipe (PR) back to "r0" again, as it is common practice after changing the package version. The previous value "r3.20" looked a bit like a package version, but it's not that. Rebase patches: * 0001-gps2udp-Add-a-label-timestamp-and-mac-address-to-eac.patch * 0002-gps2udp-leave-argv-untouched.patch (leave-argv-untouched.patch) * 0003-tsip-configure-and-enable-1PPS.patch (gpsd-tsip-pps.patch) Add build fixes: * 0004-SConscript-force-use-of-pthread.patch Drop patches: * 0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch: unused in previous version * 0001-SConstruct-disable-html-and-man-docs-building-becaus.patch: doesn't apply, instead disable docs building via manbuild='no' * 0002-SConstruct-respect-sysroot-also-in-SPLINTOPTS.patch: not needed anymore (no splintopts line in 3.24) * gpsd-3.3-ldflags.patch: fixed upstream * no-rpath-please.patch: doesn't apply, not needed anymore (see 5df2de36 in gpsd.git) Related: https://docs.yoctoproject.org/bitbake/2.2/bitbake-user-manual/bitbake-user-manual-ref-variables.html#term-PR Related: SYS#6222 Change-Id: I2debe481c5f1cc4ee8290ad0dc883d6a4ea73741
2022-12-13 12:28:40 +00:00
PR = "r0"
SRC_URI = "http://download.savannah.gnu.org/releases/${PN}/${P}.tar.gz \
file://0001-gps2udp-Add-a-label-timestamp-and-mac-address-to-eac.patch \
gpsd: upgrade to 3.24 Usually when upgrading packages, we just copy the upstream package and adjust it slightly. I've looked at the upstream package here: https://git.openembedded.org/meta-openembedded/tree/meta-oe/recipes-navigation/gpsd (HEAD at f3d14d41ad60d2d52a0ea795ae10fe0882146ed1) But as I compared both packaging trees, I found ours is quite different than upstream. We have a lot of additional patches, still use python2 and have these extra files: ├── gpsd │ ├── 60-gpsd.rules │ ├── gpsd │ ├── gpsd-default │ ├── gpsd.service │ ├── oc2g │ │ ├── gpsd-default │ │ └── gpsd.service │ ├── sysmobts2100 │ │ └── gpsd-default │ ├── sysmobts-v2 │ │ └── gpsd-default │ └── sysmocom-idu │ └── gpsd-default Therefore I didn't start with the upstream packaging but instead increased the gpsd version in our packaging and went through each patch to see if it can be dropped or needs to be forward ported. Change the version by renaming the .bb file. Reset the version of the recipe (PR) back to "r0" again, as it is common practice after changing the package version. The previous value "r3.20" looked a bit like a package version, but it's not that. Rebase patches: * 0001-gps2udp-Add-a-label-timestamp-and-mac-address-to-eac.patch * 0002-gps2udp-leave-argv-untouched.patch (leave-argv-untouched.patch) * 0003-tsip-configure-and-enable-1PPS.patch (gpsd-tsip-pps.patch) Add build fixes: * 0004-SConscript-force-use-of-pthread.patch Drop patches: * 0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch: unused in previous version * 0001-SConstruct-disable-html-and-man-docs-building-becaus.patch: doesn't apply, instead disable docs building via manbuild='no' * 0002-SConstruct-respect-sysroot-also-in-SPLINTOPTS.patch: not needed anymore (no splintopts line in 3.24) * gpsd-3.3-ldflags.patch: fixed upstream * no-rpath-please.patch: doesn't apply, not needed anymore (see 5df2de36 in gpsd.git) Related: https://docs.yoctoproject.org/bitbake/2.2/bitbake-user-manual/bitbake-user-manual-ref-variables.html#term-PR Related: SYS#6222 Change-Id: I2debe481c5f1cc4ee8290ad0dc883d6a4ea73741
2022-12-13 12:28:40 +00:00
file://0002-gps2udp-leave-argv-untouched.patch \
file://0003-tsip-configure-and-enable-1PPS.patch \
file://0004-SConscript-force-use-of-pthread.patch \
file://gpsd-default \
file://gpsd \
file://60-gpsd.rules \
file://gpsd.service \
"
gpsd: upgrade to 3.24 Usually when upgrading packages, we just copy the upstream package and adjust it slightly. I've looked at the upstream package here: https://git.openembedded.org/meta-openembedded/tree/meta-oe/recipes-navigation/gpsd (HEAD at f3d14d41ad60d2d52a0ea795ae10fe0882146ed1) But as I compared both packaging trees, I found ours is quite different than upstream. We have a lot of additional patches, still use python2 and have these extra files: ├── gpsd │ ├── 60-gpsd.rules │ ├── gpsd │ ├── gpsd-default │ ├── gpsd.service │ ├── oc2g │ │ ├── gpsd-default │ │ └── gpsd.service │ ├── sysmobts2100 │ │ └── gpsd-default │ ├── sysmobts-v2 │ │ └── gpsd-default │ └── sysmocom-idu │ └── gpsd-default Therefore I didn't start with the upstream packaging but instead increased the gpsd version in our packaging and went through each patch to see if it can be dropped or needs to be forward ported. Change the version by renaming the .bb file. Reset the version of the recipe (PR) back to "r0" again, as it is common practice after changing the package version. The previous value "r3.20" looked a bit like a package version, but it's not that. Rebase patches: * 0001-gps2udp-Add-a-label-timestamp-and-mac-address-to-eac.patch * 0002-gps2udp-leave-argv-untouched.patch (leave-argv-untouched.patch) * 0003-tsip-configure-and-enable-1PPS.patch (gpsd-tsip-pps.patch) Add build fixes: * 0004-SConscript-force-use-of-pthread.patch Drop patches: * 0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch: unused in previous version * 0001-SConstruct-disable-html-and-man-docs-building-becaus.patch: doesn't apply, instead disable docs building via manbuild='no' * 0002-SConstruct-respect-sysroot-also-in-SPLINTOPTS.patch: not needed anymore (no splintopts line in 3.24) * gpsd-3.3-ldflags.patch: fixed upstream * no-rpath-please.patch: doesn't apply, not needed anymore (see 5df2de36 in gpsd.git) Related: https://docs.yoctoproject.org/bitbake/2.2/bitbake-user-manual/bitbake-user-manual-ref-variables.html#term-PR Related: SYS#6222 Change-Id: I2debe481c5f1cc4ee8290ad0dc883d6a4ea73741
2022-12-13 12:28:40 +00:00
SRC_URI[md5sum] = "c4e743a507a137c00fdb28ef35b145d0"
SRC_URI[sha256sum] = "00ee13f615655284874a661be13553abe66128e6deb5cd648af9bc0cb345fe5c"
inherit scons update-rc.d systemd
INITSCRIPT_NAME = "gpsd"
INITSCRIPT_PARAMS = "defaults 35"
SYSTEMD_OESCONS = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false',d)}"
export STAGING_INCDIR
export STAGING_LIBDIR
export LINKFLAGS="${TARGET_LDFLAGS}"
export SHLINKFLAGS="${TARGET_LDFLAGS}"
EXTRA_OESCONS = " \
sysroot=${STAGING_DIR_TARGET} \
libQgpsmm='false' \
debug='true' \
strip='false' \
ashtec='false' \
bluez='false' \
dbus_export='false' \
cheapfloats='false' \
earthmate='false' \
evermore='false' \
fury='false' \
fv18='false' \
garmin='false' \
garmintxt='false' \
geostar='false' \
itrax='false' \
libQgpsmm='false' \
mtk3301='false' \
navcom='false' \
oncore='false' \
python='false' \
sirf='false' \
tnt='false' \
trip='false' \
tripmate='false' \
usb='false' \
chrpath='false' \
systemd='${SYSTEMD_OESCONS}' \
libdir='${libdir}' \
gpsd: upgrade to 3.24 Usually when upgrading packages, we just copy the upstream package and adjust it slightly. I've looked at the upstream package here: https://git.openembedded.org/meta-openembedded/tree/meta-oe/recipes-navigation/gpsd (HEAD at f3d14d41ad60d2d52a0ea795ae10fe0882146ed1) But as I compared both packaging trees, I found ours is quite different than upstream. We have a lot of additional patches, still use python2 and have these extra files: ├── gpsd │ ├── 60-gpsd.rules │ ├── gpsd │ ├── gpsd-default │ ├── gpsd.service │ ├── oc2g │ │ ├── gpsd-default │ │ └── gpsd.service │ ├── sysmobts2100 │ │ └── gpsd-default │ ├── sysmobts-v2 │ │ └── gpsd-default │ └── sysmocom-idu │ └── gpsd-default Therefore I didn't start with the upstream packaging but instead increased the gpsd version in our packaging and went through each patch to see if it can be dropped or needs to be forward ported. Change the version by renaming the .bb file. Reset the version of the recipe (PR) back to "r0" again, as it is common practice after changing the package version. The previous value "r3.20" looked a bit like a package version, but it's not that. Rebase patches: * 0001-gps2udp-Add-a-label-timestamp-and-mac-address-to-eac.patch * 0002-gps2udp-leave-argv-untouched.patch (leave-argv-untouched.patch) * 0003-tsip-configure-and-enable-1PPS.patch (gpsd-tsip-pps.patch) Add build fixes: * 0004-SConscript-force-use-of-pthread.patch Drop patches: * 0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch: unused in previous version * 0001-SConstruct-disable-html-and-man-docs-building-becaus.patch: doesn't apply, instead disable docs building via manbuild='no' * 0002-SConstruct-respect-sysroot-also-in-SPLINTOPTS.patch: not needed anymore (no splintopts line in 3.24) * gpsd-3.3-ldflags.patch: fixed upstream * no-rpath-please.patch: doesn't apply, not needed anymore (see 5df2de36 in gpsd.git) Related: https://docs.yoctoproject.org/bitbake/2.2/bitbake-user-manual/bitbake-user-manual-ref-variables.html#term-PR Related: SYS#6222 Change-Id: I2debe481c5f1cc4ee8290ad0dc883d6a4ea73741
2022-12-13 12:28:40 +00:00
manbuild='false' \
${PACKAGECONFIG_CONFARGS} \
"
# this cannot be used, because then chrpath is not found and only static lib is built
# target=${HOST_SYS}
do_compile_prepend() {
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
export PKG_CONFIG="PKG_CONFIG_SYSROOT_DIR=\"${PKG_CONFIG_SYSROOT_DIR}\" pkg-config"
export STAGING_PREFIX="${STAGING_DIR_HOST}/${prefix}"
export BUILD_SYS="${BUILD_SYS}"
export HOST_SYS="${HOST_SYS}"
}
do_install() {
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
export PKG_CONFIG="PKG_CONFIG_SYSROOT_DIR=\"${PKG_CONFIG_SYSROOT_DIR}\" pkg-config"
export STAGING_PREFIX="${STAGING_DIR_HOST}/${prefix}"
export BUILD_SYS="${BUILD_SYS}"
export HOST_SYS="${HOST_SYS}"
export DESTDIR="${D}"
# prefix is used for RPATH and DESTDIR/prefix for instalation
${STAGING_BINDIR_NATIVE}/scons prefix=${prefix} install ${EXTRA_OESCONS}|| \
bbfatal "scons install execution failed."
}
do_install_append() {
install -d ${D}/${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/gpsd ${D}/${sysconfdir}/init.d/
install -d ${D}/${sysconfdir}/default
install -m 0644 ${WORKDIR}/gpsd-default ${D}/${sysconfdir}/default/gpsd.default
#support for udev
install -d ${D}/${sysconfdir}/udev/rules.d
install -m 0644 ${WORKDIR}/60-gpsd.rules ${D}/${sysconfdir}/udev/rules.d
install -d ${D}${base_libdir}/udev/
install -m 0755 ${S}/gpsd.hotplug ${D}${base_libdir}/udev/
#support for systemd
install -d ${D}${systemd_system_unitdir}/
install -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_system_unitdir}/${BPN}.service
gpsd: upgrade to 3.24 Usually when upgrading packages, we just copy the upstream package and adjust it slightly. I've looked at the upstream package here: https://git.openembedded.org/meta-openembedded/tree/meta-oe/recipes-navigation/gpsd (HEAD at f3d14d41ad60d2d52a0ea795ae10fe0882146ed1) But as I compared both packaging trees, I found ours is quite different than upstream. We have a lot of additional patches, still use python2 and have these extra files: ├── gpsd │ ├── 60-gpsd.rules │ ├── gpsd │ ├── gpsd-default │ ├── gpsd.service │ ├── oc2g │ │ ├── gpsd-default │ │ └── gpsd.service │ ├── sysmobts2100 │ │ └── gpsd-default │ ├── sysmobts-v2 │ │ └── gpsd-default │ └── sysmocom-idu │ └── gpsd-default Therefore I didn't start with the upstream packaging but instead increased the gpsd version in our packaging and went through each patch to see if it can be dropped or needs to be forward ported. Change the version by renaming the .bb file. Reset the version of the recipe (PR) back to "r0" again, as it is common practice after changing the package version. The previous value "r3.20" looked a bit like a package version, but it's not that. Rebase patches: * 0001-gps2udp-Add-a-label-timestamp-and-mac-address-to-eac.patch * 0002-gps2udp-leave-argv-untouched.patch (leave-argv-untouched.patch) * 0003-tsip-configure-and-enable-1PPS.patch (gpsd-tsip-pps.patch) Add build fixes: * 0004-SConscript-force-use-of-pthread.patch Drop patches: * 0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch: unused in previous version * 0001-SConstruct-disable-html-and-man-docs-building-becaus.patch: doesn't apply, instead disable docs building via manbuild='no' * 0002-SConstruct-respect-sysroot-also-in-SPLINTOPTS.patch: not needed anymore (no splintopts line in 3.24) * gpsd-3.3-ldflags.patch: fixed upstream * no-rpath-please.patch: doesn't apply, not needed anymore (see 5df2de36 in gpsd.git) Related: https://docs.yoctoproject.org/bitbake/2.2/bitbake-user-manual/bitbake-user-manual-ref-variables.html#term-PR Related: SYS#6222 Change-Id: I2debe481c5f1cc4ee8290ad0dc883d6a4ea73741
2022-12-13 12:28:40 +00:00
install -m 0644 ${BPN}-${PV}/systemd/${BPN}.socket ${D}${systemd_system_unitdir}/${BPN}.socket
}
pkg_postinst_${PN}-conf() {
update-alternatives --install ${sysconfdir}/default/gpsd gpsd-defaults ${sysconfdir}/default/gpsd.default 10
}
pkg_postrm_${PN}-conf() {
update-alternatives --remove gpsd-defaults ${sysconfdir}/default/gpsd.default
}
PACKAGES =+ "libgps libgpsd gpsd-udev gpsd-conf gpsd-gpsctl gps-utils"
RDEPENDS_${PN} = "gpsd-gpsctl"
RRECOMMENDS_${PN} = "gpsd-conf gpsd-udev gpsd-machine-conf"
SUMMARY_gpsd-udev = "udev relevant files to use gpsd hotplugging"
FILES_gpsd-udev = "${base_libdir}/udev ${sysconfdir}/udev/*"
RDEPENDS_gpsd-udev += "udev gpsd-conf"
SUMMARY_libgpsd = "C service library used for communicating with gpsd"
FILES_libgpsd = "${libdir}/libgpsd.so.*"
SUMMARY_libgps = "C service library used for communicating with gpsd"
FILES_libgps = "${libdir}/libgps.so.*"
SUMMARY_gpsd-conf = "gpsd configuration files and init scripts"
FILES_gpsd-conf = "${sysconfdir}"
FILES_gpsd-conf_append_sysmocom-idu = " ${systemd_system_unitdir}/ "
CONFFILES_gpsd-conf = "${sysconfdir}/default/gpsd.default"
SUMMARY_gpsd-gpsctl = "Tool for tweaking GPS modes"
FILES_gpsd-gpsctl = "${bindir}/gpsctl"
SUMMARY_gps-utils = "Utils used for simulating, monitoring,... a GPS"
FILES_gps-utils = "${bindir}/*"
RPROVIDES_${PN} += "${PN}-systemd"
RREPLACES_${PN} += "${PN}-systemd"
RCONFLICTS_${PN} += "${PN}-systemd"
SYSTEMD_SERVICE_${PN} = "${PN}.socket"