Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions flatpak/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
build-dir/
.flatpak-builder/
lint.log

80 changes: 80 additions & 0 deletions flatpak/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# msx-tile-forge Makefile for Flathub

# Defaults (can be overridden by environment/flatpak-builder)
APP_VERSION ?= 0.0.0
FLATPAK_ID ?= io.github.DamnedAngel.msx-tile-forge
FLATPAK_DEST ?= /app
APP_SRC := ..
FLATPAK_SRC := .

PY_SCRIPTS := \
$(APP_SRC)/msxtileforge.py \
$(APP_SRC)/msxtileexport.py \
$(APP_SRC)/msxtilemagic.py \
$(APP_SRC)/supertilerandomizer.py \
$(APP_SRC)/tilerandomizer.py

ICON := $(FLATPAK_SRC)/io.github.DamnedAngel.msx-tile-forge.png
DESKTOP := $(FLATPAK_SRC)/io.github.DamnedAngel.msx-tile-forge.desktop
METAINFO := $(FLATPAK_SRC)/io.github.DamnedAngel.msx-tile-forge.metainfo.xml
WRAPPER := $(FLATPAK_SRC)/wrapper.sh

# Default target
all:

# Install, to use only by io.github.DamnedAngel.msx-tile-forge.yaml
install:
@echo "==> Building $(FLATPAK_ID) version $(APP_VERSION)"
# Patch version in Python scripts
find $(APP_SRC) -type f -name "*.py" -exec sed -i "s/<unreleased>/$(APP_VERSION)/g" {} +
# Install Python entry points
for f in $(PY_SCRIPTS); do \
install -Dm644 $$f $(FLATPAK_DEST)/bin/$$(basename $$f); \
done
# Install wrapper
install -Dm755 $(WRAPPER) $(FLATPAK_DEST)/bin/msxtileforge
# Install icon
install -Dm644 $(ICON) \
$(FLATPAK_DEST)/share/icons/hicolor/256x256/apps/$(notdir $(ICON))
# Install desktop entry
install -Dm644 $(DESKTOP) \
$(FLATPAK_DEST)/share/applications/$(notdir $(DESKTOP))
# Install metainfo
install -Dm644 $(METAINFO) \
$(FLATPAK_DEST)/share/metainfo/$(FLATPAK_ID).metainfo.xml
@echo "==> Build completed."

# Smoke test
smoketest:
@echo "==> Smoke test starting..."
# local install
@flatpak-builder --install --force-clean --user build-dir io.github.DamnedAngel.msx-tile-forge.yaml
# list installed applications
@flatpak list --app --user
# local run
@flatpak run io.github.DamnedAngel.msx-tile-forge
# uninstall
@flatpak uninstall -y io.github.DamnedAngel.msx-tile-forge
@echo "==> Smoke test completed."

# Full test
fulltest:
@echo "==> Full test with lint starting..."
# Clean old builds
@rm -rf build-dir
# Show flatpak runtime installed python version
@flatpak run --command=python3 org.freedesktop.Platform//24.08 --version
# Lint manifest
@flatpak run --command=flatpak-builder-lint org.flatpak.Builder manifest io.github.DamnedAngel.msx-tile-forge.yaml
# Build completely (install app files)
@flatpak-builder --force-clean build-dir io.github.DamnedAngel.msx-tile-forge.yaml
# Lint appdir content
@flatpak run --command=flatpak-builder-lint org.flatpak.Builder builddir build-dir || true | tee lint.log
@if grep -q "error" lint.log && ! grep -q "appstream-external-screenshot-url" lint.log; then exit 1; fi
@rm lint.log
# Test run
@flatpak-builder --run build-dir io.github.DamnedAngel.msx-tile-forge.yaml msxtileforge
@echo "==> Full test completed."

.PHONY: all install smoketest fulltest

91 changes: 91 additions & 0 deletions flatpak/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# io.github.DamnedAngel.msx-tile-forge

Flatpak packaging for **MSX Tile Forge** targeting Linux systems

## User Guide

### What is Flatpak?

Flatpak is a universal package format for Linux desktop applications. It is available on most Linux distributions. It allows you to install and run applications in a sandboxed environment, separate from the rest of the system. This sandboxing gives you more control over the dependencies of your applications.

### What is Flathub?
Flathub is a centralized repository of Flatpak apps. You can use it to install and update apps on your system.

### How to install and run MSX Tile Forge on Linux from Flathub

```bash
flatpak install flathub io.github.DamnedAngel.msx-tile-forge
flatpak run io.github.DamnedAngel.msx-tile-forge
```

### See also

