From 6d90c7ebca9723cd9c75351d50ff548f60d7da27 Mon Sep 17 00:00:00 2001 From: Gabriel Lima Date: Thu, 9 Apr 2026 16:07:34 -0300 Subject: [PATCH] Add GfxCanvas as buildroot package --- Config.in | 1 + configs/raspberrypi_common_defconfig | 1 + package/gfxcanvas/Config.in | 14 +++++++ package/gfxcanvas/S99gfxcanvas | 60 ++++++++++++++++++++++++++++ package/gfxcanvas/gfxcanvas.mk | 20 ++++++++++ 5 files changed, 96 insertions(+) create mode 100644 package/gfxcanvas/Config.in create mode 100644 package/gfxcanvas/S99gfxcanvas create mode 100644 package/gfxcanvas/gfxcanvas.mk diff --git a/Config.in b/Config.in index f83650c..20a7faf 100644 --- a/Config.in +++ b/Config.in @@ -2,5 +2,6 @@ menu "RPI Common packages" source "$BR2_EXTERNAL_RPI_COMMON_PATH/package/my-shared-lib/Config.in" source "$BR2_EXTERNAL_RPI_COMMON_PATH/package/my-common-tool/Config.in" +source "$BR2_EXTERNAL_RPI_COMMON_PATH/package/gfxcanvas/Config.in" endmenu diff --git a/configs/raspberrypi_common_defconfig b/configs/raspberrypi_common_defconfig index f4497b7..7b96383 100644 --- a/configs/raspberrypi_common_defconfig +++ b/configs/raspberrypi_common_defconfig @@ -56,3 +56,4 @@ BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_KMOD_XZ=y BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_GFXCANVAS=y diff --git a/package/gfxcanvas/Config.in b/package/gfxcanvas/Config.in new file mode 100644 index 0000000..9e554ba --- /dev/null +++ b/package/gfxcanvas/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_GFXCANVAS + bool "gfxcanvas" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_13 + help + Small C++ framebuffer graphics application that draws an + info screen (date/time, hostname, network addresses) on a + Linux framebuffer device. Intended for SSD1306-class OLEDs + exposed as /dev/fbN via fbtft. + + https://git.gmlima.com/Gabriel/GfxCanvas + +comment "gfxcanvas needs a toolchain w/ C++, gcc >= 13" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_13 diff --git a/package/gfxcanvas/S99gfxcanvas b/package/gfxcanvas/S99gfxcanvas new file mode 100644 index 0000000..bf38ef8 --- /dev/null +++ b/package/gfxcanvas/S99gfxcanvas @@ -0,0 +1,60 @@ +#!/bin/sh +# +# Start gfxcanvas info display +# + +DAEMON="gfxcanvas" +DAEMON_PATH="/usr/bin/$DAEMON" +DAEMON_ARGS="/dev/fb1" +PIDFILE="/var/run/$DAEMON.pid" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 + start-stop-daemon -S -q -m -b -p "$PIDFILE" \ + -x "$DAEMON_PATH" -- $DAEMON_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac + +exit $? diff --git a/package/gfxcanvas/gfxcanvas.mk b/package/gfxcanvas/gfxcanvas.mk new file mode 100644 index 0000000..d213834 --- /dev/null +++ b/package/gfxcanvas/gfxcanvas.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# gfxcanvas +# +################################################################################ + +GFXCANVAS_VERSION = 0.1 +GFXCANVAS_SITE = https://git.gmlima.com/Gabriel/GfxCanvas.git +GFXCANVAS_SITE_METHOD = git +GFXCANVAS_LICENSE = GPL-3.0 +GFXCANVAS_LICENSE_FILES = LICENSE + +GFXCANVAS_CONF_OPTS = -DPROJECT_NAME=gfxcanvas + +define GFXCANVAS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(GFXCANVAS_PKGDIR)/S99gfxcanvas \ + $(TARGET_DIR)/etc/init.d/S99gfxcanvas +endef + +$(eval $(cmake-package))