ArchImage icon indicating copy to clipboard operation
ArchImage copied to clipboard

Unable to build Linux Show Player

Open JonnyTech opened this issue 10 months ago • 28 comments

Hello, I do not know if you are familiar with Linux Show Player but they stopped building AppImages in favour of Flatpak:

Linux Show Player 0.6 - Release Candidate 1 Pre-release

Packaging:

    Add Flatpak releases, automated for master and develop branches
    Deprecate AppImage releases

I have been trying to build my own AppImage on Debian Bookworm but the resulting file does not run, no error in terminal, just nothing.

Just wondered if anyone else here has tried to build it and if any extra steps are required.

JonnyTech avatar Apr 24 '25 17:04 JonnyTech

You can start creating the script and run it into an empty directory (by following the instructions on the README).

I've seen that they have an AUR package https://aur.archlinux.org/packages/linux-show-player, that said, run

archimage-cli -b linux-show-player

I don't know what is the binary in $PATH, leave blank if the name is the same as the package.

Then:

  • leave extraction level at 1 (default)
  • if there is a ChaoticAUR package, use ChaoticAUR (not recommended btw)
  • does it require hardware acceleration? Enable it
  • I don't think you need multilib (normally it is something for WINE only)
  • include all dependences (big but it should work out of the box)
  • use a standard configuration

then run the script into an empty directory and see if the final AppImage works.

In case of errors, add the log in this issue.

ivan-hc avatar Apr 24 '25 17:04 ivan-hc

Thanks @ivan-hc

archimage-cli -b linux-show-player

That is easier than what I was doing.

include all dependences (big but it should work out of the box)

Trying that now...

In case of errors, add the log in this issue.

This is the tail-end of the build plus error when running:

appimagetool, continuous build (git version cb01153), build 250 built on 2025-04-21 20:48:28 UTC
WARNING: appstreamcli command is missing, please install it if you want to use AppStream metadata
Using architecture x86_64
/tmp/linux-show-player-master/lisp/linux-show-player.AppDir should be packaged as Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage
Deleting pre-existing .DirIcon
Creating .DirIcon symlink based on information from desktop file
WARNING: AppStream upstream metadata is missing, please consider creating it
         in usr/share/metainfo/linuxshowplayer.appdata.xml
         Please see https://www.freedesktop.org/software/appstream/docs/chap-Quickstart.html#sect-Quickstart-DesktopApps
         for more information or use the generator at
         https://docs.appimage.org/packaging-guide/optional/appstream.html#using-the-appstream-generator
Generating squashfs...
Downloading runtime file from https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-x86_64
Downloaded runtime binary of size 944632
Parallel mksquashfs: Using 12 processors
Creating 4.0 filesystem on Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage, block size 131072.
[==============================================================================================================================\] 15155/15155 100%

Exportable Squashfs 4.0 filesystem, zstd compressed, data block size 131072
	compressed data, compressed metadata, compressed fragments,
	compressed xattrs, compressed ids
	duplicates are removed
Filesystem size 174550.39 Kbytes (170.46 Mbytes)
	30.01% of uncompressed filesystem size (581705.74 Kbytes)
Inode table size 132980 bytes (129.86 Kbytes)
	20.26% of uncompressed inode table size (656524 bytes)
Directory table size 152362 bytes (148.79 Kbytes)
	38.04% of uncompressed directory table size (400533 bytes)
Number of duplicate files found 1365
Number of inodes 15895
Number of files 11819
Number of fragments 1050
Number of symbolic links 2935
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 1141
Number of hard-links 0
Number of ids (unique uids + gids) 1
Number of uids 1
	root (0)
Number of gids 1
	root (0)
Embedding ELF...
Marking the AppImage as executable...
Embedding MD5 digest
zsyncmake is available and updateinformation is provided, hence generating zsync file
Success

Please consider submitting your AppImage to AppImageHub, the crowd-sourced
central directory of available AppImages, by opening a pull request
at https://github.com/AppImage/appimage.github.io

$ ls -la *.AppImage
-rwxr-xr-x 1 user user 179685880 Apr 24 19:06 Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage

$ file Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage
Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, BuildID[sha1]=7c40eaa8b40653e6158134831a2d65f2ef0aa423, stripped

$ ./Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage 
Traceback (most recent call last):
  File "/usr/bin/linux-show-player", line 5, in <module>
    from lisp.main import main
  File "/usr/lib/python3.13/site-packages/lisp/main.py", line 27, in <module>
    from PyQt5.QtGui import QIcon
