Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build broken using Love12 AppImages #40

Open
pakeke-constructor opened this issue Oct 2, 2023 · 1 comment
Open

Build broken using Love12 AppImages #40

pakeke-constructor opened this issue Oct 2, 2023 · 1 comment

Comments

@pakeke-constructor
Copy link

pakeke-constructor commented Oct 2, 2023

Hi- I have been using love with a custom AppImage, (specifically, the latest love-12 AppImage generated from github actions).

The new Love-12 appImages contain liblove-12.so as opposed to liblove.so, which is breaking makelove.
I'm not sure why this was renamed, I've asked on the love discord.
I had a discussion with Sasha, turns out liblove has always been named this way. I think it's just because I got the extracted appimage from the github CI, why there were issues.

What do you think about this? Would it be worth making the liblove detection a bit more generic to detect different versions....?

I also suspect that this was the cause of #38

(For reference, here is a tree of the new extracted appimage for love 12)

appimage/
    squashfs-root/
        love.desktop
        .DirIcon
        AppRun
        love.svg
        license.txt
        share/
            mime/
                packages/
                    love.xml
            applications/
                love.desktop
            pixmaps/
                love.svg
            lua/
                5.1/
            luajit-2.1.0-beta3/
                jit/
                    p.lua
                    dump.lua
                    dis_mips.lua
                    dis_mipsel.lua
                    bc.lua
                    bcsave.lua
                    dis_arm.lua
                    dis_mips[....]el.lua
                    v.lua
                    dis_arm64be.lua
                    dis_ppc.lua
                    dis_x64.lua
                    zone.lua
                    vmdef.lua
                    dis_arm64.lua
                    dis_mips64.lua
                    dis_x86.lua
            icons/
                hicolor/
                    scalable/
                        mimetypes/
                            application-x-love-game.svg
        lib/
            libluajit-5.1.so.2
            liblove-12.0.so
            libogg.so.0
            libvorbisfile.so.3
            libfreetype.so.6
            libtheoradec.so.1
            libbrotlidec.so.1
            libvorbis.so.0
            libmodplug.so.1
            libz.so.1
            libbrotlicommon.so.1
            libopenal.so.1
            libSDL2-2.0.so.0
        bin/
            love
@pakeke-constructor pakeke-constructor changed the title Build broken with love12's liblove.so rename Build broken using Love12 AppImages Oct 2, 2023
@pfirsich
Copy link
Owner

pfirsich commented Oct 21, 2023

Sorry for the long delay. I have been on vacation, then quit my job and lots of stuff has been happening.
I am a bit confused as to how it worked in the past, as there seems to be a dedicated branch for official AppImages that (I guess) worked well with just checking for liblove.so (https://github.com/pfirsich/makelove/blob/master/makelove/linux.py#L234).
That whole liblove check is only relevant when shared_libraries is defined in the config, right? So it's not super, super broken, I think? Would you (or anyone reading) be willing to contribute the necessary fixes? I'd probably replace that block with something like this:

so_target_dir = find_liblove([
    appdir("lib/"), # pfirsich-style AppImages
    appdir("usr/lib"), # Official AppImages (since 11.4)
])
if so_target_dir == None:
    sys.exit("Could not find liblove.so in AppDir. The AppImage has an unknown format.")

and do find_liblove like this maybe?

def find_liblove(search_dirs: list[str]):
    is_liblove = lambda fname: fname.startswith("liblove") and fname.endswith(".so")
    for search_dir in search_dirs:
        if any(is_liblove(f) for f in os.listdir(search_dir)):
            return search_dir
    return None

This is not tested or anything. And you can do it a different way too, if you want.

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

No branches or pull requests

2 participants