Skip to content

Commit 87eba20

Browse files
authored
Merge branch 'LinuxCNC:2.9' into 2.9
2 parents 8232fd8 + edcf858 commit 87eba20

95 files changed

Lines changed: 1511 additions & 636 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 163 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ on:
1010
check_suite:
1111
types: [rerequested]
1212

13+
permissions:
14+
contents: read # to fetch code (actions/checkout)
15+
1316
jobs:
1417

1518
rip-and-test:
@@ -27,8 +30,9 @@ jobs:
2730
- name: Build RIP & test
2831
run: |
2932
set -x
30-
sudo apt-get install -y eatmydata
33+
sudo apt-get --yes -o Acquire::Retries=5 install eatmydata
3134
eatmydata ./scripts/travis-install-build-deps.sh
35+
sudo eatmydata apt --yes --quiet -o Acquire::Retries=5 upgrade
3236
cd src
3337
eatmydata ./autogen.sh
3438
eatmydata ./configure --with-realtime=uspace --disable-check-runtime-deps
@@ -51,9 +55,10 @@ jobs:
5155
- name: Clang build RIP & test
5256
run: |
5357
set -x
54-
sudo apt-get install -y eatmydata
58+
sudo apt-get --yes -o Acquire::Retries=5 install eatmydata
5559
eatmydata ./scripts/travis-install-build-deps.sh
56-
sudo eatmydata apt-get install -y clang
60+
sudo eatmydata apt-get -y -o Acquire::Retries=5 install clang
61+
sudo eatmydata apt --yes --quiet -o Acquire::Retries=5 upgrade
5762
cd src
5863
eatmydata ./autogen.sh
5964
CC=clang CXX=clang++ eatmydata ./configure --with-realtime=uspace --disable-check-runtime-deps
@@ -76,7 +81,8 @@ jobs:
7681
- name: Build HTML docmentation
7782
run: |
7883
./scripts/travis-install-build-deps.sh
79-
sudo apt-get install -y eatmydata
84+
sudo apt-get -y -o Acquire::Retries=5 install eatmydata
85+
sudo eatmydata apt --yes --quiet -o Acquire::Retries=5 upgrade
8086
cd src
8187
eatmydata ./autogen.sh
8288
eatmydata ./configure --with-realtime=uspace --disable-check-runtime-deps --enable-build-documentation=html
@@ -86,11 +92,11 @@ jobs:
8692
# Note that the package build covers html docs
8793
8894
package-arch:
89-
runs-on: ubuntu-latest
95+
runs-on: ${{ matrix.runner }}
9096
strategy:
9197
matrix:
92-
image: ["debian:bullseye", "debian:bookworm", "debian:sid"]
93-
98+
runner: ["ubuntu-24.04", "ubuntu-24.04-arm"]
99+
image: ["debian:bullseye", "debian:bookworm", "debian:trixie", "debian:sid"]
94100
container:
95101
image: ${{ matrix.image }}
96102
# IPC_OWNER is needed for shmget IPC_CREAT
@@ -107,10 +113,11 @@ jobs:
107113
run: |
108114
set -e
109115
set -x
110-
apt-get --quiet update
111-
apt-get --yes --quiet install eatmydata
116+
apt-get --quiet -o Acquire::Retries=5 update
117+
apt-get --yes --quiet -o Acquire::Retries=5 install eatmydata curl
118+
eatmydata apt --yes --quiet -o Acquire::Retries=5 upgrade
112119
# Install stuff needed to check out the linuxcnc repo and turn it into a debian source package.
113-
eatmydata apt-get --yes --quiet install --no-install-suggests git lsb-release python3 devscripts
120+
eatmydata apt-get --yes --quiet -o Acquire::Retries=5 install --no-install-suggests git lsb-release python3 devscripts
114121
115122
- uses: actions/checkout@v3
116123
with:
@@ -123,19 +130,19 @@ jobs:
123130
DEBIAN_FRONTEND: noninteractive
124131
run: |
125132
case "${{matrix.image}}" in
126-
debian:sid|debian:bookworm)
133+
debian:sid|debian:bookworm|debian:trixie)
127134
exit 0
128135
;;
129136
*)
130137
;;
131138
esac
132139
set -e
133140
set -x
134-
eatmydata apt-get --yes --quiet install --no-install-recommends gpg software-properties-common
141+
eatmydata apt-get --yes --quiet -o Acquire::Retries=5 install --no-install-recommends gpg software-properties-common
135142
eatmydata gpg --homedir="${PWD}/gnupg" --output /etc/apt/trusted.gpg.d/linuxcnc-deb-archive.gpg --export 3CB9FD148F374FEF
136143
DIST=$(echo ${{matrix.image}} | cut -d : -f 2)
137144
eatmydata add-apt-repository "deb http://linuxcnc.org $DIST base"
138-
eatmydata apt-get --quiet update
145+
eatmydata apt-get --quiet -o Acquire::Retries=5 update
139146
140147
- name: Build architecture-specific Debian packages
141148
env:
@@ -150,27 +157,52 @@ jobs:
150157
eatmydata debian/update-dch-from-git
151158
eatmydata scripts/get-version-from-git | sed -re 's/^v(.*)$/\1/' >| VERSION; cat VERSION
152159
eatmydata git diff
153-
eatmydata apt-get --yes --quiet build-dep --arch-only .
160+
eatmydata apt-get --yes --quiet -o Acquire::Retries=5 build-dep --arch-only .
154161
eatmydata debuild -us -uc --build=any
155162
- name: Test debian packages
156163
env:
157164
DEBIAN_FRONTEND: noninteractive
158165
run: |
159166
set -e
160167
set -x
161-
eatmydata apt-get --yes --quiet install ../*.deb
162-
eatmydata apt-get --yes --quiet install sudo # some tests run sudo...
168+
eatmydata apt-get --yes --quiet -o Acquire::Retries=5 install ../*.deb
169+
eatmydata apt-get --yes --quiet -o Acquire::Retries=5 install sudo # some tests run sudo...
163170
eatmydata adduser --disabled-password --gecos "" testrunner
164171
eatmydata passwd -d testrunner
165172
eatmydata adduser testrunner sudo
166173
chmod 0777 $(find tests/ -type d) # make test dirs world-writable for the testrunner
167174
su -c "eatmydata ./scripts/runtests -p ./tests" testrunner
175+
- name: Gather build artifacts
176+
run: |
177+
set -e
178+
set -x
179+
ARCH=$(dpkg --print-architecture)
180+
DIST=$(echo ${{ matrix.image }} | cut -d : -f 2)
181+
OUTDIR="artifacts/${DIST}/${ARCH}"
182+
mkdir -p "$OUTDIR"
183+
cp -v ../*.deb ../*.changes ../*.buildinfo "$OUTDIR" || true
184+
(cd "$OUTDIR" && sha256sum * > SHA256SUMS.txt)
185+
echo "DIST=$DIST" >> "$GITHUB_ENV"
186+
echo "ARCH=$ARCH" >> "$GITHUB_ENV"
187+
- name: Compute artifact metadata
188+
id: meta
189+
run: |
190+
echo "dist=$(echo ${{ matrix.image }} | cut -d : -f 2)" >> $GITHUB_OUTPUT
191+
echo "arch=$(dpkg --print-architecture)" >> $GITHUB_OUTPUT
192+
193+
- name: Upload build artifacts
194+
uses: actions/upload-artifact@v4
195+
with:
196+
name: linuxcnc-${{ steps.meta.outputs.dist }}-${{ steps.meta.outputs.arch }}
197+
path: artifacts/${{ steps.meta.outputs.dist }}/${{ steps.meta.outputs.arch }}
198+
if-no-files-found: error
199+
168200

169201
package-indep:
170-
runs-on: ubuntu-latest
202+
runs-on: ubuntu-24.04
171203
strategy:
172204
matrix:
173-
image: ["debian:bullseye", "debian:bookworm", "debian:sid"]
205+
image: ["debian:bullseye", "debian:bookworm", "debian:trixie", "debian:sid"]
174206
container:
175207
image: ${{ matrix.image }}
176208
# IPC_OWNER is needed for shmget IPC_CREAT
@@ -188,10 +220,11 @@ jobs:
188220
run: |
189221
set -e
190222
set -x
191-
apt-get --quiet update
192-
apt-get --yes --quiet install eatmydata
223+
apt-get --quiet -o Acquire::Retries=5 update
224+
apt-get --yes --quiet -o Acquire::Retries=5 install eatmydata curl
225+
eatmydata apt --yes --quiet -o Acquire::Retries=5 upgrade
193226
# Install stuff needed to check out the linuxcnc repo and turn it into a debian source package.
194-
eatmydata apt-get --yes --quiet install --no-install-suggests git lsb-release python3 devscripts
227+
eatmydata apt-get --yes --quiet -o Acquire::Retries=5 install --no-install-suggests git lsb-release python3 devscripts
195228
196229
- uses: actions/checkout@v3
197230
with:
@@ -204,19 +237,19 @@ jobs:
204237
DEBIAN_FRONTEND: noninteractive
205238
run: |
206239
case "${{matrix.image}}" in
207-
debian:sid|debian:bookworm)
240+
debian:sid|debian:bookworm|debian:trixie)
208241
exit 0
209242
;;
210243
*)
211244
;;
212245
esac
213246
set -e
214247
set -x
215-
eatmydata apt-get --yes --quiet install gpg software-properties-common
248+
eatmydata apt-get --yes --quiet -o Acquire::Retries=5 install gpg software-properties-common
216249
eatmydata gpg --homedir="${PWD}/gnupg" --output /etc/apt/trusted.gpg.d/linuxcnc-deb-archive.gpg --export 3CB9FD148F374FEF
217250
DIST=$(echo ${{matrix.image}} | cut -d : -f 2)
218251
eatmydata add-apt-repository "deb http://linuxcnc.org $DIST base"
219-
eatmydata apt-get --quiet update
252+
eatmydata apt-get --quiet -o Acquire::Retries=5 update
220253
221254
- name: Build architecture-independent Debian packages
222255
env:
@@ -231,12 +264,116 @@ jobs:
231264
eatmydata debian/update-dch-from-git
232265
eatmydata scripts/get-version-from-git | sed -re 's/^v(.*)$/\1/' >| VERSION; cat VERSION
233266
eatmydata git diff
234-
eatmydata apt-get --yes --quiet build-dep --indep-only .
267+
eatmydata apt-get --yes --quiet -o Acquire::Retries=5 build-dep --indep-only .
235268
eatmydata debuild -us -uc --build=all
236269
- name: Test install debian packages
237270
env:
238271
DEBIAN_FRONTEND: noninteractive
239272
run: |
240273
set -e
241274
set -x
242-
eatmydata apt-get --yes --quiet install ../*.deb
275+
eatmydata apt-get --yes --quiet -o Acquire::Retries=5 install ../*.deb
276+
- name: Gather build artifacts
277+
run: |
278+
set -e
279+
set -x
280+
DIST=$(echo ${{ matrix.image }} | cut -d : -f 2)
281+
ARCH=all
282+
OUTDIR="artifacts/${DIST}/${ARCH}"
283+
mkdir -p "$OUTDIR"
284+
cp -v ../*.deb ../*.changes ../*.buildinfo "$OUTDIR" || true
285+
(cd "$OUTDIR" && sha256sum * > SHA256SUMS.txt)
286+
echo "DIST=$DIST" >> "$GITHUB_ENV"
287+
echo "ARCH=$ARCH" >> "$GITHUB_ENV"
288+
- name: Compute artifact metadata
289+
id: meta
290+
run: |
291+
echo "dist=$(echo ${{ matrix.image }} | cut -d : -f 2)" >> $GITHUB_OUTPUT
292+
echo "arch=all" >> $GITHUB_OUTPUT
293+
294+
- name: Upload build artifacts
295+
uses: actions/upload-artifact@v4
296+
with:
297+
name: linuxcnc-${{ steps.meta.outputs.dist }}-${{ steps.meta.outputs.arch }}
298+
path: artifacts/${{ steps.meta.outputs.dist }}/${{ steps.meta.outputs.arch }}
299+
if-no-files-found: error
300+
301+
302+
cppcheck:
303+
runs-on: ubuntu-24.04
304+
steps:
305+
- uses: actions/checkout@v2
306+
with:
307+
submodules: true
308+
fetch-depth: 0
309+
- name: Perform Source Code checks that were successful in the past
310+
continue-on-error: true
311+
run: |
312+
set -x
313+
git fetch --recurse-submodules=no https://github.com/linuxcnc/linuxcnc refs/tags/*:refs/tags/*
314+
sudo apt-get --yes -o Acquire::Retries=5 install cppcheck shellcheck
315+
scripts/cppcheck.sh
316+
- name: Shellcheck
317+
continue-on-error: true
318+
run: |
319+
scripts/shellcheck.sh
320+
321+
322+
release:
323+
name: Release packages
324+
needs:
325+
- package-arch
326+
- package-indep
327+
if: (github.event_name == 'release' && github.event.action == 'published') || startsWith(github.ref, 'refs/tags/')
328+
permissions:
329+
contents: write
330+
runs-on: ubuntu-24.04
331+
steps:
332+
- name: Download artifacts
333+
uses: actions/download-artifact@v4
334+
with:
335+
path: release_artifacts
336+
- name: Prepare upload assets
337+
run: |
338+
set -e
339+
mkdir -p upload
340+
echo "Downloaded artifacts layout:" && find release_artifacts -maxdepth 3 -print | sed 's/^/ /'
341+
for d in release_artifacts/*; do
342+
[ -d "$d" ] || continue
343+
name=$(basename "$d")
344+
# Expect name like linuxcnc-bookworm-amd64 or linuxcnc-trixie-all
345+
dist=${name#linuxcnc-}
346+
dist=${dist%-*}
347+
arch=${name##*-}
348+
echo "Processing artifact: $name (dist=$dist arch=$arch)"
349+
# Copy .deb files with distro suffix (arch is already in Debian filename)
350+
for f in "$d"/*.deb; do
351+
[ -f "$f" ] || continue
352+
base=$(basename "$f")
353+
base_no_ext="${base%.deb}"
354+
dest="upload/${base_no_ext}_${dist}.deb"
355+
echo " + $base -> $(basename "$dest")"
356+
cp "$f" "$dest"
357+
done
358+
done
359+
360+
echo "Upload dir contents:" && ls -l upload | sed 's/^/ /'
361+
# Single combined checksums file for all assets, deterministic order
362+
if ls upload/*.deb >/dev/null 2>&1; then
363+
(
364+
cd upload
365+
: > SHA256SUMS.txt
366+
# sort file list for stable output
367+
for f in $(ls -1 *.deb | LC_ALL=C sort); do
368+
sha256sum "$f" >> SHA256SUMS.txt
369+
done
370+
echo "Preview of SHA256SUMS.txt:" && sed -n '1,200p' SHA256SUMS.txt | sed 's/^/ /'
371+
)
372+
fi
373+
- name: Create GitHub Release and upload assets
374+
uses: softprops/action-gh-release@v2
375+
with:
376+
files: |
377+
upload/*
378+
env:
379+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.9.5
1+
2.9.8

configs/sim/gmoccapy/dro.glade

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<property name="can-focus">False</property>
2424
<property name="label" translatable="yes">label</property>
2525
<property name="display-units-mm">True</property>
26+
<property name="font-size">22</property>
2627
<property name="joint-number">1</property>
2728
<attributes>
2829
<attribute name="style" value="normal"/>
@@ -43,6 +44,7 @@
4344
<property name="can-focus">False</property>
4445
<property name="label" translatable="yes">label</property>
4546
<property name="display-units-mm">True</property>
47+
<property name="font-size">22</property>
4648
<attributes>
4749
<attribute name="style" value="normal"/>
4850
<attribute name="weight" value="bold"/>
@@ -62,6 +64,7 @@
6264
<property name="can-focus">False</property>
6365
<property name="label" translatable="yes">label</property>
6466
<property name="display-units-mm">True</property>
67+
<property name="font-size">22</property>
6568
<property name="joint-number">1</property>
6669
<property name="reference-type">2</property>
6770
<attributes>
@@ -83,6 +86,7 @@
8386
<property name="can-focus">False</property>
8487
<property name="label" translatable="yes">label</property>
8588
<property name="display-units-mm">True</property>
89+
<property name="font-size">22</property>
8690
<property name="reference-type">2</property>
8791
<attributes>
8892
<attribute name="style" value="normal"/>
@@ -103,6 +107,7 @@
103107
<property name="can-focus">False</property>
104108
<property name="label" translatable="yes">label</property>
105109
<property name="display-units-mm">True</property>
110+
<property name="font-size">22</property>
106111
<property name="joint-number">1</property>
107112
<property name="reference-type">1</property>
108113
<attributes>
@@ -124,6 +129,7 @@
124129
<property name="can-focus">False</property>
125130
<property name="label" translatable="yes">label</property>
126131
<property name="display-units-mm">True</property>
132+
<property name="font-size">22</property>
127133
<property name="reference-type">1</property>
128134
<attributes>
129135
<attribute name="style" value="normal"/>
@@ -144,6 +150,7 @@
144150
<property name="can-focus">False</property>
145151
<property name="label" translatable="yes">label</property>
146152
<property name="display-units-mm">True</property>
153+
<property name="font-size">22</property>
147154
<property name="joint-number">2</property>
148155
<attributes>
149156
<attribute name="style" value="normal"/>
@@ -164,6 +171,7 @@
164171
<property name="can-focus">False</property>
165172
<property name="label" translatable="yes">label</property>
166173
<property name="display-units-mm">True</property>
174+
<property name="font-size">22</property>
167175
<property name="joint-number">2</property>
168176
<property name="reference-type">1</property>
169177
<attributes>
@@ -185,6 +193,7 @@
185193
<property name="can-focus">False</property>
186194
<property name="label" translatable="yes">label</property>
187195
<property name="display-units-mm">True</property>
196+
<property name="font-size">22</property>
188197
<property name="joint-number">2</property>
189198
<property name="reference-type">2</property>
190199
<attributes>

0 commit comments

Comments
 (0)