From 2a40c823f6bd9e203a669e50676c889c7b7a062a Mon Sep 17 00:00:00 2001 From: Gandalf Date: Sat, 22 Aug 2026 08:04:07 +0100 Subject: [PATCH 1/4] Add GitHub/Gitea Actions CI/CD workflow for Linux x86_64 --- .github/workflows/build-linux-x86_64.yml | 53 ++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .github/workflows/build-linux-x86_64.yml diff --git a/.github/workflows/build-linux-x86_64.yml b/.github/workflows/build-linux-x86_64.yml new file mode 100644 index 0000000..4c19e64 --- /dev/null +++ b/.github/workflows/build-linux-x86_64.yml @@ -0,0 +1,53 @@ +name: Linux x86_64 Release Build + +on: + push: + branches: + - '**' + tags: + - 'v*' + pull_request: + branches: + - '**' + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get install -y build-essential gcc make jam \ + libx11-dev libxext-dev libxxf86vm-dev libxinerama-dev \ + libxrandr-dev libxau-dev libxdmcp-dev libxss-dev \ + libssl-dev libpng-dev libjpeg-dev libtiff-dev zlib1g-dev \ + tar gzip zip + + - name: Build ArgyllCMS + run: | + export OSTYPE=linux-gnu + export MACHTYPE=x86_64-pc-linux-gnu + export HOSTTYPE=x86_64 + jam -q -fJambase -j$(nproc) -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true install + + - name: Smoke Tests + run: | + ./bin/dispcal -? || true + ./bin/chartread -? || true + ./bin/colprof -? || true + ./bin/targen -? || true + + - name: Package Release + run: | + ./makepackagebin.sh + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: argyllcms-linux-x86_64-bin + path: Argyll_V*_linux_x86_64_bin.tgz -- 2.39.5 From 4d6ce64afd4114d79aec81382e5702d7166daac9 Mon Sep 17 00:00:00 2001 From: Gandalf Date: Sat, 22 Aug 2026 08:11:43 +0100 Subject: [PATCH 2/4] Fix build: disable lzma in internal tiff library --- tiff/Jamfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tiff/Jamfile b/tiff/Jamfile index 0fe27da..571b1ef 100755 --- a/tiff/Jamfile +++ b/tiff/Jamfile @@ -16,7 +16,7 @@ if $(UNIX) { } # Genfile actually creates libtiff/tif_config.h and libtiff/tiffconf.h: GenFileNND libtiff/tif_config.h : - "(cd $(SUBDIR); chmod +x configure ; $(CROSS_ENV) ./configure $(CROSS_HOST) --disable-old-jpeg --disable-pixarlog --disable-zlib --disable-jbig)" : configure ; + "(cd $(SUBDIR); chmod +x configure ; $(CROSS_ENV) ./configure $(CROSS_HOST) --disable-old-jpeg --disable-pixarlog --disable-zlib --disable-jbig --disable-lzma)" : configure ; # Workaround Jam problem of two products from one action: FakeFile libtiff/tiffconf.h : libtiff/tif_config.h ; } -- 2.39.5 From a5272ccc7d439237b1a3ae6e442a481654da34aa Mon Sep 17 00:00:00 2001 From: Gandalf Date: Sat, 22 Aug 2026 08:23:58 +0100 Subject: [PATCH 3/4] Fix smoke tests hanging on serial port scan --- .github/workflows/build-linux-x86_64.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-linux-x86_64.yml b/.github/workflows/build-linux-x86_64.yml index 4c19e64..0010bfa 100644 --- a/.github/workflows/build-linux-x86_64.yml +++ b/.github/workflows/build-linux-x86_64.yml @@ -36,6 +36,9 @@ jobs: jam -q -fJambase -j$(nproc) -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true install - name: Smoke Tests + env: + ARGYLL_NOT_INTERACTIVE: "1" + ARGYLL_EXCLUDE_SERIAL_SCAN: "1" run: | ./bin/dispcal -? || true ./bin/chartread -? || true -- 2.39.5 From bd1f7ff0ef2060dff96818702e1bb2d59f271207 Mon Sep 17 00:00:00 2001 From: Gandalf Date: Sat, 22 Aug 2026 08:30:02 +0100 Subject: [PATCH 4/4] Fix USB/serial device enumeration blocking read in container environments --- spectro/icoms.c | 2 +- spectro/usbio_lx.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/spectro/icoms.c b/spectro/icoms.c index eda58c6..0fa2634 100644 --- a/spectro/icoms.c +++ b/spectro/icoms.c @@ -646,7 +646,7 @@ static int icompaths_fs_excluded(icompaths *p, icompath *path) { int i; for (i = 0; i < p->exno; i++) { - if (strcmp(p->exlist[i], path->spath) == 0) { + if (strcmp(p->exlist[i], "1") == 0 || strcasecmp(p->exlist[i], "all") == 0 || strcmp(p->exlist[i], path->spath) == 0) { a1logd(p->log, 5, "excluding '%s' from fast scan\n",path->spath); return 1; } diff --git a/spectro/usbio_lx.c b/spectro/usbio_lx.c index 9c3ac68..3323d19 100644 --- a/spectro/usbio_lx.c +++ b/spectro/usbio_lx.c @@ -61,8 +61,8 @@ char *dpath /* path to device */ a1logd(log, 6, "usb_check_and_add: given '%s'\n",dpath); - /* Open the device so that we can read it */ - if ((fd = open(dpath, O_RDONLY)) < 0) { + /* Open the device so that we can read it without blocking */ + if ((fd = open(dpath, O_RDONLY | O_NONBLOCK)) < 0) { a1logd(log, 1, "usb_check_and_add: failed to open '%s'\n",dpath); return ICOM_OK; } @@ -283,6 +283,9 @@ icompaths *p char path2[PATH_MAX]; struct stat statbuf; + if (strncmp(e1->d_name, "usb", 3) != 0) + continue; + /* Hmm. This will go badly wrong if this is a /dev/usbdev%d.%d_ep%d, */ /* since we're not expecting the end points to be separate devices. */ /* Maybe that's deprectated though... */ -- 2.39.5