ImportError: libGLdispatch.so.0: cannot open shared object file: No such file or directory
user@WOPR:/tmp/linux-show-player-master/lisp

JonnyTech avatar Apr 24 '25 18:04 JonnyTech

According with the tutorial at https://github.com/ivan-hc/ArchImage#tutorial

$ ./Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage 
Traceback (most recent call last):
 File "/usr/bin/linux-show-player", line 5, in <module>
   from lisp.main import main
 File "/usr/lib/python3.13/site-packages/lisp/main.py", line 27, in <module>
   from PyQt5.QtGui import QIcon
ImportError: libGLdispatch.so.0: cannot open shared object file: No such file or directory

...add libGL keyword in LIBSAVED and run the script again

ivan-hc avatar Apr 24 '25 18:04 ivan-hc

According with the tutorial at https://github.com/ivan-hc/ArchImage#tutorial

Ah, the videos, I was looking for text instructions, thanks for the pointer.

...add libGL keyword in LIBSAVED and run the script again

LIBSAVED="SAVELIBSPLEASE $lib_audio_keywords $lib_browser_launcher libGL"

appimagetool, continuous build (git version cb01153), build 250 built on 2025-04-21 20:48:28 UTC
WARNING: appstreamcli command is missing, please install it if you want to use AppStream metadata
Using architecture x86_64
/home/user/Desktop/archimage/lisp/linux-show-player.AppDir should be packaged as Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage
WARNING: AppStream upstream metadata is missing, please consider creating it
         in usr/share/metainfo/linuxshowplayer.appdata.xml
         Please see https://www.freedesktop.org/software/appstream/docs/chap-Quickstart.html#sect-Quickstart-DesktopApps
         for more information or use the generator at
         https://docs.appimage.org/packaging-guide/optional/appstream.html#using-the-appstream-generator
Generating squashfs...
Downloading runtime file from https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-x86_64
Downloaded runtime binary of size 944632
Parallel mksquashfs: Using 12 processors
Creating 4.0 filesystem on Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage, block size 131072.
[===============================================================================/] 15486/15486 100%

Exportable Squashfs 4.0 filesystem, zstd compressed, data block size 131072
	compressed data, compressed metadata, compressed fragments,
	compressed xattrs, compressed ids
	duplicates are removed
Filesystem size 186541.62 Kbytes (182.17 Mbytes)
	29.92% of uncompressed filesystem size (623406.82 Kbytes)
Inode table size 133004 bytes (129.89 Kbytes)
	20.23% of uncompressed inode table size (657411 bytes)
Directory table size 152334 bytes (148.76 Kbytes)
	37.99% of uncompressed directory table size (400971 bytes)
Number of duplicate files found 1365
Number of inodes 15918
Number of files 11827
Number of fragments 1052
Number of symbolic links 2950
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 1141
Number of hard-links 0
Number of ids (unique uids + gids) 1
Number of uids 1
	root (0)
Number of gids 1
	root (0)
Embedding ELF...
Marking the AppImage as executable...
Embedding MD5 digest
zsyncmake is available and updateinformation is provided, hence generating zsync file
Success

Please consider submitting your AppImage to AppImageHub, the crowd-sourced
central directory of available AppImages, by opening a pull request
at https://github.com/AppImage/appimage.github.io

$ ./Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage 
Traceback (most recent call last):
  File "/usr/bin/linux-show-player", line 5, in <module>
    from lisp.main import main
  File "/usr/lib/python3.13/site-packages/lisp/main.py", line 31, in <module>
    from lisp.application import Application
  File "/usr/lib/python3.13/site-packages/lisp/application.py", line 35, in <module>
    from lisp.layout.cue_layout import CueLayout
  File "/usr/lib/python3.13/site-packages/lisp/layout/cue_layout.py", line 29, in <module>
    from lisp.ui.settings.cue_settings import CueSettingsDialog
  File "/usr/lib/python3.13/site-packages/lisp/ui/settings/cue_settings.py", line 25, in <module>
    from lisp.ui.settings.pages import CuePageMixin, SettingsPagesTabWidget
  File "/usr/lib/python3.13/site-packages/lisp/ui/settings/pages.py", line 23, in <module>
    from lisp.ui.widgets.pagestreewidget import PagesTreeWidget
  File "/usr/lib/python3.13/site-packages/lisp/ui/widgets/__init__.py", line 4, in <module>
    from .dbmeter import DBMeter
  File "/usr/lib/python3.13/site-packages/lisp/ui/widgets/dbmeter.py", line 32, in <module>
    from lisp.backend.audio_utils import iec_scale
  File "/usr/lib/python3.13/site-packages/lisp/backend/audio_utils.py", line 18, in <module>
    import aifc
