From deeeddd4e1fd5f5fb307d4c59c112b4de175fbbe Mon Sep 17 00:00:00 2001 From: Prateek Ganguli Date: Wed, 22 Jul 2026 13:41:12 +0800 Subject: [PATCH 1/4] compose.yaml: add :z flag to bind mount for SELinux hosts * Without :z, Docker leaves the bind-mounted repo with its host SELinux label (e.g. user_home_t), which containers cannot access under Enforcing mode, causing check-local to fail with "Permission denied" on Makefile * :z relabels the mount for shared access between host and container * no-op on hosts without SELinux enabled --- devel/compose.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/devel/compose.yaml b/devel/compose.yaml index 97e46ce0..9f15518a 100644 --- a/devel/compose.yaml +++ b/devel/compose.yaml @@ -2,6 +2,7 @@ services: octave: image: gnuoctave/octave:latest working_dir: /workspace + user: "${HOST_UID}:${HOST_GID}" volumes: - - .:/workspace + - .:/workspace:z command: make check-ci From 66cf46379140547b6d1a36f00bc7b94d366e446b Mon Sep 17 00:00:00 2001 From: Prateek Ganguli Date: Wed, 22 Jul 2026 13:41:18 +0800 Subject: [PATCH 2/4] check-local: run container as host user, not root * gnuoctave/octave container runs as root by default, so files it creates in the bind-mounted repo (e.g. loose objects from check-ci's git stash create/git archive) end up owned by root on the host, blocking further git operations for the actual user * pass HOST_UID/HOST_GID to compose.yaml's user: directive so the container writes files as the calling user instead --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5d67e953..62a9f7c1 100644 --- a/Makefile +++ b/Makefile @@ -235,7 +235,8 @@ check-ci: tarball-nodocs $(OCTAVE) --no-gui devel/run_tests.m check-local: - docker compose --file devel/compose.yaml --project-directory . run --rm octave + HOST_UID=$(shell id -u) HOST_GID=$(shell id -g) \ + docker compose --file devel/compose.yaml --project-directory . run --rm octave tarball-nodocs: $(RELEASE_TARBALL_CI) From 1920e66cca3a1cb71758b39a2f02a392b13fb702 Mon Sep 17 00:00:00 2001 From: Prateek Ganguli Date: Wed, 22 Jul 2026 13:42:40 +0800 Subject: [PATCH 3/4] README: fix typos and trailing whitespace --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e0f13154..adc2e1ed 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ This is the official repository for the control package for GNU Octave. ## About -The **control** package is a collection of functions for control systems design and analysis. +The **control** package is a collection of functions for control systems design and analysis. -As of 24.03.2023, the developemnt of the **control** package was moved from [SourceForge](https://sourceforge.net/p/octave/control/ci/default/tree/) and [Mercurial](https://en.wikipedia.org/wiki/Mercurial) to [GitHub](https://github.com/gnu-octave/pkg-control) and [Git](https://en.wikipedia.org/wiki/Git). Links related to the control package +As of 24.03.2023, the development of the **control** package was moved from [SourceForge](https://sourceforge.net/p/octave/control/ci/default/tree/) and [Mercurial](https://en.wikipedia.org/wiki/Mercurial) to [GitHub](https://github.com/gnu-octave/pkg-control) and [Git](https://en.wikipedia.org/wiki/Git). Links related to the control package - [License and copyright information](https://github.com/gnu-octave/pkg-control/blob/main/COPYING) - [Releases](https://github.com/gnu-octave/pkg-control/releases) @@ -46,9 +46,9 @@ You can also clone this repository (using the option `--recurse-submodules` sinc - `make dist`
Create the package archive file in the directory `target` which can be installed - in Octave afterwards. If `make DOCS_EXAMPLES=true dist` is used, the documentation + in Octave afterwards. If `make DOCS_EXAMPLES=true dist` is used, the documentation files (pdf and qch for Octave's documentation browser) will contain the demos of - the package as examples togehter with the resulting plots. However, for this the + the package as examples together with the resulting plots. However, for this the control package has to be installed. - `make install`
Install the package From e179c7e2eb1c896a53058c413cd8128a7cf6ca18 Mon Sep 17 00:00:00 2001 From: Prateek Ganguli Date: Sat, 25 Jul 2026 15:06:38 +0800 Subject: [PATCH 4/4] devel/compose.yaml: require HOST_UID/HOST_GID to be set * Without a required check, running docker compose directly (bypassing make check-local) silently substitutes empty strings for HOST_UID/ HOST_GID, producing a bogus "user: :" that fails confusingly * :? makes docker compose fail fast with a clear error instead --- devel/compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devel/compose.yaml b/devel/compose.yaml index 9f15518a..4e376cdb 100644 --- a/devel/compose.yaml +++ b/devel/compose.yaml @@ -2,7 +2,7 @@ services: octave: image: gnuoctave/octave:latest working_dir: /workspace - user: "${HOST_UID}:${HOST_GID}" + user: "${HOST_UID:?set HOST_UID or run via make check-local, not docker compose directly}:${HOST_GID:?set HOST_GID or run via make check-local, not docker compose directly}" volumes: - .:/workspace:z command: make check-ci