Debian package of 3.7.17 available for installation

Following the Vassal 3.7.17 Released I’ve build a Debian package of Vassal. The package can be downloaded from GitHub at

Releases · cholmcc/vassal · GitHub

Take the package file vassal_3.7.17-1_all.deb.

Debian packages can be installed on Debian and any of its derivatives, such as Ubuntu, Knoppix, Kali, Mint, and so on. To install after downloading, do

$ sudo apt install ./vassal_3.7.17-1_all.deb

The package ensures desktop integration of Vassal. That is, it registers Vassal as an application with the desktop, and associates Vassal files (.vmod, .vlog, .vsav, .vext) with the application.

The package is smaller than the official builds because it uses Java packages installed on the system via the distribution package manager.

Note that the package uses an enhanced launch script called vassal that allows for additional command line options and direct opening of Vassal files in the current directory, e.g.,

$ vassal -l BattleForMoscow.vmod

Do

$ vassal --help

for more information.

Note that this package is maintained by me, and is not part of the official builds. Thus, you can expect delays relative to official releases :slight_smile: Of course, if upstream would like to integrate the (minor) changes, then I will happily work with them on that.

Yours,
Christian

Making this packaging official would be great. :slightly_smiling_face:

By the way, does this package also associate with .vmdx files??

Reg.

In the source repository, all that is needed is

  • Include code for org.netbeans.wizard as that package is no longer available upstream
  • Add a debian sub-directory
  • Add build rules to CI/CD flow

Until upstream Vassal developers will accept these changes, I will try to keep up with new releases and build Debian packages as soon as possible. Hopefully, that will make life easier for those that use Debian GNU/Linux or any of its derivatives.

BTW, I believe the package is compliant enough that it could go in to the official Debian repository of packages, making Vassal directly available to all Debian GNU/Linux, and derivatives, users. We would need the help of a Debian developer though.

Actually, the package associates .vmdx files not .vext files with Vassal. I believe the newer convention is to name module extensions .vext so I guess both extensions should be associated with Vassal. I will fix that in a new release some time in the near future. In the meantime, simply rename your module extensions from .vext to .vmdx.

Yours,
Christian

.vext was apparently a temporary aberration; .vmdx is still the “official” file extension for module extensions, in my understanding: see The VASSAL 3.5.0 release thread.

2 Likes

Correct. :slight_smile: Hence my question concerning the description above.

I’m glad to hear it was already covered (though it won’t hurt to associate both).

Reg.

Make a PR so I can see what the changes are. We’ll likely have another release in not too long to fix what folding in the wizard code broke.

I hope you see I made a PR to fix that.

Yours,
Christian

I saw that. Thanks. It’s merged now.

I was referring to a PR for the other work you mentioned:

Yeah, I got that. Just wanted to make a separate PR to fix the Wizard issue. I’ll make a PR for the Debian packages very soon - maybe already tonight.

Yours,
Christian

1 Like

The PR is live: Debian package.

See the artefacts produced: Debian package

Note, the Debian package version is set to 3.7.18-1 (the -1 means first Debian revision of version 3.7.18 of upstream).

The Debian package version should be updated when making a new release. This is stored in debian/changelog. Typically, developers use the tool dch to set the version. For example, I did

$ DEBEMAIL=... dch --release-heuristic log -v 3.7.18-1 "New upstream release"

For now, I propose this is done manually. If you let me know, then I can do that and make a PR on the next release. In the future, we should perhaps try to automatise it a bit. The challenge is that in a workflow, the version should only be updated on a release (tag), and then preferably be pushed back into the repository. It needs a bit of thinking.

Also, perhaps the script https://vassalengine.org/js/detect-3.7.17.js should be modified so that users are alerted to the package - e.g.,