ModuleNotFoundError: No module named 'aifc'

To which line should I add aifc?

JonnyTech avatar Apr 24 '25 18:04 JonnyTech

To which line should I add aifc?

This is a python module, you should add python-standard-aifc in DEPENDENCES instead

Note, you will see that the script will extract the packages again... don't worry, it is normal. If you add packages in DEPENDENCES or change the extraction level (now it is 1) extracting packages will be done again.

Adding keyworkd in BINSAVED, SHARESAVED and LIBSAVED its faster, since it only adds what already available.

If you prefer to use LIBSAVED instead of what I suggested, add python to include the whole /usr/lib/python directory.

ivan-hc avatar Apr 24 '25 18:04 ivan-hc

DEPENDENCES="python-standard-aifc" #SYNTAX: "APP1 APP2 APP3 APP4...", LEAVE BLANK IF NO OTHER DEPENDENCIES ARE NEEDED

$ ./Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage 
Traceback (most recent call last):
  File "/usr/bin/linux-show-player", line 5, in <module>
    from lisp.main import main
  File "/usr/lib/python3.13/site-packages/lisp/main.py", line 31, in <module>
    from lisp.application import Application
  File "/usr/lib/python3.13/site-packages/lisp/application.py", line 35, in <module>
    from lisp.layout.cue_layout import CueLayout
  File "/usr/lib/python3.13/site-packages/lisp/layout/cue_layout.py", line 29, in <module>
    from lisp.ui.settings.cue_settings import CueSettingsDialog
  File "/usr/lib/python3.13/site-packages/lisp/ui/settings/cue_settings.py", line 25, in <module>
    from lisp.ui.settings.pages import CuePageMixin, SettingsPagesTabWidget
  File "/usr/lib/python3.13/site-packages/lisp/ui/settings/pages.py", line 23, in <module>
    from lisp.ui.widgets.pagestreewidget import PagesTreeWidget
  File "/usr/lib/python3.13/site-packages/lisp/ui/widgets/__init__.py", line 4, in <module>
    from .dbmeter import DBMeter
  File "/usr/lib/python3.13/site-packages/lisp/ui/widgets/dbmeter.py", line 32, in <module>
    from lisp.backend.audio_utils import iec_scale
  File "/usr/lib/python3.13/site-packages/lisp/backend/audio_utils.py", line 18, in <module>
    import aifc
ModuleNotFoundError: No module named 'aifc'

Going to try: LIBSAVED="SAVELIBSPLEASE $lib_audio_keywords $lib_browser_launcher libGL python"

JonnyTech avatar Apr 24 '25 19:04 JonnyTech

Still no luck:

$ ./Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage 
Traceback (most recent call last):
  File "/usr/bin/linux-show-player", line 5, in <module>
    from lisp.main import main
  File "/usr/lib/python3.13/site-packages/lisp/main.py", line 31, in <module>
    from lisp.application import Application
  File "/usr/lib/python3.13/site-packages/lisp/application.py", line 35, in <module>
    from lisp.layout.cue_layout import CueLayout
  File "/usr/lib/python3.13/site-packages/lisp/layout/cue_layout.py", line 29, in <module>
    from lisp.ui.settings.cue_settings import CueSettingsDialog
  File "/usr/lib/python3.13/site-packages/lisp/ui/settings/cue_settings.py", line 25, in <module>
    from lisp.ui.settings.pages import CuePageMixin, SettingsPagesTabWidget
  File "/usr/lib/python3.13/site-packages/lisp/ui/settings/pages.py", line 23, in <module>
    from lisp.ui.widgets.pagestreewidget import PagesTreeWidget
  File "/usr/lib/python3.13/site-packages/lisp/ui/widgets/__init__.py", line 4, in <module>
    from .dbmeter import DBMeter
  File "/usr/lib/python3.13/site-packages/lisp/ui/widgets/dbmeter.py", line 32, in <module>
    from lisp.backend.audio_utils import iec_scale
  File "/usr/lib/python3.13/site-packages/lisp/backend/audio_utils.py", line 18, in <module>
    import aifc
