Package Details: saturn 1.1.0-4

Git Clone URL: (read-only, click to copy)
Package Base: saturn
Description: A cross-platform, all-in-one machinima studio for Super Mario 64.
Upstream URL: None
Submitter: Dominicentek
Maintainer: Dominicentek
Last Packager: Dominicentek
Votes: 0
Popularity: 0.000000
First Submitted: 2024-03-28 12:28 (UTC)
Last Updated: 2024-06-17 15:17 (UTC)

Dependencies (6)

Required by (0)

Sources (2)

Latest Comments

tacosukoneko commented on 2024-04-18 23:48 (UTC) (edited on 2024-04-18 23:52 (UTC) by tacosukoneko)

Auerhuhn, since this is still a problem, I'll explain my personal solution.

the original software in the Llennpie/Saturn repository contains code that expects the "dynos" folder to be in the current working directory. One example of a line that does that is here

I created a fork here that entirely deletes that behavior throughout the code of the app and replaces it with code that can copy that data at runtime from a read-only location like /usr/share/saturn to a read-write location like ~/.local/share/v64saturn and then correctly load the data once it has been copied, but my changes are not wanted upstream, most likely due to being too invasive and Linux-only.

Here is my PKGBUILD as an example (demonstrates the removal from the PKGBUILD of all references to the home directory) until a better solution is found.

pkgdesc="A cross-platform, all-in-one machinima studio for Super Mario 64."
depends=('sdl2' 'glew' 'python' 'gtk4')

prepare() { 
    sed -i "s/sys_exe_path()/\"\/usr\/share\/$pkgname\/\"/g" "$srcdir/$_pkgname-$_tag/src/saturn/saturn_rom_extract.cpp"
    sed -i -e "s/\/usr\/bin\/$pkgname/g" -e "/Path=usr\/bin/d" "$srcdir/$_pkgname-$_tag/platform/appimage/$_pkgname.desktop"

build() {
    cd "$srcdir/$_pkgname-$_tag/"

package() {
    install -DTm644 "$srcdir/$_pkgname-$_tag/platform/appimage/$_pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"
    install -Dm644 "$srcdir/$_pkgname-$_tag/res/saturn-linuxicon.png" -t "$pkgdir/usr/share/icons/" 
    mkdir -p "$pkgdir/usr/share/$pkgname"
    cp -r --no-preserve=mode,ownership "$srcdir/$_pkgname-$_tag/dynos" "$srcdir/$_pkgname-$_tag/fonts" "$srcdir/$_pkgname-$_tag/res" "$pkgdir/usr/share/$pkgname/"
    install -DTm755 "$srcdir/$_pkgname-$_tag/build/us_pc/" "$pkgdir/usr/bin/$pkgname"

Auerhuhn commented on 2024-04-18 07:24 (UTC)

Hi @Dominicentek,

thanks for the update! This looks much better already.

Can you think of a suitable location for the V64SATURN directory tree so that it no longer depends on the home directory at makepkg time?


tacosukoneko commented on 2024-03-28 19:55 (UTC)

I created a working PKGBUILD of a edited version of this app but I haven't figured out how to fix it for source archives from the Llennpie repository yet and I think it is most respectful if I avoid posting a PKGBUILD with a non-original source URL. But please dont delete this package until there is a chance for it to get fixed I will try to help it get fixed.

Auerhuhn commented on 2024-03-28 14:38 (UTC)

Hi @Dominicentek, thanks for your upload.

I just saw that your PKGBUILD doesn’t produce a package after all.

According to the Creating packages article on the Arch wiki, the duties of the package() function include that it puts your:

[…] files in a directory where makepkg can retrieve them to create a package.

Your package function places the files below the home directory of the user who happens to run makepkg; this means makepkg won’t be able to build the package correctly.

If you’d like to fix your package, you could start by using the pkgdir variable. When in doubt, refer to the article and the Arch package guidelines, or feel free to ask away.

Claudia (aka Auerhuhn)