document.addEventListener("DOMContentLoaded", async () => {
      // get what data we can
  const uach = await get_userAgentData();

  const base_url = 'https://github.com/vassalengine/vassal/releases';

  const ver = '3.7.17';
  const dl_url = `${base_url}/download/${ver}`;

  const get_vassal = 'Get Vassal';
  let btn_text = get_vassal;
  let btn_link = '/download.html';
  let sub_text = '';
  let sub_link = '';

  let specific_download = false;

  if (!uach.mobile) {
    if (uach.platform === PLATFORM_WINDOWS) {
      if (uach.architecture === ARCH_X86) {
        if (uach.bitness === BITS_64) {
          specific_download = true;
          btn_text = `${get_vassal} for ${uach.platform} (64-bit x86)`;
          btn_link = `${dl_url}/VASSAL-${ver}-windows-x86_64.exe`;
        }
        else if (uach.bitness === BITS_32) {
          specific_download = true;
          btn_text = `${get_vassal} for ${uach.platform} (32-bit x86)`;
          btn_link = `${dl_url}/VASSAL-${ver}-windows-x86_32.exe`;
        }
      }
      else if (uach.architecture === ARCH_ARM && uach.bitness === BITS_64) {
        specific_download = true;
        btn_text = `${get_vassal} for ${uach.platform} (64-bit ARM)`;
        btn_link = `${dl_url}/VASSAL-${ver}-windows-aarch64.exe`;
      }
    }
    else if (uach.platform === PLATFORM_MACOS && uach.bitness === BITS_64) {
      specific_download = true;
      btn_text = `${get_vassal} for ${uach.platform}`;
      btn_link = `${dl_url}/VASSAL-${ver}-macos-universal.dmg`;
    }
    else if (uach.platform === PLATFORM_LINUX) {
      specific_download = true;
      btn_text = `${get_vassal} for ${uach.platform}`;
      btn_link = `${dl_url}/VASSAL-${ver}-linux.tar.bz2`;
      sub_text = 'Or Debian package';
      sub_link = `${dl_url}/vassal_${ver}-1_all.deb`;
    }
  }

  if (!specific_download) {
    // detection failed to be specific enough
    const alt_downloads = document.getElementById('alt_downloads');
    alt_downloads.style.display = 'none';
  }

  const btn = document.getElementById('download_btn');
  btn.textContent = btn_text;
  btn.href = btn_link;

  const sub = document.getElementById('sub_btn');
  sub.textConcent = sub_txt;
  sub.href = sub_link;
});

and https://vassalengine.org/index.html amended

  <div class="hero border-bottom mb-5">
    <div class="container px-4 pt-5 mt-5 mb-5 text-center">
      <h1 class="display-4 fw-bold">Play boardgames, virtually</h1>
      <div class="d-grid gap-2 d-sm-flex justify-content-sm-center mt-4">
        <a id="download_btn" class="btn btn-primary btn-lg px-4" href="/download.html">Get Vassal</a>
        <a id="sub_btn" class="btn btn-primary btn-lg px-4" href="/download.html"></a>
      </div>
      <div id="alt_downloads" class="gap-2 justify-content-sm-center container mt-1">
        <div class="row">
          <div class="col-sm text-muted">
            <div><small>Not the download you're looking for?</small></div>
            <div><small><a href="/download.html">Look here for others.</a></small></div>
          </div>
        </div>
      </div>
    </div>

Oh, and of course https://vassalengine.org/download.html should probably also be amended

        <!-- Linux -->

        <div class="col d-flex align-items-start">
          <div class="me-3">
            <svg class="os-icon" width="3em" height="3em"><use xlink:href="#fab-linux"></use></svg>
          </div>
          <div class="w-100">
            <h3>Linux</h3>
            <p>Ensure that you have Java 11 (or later) installed. Then download and unpack the tarball:</p>
            <div class="list-group">
              <a class="list-group-item list-group-item-action d-flex gap-3 py-3 w-100" href="https://github.com/vassalengine/vassal/releases/download/3.7.17/vassal-_3.7.17-1_all.deb">
                <div>
                  <h6>.deb for Debian and derivatives</h6>
                  <p class="mb-0 text-muted">vassal_3.7.17-1_all.deb</p>
                </div>
              </a>
              <a class="list-group-item list-group-item-action d-flex gap-3 py-3 w-100" href="https://github.com/vassalengine/vassal/releases/download/3.7.17/VASSAL-3.7.17-linux.tar.bz2">
                <div>
                  <h6>.tar.bz2 for all architectures</h6>
                  <p class="mb-0 text-muted">VASSAL-3.7.17-linux.tar.bz2</p>
                </div>
              </a>
            </div>
          </div>
        </div>

Yours,
Christian

I’m happy to add a Debian package as part of releases, but I want to ensure it’s clear that I will not commit to maintaining any of this myself. If it stops working and no one steps up to fix it, I’ll drop it.

That’s clear. Also why I will look into making the debian/changelog at least semi-automatic so the maintenance burden is as minimal as possible - most likely zero.

For now, if you give me a heads up before a release, I can do the debian/changelog as a fast PR, and then that can be quickly merged before the release so that the Debian package comes out with an appropriate version.

Yours,
Christian

I’d like to release 3.7.18 now.

Go right ahead - the debian/changelog is set up for that already.

1 Like