Skip to content

Commit 7912df4

Browse files
authored
Merge branch 'master' into d/configure_verbosity
2 parents 8f2ccfb + e371937 commit 7912df4

File tree

2,092 files changed

+2341937
-1130561
lines changed

Some content is hidden

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

2,092 files changed

+2341937
-1130561
lines changed

.github/workflows/ci.yml

Lines changed: 122 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,11 @@ jobs:
9292
# Note that the package build covers html docs
9393
9494
package-arch:
95-
runs-on: ubuntu-24.04
95+
runs-on: ${{ matrix.runner }}
9696
strategy:
9797
matrix:
98-
image: ["debian:bullseye", "debian:bookworm", "debian:sid"]
98+
runner: ["ubuntu-24.04", "ubuntu-24.04-arm"]
99+
image: ["debian:bookworm", "debian:trixie", "debian:sid"]
99100
container:
100101
image: ${{ matrix.image }}
101102
# IPC_OWNER is needed for shmget IPC_CREAT
@@ -129,7 +130,7 @@ jobs:
129130
DEBIAN_FRONTEND: noninteractive
130131
run: |
131132
case "${{matrix.image}}" in
132-
debian:sid|debian:bookworm)
133+
debian:sid|debian:bookworm|debian:trixie)
133134
exit 0
134135
;;
135136
*)
@@ -171,12 +172,37 @@ jobs:
171172
eatmydata adduser testrunner sudo
172173
chmod 0777 $(find tests/ -type d) # make test dirs world-writable for the testrunner
173174
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 $(find .. -maxdepth 1 -type f | LC_ALL=C sort) "$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+
174200

175201
package-indep:
176202
runs-on: ubuntu-24.04
177203
strategy:
178204
matrix:
179-
image: ["debian:bullseye", "debian:bookworm", "debian:sid"]
205+
image: ["debian:bookworm", "debian:trixie", "debian:sid"]
180206
container:
181207
image: ${{ matrix.image }}
182208
# IPC_OWNER is needed for shmget IPC_CREAT
@@ -211,7 +237,7 @@ jobs:
211237
DEBIAN_FRONTEND: noninteractive
212238
run: |
213239
case "${{matrix.image}}" in
214-
debian:sid|debian:bookworm)
240+
debian:sid|debian:bookworm|debian:trixie)
215241
exit 0
216242
;;
217243
*)
@@ -239,11 +265,101 @@ jobs:
239265
eatmydata scripts/get-version-from-git | sed -re 's/^v(.*)$/\1/' >| VERSION; cat VERSION
240266
eatmydata git diff
241267
eatmydata apt-get --yes --quiet build-dep --indep-only .
242-
eatmydata debuild -us -uc --build=all
268+
eatmydata debuild -us -uc --build=source,all
243269
- name: Test install debian packages
244270
env:
245271
DEBIAN_FRONTEND: noninteractive
246272
run: |
247273
set -e
248274
set -x
249275
eatmydata apt-get --yes --quiet 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 $(find .. -maxdepth 1 -type f | LC_ALL=C sort) "$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 -y 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 built files into distro and arch specific directory
350+
mkdir "upload/${dist}-${arch}/"
351+
# sort file list for stable output
352+
for f in $(find "$d" -maxdepth 1 -type f | LC_ALL=C sort); do
353+
[ -f "$f" ] || continue
354+
cp "$f" "upload/${dist}-${arch}"
355+
done
356+
echo "Preview of SHA256SUMS.txt:" && sed -n '1,200p' "upload/${dist}-${arch}/SHA256SUMS.txt" | sed 's/^/ /'
357+
echo "Upload dir contents:" && ls -l "upload/${dist}-${arch}" | sed 's/^/ /'
358+
done
359+
- name: Create GitHub Release and upload assets
360+
uses: softprops/action-gh-release@v2
361+
with:
362+
files: |
363+
upload/*
364+
env:
365+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ build-stamp
1111
*.mod.c
1212
*.cmd
1313
.tmp*
14+
src/*.mod
1415
# Ignore generated html files,
1516
/docs/src/*/*.html
1617
# docs/html/.gitignore is for the html directory
@@ -26,12 +27,15 @@ src/modules.order
2627
/configs/*/emc.nml
2728
!/configs/common/emc.nml
2829
/docs/src/source-highlight/local
30+
docs/src/*/gui/gmoccapy_release_notes.txt
2931
lib/python/gremlin.py
3032
lib/python/qt5_graphics.py
3133
lib/python/touchy
3234
configs/sim/gmoccapy/*.pref
3335
configs/sim/gmoccapy/gmoccapy_plasma/*.pref
3436
configs/sim/gmoccapy/gmoccapy-JA/*.pref
37+
configs/**/*.tbl.bak
38+
configs/**/halshow.preferences
3539
# Miscellaneous generated files (Rob)
3640
cscope
3741
cscope.*
@@ -45,20 +49,11 @@ position.txt
4549
*.result
4650
# Ignore temp files
4751
*.swp
52+
*~
4853
# Ignore po4a temp files
4954
*.failed.po
5055
*-new_??.po
5156
# Ignore stamp files
5257
*.*-stamp
5358
# Ignore VSCode settings
5459
.vscode/settings.json
55-
# Ignore po4a-generated files for other languages
56-
docs/help/es/*
57-
docs/help/fr/*
58-
docs/help/hu/*
59-
docs/help/nb/*
60-
docs/help/vi/*
61-
docs/help/zh_CN/*
62-
docs/src/*/gui/gmoccapy_release_notes.txt
63-
configs/**/*.tbl.bak
64-
configs/**/halshow.preferences

