Skip to content

Commit b022ded

Browse files
author
Packerlschupfer
committed
Initial commit
0 parents  commit b022ded

589 files changed

Lines changed: 70930 additions & 0 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: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [ main, master ]
6+
pull_request:
7+
branches: [ main, master ]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-24.04
12+
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Install dependencies
17+
run: |
18+
sudo apt-get update
19+
sudo apt-get install -y \
20+
meson \
21+
ninja-build \
22+
valac \
23+
libgtk-4-dev \
24+
libadwaita-1-dev \
25+
libgtksourceview-5-dev \
26+
libgee-0.8-dev \
27+
librsvg2-dev \
28+
libcairo2-dev \
29+
libsoup-3.0-dev \
30+
libjson-glib-dev \
31+
desktop-file-utils \
32+
gettext \
33+
appstream \
34+
libpango1.0-dev \
35+
libgd-dev \
36+
libexpat1-dev \
37+
libltdl-dev \
38+
bison \
39+
flex
40+
41+
- name: Cache patched Graphviz
42+
id: cache-graphviz
43+
uses: actions/cache@v4
44+
with:
45+
path: /opt/graphviz-patched
46+
key: graphviz-patched-${{ runner.os }}-8bcacbc100a2
47+
48+
- name: Build and install patched Graphviz
49+
if: steps.cache-graphviz.outputs.cache-hit != 'true'
50+
run: |
51+
git clone --depth 1 https://github.com/packerlschupfer/graphviz.git \
52+
--branch gdiagram-patch /tmp/graphviz
53+
cmake -B /tmp/graphviz/build -S /tmp/graphviz \
54+
-DCMAKE_INSTALL_PREFIX=/opt/graphviz-patched
55+
make -C /tmp/graphviz/build -j$(nproc)
56+
sudo make -C /tmp/graphviz/build install
57+
58+
- name: Configure Graphviz environment
59+
run: |
60+
echo "PKG_CONFIG_PATH=/opt/graphviz-patched/lib/pkgconfig:${PKG_CONFIG_PATH:-}" >> $GITHUB_ENV
61+
echo "LD_LIBRARY_PATH=/opt/graphviz-patched/lib:${LD_LIBRARY_PATH:-}" >> $GITHUB_ENV
62+
63+
- name: Configure
64+
run: meson setup build --prefix=/usr
65+
66+
- name: Build
67+
run: meson compile -C build
68+
69+
- name: Validate desktop file
70+
run: desktop-file-validate build/data/org.gnome.gDiagram.desktop
71+
72+
- name: Validate metainfo
73+
run: appstreamcli validate --no-net data/org.gnome.gDiagram.metainfo.xml || true
74+
75+
- name: Upload build artifacts
76+
uses: actions/upload-artifact@v4
77+
with:
78+
name: gdiagram-build
79+
path: build/src/gdiagram

.github/workflows/release.yml

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
permissions:
9+
contents: write
10+
11+
# Patched Graphviz fork: https://github.com/packerlschupfer/graphviz
12+
# Branch: gdiagram-patch Commit: 8bcacbc100a23ee25e1e649ef2fafc8deee1a2c7
13+
env:
14+
GV_COMMIT: 8bcacbc100a23ee25e1e649ef2fafc8deee1a2c7
15+
GV_CACHE_KEY: graphviz-patched-8bcacbc100a2
16+
17+
jobs:
18+
build-deb:
19+
runs-on: ubuntu-24.04
20+
steps:
21+
- uses: actions/checkout@v4
22+
23+
- name: Install build dependencies
24+
run: |
25+
sudo apt-get update
26+
sudo apt-get install -y \
27+
debhelper \
28+
devscripts \
29+
meson \
30+
ninja-build \
31+
valac \
32+
libgtk-4-dev \
33+
libadwaita-1-dev \
34+
libgtksourceview-5-dev \
35+
libgee-0.8-dev \
36+
librsvg2-dev \
37+
libcairo2-dev \
38+
libsoup-3.0-dev \
39+
libjson-glib-dev \
40+
libpango1.0-dev \
41+
libgd-dev \
42+
libexpat1-dev \
43+
libltdl-dev \
44+
bison \
45+
flex \
46+
gettext
47+
48+
- name: Cache patched Graphviz
49+
id: cache-graphviz
50+
uses: actions/cache@v4
51+
with:
52+
path: /opt/graphviz-patched
53+
key: ${{ env.GV_CACHE_KEY }}-${{ runner.os }}
54+
55+
- name: Build and install patched Graphviz
56+
if: steps.cache-graphviz.outputs.cache-hit != 'true'
57+
run: |
58+
git clone https://github.com/packerlschupfer/graphviz.git /tmp/graphviz
59+
cd /tmp/graphviz && git checkout ${{ env.GV_COMMIT }}
60+
cmake -B build -S . -DCMAKE_INSTALL_PREFIX=/opt/graphviz-patched
61+
make -C build -j$(nproc)
62+
sudo make -C build install
63+
64+
- name: Configure Graphviz environment
65+
run: |
66+
echo "PKG_CONFIG_PATH=/opt/graphviz-patched/lib/pkgconfig:${PKG_CONFIG_PATH:-}" >> $GITHUB_ENV
67+
echo "LD_LIBRARY_PATH=/opt/graphviz-patched/lib:${LD_LIBRARY_PATH:-}" >> $GITHUB_ENV
68+
69+
- name: Build Debian package
70+
run: dpkg-buildpackage -us -uc -b
71+
72+
- name: Upload deb artifact
73+
uses: actions/upload-artifact@v4
74+
with:
75+
name: debian-package
76+
path: ../*.deb
77+
78+
build-appimage:
79+
runs-on: ubuntu-22.04
80+
steps:
81+
- uses: actions/checkout@v4
82+
83+
- name: Install dependencies
84+
run: |
85+
sudo apt-get update
86+
sudo apt-get install -y \
87+
meson \
88+
ninja-build \
89+
valac \
90+
libgtk-4-dev \
91+
libadwaita-1-dev \
92+
libgtksourceview-5-dev \
93+
libgee-0.8-dev \
94+
librsvg2-dev \
95+
libcairo2-dev \
96+
libsoup-3.0-dev \
97+
libjson-glib-dev \
98+
libpango1.0-dev \
99+
libgd-dev \
100+
libexpat1-dev \
101+
libltdl-dev \
102+
bison \
103+
flex \
104+
gettext \
105+
fuse \
106+
libfuse2
107+
108+
- name: Cache patched Graphviz
109+
id: cache-graphviz
110+
uses: actions/cache@v4
111+
with:
112+
path: /opt/graphviz-patched
113+
key: ${{ env.GV_CACHE_KEY }}-${{ runner.os }}
114+
115+
- name: Build and install patched Graphviz
116+
if: steps.cache-graphviz.outputs.cache-hit != 'true'
117+
run: |
118+
git clone https://github.com/packerlschupfer/graphviz.git /tmp/graphviz
119+
cd /tmp/graphviz && git checkout ${{ env.GV_COMMIT }}
120+
cmake -B build -S . -DCMAKE_INSTALL_PREFIX=/opt/graphviz-patched
121+
make -C build -j$(nproc)
122+
sudo make -C build install
123+
124+
- name: Configure Graphviz environment
125+
run: |
126+
echo "PKG_CONFIG_PATH=/opt/graphviz-patched/lib/pkgconfig:${PKG_CONFIG_PATH:-}" >> $GITHUB_ENV
127+
echo "LD_LIBRARY_PATH=/opt/graphviz-patched/lib:${LD_LIBRARY_PATH:-}" >> $GITHUB_ENV
128+
129+
- name: Install appimage-builder
130+
run: |
131+
wget -q -O appimage-builder \
132+
https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage
133+
chmod +x appimage-builder
134+
sudo mv appimage-builder /usr/local/bin/
135+
136+
- name: Build AppImage
137+
run: |
138+
cd appimage
139+
appimage-builder --recipe AppImageBuilder.yml --skip-test
140+
141+
- name: Upload AppImage artifact
142+
uses: actions/upload-artifact@v4
143+
with:
144+
name: appimage
145+
path: appimage/gDiagram-*.AppImage
146+
147+
build-flatpak:
148+
runs-on: ubuntu-latest
149+
container:
150+
image: bilelmoussaoui/flatpak-github-actions:gnome-46
151+
options: --privileged
152+
steps:
153+
- uses: actions/checkout@v4
154+
155+
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
156+
with:
157+
bundle: gdiagram.flatpak
158+
manifest-path: org.gnome.gDiagram.json
159+
cache-key: flatpak-builder-${{ github.sha }}
160+
161+
release:
162+
needs: [build-deb, build-appimage, build-flatpak]
163+
runs-on: ubuntu-latest
164+
steps:
165+
- name: Download all artifacts
166+
uses: actions/download-artifact@v4
167+
168+
- name: Display structure of downloaded files
169+
run: ls -la */
170+
171+
- name: Create Release
172+
uses: softprops/action-gh-release@v1
173+
with:
174+
files: |
175+
debian-package/*.deb
176+
appimage/*.AppImage
177+
flatpak/*.flatpak
178+
generate_release_notes: true
179+
env:
180+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Claude Code local files
2+
.claude/
3+
4+
# Build directories
5+
build/
6+
builddir/
7+
build-graphviz-pkg/
8+
obj-x86_64-linux-gnu/
9+
10+
# Debian packaging artifacts
11+
debian/.debhelper/
12+
debian/gplantuml/
13+
debian/files
14+
debian/*.substvars
15+
debian/*.debhelper.log
16+
debian/debhelper-build-stamp
17+
18+
# Meson build artifacts
19+
*.stamp
20+
21+
22+
# Object files
23+
*.o
24+
*.a
25+
26+
# Compiled binaries
27+
src/gplantuml
28+
29+
# Generated configuration
30+
config.vala
31+
32+
# Editor/IDE files
33+
.vscode/
34+
.idea/
35+
*.swp
36+
*.swo
37+
*~
38+
39+
# Package files
40+
*.deb
41+
*.buildinfo
42+
*.changes
43+
44+
# AppImage build
45+
appimage/*.AppImage
46+
47+
# Temporary files
48+
*.log
49+
.DS_Store
50+
debian/gdiagram/
51+
debian/.debhelper/

0 commit comments

Comments
 (0)