- [MSX Tile Forge Flathub home](https://flathub.org/en/apps/io.github.DamnedAngel.msx-tile-forge);
- [MSX Tile Forge Flathub repo](https://github.com/flathub/io.github.DamnedAngel.msx-tile-forge);
- [MSX Tile Forge Upstream repo](https://github.com/DamnedAngel/msx-tile-forge).

## Developer Guide

If you're new about flathub, it's a good idea to read [submission](https://docs.flathub.org/docs/for-app-authors/submission), [maintenance](https://docs.flathub.org/docs/for-app-authors/maintenance) and [updates](https://docs.flathub.org/docs/for-app-authors/updates) guides. Also, see [python wheels](https://pypi.org/) if you need include more python dependencies into `flatpak/io.github.DamnedAngel.msx-tile-forge.yaml`.

### How to get Flathub project repo

1. Fork the [flathub project repo](https://github.com/flathub/io.github.DamnedAngel.msx-tile-forge);

2. Create a folder in your local machine;

3. Clone the repo files:
```
git clone https://github.com/<your_user_name>/io.github.DamnedAngel.msx-tile-forge.git
```

### How to do a local test on the [upstream project repo](https://github.com/DamnedAngel/msx-tile-forge)

1. Smoke test:
```
make -C flatpak smoketest
```

2. Full test (with linting):
```
make -C flatpak fulltest
```
Note: `appstream-external-screenshot-url` is not a real error.

### How to publish a new release into Flathub

1. Open the [upstream project repo](https://github.com/DamnedAngel/msx-tile-forge);

2. Open `flatpak/io.github.DamnedAngel.msx-tile-forge.metainfo.xml` and add a new `release version` row into `releases` tag;

3. Commit the change to the [upstream project repo](https://github.com/DamnedAngel/msx-tile-forge);

4. Open `flatpak/io.github.DamnedAngel.msx-tile-forge.yaml` and change `<release_version>`, `<release_tag_name>` and `<release_tag_commit_id>`;
```
- name: msx-tile-forge
buildsystem: simple
build-options:
env:
APP_VERSION: <release_version>
sources:
- type: git
url: https://github.com/DamnedAngel/msx-tile-forge.git
tag: <release_tag_name>
commit: <release_tag_commit_id>
```

5. Do a smoke test on the [upstream project repo](https://github.com/DamnedAngel/msx-tile-forge):
```
make -C flatpak smoketest
```

6. Copy `flatpak/io.github.DamnedAngel.msx-tile-forge.yaml` from [upstream project repo](https://github.com/DamnedAngel/msx-tile-forge) to the [flathub project repo](https://github.com/flathub/io.github.DamnedAngel.msx-tile-forge);

7. Update [flathub project repo](https://github.com/flathub/io.github.DamnedAngel.msx-tile-forge) master branch:
```
git commit -m "Release <write_here_the_new_release_version>"
git push origin master
```

8. Make a [PR](https://docs.flathub.org/docs/for-app-authors/updates#creating-updates) to the [flathub project repo](https://github.com/flathub/io.github.DamnedAngel.msx-tile-forge) master branch.

8 changes: 8 additions & 0 deletions flatpak/io.github.DamnedAngel.msx-tile-forge.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[Desktop Entry]
Name=MSX Tile Forge
Comment=Tile, palette and map editor for MSX
Exec=msxtileforge
Icon=io.github.DamnedAngel.msx-tile-forge
Terminal=false
Type=Application
Categories=Graphics;2DGraphics;RasterGraphics;
37 changes: 37 additions & 0 deletions flatpak/io.github.DamnedAngel.msx-tile-forge.metainfo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>io.github.DamnedAngel.msx-tile-forge</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0-or-later</project_license>
<name>MSX Tile Forge</name>
<summary>Tile, palette and map editor for MSX</summary>
<launchable type="desktop-id">io.github.DamnedAngel.msx-tile-forge.desktop</launchable>
<releases>
<release version="01.00.00_rc20_5" date="2025-09-01"/>
</releases>
<description>
<p>
MSX Tile Forge is a graphical editor for creating tiles, palettes and maps
for MSX computers. A modern tool for retro development enthusiasts making
games and demos for the MSX platform.
</p>
</description>
<url type="homepage">https://github.com/DamnedAngel/msx-tile-forge</url>
<url type="bugtracker">https://github.com/DamnedAngel/msx-tile-forge/issues</url>
<screenshots>
<screenshot type="default">
<caption>MSX Tile Forge logo</caption>
<image>https://raw.githubusercontent.com/DamnedAngel/msx-tile-forge/refs/tags/v01.00.00_rc20_5/Resources/splash4_1.png</image>
</screenshot>
</screenshots>
<developer id="io.github.DamnedAngel">
<name>DamnedAngel</name>
</developer>
<content_rating type="oars-1.1"/>
<recommends>
<control>keyboard</control>
<control>pointing</control>
<control>gamepad</control>
</recommends>
</component>

Binary file added flatpak/io.github.DamnedAngel.msx-tile-forge.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading