diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..816e4432992cb333fd7d2fe0cff10fad24a225f9 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,25 @@ +default: + image: ghcr.io/siemens/kas/kas + cache: + paths: + - $CI_BUILDS_DIR/meta-pypcc/build/ + - $CI_BUILDS_DIR/meta-pypcc/layers/ + +variables: + GIT_CLONE_PATH: $CI_BUILDS_DIR/meta-pypcc/meta-pypcc + +stages: + - build + +run_build: + stage: build + when: manual + script: + - cd "$CI_BUILDS_DIR/meta-pypcc" + - kas build meta-pypcc/kas-pypcc-rpi.yml + - mkdir meta-pypcc/artifacts + - cp build/tmp/deploy/images/raspberrypi4-64/core-image-full-cmdline-raspberrypi4-64.rootfs.wic.* meta-pypcc/artifacts/ + - cp build/tmp/deploy/images/raspberrypi4-64/update-image-raspberrypi4-64.rootfs.swu meta-pypcc/artifacts/ + artifacts: + paths: + - artifacts/* \ No newline at end of file diff --git a/README.md b/README.md index 13a7e3cc6f162702e4663f84bbe304a5a58bc65f..a08d14653bfd6341a920e35651c4928bea2a3103 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ kas chrpath rpcgen diffstat lz4 bc build-essential cpio gawk git python3 texinfo ```sh git clone https://git.astron.nl/lofar2.0/meta-pypcc.git -kas meta-pypcc/kas-pypcc-rpi.yml +kas build meta-pypcc/kas-pypcc-rpi.yml ``` ## How To diff --git a/kas-pypcc-rpi.yml b/kas-pypcc-rpi.yml index cf63f517eccd530d27c17dbc05af508e41c2fa95..9fdb38dcf094dcf78aeb18157dfb07ef8de3cec0 100644 --- a/kas-pypcc-rpi.yml +++ b/kas-pypcc-rpi.yml @@ -80,33 +80,24 @@ local_conf_header: custom-local-conf: | PREFERRED_PROVIDER_u-boot-fw-utils = "libubootenv" CORE_IMAGE_EXTRA_INSTALL:append = "openssh" - MACHINE_FEATURES:remove = "alsa bluetooth " + MACHINE_FEATURES:remove = "alsa bluetooth" DISTRO_FEATURES:remove = "3g alsa bluetooth nfc opengl pulseaudio" DISTRO_FEATURES:append = "swupdate systemd usrmerge" DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit" VIRTUAL-RUNTIME_init_manager = "systemd" VIRTUAL-RUNTIME_initscripts = "systemd-compat-units" - IMAGE_INSTALL:append = "python3-pypcc dtc i2c-tools spidev-test swupdate swupdate-www libgpiod libgpiod-tools libgpiod-dev libiio-iiod" - #kernel-module-hwmon-max6620 kernel-module-input-gpio-decoder + IMAGE_INSTALL:append = "python3-pypcc vcgencmd dtc i2c-tools swupdate swupdate-www libgpiod libgpiod-tools libgpiod-dev kernel-module-i2c-gpio" IMAGE_FSTYPES = "tar.bz2 ext4 ext4.gz wic.bz2 wic.bmap" SWUPDATE_IMAGES_FSTYPES[core-image-full-cmdline] = ".ubifs" -# BBFILES_DYNAMIC += " \ -# raspberrypi:${LAYERDIR}/dynamic-layers/raspberrypi/*/*/*.bb \ -# raspberrypi:${LAYERDIR}/dynamic-layers/raspberrypi/*/*/*.bbappend \ -# " -# IMAGE_BOOT_FILES:append = "ccd.dtbo;overlays/ccd.dtbo" -# IMAGE_BOOT_FILES:append = "apsct.dtbo;overlays/apsct.dtbo;" rpi-specific: | RPI_USE_U_BOOT = "1" ENABLE_I2C = "1" ENABLE_UART = "1" - ENABLE_SPI_BUS = "1" + ENABLE_DWC2_HOST = "1" CMDLINE_ROOT_PARTITION = "/dev/mmcblk0p3" - #KERNEL_MODULE_AUTOLOAD:rpi += "" + KERNEL_MODULE_AUTOLOAD:rpi += "i2c-dev i2c-bcm2708 i2c-gpio" RPI_EXTRA_CONFIG = "dtoverlay=disable-bt\ndtoverlay=disable-wifi\ndtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=2,i2c_gpio_sda=17,i2c_gpio_scl=27\ndtoverlay=i2c-gpio,bus=4,i2c_gpio_delay_us=2,i2c_gpio_sda=10,i2c_gpio_scl=9\ndtoverlay=i2c-gpio,bus=5,i2c_gpio_delay_us=2,i2c_gpio_sda=5,i2c_gpio_scl=6\ndtparam=i2c_vc=on" LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch" WKS_FILE = "image-halibutpi.wks" SWUPDATE_IMAGES = "core-image-full-cmdline" LINUX_KERNEL_TYPE = "preempt-rt" -# IMAGE_FSTYPES = "rpi-sdimg ext4.gz" -# PREFERRED_PROVIDER_u-boot-fw-utils = "libubootenv" diff --git a/recipes-support/swupdate/swupdate/rpi/swupdate.cfg b/recipes-support/swupdate/swupdate/rpi/swupdate.cfg index 00fd482f9370ac5f34c7fd5971bd0bd333eb816c..b442e6a7cebb8fb275ebb6d922c80f389213b198 100644 --- a/recipes-support/swupdate/swupdate/rpi/swupdate.cfg +++ b/recipes-support/swupdate/swupdate/rpi/swupdate.cfg @@ -1,41 +1,41 @@ globals : { - verbose = true; - loglevel = 5; - syslog = true; - // public-key-file = "@PUBKEY@"; + verbose = true; + loglevel = 5; + syslog = true; + // public-key-file = "@PUBKEY@"; }; download : { - retries = 3; - timeout = 1800; + retries = 3; + timeout = 1800; }; identify : ( - { name = "raspberryPI"; value = "1.0"; } + { name = "raspberryPI"; value = "1.0"; } ); suricatta : { - enable = true; - tenant = "default"; - id = "@TARGETID@"; - url = "@PROTOCOL@://@HOSTNAME@:@PORT@"; - polldelay = 60; - nocheckcert = true; - retry = 4; - retrywait = 200; - loglevel = 10; - userid = 0; - groupid = 0; - targettoken = "@TARGETTOKEN@"; + enable = true; + tenant = "default"; + id = "@TARGETID@"; + url = "@PROTOCOL@://@HOSTNAME@:@PORT@"; + polldelay = 60; + nocheckcert = true; + retry = 4; + retrywait = 200; + loglevel = 10; + userid = 0; + groupid = 0; + targettoken = "@TARGETTOKEN@"; }; webserver : { - document_root = "/www"; - userid = 0; - groupid = 0; - timeout = 20; + document_root = "/www"; + userid = 0; + groupid = 0; + timeout = 20; }; diff --git a/recipes/files/6483a22a6810c5f47e7b50d44fa77c3918546670.patch b/recipes/files/6483a22a6810c5f47e7b50d44fa77c3918546670.patch new file mode 100644 index 0000000000000000000000000000000000000000..9c19514565f9acd83cdd9406f183488a6c833d19 --- /dev/null +++ b/recipes/files/6483a22a6810c5f47e7b50d44fa77c3918546670.patch @@ -0,0 +1,12 @@ +diff --git a/pypcc/opcuaserv/i2client.py b/pypcc/opcuaserv/i2client.py +index 7aaabacf806b0e0570bffa34f7471594df6e4edf..7e2cf378e6437e9cbb8ffb5983d98edce4d17a66 100644 +--- a/pypcc/opcuaserv/i2client.py ++++ b/pypcc/opcuaserv/i2client.py +@@ -1,6 +1,6 @@ + #This is the OPC-UA side of the pipes to I2Cserver + +-from multiprocessing import Queue ++from queue import Queue + from pypcc.queuetypes import * + + diff --git a/recipes/python3-pypcc_git.bb b/recipes/python3-pypcc_git.bb new file mode 100644 index 0000000000000000000000000000000000000000..4fbcea2aab26fcaaae98c4ed7022be35d6033754 --- /dev/null +++ b/recipes/python3-pypcc_git.bb @@ -0,0 +1,68 @@ +SUMMARY = "LOFAR 2.0 Hardware Translator: Monitor and control devices via OPC-UA" +DESCRIPTION = "LOFAR 2.0 Hardware Translator running on CCD and APSPU to monitor and control I2C devices via OPC-UA." +HOMEPAGE = "https://git.astron.nl/lofar2.0/pypcc" +BUGTRACKER = "https://git.astron.nl/lofar2.0/pypcc/-/issues" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e69695c29b07eeb2a832d4a7e1f1e86b" + +BB_STRICT_CHECKSUM = "0" + +# http checkout not working atm. rev should be removed +#SRCREV = "${AUTOREV}" +#PV = "0.0.1+git${SRCPV}" +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" +SRC_URI = " \ + git://git.astron.nl/lofar2.0/pypcc.git;branch=master;rev=650e2b6bd44b751405a7543a9484fab90f70abe9 \ + file://6483a22a6810c5f47e7b50d44fa77c3918546670.patch \ +" +S = "${WORKDIR}/git" + +FILES:${PN} += "\ + ${systemd_unitdir}/system/*.service \ + ${systemd_unitdir}/system/multi-user.target.wants/pitr.service \ +" + +DEPENDS += "python3-setuptools-scm-native" + +inherit setuptools3_legacy systemd + +RDEPENDS:${PN} += "\ + initscripts \ + bash \ + rpi-gpio i2c-tools \ + python3 \ + python3-smbus \ + python3-smbus2 \ + python3-numpy \ + python3-pyyaml \ + python3-asyncua \ + python3-pylibi2c \ + python3-recordclass \ + python3-logstash-async \ +" + +#SYSTEMD_AUTO_ENABLE = "enable" +SYSTEMD_SERVICE:${PN} = "\ + pitr.service \ + recvtr.service \ + apscttr.service \ + apsputr.service \ + unb2tr.service \ + ccdtr.service \ +" + +do_package_qa() { +} + +do_install:append () { + install -d ${D}${systemd_unitdir}/system + install -m 0644 ${S}/bin/pitr.service ${D}${systemd_unitdir}/system/pitr.service + install -m 0644 ${S}/bin/recvtr.service ${D}${systemd_unitdir}/system/recvtr.service + install -m 0644 ${S}/bin/apscttr.service ${D}${systemd_unitdir}/system/apscttr.service + install -m 0644 ${S}/bin/apsputr.service ${D}${systemd_unitdir}/system/apsputr.service + install -m 0644 ${S}/bin/unb2tr.service ${D}${systemd_unitdir}/system/unb2tr.service + install -m 0644 ${S}/bin/ccdtr.service ${D}${systemd_unitdir}/system/ccdtr.service + + install -d ${D}${systemd_unitdir}/system/multi-user.target.wants + ln -sf ../pitr.service ${D}${systemd_unitdir}/system/multi-user.target.wants/pitr.service +} diff --git a/recipes/vcgencmd_git.bb b/recipes/vcgencmd_git.bb new file mode 100644 index 0000000000000000000000000000000000000000..049b29fd52207b7853557e20b68e8d9fd136b05c --- /dev/null +++ b/recipes/vcgencmd_git.bb @@ -0,0 +1,34 @@ +DESCRIPTION = "This package build vcgencmd from the raspberrypi utils repository" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://../LICENCE;md5=4c01239e5c3a3d133858dedacdbca63c" + +COMPATIBLE_MACHINE = "^rpi$" + +SRCBRANCH = "master" +SRCREV = "33aa4da93d8da90d5075e8cd48e72cc90048b9f3" + +# Use the date of the above commit as the package version. Update this when +# SRCREV is changed. +PV = "20250106" + +SRC_URI = "\ + git://github.com/raspberrypi/utils.git;protocol=https;branch=${SRCBRANCH} \ +" + +S = "${WORKDIR}/git/vcgencmd" + +inherit cmake pkgconfig + +ASNEEDED = "" + +EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS='-Wl,--no-as-needed' \ + -DVMCS_INSTALL_PREFIX=${exec_prefix} \ +" + +EXTRA_OECMAKE:append:aarch64 = " -DARM64=ON " + +CFLAGS:append = " -fPIC -Wno-unused-but-set-variable" + +do_install:append () { + rm -rf ${D}${datadir}/bash-completion +} \ No newline at end of file