ModuleNotFoundError: No module named 'aifc'

Shall try again tomorrow - thanks for your time.

JonnyTech avatar Apr 24 '25 19:04 JonnyTech

A drastic solution would be to use an extraction level 2, line 290 from

[ -z "$extraction_count" ] && extraction_count=1

to

[ -z "$extraction_count" ] && extraction_count=2

to extract dependencies of dependencies... it will be bigger btw.

Anyway, Python to work needs python and python-gobject in DEPENDENCES... maybe Python is unable to load the aifc module because these basic packages are not included.

Also, to have a more detailed output about missing libraries, run the AppImage like this

$ LD_DEBUG=libs ./Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage

the output will be much more long... but this way (with patience) you will be able to read what are the missing libraries.

Same, if you run

$ LD_DEBUG=files ./Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage

...maybe you will be able to see missing files (not just libraries).

It is a bit difficult to read the long output of LD_DEBUG, but its the only way to do the things as they should.

All depends on your priorities, a small AppImage or a working one?

  1. extraction_count=1 or better extraction_count=0 is for advanced users, since you have to add libraries one by one, to have an AppImage as much small as possible.
  2. extraction_count=2, extraction_count=3, extraction_count=100... will include even more packages without having to specify keywords... the bigger is the number, the more you will bundle the whole Arch Linux system... having a gigantic final AppImage that works out of the box.

I built almost all my Archimages using extraction_count between 0 and 2... you need a lot of patience for doing this.

Right today I updated my vlc-git using an extraction level 1 https://github.com/ivan-hc/VLC-appimage/blob/main/vlc-git-junest.sh no issue here... but python apps are much more complicated.

ivan-hc avatar Apr 24 '25 19:04 ivan-hc

[ -z "$extraction_count" ] && extraction_count=2 Anyway, Python to work needs python and python-gobject in DEPENDENCES...

I added the suggestions and rebuilt:

$ ./Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage 
Traceback (most recent call last):
  File "/usr/bin/linux-show-player", line 5, in <module>
    from lisp.main import main
  File "/usr/lib/python3.13/site-packages/lisp/main.py", line 31, in <module>
    from lisp.application import Application
  File "/usr/lib/python3.13/site-packages/lisp/application.py", line 35, in <module>
    from lisp.layout.cue_layout import CueLayout
  File "/usr/lib/python3.13/site-packages/lisp/layout/cue_layout.py", line 29, in <module>
    from lisp.ui.settings.cue_settings import CueSettingsDialog
  File "/usr/lib/python3.13/site-packages/lisp/ui/settings/cue_settings.py", line 25, in <module>
    from lisp.ui.settings.pages import CuePageMixin, SettingsPagesTabWidget
  File "/usr/lib/python3.13/site-packages/lisp/ui/settings/pages.py", line 23, in <module>
    from lisp.ui.widgets.pagestreewidget import PagesTreeWidget
  File "/usr/lib/python3.13/site-packages/lisp/ui/widgets/__init__.py", line 4, in <module>
    from .dbmeter import DBMeter
  File "/usr/lib/python3.13/site-packages/lisp/ui/widgets/dbmeter.py", line 32, in <module>
    from lisp.backend.audio_utils import iec_scale
  File "/usr/lib/python3.13/site-packages/lisp/backend/audio_utils.py", line 18, in <module>
    import aifc
ModuleNotFoundError: No module named 'aifc'

So I generated logs:

LD_DEBUG=libs ./Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage 2&> debug_libs.txt
LD_DEBUG=files ./Linux-Show-Player_0.6.4-1-archimage4.3-x86_64.AppImage 2&> debug_files.txt

debug_libs.txt debug_files.txt

If you can give me an example of what I am looking for in those logs, as I cannot see an error, then I should be able to continue by myself.

Or do you recommend simply increasing extraction_count until I get a working build?

JonnyTech avatar Apr 24 '25 23:04 JonnyTech

debug_libs.txt

Before

    110953:	calling init: /usr/lib/python3.13/lib-dynload/_uuid.cpython-313-x86_64-linux-gnu.so
    110953:	
