linuxdeploy-plugin-appimage icon indicating copy to clipboard operation
linuxdeploy-plugin-appimage copied to clipboard

Installation pain and missing integration with main linuxdeploy repository

Open Manamama opened this issue 4 months ago • 1 comments

Hi maintainers,

I tried installing linuxdeploy-plugin-appimage on a fresh Ubuntu system, and the process was extremely cumbersome. Here is the step-by-step path I had to take:

  1. Clone the plugin repository manually:

    git clone https://github.com/linuxdeploy/linuxdeploy-plugin-appimage.git
    cd linuxdeploy-plugin-appimage
    
  2. Initialize submodules:

    git submodule update --init --recursive
    
  3. Create a build directory (optional, but standard with CMake):

    mkdir build && cd build
    cmake ..
    
  4. Attempted to build:

    make
    sudo make install
    

    This failed due to clang complaining about -static-libstdc++ and -static-libgcc being unused, triggered by -Werror.

  5. Temporary fix: remove -Werror or suppress the unused argument warnings:

    cmake -DCMAKE_CXX_FLAGS="-O2 -Wno-error=unused-command-line-argument" ..
    make
    sudo make install
    
  6. Finally, the plugin compiled and installed:

    /usr/local/bin/linuxdeploy-plugin-appimage
    

Observations / Pain Points:

  • The need to clone this repository manually is confusing. Ideally, the main linuxdeploy repository should include this plugin as a submodule or provide a streamlined install process. Users should not have to hunt it down separately.
  • The build breaks on Clang because of hardcoded GCC-specific flags combined with -Werror. Many users will have Clang installed by default on modern distros.
  • Submodule initialization is not documented in the README; newcomers may be confused by the missing lib/args and other submodules.
  • The cumulative effect of all the steps makes installation unnecessarily painful, especially compared to the old make/apt style many developers are familiar with.

Suggestions:

  • Consider integrating the plugin directly into the main linuxdeploy repository or provide a single install script.
  • Make CMakeLists.txt more compiler-agnostic, especially when using -static-libstdc++ and -static-libgcc.
  • Provide clear instructions for submodule initialization and common Clang issues in the README.

Manamama avatar Aug 22 '25 10:08 Manamama

Ref:

 # Clone the plugin repo
git clone https://github.com/linuxdeploy/linuxdeploy-plugin-appimage.git
cd linuxdeploy-plugin-appimage
mkdir build && cd build
cmake ..
make
sudo make install
Cloning into 'linuxdeploy-plugin-appimage'...
remote: Enumerating objects: 381, done.
remote: Counting objects: 100% (88/88), done.
remote: Compressing objects: 100% (48/48), done.
remote: Total 381 (delta 48), reused 60 (delta 31), pack-reused 293 (from 2)
Receiving objects: 100% (381/381), 60.69 KiB | 3.00 KiB/s, done.
Resolving deltas: 100% (179/179), done.
-- The C compiler identification is Clang 14.0.0
-- The CXX compiler identification is Clang 14.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at lib/CMakeLists.txt:1 (add_subdirectory):
  The source directory

    /home/zezen/Downloads/GitHub/linuxdeploy-plugin-appimage/lib/args

  does not contain a CMakeLists.txt file.


-- Using ccache
-- Configuring incomplete, errors occurred!
make: *** No targets specified and no makefile found.  Stop.

then

 # Clone the plugin repo
git clone https://github.com/linuxdeploy/linuxdeploy-plugin-appimage.git
cd linuxdeploy-plugin-appimage
mkdir build && cd build
cmake ..
make
sudo make install
Cloning into 'linuxdeploy-plugin-appimage'...
remote: Enumerating objects: 381, done.
remote: Counting objects: 100% (88/88), done.
remote: Compressing objects: 100% (48/48), done.
remote: Total 381 (delta 48), reused 60 (delta 31), pack-reused 293 (from 2)
Receiving objects: 100% (381/381), 60.69 KiB | 3.00 KiB/s, done.
Resolving deltas: 100% (179/179), done.
-- The C compiler identification is Clang 14.0.0
-- The CXX compiler identification is Clang 14.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at lib/CMakeLists.txt:1 (add_subdirectory):
  The source directory

    /home/zezen/Downloads/GitHub/linuxdeploy-plugin-appimage/lib/args

  does not contain a CMakeLists.txt file.


-- Using ccache
-- Configuring incomplete, errors occurred!
make: *** No targets specified and no makefile found.  Stop.

etc. until the User removes the stuff by hand from CMakeList.txt and:

 cmake .
-- Using ccache
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/zezen/Downloads/GitHub/linuxdeploy-plugin-appimage
zezen@above-hp2-silver:~/Downloads/GitHub/linuxdeploy-plugin-appimage$ sudo make install
[ 50%] Building CXX object src/CMakeFiles/linuxdeploy-plugin-appimage.dir/main.cpp.o
clang: warning: argument unused during compilation: '-static-libstdc++' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-static-libgcc' [-Wunused-command-line-argument]
[100%] Linking CXX executable linuxdeploy-plugin-appimage
[100%] Built target linuxdeploy-plugin-appimage
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/bin/linuxdeploy-plugin-appimage

Manamama avatar Aug 22 '25 10:08 Manamama