melonDS-emu / melonDS

DS emulator, sorta
https://melonds.kuribo64.net
GNU General Public License v3.0
2.98k stars 493 forks source link

Why not provide a .deb file? #2053

Open LukIsHere opened 4 weeks ago

LukIsHere commented 4 weeks ago

i'm to saying to add it to debian or ubuntu repo but creating .deb file is as simple as creating structure like this

melonDS-deb/
├── DEBIAN
│   └── control
└── usr
    └── share
        ├── applications
        │   └── melonDS.desktop
        └── melonds
            ├── melon <- the executable
            └── melon.svg

DEBIAN/control

Package: melonDS
Version: 0.1
Maintainer: luk
Architecture: arm64
Description: nds emulator
Depends: libcurl4-gnutls-dev,libpcap0.8-dev,libsdl2-dev,qtbase5-dev,qtbase5-private-dev,qtmultimedia5-dev,libarchive-dev,libzstd-dev

Note. my system is arm64 so this is an arm64 variant usr/share/applications/melonDS.desktop

[Desktop Entry]
Name=MelonDS
Comment=NDS emulator
GenericName=MelondDS
Exec=/usr/share/melonds/melon
Icon=/usr/share/melonds/melon.svg
Type=Application
Categories=Emulator;Game;
Keywords=nds;

and running dpkg-deb --build melonDS-deb/

if not provide it directly maybe add a simple script to create it automatically makeDeb.sh

echo "compile"
cmake -B build
cmake --build build -j$(nproc --all)

echo "clear previous attempt"
rm -rf melonDS-deb/ 2>/dev/null
rm melonDS-deb.deb 2>/dev/null

echo "create the dir sctructure"
mkdir melonDS-deb
mkdir melonDS-deb/DEBIAN
mkdir melonDS-deb/usr
mkdir melonDS-deb/usr/share
mkdir melonDS-deb/usr/share/applications
mkdir melonDS-deb/usr/share/melonds

echo "create control file"
echo "Package: melonDS" > melonDS-deb/DEBIAN/control
echo "Version: 0.1" >> melonDS-deb/DEBIAN/control #this probably can be integrated with cmake
echo "Maintainer: luk" >> melonDS-deb/DEBIAN/control
echo "Architecture: `dpkg --print-architecture`" >> melonDS-deb/DEBIAN/control
echo "Description: nds emulator" >> melonDS-deb/DEBIAN/control
echo "Depends: libcurl4-gnutls-dev,libpcap0.8-dev,libsdl2-dev,qtbase5-dev,qtbase5-private-dev,qtmultimedia5-dev,libarchive-dev,libzstd-dev" >> melonDS-deb/DEBIAN/control

echo "create desktop file"
echo "[Desktop Entry]" >> melonDS-deb/usr/share/applications/melonDS.desktop
echo "Name=MelonDS" >> melonDS-deb/usr/share/applications/melonDS.desktop
echo "Comment=NDS emulator" >> melonDS-deb/usr/share/applications/melonDS.desktop
echo "GenericName=MelondDS" >> melonDS-deb/usr/share/applications/melonDS.desktop
echo "Exec=/usr/share/melonds/melon" >> melonDS-deb/usr/share/applications/melonDS.desktop
echo "Icon=/usr/share/melonds/melon.svg" >> melonDS-deb/usr/share/applications/melonDS.desktop
echo "Type=Application" >> melonDS-deb/usr/share/applications/melonDS.desktop
echo "Categories=Emulator;Game;" >> melonDS-deb/usr/share/applications/melonDS.desktop
echo "Keywords=nds;" >> melonDS-deb/usr/share/applications/melonDS.desktop

echo "copy rest of the files"
cp build/melonDS melonDS-deb/usr/share/melonds/melon
cp res/melon.svg melonDS-deb/usr/share/melonds/melon.svg

echo "build the deb file"
dpkg-deb --build melonDS-deb/
nadiaholmquist commented 4 weeks ago

If it indeed is that simple to build a .deb package it might be something we can look into. Currently, CI builds require at least Ubuntu 22.04 (or I guess the equivalent Debian release) to run because they are built against Qt 6, so we'd have to make that clear with the packaging somehow.

OhNoOhNOOO commented 3 weeks ago

As an outsider looking in, I don't think this is necessary? MelonDS is already officially packaged as both a flatpak and appimage, along with a native executable being provided. With that much already provided, I don't see any benefit to also packaging it as a .deb file. Doing so would both invite people to ask for packages for other distributions and also lead to issues where certain distros either don't provide a dependency or ship an incompatible variant of it, which would have never been an issue if they just used one of the already provided packaging formats.

LukIsHere commented 3 weeks ago

As an outsider looking in, I don't think this is necessary? MelonDS is already officially packaged as both a flatpak and appimage, along with a native executable being provided. With that much already provided, I don't see any benefit to also packaging it as a .deb file. Doing so would both invite people to ask for packages for other distributions and also lead to issues where certain distros either don't provide a dependency or ship an incompatible variant of it, which would have never been an issue if they just used one of the already provided packaging formats.

as i said if not provide a deb including script that makes a deb (that nicely integrates with the rest of the system) works too i literally provided the script that does exactly that

i know what flatpak's r but i'm not the biggest fan of them since on my system they cause a lot of issues with gpu (not nvidia) not working and other stuff i know the sandbox and all but common, do we really need to protect ourselves from an emulator?

also cmake provides an option for building deb's so can look also into that honestly if someone is willing to make a PR adding script that makes package for their distro what's the problem? it shouldn't affect amount of issues since ppl already build it from source without it

just tell me where to put that script and i can make a PR

CasualPokePlayer commented 3 weeks ago

.deb's just suck, they are the package of a package manager but without the actual package manager. They don't have any guarantee to work outside of the specific distro and distro version you built the .deb against (so e.g. some Ubuntu 22.04 .deb doesn't have any guarentee to work on Ubuntu 23.04 nor any guarentee to work on Debian). You need to create many .deb files to get some wide range of support (and even that support is limited to apt-like distros such as Debian and Ubuntu and their forks) and those will inevitably break.

If you want a build without flatpaks or appimages, either have someone host it as some package on some PPA or whatever so a proper package manager can use it, or just go build it yourself.

LukIsHere commented 3 weeks ago

if you build it on your system with this script, it will work on your system no need to host deb file anywhere