Traceback (most recent call last):
  File "/usr/bin/linux-show-player", line 5, in <module>
    from lisp.main import main
  File "/usr/lib/python3.13/site-packages/lisp/main.py", line 31, in <module>
    from lisp.application import Application
  File "/usr/lib/python3.13/site-packages/lisp/application.py", line 35, in <module>
    from lisp.layout.cue_layout import CueLayout
  File "/usr/lib/python3.13/site-packages/lisp/layout/cue_layout.py", line 29, in <module>
    from lisp.ui.settings.cue_settings import CueSettingsDialog
  File "/usr/lib/python3.13/site-packages/lisp/ui/settings/cue_settings.py", line 25, in <module>
    from lisp.ui.settings.pages import CuePageMixin, SettingsPagesTabWidget
  File "/usr/lib/python3.13/site-packages/lisp/ui/settings/pages.py", line 23, in <module>
    from lisp.ui.widgets.pagestreewidget import PagesTreeWidget
  File "/usr/lib/python3.13/site-packages/lisp/ui/widgets/__init__.py", line 4, in <module>
    from .dbmeter import DBMeter
  File "/usr/lib/python3.13/site-packages/lisp/ui/widgets/dbmeter.py", line 32, in <module>
    from lisp.backend.audio_utils import iec_scale
  File "/usr/lib/python3.13/site-packages/lisp/backend/audio_utils.py", line 18, in <module>
    import aifc
ModuleNotFoundError: No module named 'aifc'

there are a series of checks like this

    110953:	find library=liblzma.so.5 [0]; searching
    110953:	 search cache=/etc/ld.so.cache
    110953:	  trying file=/usr/lib/liblzma.so.5
    110953:	
    110953:	
    110953:	calling init: /usr/lib/liblzma.so.5
    110953:	
    110953:	
    110953:	calling init: /usr/lib/python3.13/lib-dynload/_lzma.cpython-313-x86_64-linux-gnu.so
    110953:	
    110953:	find library=libcrypto.so.3 [0]; searching
    110953:	 search cache=/etc/ld.so.cache
    110953:	  trying file=/usr/lib/libcrypto.so.3
    110953:	
    110953:	
    110953:	calling init: /usr/lib/libcrypto.so.3
    110953:	
    110953:	
    110953:	calling init: /usr/lib/python3.13/lib-dynload/_hashlib.cpython-313-x86_64-linux-gnu.so
    110953:	
    110953:	
    110953:	calling init: /usr/lib/python3.13/lib-dynload/_blake2.cpython-313-x86_64-linux-gnu.so
    110953:	
    110953:	
    110953:	calling init: /usr/lib/python3.13/lib-dynload/fcntl.cpython-313-x86_64-linux-gnu.so
    110953:	
    110953:	find library=libuuid.so.1 [0]; searching
    110953:	 search cache=/etc/ld.so.cache
    110953:	  trying file=/usr/lib/libuuid.so.1

...when you see trying file=/usr/lib..., also check if the named library is inside the AppImage, in the above example libuuid.so.1, /libcrypto.so.3 and liblzma.so.5... but if you go up you can see several.

Made sure that the AppImage is calling the ones inside it and not on the host. Start to check if "libuuid" is under .junest/usr/lib, and so on.

At first look, it seems to be correct... but I can't be sure, since I have not the directories here. Maybe that libraries are not in the AppImage and are called from the host.

debug_files.txt

Same as before... not much difference between the logs.

ivan-hc avatar Apr 24 '25 23:04 ivan-hc

Anyway, the missing package is https://aur.archlinux.org/packages/python-standard-aifc, it come from AUR... see if it is somewhere in the archlinux directory, maybe it is under archlinux/.cache/yay and can't be imported in the AppImage... I'm not sure, the find command should work also there, in the dedicated functions.

Another test you can do is as follow, given the directories archlinux/.junest/usr and the $APP.AppDir/.junest/usr:

  1. temporarily move the lib directory from the AppDir to elsewhere
  2. temporarily move the lib directory from archlinux to the AppDir
  3. run the AppRun script and see if the program works
  4. restore each lib directory in its original place and start investigating on what have made the program work (files, libraries...) un til you reach the result. This may take several minutes. Libraries are many. Look at the differences between the two lib directories
  5. take note of your investigations (only the useful discoveries)

PS: i said "usr/lib", but you can do the same experiment with usr/bin and usr/share

ivan-hc avatar Apr 24 '25 23:04 ivan-hc

To help you more I started the same script with a level 2 extraction, i.e. [ -z "$extraction_count" ] && extraction_count=2

