Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
313 commits
Select commit Hold shift + click to select a range
548f5c7
Some refactoring.
davidgiven Aug 5, 2026
4c697d2
Start doing some of the USB device wireup.
davidgiven Aug 5, 2026
bf67f10
I think some of this design may actually work.
davidgiven Aug 5, 2026
4ed0610
More config stuff.
davidgiven Aug 5, 2026
7f28f8d
Add the Flags class, because I think we're going to need it.
davidgiven Aug 5, 2026
f17f740
Refactor.
davidgiven Aug 6, 2026
8bf9179
Rework flags. Again.
davidgiven Aug 6, 2026
a9d4e1e
Fiddle with flags again. Start on building configs from them.
davidgiven Aug 6, 2026
9da63c6
Start wiring up the commands.
davidgiven Aug 6, 2026
27da6d8
You can load config files now!
davidgiven Aug 6, 2026
42998e6
Avoid nasty warning on startup.
davidgiven Aug 6, 2026
1be525b
Protopath setting works.
davidgiven Aug 6, 2026
8717a83
Fiddle with the USB configuration.
davidgiven Aug 7, 2026
15d7ac5
Format.
davidgiven Aug 7, 2026
65dea83
Did a bandwidth test against a Greaseweazle!
davidgiven Aug 7, 2026
fb921dd
Finished converting 'test bandwidth'.
davidgiven Aug 7, 2026
d6e78df
Convert 'rpm'.
davidgiven Aug 7, 2026
f8deb53
Convert 'seek'.
davidgiven Aug 7, 2026
7c013d9
Adjust the Command API.
davidgiven Aug 7, 2026
5368f4a
Convert 'test voltages'.
davidgiven Aug 7, 2026
0222263
Tidy the voltages stuff.
davidgiven Aug 7, 2026
d3427fb
Translate Fluxmap.
davidgiven Aug 7, 2026
a2ddf5d
Add FluxmapReader.
davidgiven Aug 7, 2026
a0c9787
A lot of fluxmap and fluxmapreader cleanup.
davidgiven Aug 7, 2026
099fd38
More Duration fixes.
davidgiven Aug 7, 2026
6911a9c
Add the config factory methods for setting flag values.
davidgiven Aug 7, 2026
a03d7eb
Use java_multiple_files everywhere.
davidgiven Aug 7, 2026
a0bb55b
Translate FluxSource.
davidgiven Aug 7, 2026
b77ba84
Basic translation of FluxSource and a trivial flux source.
davidgiven Aug 7, 2026
f42da21
Add Fl2FluxSource.
davidgiven Aug 7, 2026
fede5e9
Add Locations.
davidgiven Aug 7, 2026
d43b73e
Port DiskLayout.
davidgiven Aug 7, 2026
b813ce5
Make DiskLayout immutable.
davidgiven Aug 7, 2026
f753bbd
Port the Kryoflux libraries.
davidgiven Aug 7, 2026
c38c158
Add the Kryoflux flux source.
davidgiven Aug 7, 2026
0358dfc
Port A2RFluxSource.
davidgiven Aug 7, 2026
e67beb3
Rename.
davidgiven Aug 7, 2026
37476d1
Port FmMfm.
davidgiven Aug 7, 2026
45fc1e1
Port FluxDecoder.
davidgiven Aug 7, 2026
fbd9e31
Format.
davidgiven Aug 7, 2026
d39cb15
Port Record and Sector.
davidgiven Aug 8, 2026
912bca5
Actually, Duration just makes things annoying; use doubles instead.
davidgiven Aug 8, 2026
22c0f6c
Port FluxPattern and friends.
davidgiven Aug 8, 2026
01538a9
Port Decoder.
davidgiven Aug 8, 2026
78179c1
Ported the aeslanier decoder.
davidgiven Aug 8, 2026
8accabf
Implement tests for Crc.
davidgiven Aug 8, 2026
ea82b35
Refactor AesLanier.
davidgiven Aug 8, 2026
12d4111
Ported the decoders. Maybe they even work!
davidgiven Aug 8, 2026
7fb5efd
Add ProtoEncode build tooling.
davidgiven Aug 8, 2026
69b0c34
You can now look up built-in formats.
davidgiven Aug 8, 2026
de71747
Rearrange the way the formats are handled.
davidgiven Aug 8, 2026
60587a1
Add HardwareFluxSource.
davidgiven Aug 8, 2026
975b31f
Port Geometry and Image.
davidgiven Aug 8, 2026
cbf0321
Port ImageWriter.
davidgiven Aug 8, 2026
603d5bc
Port the image writers.
davidgiven Aug 8, 2026
df6fe81
Port the logger (and reformat).
davidgiven Aug 8, 2026
46006ce
Port the reader code, although it doesn't work yet.
davidgiven Aug 8, 2026
f54db4a
Cache the result of UsbDevice.connect, to make it monotonic.
davidgiven Aug 8, 2026
0941212
Hopefully make options work.
davidgiven Aug 8, 2026
4841b10
Attempt to fix the logger rendering.
davidgiven Aug 8, 2026
b3be6da
Port AmigaEncoder.
davidgiven Aug 8, 2026
6301f6e
Port the encoders.
davidgiven Aug 8, 2026
510aaa8
Port the flux sinks.
davidgiven Aug 8, 2026
c764358
Port the image readers.
davidgiven Aug 8, 2026
703d28e
Rearrange.
davidgiven Aug 8, 2026
4518215
Port the writer code; rearrange stuff.
davidgiven Aug 8, 2026
9497f6e
Port WriteCommand.
davidgiven Aug 8, 2026
8b04bad
Port RawwriteCommand.
davidgiven Aug 8, 2026
415cb6a
Rearrange the CLI commands a bit.
davidgiven Aug 8, 2026
60d2b45
Added the stub of the gui.
davidgiven Aug 8, 2026
8c0b9e0
Port Inspect.
davidgiven Aug 8, 2026
931f613
Port ConvertCommand.
davidgiven Aug 8, 2026
31217f9
Adjust the logger API.
davidgiven Aug 8, 2026
521f531
Port the FluxEngine USB stuff.
davidgiven Aug 9, 2026
f3a07c0
Port ApplesauceUsbDevice.
davidgiven Aug 9, 2026
12f1e62
Format.
davidgiven Aug 9, 2026
4f802df
Lots of serial device rearrangement.
davidgiven Aug 9, 2026
f5499d0
rpm works again.
davidgiven Aug 9, 2026
dc47f1e
Rework Bytes not to return a `byte`, as for some reason they're signe…
davidgiven Aug 9, 2026
eab5e98
Refactor the algorithm code (still doesn't work).
davidgiven Aug 9, 2026
92529ac
Okay, the Greaseweazle is now sort-of trying to read disks.
davidgiven Aug 9, 2026
db48f88
Replace the existing makefile with a simple one which invokes bazel.
davidgiven Aug 10, 2026
8940f07
Fix the bazelrc to use Java 21 throughout (caused build failures in p…
davidgiven Aug 10, 2026
3d5c748
Switch the GUI skeleton to Swing.
davidgiven Aug 10, 2026
4de9418
Integrate flatlaf.
davidgiven Aug 10, 2026
0261228
Try integrating swing and flatlaf into the build.
davidgiven Aug 10, 2026
30408bb
Build each textpb seperately.
davidgiven Aug 10, 2026
07498a2
ProtoEncode doesn't need to depend on core.
davidgiven Aug 10, 2026
32c0af3
Switch to darklaf.
davidgiven Aug 10, 2026
176dab1
You can write disks! Or at least, erase them.
davidgiven Aug 10, 2026
e478c77
Remove ab, as we're not needing it any more and it makes NetBeans unh…
davidgiven Aug 10, 2026
4bbe306
Update .gitignore to ignore all netbeans artifacts.
davidgiven Aug 10, 2026
f97e42b
Get netbeans' matisse to display a window.
davidgiven Aug 10, 2026
09a8f42
We have successfully written a disk, with verification!
davidgiven Aug 10, 2026
3040c76
Typo fix: the Atari config didn't set a default image writer.
davidgiven Aug 10, 2026
e2885a0
Use Bits in various places rather than lists of boolean.
davidgiven Aug 10, 2026
9507b69
Bolt on the corpus tests, half of which fail because I haven't ported
davidgiven Aug 10, 2026
a084a49
Run the tests as part of the build.
davidgiven Aug 10, 2026
ea23c36
Update AGENTS which was stale.
davidgiven Aug 11, 2026
f2f6d02
Remember to port ScpFluxSource.
davidgiven Aug 11, 2026
04d44be
A little cleanup.
davidgiven Aug 11, 2026
8588039
Port TrackReadLogMessage; fix the macintosh decoder. All corpus tests
davidgiven Aug 11, 2026
139e51c
Build jpackage distributables.
davidgiven Aug 11, 2026
7fa17ec
Remove the graalvm integration. Sigh.
davidgiven Aug 11, 2026
2045477
Add a simple appimage.
davidgiven Aug 11, 2026
81bd5e0
Try to build an installer on OSX and Windows too.
davidgiven Aug 11, 2026
a51e04f
Try to make build on Windows.
davidgiven Aug 11, 2026
5b5d658
Typo fix.
davidgiven Aug 11, 2026
4d3cfda
Make the packaging rules manual.
davidgiven Aug 11, 2026
809194f
More build fixes.
davidgiven Aug 11, 2026
dbf589a
Rework the secondary launchers to be less bad.
davidgiven Aug 11, 2026
2cfd81d
Make tests verbose.
davidgiven Aug 11, 2026
77a0853
Don't interleave test output.
davidgiven Aug 11, 2026
2484d87
Hopefully fix line ending issues.
davidgiven Aug 11, 2026
3885cc5
Add the rxjava integration.
davidgiven Aug 11, 2026
c3f1823
Start refactoring algorithms to use rxjava.
davidgiven Aug 11, 2026
86a273b
Refactor to use RxJava for passing log messages out of workers.
davidgiven Aug 12, 2026
bd210a6
Renaming.
davidgiven Aug 12, 2026
cafa2cc
Refactor all the logmessage stuff.
davidgiven Aug 12, 2026
e33e83c
Fix option setting so that keys with no dots can be set.
davidgiven Aug 12, 2026
101c9fb
Port the fluxfile utilities.
davidgiven Aug 12, 2026
d23ad7e
Play with menus a bit. They're horrible in Swing.
davidgiven Aug 12, 2026
4e7568e
Integrate SwingTree.
davidgiven Aug 12, 2026
12535ab
Try and make the menu bar actually work.
davidgiven Aug 13, 2026
a5b2290
Make the window closeable.
davidgiven Aug 13, 2026
e8c733b
Add a skeleton Matisse UI.
davidgiven Aug 13, 2026
a127fa5
Switch from Matisse to raw SwingTree.
davidgiven Aug 13, 2026
30ddf15
Start figuring out the config pane.
davidgiven Aug 14, 2026
ea994e1
Try and fix the flaky test.
davidgiven Aug 15, 2026
bc87587
Start work on the options emitter.
davidgiven Aug 15, 2026
9f2c76d
Typo fix.
davidgiven Aug 15, 2026
74619e4
Get most of the option display engine working.
davidgiven Aug 15, 2026
7486295
Fix missing defaults.
davidgiven Aug 15, 2026
fc04b70
Get the devices pane working.
davidgiven Aug 15, 2026
ef5760a
Use the nop slf4j plugin to avoid spamming stdout.
davidgiven Aug 15, 2026
47f944d
Read the first disk with the GUI (just via the logger).
davidgiven Aug 15, 2026
13f3170
Start working on the summary view repaint.
davidgiven Aug 16, 2026
369d511
The summary view now draws the physical view.
davidgiven Aug 16, 2026
3aa5a85
Rework the summary pane so it doesn't recreate the buttons every update.
davidgiven Aug 16, 2026
81c0f9d
Got the summary view actually working.
davidgiven Aug 17, 2026
125c554
Clean up the build files somewhat.
davidgiven Aug 18, 2026
c318c76
Start work on the big USB refactor.
davidgiven Aug 18, 2026
588994c
Rework to use UsbFactory.
davidgiven Aug 18, 2026
0c7af99
Simplify the USB interface again.
davidgiven Aug 18, 2026
ff4e4a3
Do the USB retryable stuff, but the underlying implementations don't
davidgiven Aug 18, 2026
b754ddb
USB devices now properly clean up after themselves if they throw during
davidgiven Aug 19, 2026
81ab6db
Make the image viewer work.
davidgiven Aug 19, 2026
3ca2eb3
Adjust borders.
davidgiven Aug 19, 2026
40affe0
Clean up.
davidgiven Aug 19, 2026
1ead61a
Port a bunch more flux sources that fell between the cracks.
davidgiven Aug 19, 2026
4f0e627
Port TestPatternFluxSource and do some cleanup.
davidgiven Aug 20, 2026
25129ae
Don't use a split panel for the configuration pane.
davidgiven Aug 20, 2026
1b1f854
Rearrange the UI.
davidgiven Aug 20, 2026
f20be11
Reformat.
davidgiven Aug 20, 2026
c765319
Implement the visualiser.
davidgiven Aug 21, 2026
50ee79a
'Rescan USB' works.
davidgiven Aug 21, 2026
d5ef654
Reading flux from files works.
davidgiven Aug 21, 2026
98f3ff8
Image panel tweaks.
davidgiven Aug 21, 2026
a338c24
Overhaul the UI for the new control panel.
davidgiven Aug 22, 2026
9fdcc52
The control panel buttons now grey out when the system is busy.
davidgiven Aug 22, 2026
251f1b0
Re-read works.
davidgiven Aug 22, 2026
75947e3
Fix some issues with the visualiser rendering.
davidgiven Aug 22, 2026
f7372ee
Imagewriter output goes to the logger.
davidgiven Aug 22, 2026
c736e92
You can save image files now.
davidgiven Aug 22, 2026
f6d85b5
You can save flux files now.
davidgiven Aug 22, 2026
589c20b
You can write disks through the GUI (although it's a bit clunky).
davidgiven Aug 22, 2026
3d0f3c0
Adjust the colours.
davidgiven Aug 22, 2026
afacb64
Rework the summary to work better with images. Still not great.
davidgiven Aug 23, 2026
936ef9e
Improve the behaviour of images in the summary view.
davidgiven Aug 23, 2026
d2ffe95
Improve error reporting.
davidgiven Aug 23, 2026
29713cf
Emergency stops work.
davidgiven Aug 23, 2026
a842222
Attempt to add application icons.
davidgiven Aug 23, 2026
273a26f
Remove the dockerfiles, which aren't used any more and just cause the
davidgiven Aug 23, 2026
02c35a0
Try to install png2ico on the windows build.
davidgiven Aug 23, 2026
d2c159e
Adjust build workflow.
davidgiven Aug 23, 2026
8db450e
Typo fix.
davidgiven Aug 23, 2026
b8a2060
Manual serial port stuff should now work.
davidgiven Aug 23, 2026
5a3c459
Display the icons on the device selection dropdown.
davidgiven Aug 23, 2026
b54ca82
Try using imagemagick rather than png2ico.
davidgiven Aug 23, 2026
70700c7
Bypass winget prompts.
davidgiven Aug 23, 2026
ca10402
Typo fix.
davidgiven Aug 23, 2026
6ce1d3a
Port the LDBS reader.
davidgiven Aug 23, 2026
9518144
Port AnalyseDriveResponse.
davidgiven Aug 23, 2026
6978bd2
Don't port 'analyse layout', as it's nigh-meaningless.
davidgiven Aug 23, 2026
c20b79a
Writing CSVs now uses apache commons throughout.
davidgiven Aug 23, 2026
2e05cf9
Delete or move a lot of obsolete C++ code.
davidgiven Aug 23, 2026
ff3ac78
Upload just the installers, not the full gigantic build trees.
davidgiven Aug 23, 2026
9448134
Port the documentation generators.
davidgiven Aug 23, 2026
2a6235c
Make sure that the build artifacts are appropriately named.
davidgiven Aug 23, 2026
d311652
Optimise the builds a little.
davidgiven Aug 23, 2026
1cbb015
Remove dead bazel file.
davidgiven Aug 23, 2026
3d93350
Remove some obsolete files.
davidgiven Aug 23, 2026
434e7ce
Add the skeleton of the Java side of the VFS code.
davidgiven Aug 23, 2026
66a76ad
Start work on the skeleton of the VFS layer.
davidgiven Aug 24, 2026
7a6c9cc
Add the dependency for the fat file system library.
davidgiven Aug 24, 2026
5e78169
Add readString() to ByteReader.
davidgiven Aug 24, 2026
c73a875
Simplify the ImageWriter interface.
davidgiven Aug 24, 2026
714d293
Do the skeleton of the FAT file system interface.
davidgiven Aug 24, 2026
a573c4e
FAT list and putfile work.
davidgiven Aug 24, 2026
df56706
getfile works.
davidgiven Aug 24, 2026
8f288e7
getdirent works.
davidgiven Aug 24, 2026
1d45d47
Missing files are reported correctly.
davidgiven Aug 24, 2026
a93ed89
Creating directories works; better error handling on missing files and
davidgiven Aug 24, 2026
be2f0f7
Delete works, but I may have found a problem.
davidgiven Aug 25, 2026
2ea41e1
Fix the way ByteBuffers are read into Bytes.
davidgiven Aug 25, 2026
0f14eb1
Add readBytes() and writeBytes() which allow accessing of unaligned
davidgiven Aug 25, 2026
25faae7
Check that flushing the filesystem does actually flush it. Fix a bunch
davidgiven Aug 25, 2026
de5bcb5
Initial raw import of the FAT file system library.
davidgiven Aug 25, 2026
ee9e680
Add f_mkfs to the translation.
davidgiven Aug 25, 2026
776ffd4
Redo the translation but making it much closer to the C version.
davidgiven Aug 25, 2026
eaab10e
Use ByteBuffer instead of byte[] in public API (read/write, diskRead/…
davidgiven Aug 25, 2026
767b13c
Restore ByteBuffer migration for top-level VFS (Bytes duplicate, FatF…
davidgiven Aug 25, 2026
3584b2f
Convert the fatfilesystem implementation to use the port of ff.
davidgiven Aug 25, 2026
2aa4336
Port f_getlabel and fix getTime to use current local time
davidgiven Aug 25, 2026
cdfa815
Port f_setlabel
davidgiven Aug 25, 2026
4c43309
Correctly set the label while making filesystems. Test filesystem met…
davidgiven Aug 25, 2026
f95ed72
Add tests for putFilesystemMetadata
davidgiven Aug 25, 2026
b1d73e2
Test commit and discard.
davidgiven Aug 25, 2026
a776675
Retranslate f_rename, but working this time.
davidgiven Aug 26, 2026
28ba583
Test rename.
davidgiven Aug 26, 2026
a800169
Remove the nio filesystem stuff as we're not going to use that for a …
davidgiven Aug 26, 2026
16a533f
Initial raw import of the translated adflib.
davidgiven Aug 26, 2026
f4deae9
Adjust adflib package path.
davidgiven Aug 26, 2026
8db9eca
Refactor the filesystem tests to make them more reusable.
davidgiven Aug 26, 2026
5ddb27a
Peculiarly non-functioning version of the Amiga file system code.
davidgiven Aug 27, 2026
67b186f
Fix some (but not all) of the AmigaFileSystem bugs.
davidgiven Aug 27, 2026
6a657ab
Fix some more Amiga filesystem bugs.
davidgiven Aug 27, 2026
57f5f99
Add more rigourous tests for TrackedBlockDevice.
davidgiven Aug 27, 2026
f63f7a0
Cleanup.
davidgiven Aug 27, 2026
c69688c
Remember to add the adflib documentation.
davidgiven Aug 27, 2026
2708fc1
Correct the greaseweazle port field.
davidgiven Aug 28, 2026
1327b24
Import the translated hfsutils.
davidgiven Aug 28, 2026
7eaf669
nio Path isn't appropriate for the VFS work, because it's platform
davidgiven Aug 28, 2026
db91109
Empty change.
davidgiven Aug 28, 2026
74e873a
Merge.
davidgiven Aug 28, 2026
4c72b93
Do the integration for Kaitai.
davidgiven Aug 28, 2026
52dd5c0
Figure out how to use Kaitai more-or-less effectively.
davidgiven Aug 29, 2026
2aba364
Finally make the HFS filesystem plugin work. Switch from kaitai to
davidgiven Aug 29, 2026
5d3eee5
Rename.
davidgiven Sep 2, 2026
962a730
Port AcornDfsFilesystem (although as it's read-only there are no
davidgiven Sep 2, 2026
5808a92
Crudely port the rest of the filesystems.
davidgiven Sep 2, 2026
a901376
Cleanup.
davidgiven Sep 2, 2026
9e2af71
Add the skeleton of the VFS handler.
davidgiven Sep 2, 2026
c924213
Add what's hopefully the VFS I/O layer.
davidgiven Sep 3, 2026
c9f82b6
Do the vfs ls port. It works!
davidgiven Sep 3, 2026
f1bca83
Don't display logging by default for the vfs commands.
davidgiven Sep 3, 2026
80fafd6
Simple port of the rest of the VFS commands.
davidgiven Sep 3, 2026
0fbbe17
Try to make serial numbers work on Windows.
davidgiven Sep 3, 2026
3872ab4
Cleanup and simplification.
davidgiven Sep 3, 2026
c6fb38b
Try adding a desktop icon on Windows.
davidgiven Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 17 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
common --java_language_version=21
common --java_runtime_version=remotejdk_21

# Tools built in the exec configuration also need Java 21 (for records etc.).
common --tool_java_language_version=21
common --tool_java_runtime_version=remotejdk_21

# Lombok generates builder classes that are part of the public API; the
# annotation-processor output doesn't reach the interface jar used by header
# compilation (and Turbine can't run Lombok), so disable header compilation.
build --java_header_compilation=false

# Dev machine toolchain workarounds: the system gcc is wrapped by ccache and
# the system linker (lld) lives in /opt/bin, outside Bazel's default action PATH.
build --repo_env=CC=/usr/bin/gcc
build --repo_env=CXX=/usr/bin/g++
build --host_linkopt=-B/opt/bin
2 changes: 2 additions & 0 deletions .bazelversion
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
9.2.0

171 changes: 79 additions & 92 deletions .github/workflows/ccpp.yml
Original file line number Diff line number Diff line change
@@ -1,118 +1,105 @@
name: C/C++ CI

on: [push]
on: [ push ]

concurrency:
concurrency:
group: environment-${{ github.head_ref }}
cancel-in-progress: true

jobs:
build-docker:
build-linux:
runs-on: ubuntu-latest
strategy:
matrix:
variant:
- debian12
- debian13
- fedora42
- fedora43
- fedora43.nooptionaldeps
steps:
- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine'
path: 'fluxengine'
- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine-testdata'
path: 'fluxengine-testdata'
- name: make
run: |
cd fluxengine && docker build -t ${{ matrix.variant }} -f tests/docker/Dockerfile.${{ matrix.variant }} .
- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine'
path: 'fluxengine'
- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine-testdata'
path: 'fluxengine-testdata'
- name: Setup Bazel
uses: bazel-contrib/setup-bazel@0.19.0
- name: Build with Bazel
run: |
cd fluxengine
bazel test //... //:fluxengine_deb //:fluxengine_rpm //:fluxengine_app_image --test_output=errors
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}.${{ github.sha }}.linux
path: |
fluxengine/bazel-bin/java/com/cowlark/fluxengine/*.deb
fluxengine/bazel-bin/java/com/cowlark/fluxengine/*.rpm
fluxengine/bazel-bin/java/com/cowlark/fluxengine/*.tar.xz

build-macos-current:
strategy:
matrix:
runs-on: [macos-15, macos-15-intel]
runs-on: [ macos-15, macos-15-intel ]
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine'
path: 'fluxengine'
- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine-testdata'
path: 'fluxengine-testdata'
- name: brew
run: |
brew install sqlite pkg-config libusb protobuf wxwidgets fmt make coreutils dylibbundler libjpeg libmagic nlohmann-json cli11 boost glfw3 md4c ninja python freetype2 mbedtls@3 lunasvg
brew link mbedtls@3
brew upgrade
- name: make
run: |
g++ -v
gmake -C fluxengine
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}.${{ github.sha }}.fluxengine.${{ runner.arch }}.pkg
path: |
fluxengine/FluxEngine.pkg
fluxengine/FluxEngine.app.zip
- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine'
path: 'fluxengine'
- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine-testdata'
path: 'fluxengine-testdata'
- name: Setup Bazel
uses: bazel-contrib/setup-bazel@0.19.0
- name: Build with Bazel
run: |
cd fluxengine
bazel test //... //:fluxengine_dmg --test_output=errors

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}.${{ github.sha }}.osx.${{ runner.arch }}
path: |
fluxengine/bazel-bin/java/com/cowlark/fluxengine/*.dmg

build-windows:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}

steps:
- uses: msys2/setup-msys2@v2
with:
msystem: mingw64
update: true
install: |
python diffutils ninja make zip git
pacboy: |
protobuf:p pkgconf:p curl-winssl:p file:p glfw:p mbedtls:p
sqlite:p freetype:p boost:p gcc:p binutils:p nsis:p abseil-cpp:p

- name: debug
run: |
pacboy -Q --info protobuf:p
cat /mingw64/lib/pkgconfig/protobuf.pc
/mingw64/bin/pkg-config.exe protobuf --cflags
/mingw64/bin/pkg-config.exe protobuf --cflags --static
- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine'
path: 'fluxengine'

- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine'
path: 'fluxengine'
- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine-testdata'
path: 'fluxengine-testdata'

- uses: actions/checkout@v4
with:
repository: 'davidgiven/fluxengine-testdata'
path: 'fluxengine-testdata'
- name: Setup software
run: |
winget install ImageMagick.ImageMagick --accept-source-agreements --accept-package-agreements

- name: run
run: |
g++ -v
make -C fluxengine BUILDTYPE=windows AB_SANDBOX=no
- name: Setup Bazel
uses: bazel-contrib/setup-bazel@0.19.0

- name: nsis
run: |
cd fluxengine
strip fluxengine.exe -o fluxengine-stripped.exe
strip fluxengine-gui.exe -o fluxengine-gui-stripped.exe
makensis -v2 -nocd -dOUTFILE=fluxengine-installer.exe extras/windows-installer.nsi
- name: Set up MSVC Developer Environment
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64

- name: zip
run: |
cd fluxengine && zip -9 fluxengine-windows.zip fluxengine.exe fluxengine-gui.exe upgrade-flux-file.exe brother120tool.exe brother240tool.exe FluxEngine.cydsn/CortexM3/ARM_GCC_541/Release/FluxEngine.hex fluxengine-installer.exe
- name: Build with Bazel
run: |
$ErrorActionPreference = 'Stop'
$PSNativeCommandUseErrorActionPreference = $true
cd fluxengine
bazel test //... //:fluxengine_msi --test_output=errors `
--action_env=PATH `
--action_env=INCLUDE `
--action_env=LIB `
--action_env=LIBPATH

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}.${{ github.sha }}.windows.zip
path: fluxengine/fluxengine-windows.zip
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}.${{ github.sha }}.windows
path: fluxengine/bazel-bin/java/com/cowlark/fluxengine/*.msi
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
bazel-fluxengine
bazel-testlogs
bazel-out
bazel-bin
.obj
.project
.idea/
.ijwb/
nbproject/
build.xml
.classpath
manifest.mf
/.ninja*
/brother120tool
/brother120tool-*
Expand All @@ -11,3 +21,4 @@
/compile_commands.json
/doc/disk-_global_options.md

/nbproject/private/
Loading
Loading