VERSION

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
2.10.0~pre0
2+

bin/profile_axis

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#!/bin/bash
2-
SCRIPT_LOCATION=$(dirname $(readlink -f $0))
3-
python3 -mcProfile -o axis.profile $SCRIPT_LOCATION/axis "$@"
2+
SCRIPT_LOCATION=$(dirname "$(readlink -f "$0")")
3+
python3 -mcProfile -o axis.profile "$SCRIPT_LOCATION"/axis "$@"
44
(echo sort cumulative; echo stats 20) | python3 -mpstats axis.profile

configs/apps/gladevcp/animated-backdrop/animated-backdrop.demo

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
thisfile=$(readlink -f "$0")
44
thisdir=$(dirname "$thisfile")
5-
cd "$thisdir"
5+
cd "$thisdir" || { echo "E: Could not change directory to '$thisdir'"; exit 1; }
66

77
gladevcp_demo -u ./cairodraw.py ./cairodraw.ui

configs/apps/gladevcp/animated-backdrop/cairodraw.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
2-
import gtk, sys, cairo
1+
import cairo
32
from math import pi
43

54

65
pngfile = 'vortex.me.png'
76

87
class HandlerClass:
98

10-
def on_expose(self,widget,data=None):
11-
print("on_expose")
12-
cr = widget.window.cairo_create()
9+
def on_draw(self, widget, cr):
10+
print("on_draw")
1311

1412
# Sets the operator to clear which deletes everything below
1513
# where an object is drawn
1614
cr.set_operator(cairo.OPERATOR_CLEAR)
15+
width = widget.get_allocated_width()
16+
height = widget.get_allocated_height()
1717
# Makes the mask fill the entire window
18-
cr.rectangle(0.0, 0.0, *widget.get_size())
18+
cr.rectangle(0.0, 0.0, width, height)
1919
# Deletes everything in the window (since the compositing
2020
# operator is clear and mask fills the entire window
2121
cr.fill()
2222
# Set the compositing operator back to the default
2323
cr.set_operator(cairo.OPERATOR_OVER)
2424

2525
if self.scale:
26-
x, y, w, h = widget.allocation
26+
w, h = widget.get_allocated_width(), widget.get_allocated_height()
2727
cr.scale(1.0 *w / self.width, 1.0*h/self.height)
2828