Will see what happens.

ivan-hc avatar Apr 24 '25 23:04 ivan-hc

Anyway, the missing package is https://aur.archlinux.org/packages/python-standard-aifc, it come from AUR... see if it is somewhere in the archlinux directory, maybe it is under archlinux/.cache/yay and can't be imported in the AppImage... I'm not sure, the find command should work also there, in the dedicated functions.

Another test you can do is as follow, given the directories archlinux/.junest/usr and the $APP.AppDir/.junest/usr:

1. temporarily move the lib directory from the AppDir to elsewhere

2. temporarily move the lib directory from archlinux to the AppDir

3. run the AppRun script and see if the program works

4. restore each lib directory in its original place and start investigating on what have made the program work (files, libraries...) un til you reach the result. This may take several minutes. Libraries are many. Look at the differences between the two lib directories

5. take note of your investigations (only the useful discoveries)

PS: i said "usr/lib", but you can do the same experiment with usr/bin and usr/share

well, now that I have built the AppImage too and I get your same error... it is time that I show you how to test what I said above

https://github.com/user-attachments/assets/c4602f59-e34e-438b-aafa-793937f6af85

...experiment failed.

The module has not been found anywhere.

I'll retry to add python-standard-aifc among DEPENDENCES

ivan-hc avatar Apr 24 '25 23:04 ivan-hc

By adding the python-standard-aifc package in DEPENDENCES I got an error while building

Image

....I will see what happens.

ivan-hc avatar Apr 24 '25 23:04 ivan-hc

The audioop module is in python-audioop-lts in AUR, let add this in DEPENDENCES

ivan-hc avatar Apr 24 '25 23:04 ivan-hc

This time I get this build error

Image

==> Checking buildtime dependencies...
==> ERROR: Could not resolve all dependencies.
 -> errore durante la creazione: python-standard-aifc-exit status 8
==> Making package: python-audioop-lts 0.2.1-1 (Thu Apr 24 23:57:32 2025)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...

something is broken while building this package.

ivan-hc avatar Apr 24 '25 23:04 ivan-hc

NOTE, the above errors are while building the packages via AUR

ivan-hc avatar Apr 25 '25 00:04 ivan-hc

As you can see here, the python-standard-aifc source archive is downloaded but not compiled... something is missing while building.

It seems that the last update was in december for this PKGBUILD, but I remember that in January Arch Linux switched python from 3.12 to 3.13... maybe this is an issue of the AUR package itself.

We can't do much without a compiled package.

https://github.com/user-attachments/assets/f1f43bfa-ab08-4023-9734-afdaf16b83b7

ivan-hc avatar Apr 25 '25 00:04 ivan-hc

Anyway, all I've done was to set extraction level to 2 (also if the issue was not this, it seems that 1 is good enough) and adding the following dependencies

DEPENDENCES="python-standard-aifc python-audioop-lts"

...I've not enabled ChaoticAUR.

Also the chinese https://repo.archlinuxcn.org/x86_64 has not this package.

We can't do much without a compiled python-standard-aifc package.

If you find a way to fix this comment https://github.com/ivan-hc/ArchImage/issues/38#issuecomment-2829092666 you are ok.

In the meantime I share the script I created, use diffcheck or diff to see differences between mine and yours

linux-show-player-junest.sh.txt

...I can't do much at this point.

ivan-hc avatar Apr 25 '25 00:04 ivan-hc

Thank you, I really do appreciate your guidance and it will help me to understand the build process better.

I looked at LiSP issues and found https://github.com/FrancescoCeruti/linux-show-player/issues/348 which says to use the development branch.

You were correct about the python 3.12 / 3.13 change.

When I come back to this later then I shall try that, I am sure that there are instructions for using a source folder somewhere.

JonnyTech avatar Apr 25 '25 08:04 JonnyTech

Python is a mess, to build this app using Python3.12 would solve the issue... but why a user should be forced to downgrade a program to made one module work? This is why I hate Python so much.

ivan-hc avatar Apr 25 '25 11:04 ivan-hc

Understood, ok I shall wait until an updated AUR package becomes available.

JonnyTech avatar Apr 25 '25 12:04 JonnyTech

Just revisiting this now that ArchImage 5.0 has been released.

$ ./archimage-cli -b linux-show-player

Created both archimage and anylinux variants without modifying any files or options:

