Skip to content

Python plugin for linuxdeploy. Sets up miniconda in an AppDir and installs user specified packages.

License

Notifications You must be signed in to change notification settings

knarfS/linuxdeploy-plugin-conda

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 

Repository files navigation

linuxdeploy-plugin-conda

Python plugin for linuxdeploy. Sets up miniconda inside an AppDir, and installs user-specified packages.

Usage

# get linuxdeploy and linuxdeploy-plugin-conda (see below for more information)
# configure environment variables which control the plugin's behavior
> export CONDA_CHANNELS=mychannel;myotherchannel CONDA_PACKAGES=mypackage;myotherpackage
# call through linuxdeploy
> ./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin conda --output appimage --icon mypackage.png --desktop-file mypackage.desktop

There are many variables available to alter the behavior of the plugin. The current list can be obtained by calling the plugin with --help.

Cross-compiling/cross-building for i[3-6]86 (Intel 32-bit)

You can cross-build native extensions for i[3-6]86 by installing a 32-bit compiler and instructing distutils to use those.

On Debian, Ubuntu and other derivatives:

sudo apt-get install -y gcc-multilib g++-multilib
export ARCH=i386 CC="gcc -m32" CXX="g++ -m32" LDSHARED="gcc -m32 -shared -pthread"

If your system doesn't provide multilib compilers, wrappers like i686-linux-gnu-gcc also work fine.

Note: It's very important to also overwrite LDSHARED!

See https://stackoverflow.com/a/47711430 for more information.

Customize caching behavior

By default, linuxdeploy-plugin-conda redownloads the miniconda installer on every execution. This is not an issue for most people, as the installers are only 50-80 MiB in size. However, it is usually not necessary to redownload the file every time, especially while developing scripts based on the conda plugin.

Therefore, you can set a custom directory via the environment variable $CONDA_DOWNLOAD_DIR, into which downloaded files are stored then. The plugin makes use of some wget parameters to ensure that the file is only downloaded when it is incomplete (-c) or there is a newer version available (-N).

Example:

> export CONDA_DOWNLOAD_DIR=/my/own/directory
> ./linuxdeploy-x86_64.AppImage --plugin conda [...]
[...]
Using user-specified download directory: /my/own/directory
[...]

Relative paths work as well.

Example

This generates a working FreeCAD AppImage from Conda ingredients, including Qt and PyQt:

wget -c "https://raw.githubusercontent.com/TheAssassin/linuxdeploy-plugin-conda/master/linuxdeploy-plugin-conda.sh"
wget -c "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
chmod +x linuxdeploy-x86_64.AppImage linuxdeploy-plugin-conda.sh

cat > freecad.desktop <<\EOF
[Desktop Entry]
Version=1.0
Name=FreeCAD
Name[de]=FreeCAD
Comment=Feature based Parametric Modeler
Comment[de]=Feature-basierter parametrischer Modellierer
GenericName=CAD Application
GenericName[de]=CAD-Anwendung
Exec=FreeCAD %F
Terminal=false
Type=Application
Icon=freecad
Categories=Graphics;Science;Engineering;
StartupNotify=true
GenericName[de_DE]=Feature-basierter parametrischer Modellierer
Comment[de_DE]=Feature-basierter parametrischer Modellierer
MimeType=application/x-extension-fcstd;
EOF

export CONDA_CHANNELS=freecad CONDA_PACKAGES=freecad
./linuxdeploy-x86_64.AppImage --appdir AppDir -i AppDir/usr/conda/data/Mod/Start/StartPage/freecad.png -d freecad.desktop --plugin conda --output appimage

Projects using linuxdeploy-plugin-conda

Projects on GitHub that are using linuxdeploy-plugin-conda

About

Python plugin for linuxdeploy. Sets up miniconda in an AppDir and installs user specified packages.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 100.0%