2929
cr.set_source_surface(self.img, 0, 0)
@@ -49,8 +49,8 @@ def __init__(self, halcomp,builder,useropts):
4949
# This sets the windows colormap, so it supports transparency.
5050
# This will only work if the wm support alpha channel
5151
screen = win.get_screen()
52-
rgba = screen.get_rgba_colormap()
53-
win.set_colormap(rgba)
52+
rgba = screen.get_rgba_visual()
53+
win.set_visual(rgba)
5454

5555
# scaling the bitmap is possible by turning this on
5656
# however the fixed widget does NOT do proportional scaling

configs/apps/gladevcp/animated-backdrop/cairodraw.ui

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
1-
<?xml version="1.0"?>
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!-- Generated with glade 3.38.2 -->
23
<interface>
3-
<!-- interface-requires gladevcp 0.0 -->
4-
<requires lib="gtk+" version="2.16"/>
5-
<!-- interface-naming-policy project-wide -->
4+
<requires lib="gtk+" version="3.0"/>
5+
<requires lib="gladevcp" version="0.0"/>
66
<object class="GtkWindow" id="window1">
7-
<signal name="expose_event" handler="on_expose"/>
7+
<property name="can-focus">False</property>
8+
<signal name="draw" handler="on_draw" swapped="no"/>
89
<child>
910
<object class="GtkFixed" id="fixed1">
1011
<property name="visible">True</property>
12+
<property name="can-focus">False</property>
1113
<child>
1214
<object class="HAL_LED" id="hal_led1">
13-
<property name="width_request">100</property>
14-
<property name="height_request">80</property>
15+
<property name="width-request">100</property>
16+
<property name="height-request">80</property>
1517
<property name="visible">True</property>
18+
<property name="can-focus">False</property>
19+
<property name="led-blink-rate">0</property>
1620
</object>
1721
<packing>
1822
<property name="x">57</property>
@@ -22,13 +26,13 @@
2226
<child>
2327
<object class="HAL_Button" id="hal_button1">
2428
<property name="label" translatable="yes">button</property>
25-
<property name="width_request">100</property>
26-
<property name="height_request">80</property>
29+
<property name="width-request">100</property>
30+
<property name="height-request">80</property>
2731
<property name="visible">True</property>
28-
<property name="can_focus">True</property>
29-
<property name="receives_default">True</property>
30-
<property name="has_tooltip">True</property>
31-
<property name="tooltip_text" translatable="yes">a tooltip</property>
32+
<property name="can-focus">True</property>
33+
<property name="receives-default">True</property>
34+
<property name="has-tooltip">True</property>
35+
<property name="tooltip-text" translatable="yes">a tooltip</property>
3236
</object>
3337
<packing>
3438
<property name="x">250</property>
@@ -38,11 +42,11 @@
3842
<child>
3943
<object class="HAL_ToggleButton" id="hal_togglebutton1">
4044
<property name="label" translatable="yes">togglebutton</property>
41-
<property name="width_request">100</property>
42-
<property name="height_request">80</property>
45+
<property name="width-request">100</property>
46+
<property name="height-request">80</property>
4347
<property name="visible">True</property>
44-
<property name="can_focus">True</property>
45-
<property name="receives_default">True</property>
48+
<property name="can-focus">True</property>
49+
<property name="receives-default">True</property>
4650
</object>
4751
<packing>
4852
<property name="x">29</property>

configs/apps/gladevcp/by-widget/combobox.demo

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
thisfile=$(readlink -f "$0")
44
thisdir=$(dirname "$thisfile")
5-
cd "$thisdir"
5+
cd "$thisdir" || { echo "E: Could not change directory to '$thisdir'"; exit 1; }
66

7-
gladevcp_demo -u ./combobox ./combobox.ui
7+
gladevcp_demo -u combobox.py combobox.ui

0 commit comments

Comments
 (0)