$ ./Linux-Show-Player_0.6.5-1-archimage5.0-x86_64.AppImage 
/bin/sh: /usr/bin/linux-show-player: /usr/bin/python: bad interpreter: No such file or directory

$ ./Linux-Show-Player-0.6.5-1-anylinux-x86_64.AppImage 
env: ‘python’: No such file or directory

Then added python to dependencies of both scripts:

#!/usr/bin/env bash

APP=linux-show-player
BIN="$APP" #CHANGE THIS IF THE NAME OF THE BINARY IS DIFFERENT FROM "$APP" (for example, the binary of "obs-studio" is "obs")
DEPENDENCES="python" #SYNTAX: "APP1 APP2 APP3 APP4...", LEAVE BLANK IF NO OTHER DEPENDENCIES ARE NEEDED
BASICSTUFF="binutils debugedit gzip"
COMPILERS="base-devel"


# Set keywords to searchan include in names of directories and files in /usr/bin (BINSAVED), /usr/share (SHARESAVED) and /usr/lib (LIBSAVED)
BINSAVED="SAVEBINSPLEASE"
SHARESAVED="SAVESHAREPLEASE"
LIBSAVED="SAVELIBSPLEASE"

Result:

$ ./Linux-Show-Player_0.6.5-1-archimage5.0-x86_64.AppImage 
Traceback (most recent call last):
  File "/usr/bin/linux-show-player", line 5, in <module>
    from lisp.main import main
  File "/usr/lib/python3.13/site-packages/lisp/__init__.py", line 21, in <module>
    from appdirs import AppDirs
ModuleNotFoundError: No module named 'appdirs'

$ ./Linux-Show-Player-0.6.5-1-anylinux-x86_64.AppImage 
env: ‘python’: No such file or directory

Add python to LIBSAVED instead:

#!/usr/bin/env bash

APP=linux-show-player
BIN="$APP" #CHANGE THIS IF THE NAME OF THE BINARY IS DIFFERENT FROM "$APP" (for example, the binary of "obs-studio" is "obs")
DEPENDENCES="" #SYNTAX: "APP1 APP2 APP3 APP4...", LEAVE BLANK IF NO OTHER DEPENDENCIES ARE NEEDED
BASICSTUFF="binutils debugedit gzip"
COMPILERS="base-devel"

# Set keywords to searchan include in names of directories and files in /usr/bin (BINSAVED), /usr/share (SHARESAVED) and /usr/lib (LIBSAVED)
BINSAVED="SAVEBINSPLEASE"
SHARESAVED="SAVESHAREPLEASE"
LIBSAVED="SAVELIBSPLEASE python"

Result:

$ ./Linux-Show-Player_0.6.5-1-archimage5.0-x86_64.AppImage 
/bin/sh: /usr/bin/linux-show-player: /usr/bin/python: bad interpreter: No such file or directory

$ ./Linux-Show-Player-0.6.5-1-anylinux-x86_64.AppImage 
env: ‘python’: No such file or directory

Looking back through this thread, there is a lot of information that I have forgotten! I shall try different options, but if you have any suggestions then please let me know.

Just a little bug report:

All done! AppImage at: /tmp/lisp/archlinux/Linux-Show-Player-0.6.5-1-anylinux-x86_64.AppImage

The file is actually at: /tmp/lisp/Linux-Show-Player-0.6.5-1-anylinux-x86_64.AppImage

The anylinux script does not display where the AppImage was created.

JonnyTech avatar Oct 26 '25 17:10 JonnyTech

Try to add python to BINSAVED.

The archimage script does not display where the AppImage was created.

The AppImage is always near the script, once it is created.

ivan-hc avatar Oct 26 '25 19:10 ivan-hc

Try to add python to BINSAVED.

#!/usr/bin/env bash

APP=linux-show-player
BIN="$APP" #CHANGE THIS IF THE NAME OF THE BINARY IS DIFFERENT FROM "$APP" (for example, the binary of "obs-studio" is "obs")
DEPENDENCES="" #SYNTAX: "APP1 APP2 APP3 APP4...", LEAVE BLANK IF NO OTHER DEPENDENCIES ARE NEEDED
BASICSTUFF="binutils debugedit gzip"
COMPILERS="base-devel"

# Set keywords to searchan include in names of directories and files in /usr/bin (BINSAVED), /usr/share (SHARESAVED) and /usr/lib (LIBSAVED)
BINSAVED="SAVEBINSPLEASE python"
SHARESAVED="SAVESHAREPLEASE"
LIBSAVED="SAVELIBSPLEASE"

Results:

$ ./Linux-Show-Player_0.6.5-1-archimage5.0-x86_64.AppImage 
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Python path configuration:
  PYTHONHOME = (not set)
  PYTHONPATH = (not set)
  program name = '/usr/bin/python'
  isolated = 0
  environment = 1
  user site = 1
  safe_path = 0
  import site = 1
  is in build tree = 0
  stdlib dir = '/usr/lib/python3.13'
  sys.path[0] = (not set)
  sys._base_executable = '/usr/bin/python'
  sys.base_prefix = '/usr'
  sys.base_exec_prefix = '/usr'
  sys.platlibdir = 'lib'
  sys.executable = '/usr/bin/python'
  sys.prefix = '/usr'
  sys.exec_prefix = '/usr'
  sys.path = [
    '/usr/lib/python313.zip',
    '/usr/lib/python3.13',
    '/usr/lib/python3.13/lib-dynload',
  ]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
LookupError: no codec search functions registered: can't find encoding

Current thread 0x00007f4e73fd2bc0 (most recent call first):
  <no Python frame>

$ ./Linux-Show-Player-0.6.5-1-anylinux-x86_64.AppImage 
Traceback (most recent call last):
  File "/tmp/.mount_Linuxremp10097713043477063877/bin/linux-show-player", line 5, in <module>
    from lisp.main import main
ModuleNotFoundError: No module named 'lisp'

The AppImage is always near the script, once it is created.

Indeed, but the archlinux message is incorrect, and the anylinux script differs by not displaying a location.

JonnyTech avatar Oct 26 '25 19:10 JonnyTech

For Anylinux you should add "lisp" in LIBSAVED. Those are module names prompted by Python whan it does not detects them.

Anyway, consider that Anylinux is still experimental support in this repository.

About Archimage, much depends from the app type. Is this a GTK app? Maybe there are some GTK handlers to be included.

You should see what is this codec search it says in the output.

ivan-hc avatar Oct 26 '25 20:10 ivan-hc

For Anylinux you should add "lisp" in LIBSAVED. Those are module names prompted by Python whan it does not detects them.

#!/usr/bin/env bash

APP=linux-show-player
BIN="$APP" #CHANGE THIS IF THE NAME OF THE BINARY IS DIFFERENT FROM "$APP" (for example, the binary of "obs-studio" is "obs")
DEPENDENCES="" #SYNTAX: "APP1 APP2 APP3 APP4...", LEAVE BLANK IF NO OTHER DEPENDENCIES ARE NEEDED
BASICSTUFF="binutils debugedit gzip"
COMPILERS="base-devel"

# Set keywords to searchan include in names of directories and files in /usr/bin (BINSAVED), /usr/share (SHARESAVED) and /usr/lib (LIBSAVED)
BINSAVED="SAVEBINSPLEASE python"
SHARESAVED="SAVESHAREPLEASE"
LIBSAVED="SAVELIBSPLEASE lisp"
$ ./Linux-Show-Player-0.6.5-1-anylinux-x86_64.AppImage 
Traceback (most recent call last):
  File "/tmp/.mount_Linuxremp16168792300436411953/bin/linux-show-player", line 5, in <module>
    from lisp.main import main
ModuleNotFoundError: No module named 'lisp'

Is this a GTK app? Maybe there are some GTK handlers to be included.

From https://github.com/FrancescoCeruti/linux-show-player

The core components (Python, GStreamer and Qt) are multi-platform

You should see what is this codec search it says in the output.

Hmm, it seems to be a python2 vs python3 issue. I thought that they had updated the recipe at https://aur.archlinux.org/packages/linux-show-player but I guess not. I shall investigate...

JonnyTech avatar Oct 27 '25 15:10 JonnyTech

Python2 in 2025... its a bit difficult (but if you need it I have a package hosted in "releases" in my GIMP repository, for the Hybrid release).

About python modules usage in Anylinux, I guess they should be cached among other libraries, during the build process... and Anylinux has still some difficult with Python deploy part. For this it is better to ask to @Samueru-sama, creator of Anylinux.

If you have doubts about the Archimage, let me know. I'll try anyway to contribute to Anylinux somehow.

ivan-hc avatar Oct 27 '25 15:10 ivan-hc