Skip to content

Consolidate and streamline Linux builds#14580

Merged
uckelman merged 1 commit into
vassalengine:release-3.7from
cholmcc:cholmcc_linux-3.7
Apr 1, 2026
Merged

Consolidate and streamline Linux builds#14580
uckelman merged 1 commit into
vassalengine:release-3.7from
cholmcc:cholmcc_linux-3.7

Conversation

@cholmcc

@cholmcc cholmcc commented Mar 28, 2026

Copy link
Copy Markdown
Collaborator

This PR will consolidate and streamline build for Linux. As such,
this PR is mostly reorganisation of data into a single place so that
it is easier to maintain and build upon.

  • Data common to various Linux packages, such as the Debian, RPM, and FlatPak packages, as well as the tar-ball, is put in dist/linux and distributed from there.

    This data includes

    • A .desktop file for desktop integration
    • A .mime.xml file for mime-types of Vassal modules, saves, logs, and extension.
    • a man(1) page on vassal
    • An improved VASSAL.sh script which will allow
      • Defining properties via -Dname=value
      • Run Vassal in the Java Debugger, including option to point to the Vassal sources.
      • Direct execution of player, editor, etc. by-passing the module manager
    • Note that these files are also distributed with the tar-ball, so that a user may use those for desktop integration.
    • The script dist/linux/integration.sh will also be distributed with the tar-ball. If a user executes that, it will set-up or remove desktop integration.
  • The descriptions in the Debian, RPM, and FlatPak packages have been made the same - for consistency.

  • The PR also removes the vassal-maven repository because it is no longer used.

Most of these files have been renamed to org.vassalengine.vassal to conform with the AppStream requirements and practices.

The main point of the updated launch script VASSAL.sh, are

  • To allow users to pass property definitions to the JVM, for example

    -Dswing.systemlaf=javax.swing.plaf.metal.MetalLookAndFeel to set a different Look'n'Feel.

  • To allow users to load modules, saves, logs, etc. from the current directory without giving the full path to the file. For example VASSAL.sh -l BattleForMoscow.vmod (currently, one would need to do VASSAL.sh -l `pwd`/BattleForMoscow.vmod which feels awkward).

  • To run Vassal in the Java debugger jdb to hunt down problems.

A follow-up PR to this PR will then set-up the release workflow to generate the files org.vassalengine.vassal.yaml and maven-dependencies.json for the FlatPak repository at flathub/org.vassalengine.org. Thus, after that workflow has run, someone can pick up the artefacts of that workflow and commit them to flathub/org.vassalengine.org.

Closes #14514

Yours,
Christian

@cholmcc cholmcc changed the base branch from master to release-3.7 March 28, 2026 15:17
Comment thread dist/linux/integration.sh Outdated
Comment thread dist/linux/integration.sh Outdated
@cholmcc cholmcc force-pushed the cholmcc_linux-3.7 branch from dbc4740 to 0bf0ef6 Compare March 29, 2026 20:31
@cholmcc cholmcc requested a review from uckelman March 29, 2026 20:44
This PR will consolidate and streamline build for Linux.   As such, this PR is _mostly_ reorganisation of data into a single place so that it is easier to maintain and build upon.

- Data common to various Linux packages, such as the Debian, RPM, and FlatPak packages, as well as the tar-ball, is put in `dist/linux` and distributed from there.

  This data includes
  - A `.desktop` file for desktop integration
  - A `.mime.xml` file for mime-types of Vassal modules, saves, logs, and extension.
  - a `man(1)` page on `vassal`
  - An improved `VASSAL.sh` script which will allow
    - Defining properties via `-Dname=value`
    - Run Vassal in the Java Debugger, including option to point to the Vassal sources.
    - Direct execution of player, editor, etc. by-passing the module manager
  - Note that these files are _also_ distributed with the tar-ball, so that a user may use those for desktop integration.
  - The script `dist/linux/integration.sh` will also be distributed with the tar-ball.  If a user executes that, it will set-up or remove desktop integration.
- The descriptions in the Debian, RPM, and FlatPak packages have been made the same - for consistency.
- The PR also removes the `vassal-maven` repository because it is no longer used.

Most of these files have been renamed to `org.vassalengine.vassal` to conform with the AppStream requirements and practices.

The main point of the updated launch script `VASSAL.sh`, are

- To allow users to pass property definitions to the JVM, for example

  ```
  -Dswing.systemlaf=javax.swing.plaf.metal.MetalLookAndFeel
  ```
  to set a different Look'n'Feel.
- To allow users to load modules, saves, logs, etc. from the current directory _without_ giving the full path to the file. For example
  ```
  VASSAL.sh -l BattleForMoscow.vmod
  ```
  (currently, one would need to do
  ```
  VASSAL.sh -l `pwd`/BattleForMoscow.vmod
  ```
  which feels awkward).
- To run Vassal in the Java debugger `jdb` to hunt down problems.

A follow-up PR to this PR will then set-up the release workflow to generate the files `org.vassalengine.vassal.yaml` and `maven-dependencies.json` for the FlatPak repository at [`flathub/org.vassalengine.org`](https://github.com/flathub/org.vassalengine.org). Thus, after that workflow has run, someone can pick up the artefacts of that workflow and commit them to `flathub/org.vassalengine.org`.
@cholmcc cholmcc force-pushed the cholmcc_linux-3.7 branch from 0bf0ef6 to 6770ef4 Compare March 30, 2026 19:33
@cholmcc

cholmcc commented Mar 30, 2026

Copy link
Copy Markdown
Collaborator Author

Accidental added dist/linux/org.vassalengine.vassal.yml to this PR. Removed again.

@uckelman

Copy link
Copy Markdown
Contributor

To allow users to load modules, saves, logs, etc. from the current directory without giving the full path to the file. For example VASSAL.sh -l BattleForMoscow.vmod (currently, one would need to do VASSAL.sh -l pwd/BattleForMoscow.vmod which feels awkward).

Which part of the PR does this?

@cholmcc

cholmcc commented Mar 30, 2026

Copy link
Copy Markdown
Collaborator Author

Which part of the PR does this?

https://github.com/cholmcc/vassal/blob/6770ef4e3fb70493664d576bf66d16bc1eff6c39/dist/linux/VASSAL.sh#L126

@uckelman uckelman added this to the 3.7.21 milestone Apr 1, 2026
@uckelman uckelman changed the title Consolidation and streamline of Linux builds Consolidate and streamline Linux builds Apr 1, 2026
@uckelman uckelman merged commit a525fc4 into vassalengine:release-3.7 Apr 1, 2026
3 checks passed
@cholmcc

cholmcc commented Apr 1, 2026

Copy link
Copy Markdown
Collaborator Author

Thank you for merging this in - that will hopefully make things simpler for all concerned.

I guess you are setting up for a new release - please also consider the following PRs

and as promised above,

all are based on release-3.7.

Also, please consider to merge in vassalengine/vassal-site-src#4 before making a new release.

Thanks.

Yours,
Christian

@uckelman

uckelman commented Apr 1, 2026

Copy link
Copy Markdown
Contributor

I've merged #14598. Thanks for that. The only other PR I aim to merge for 3.7.21 is #14599, because leaving it unfixed creates terminal noise. Other PRs will need to wait for 3.7.22 in a few weeks, as there are already more changes than ideal in 3.7.21.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants