Arch Linux, like Gentoo, uses simplistic shell-like text files to jot down build instructions, via PKGBUILD. But Arch starts out with much more in their defaults in order to follow upstream; Gentoo wants you to build up to it yourself.
Suppose I want to do this: Start off with an Arch Linux-like USE flag roster, then subtract as I please.
I'll show you how it's done, that is, I'll compare:
| Arch Linux PKGBUILD | Gentoo ebuild |
| ./configure call arguments | myeconfargs declaration |
| makedepends/optdepends
declarations
Sometimes ./configure is subtractive, so stuff is included by default if unspecified. Then a lib may be in makedepends/optdepends. |
RDEPEND USE flags will trigger new dependencies; we'll see which is needed to match. |
to edit the USE flags of (1) ImageMagick, (2) GIMP, and (3) Krita.
I'll also tell you all about what the hell these flags mean, so that you don't go ohmygodgentoo and disable subtle things for no good reason.
green : local USE flag
yellow : global USE flag or enabled by profile
red : I ignore it
| Support for... | Arch PKGBUILD | Gentoo USE flag |
|---|---|---|
| X11 | depends ⇗ on libxext | X ⇗ (this is added via global USE flag) |
| BZIP2 compression | depends ⇗ on bzip2 | bzip2 |
| Microsoft core fonts | idk lol | corefonts (I'll use a GUI if I want to add text) |
| C++ API | idk lol | cxx* (included by default IUSE ⇗) |
| DJVU (pdf-like format) | --with-djvu | djvu (I don't magick things into .djvu) |
| Fastest Fourier Transform In The West (a library) | --with-fftw |
fftw |
| fontconfig stuff | depends ⇗ on fontconfig | fontconfig (I'll use a GUI if I want to add text) |
| .fpx (old bitmap format) | --without-fpx | fpx |
| graphviz (graph visualization library) | idk lol | graphviz (I'll use a GUI if I want to add graphs) |
| hardening security policy | The upstream default is "open" | hardened (sets policy to "limited ⇗") |
| High Dynamic Image Range | --enable-hdri | hdri |
| HEIF (annoying compressed photo format, phones use it all the time even though image viewers barely support it) | makedepends ⇗ on heif | heif (I need magick to convert heif images) |
| JBIG (old image compression for fax machines) | makedepends ⇗ and optdepends ⇗ on jbigkit | jbig (who cares about fax...?) |
| JPEG | optdepends ⇗ and makedepends ⇗ on libjpeg-turbo | jpeg |
| JPEG2000 | --with-openjp2 |
jpeg2k (rare; also it was a failure ⇗ compared to jpegxl, is not back-compatible with jpeg, etc.) |
| JPEG XL | --with-jxl | jpegxl |
| LittleCMS (color profile management library) | depends ⇗ on lcms2 | lcms (common, e.g. DigiKam ⇗, Krita ⇗, GIMP ⇗) |
| lqr (smart image upsizing via -liquid-rescale) | --with-lqr | lqr (a little too specialized, even GIMP would need an external plugin) |
| LZMA/XZ compression | depends ⇗ on xz (xz-utils supports lzma) | lzma |
| OpenCL for gpu computation | --enable-opencl | opencl |
| OpenEXR (advanced hdr and compositing) | --with-openexr | openexr (this is more for professional compositing pipelines ⇗) |
| OpenMP (parallel computing library) | probably default ⇗ | openmp |
| RaQM text layout library | depends ⇗ on libraqm | pango (I'll use a GUI if I want to add text) |
| Perl bindings | --with-perl | perl (in case I use someone's Perl script) (btw the PERL_FEATURES are set in a different way ⇗) |
| PNG | depends ⇗ on libpng | png ⇗ (included by default IUSE ⇗) |
| PostScript/GhostScript (text render programming language) | makedepends ⇗ and optdepends ⇗ on GhostScript | postscript (I'll use a GUI if I want to add text) |
| quantum depth value | default upstream is 64 ⇗ | q8, q32 |
| RAW (format for photographs from higher-end cameras) | makedepends ⇗ on libraw | raw (I don't use those cameras) |
| static build (makes the libraries magick calls out to get bundled in instead. rare use case) | --disable-static | static |
| compile-time testing | who cares? | test |
| SVG | --with-rsvg | svg |
| TIFF image format | optdepends ⇗ on libtiff | tiff ⇗ |
| freetype font rendering | depends ⇗ on freetype2 | truetype (again idc about fonts) |
| WebP image format (great format, annoying to support) | --with-webp | webp |
| .wmf (old Windows image format) | --with-wmf | wmf (was deprecated ages ⇗ ago) |
| XML I/O | --with-xml | xml (xml is used for confs probably, not sure) |
| .ora OpenRaster support | depends ⇗ on libzip | zip (too rare, I don't care) |
| ZLIB (implements DEFLATE compression algorithm, which is old but common) | depends ⇗ on zlib | zlib |
Summarily, use this quite-horizontally-wide conf file.
/etc/portage/package.use/imagemagick
media-gfx/imagemagick bzip2 fftw hdri heif jpeg jpegxl lcms lzma opencl openmp perl png svg webp xml zlib
# dependency for heif
media-libs/libheif x265
| Support for... | Arch PKGBUILD | Gentoo USE flag |
|---|---|---|
| X11 | depends ⇗ on libxext | X |
| aalib (lib to make ASCII graphics) | depends ⇗ on aalib | aalib (ascii fidelity is wonky) |
| ALSA support so MIDI knobs/pedals can change brush stuff | optdepends ⇗ on alsa-lib | alsa (a bit advanced for me) |
| Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally | makedepends ⇗ on gtk-doc | doc |
| .fits format support (deep space images) | optdepends ⇗ and makedepends ⇗ on cfitsio | fits (I rarely get raw deep-space imagedumps) |
| remote filesystem drag-and-drop support | makedepends ⇗ and optdepends ⇗ on gvfs | gnome (you'd be surprised; this isn't UI bloat) |
| the dastardly heif/heic format | depends ⇗ on libheif | heif |
| GJS (Gnome JavaScript) support | makedepends ⇗ and optdepends ⇗ on gjs | javascript (too niche) |
| jpeg2000 | depends ⇗ on openjpeg2 | jpeg2k |
| JPEGXL image support | depends ⇗ on libjxl | jpegxl |
| Enable Lua scripting support | idk lol | lua (luajit target is specified as USE_EXPAND) |
| mng (animation support for png, superseded by apng) | depends ⇗ on mng | mng (too rare, I don't care) |
| OpenEXR (advanced hdr and compositing) | --with-openexr | openexr (ditto from earlier) |
| OpenMP (parallel computing library) | probably default idk | openmp |
| PostScript language | makedepends ⇗ and optdepends ⇗ on ghostscript | postscript (.ps is more for LaTeX stuff) |
| python single target | Arch doesn't build stuff like this | auto-set by global USE_EXPAND directives |
| compile-time tests | who cares | test |
| udev (device discovery, probably related to gvfs or tablet device hotplugging idk) | idk lol | udev (I use a drawing tablet and may un/replug it while GIMP is open) |
| libunwind (call stack unwinding for debugging) | probably not | unwind |
| Vala support (a language for building GTK stuff) | idk | vala |
| Experimental high-DPI-centric vector icons support | none :3 | vector-icons |
| Wayland support | certainly supported. Gentoo only checks because it has a non-Wayland system bugfix ⇗ | wayland |
| WebP (common web format) | depends ⇗ on libwebp | webp |
| .wmf (old Windows image format) | depends ⇗ on libwmf | wmf (ditto from earlier) |
| .xpm (pixmap graphics format for X window system) | depends ⇗ on libxpm | xpm (absolutely ancient ⇗) |
Summarily,
/etc/portage/package.use/gimp
media-libs/gegl cairo lcms
media-libs/babl lcms
media-gfx/gimp gnome heif jpegxl openmp udev vector-icons webp
/etc/portage/package.accept_keywords/gimp
media-gfx/gimp ~amd64
media-libs/babl ~amd64
media-libs/gegl ~amd64
I'm too lazy.
| Support for... | Arch PKGBUILD | Gentoo USE flag |
|---|---|---|
| Advanced color management with opencolorio | depends ⇗ on opencolorio | color-management |
| debug codepaths | no | debug |
| Fastest Fourier Transform In The West | depends ⇗ on fftw | fftw |
| Add GIF image support | depends ⇗ on giflib | gif (I have giflib on my system anyway) |
| gsl (calculation library for better stability and precision for brush strokes) | depends ⇗ on gsl | gsl |
| dastardly .heif format | makedepends ⇗ and optdepends ⇗ on libheif | heif |
| Support for JPEG 2000, a wavelet-based image compression format | depends ⇗ on openjpeg2 | jpeg2k |
| Add JPEG XL image support | makedepends ⇗ and optdepends ⇗ on libjxl | jpegxl |
| Media Lovin' Toolkit (animation-playing runtime engine+ffmpeg export) | depends ⇗ on mlt | media |
| libmypaint (for pressure, tilt, dabbing, etc. brush support) | makedepends ⇗ and optdepends ⇗ on libmypaint | mypaint-brush-engine |
| OpenEXR (advanced hdr and compositing) | depends ⇗ on openexr | openexr (ditto) |
| PDF support | optdepends ⇗ on poppler-qt5 | |
| python single target | Arch doesn't build stuff like this | auto-set by global USE_EXPAND directives |
| RAW (format for photographs from higher-end cameras) | depends ⇗ on libkdcraw5 | raw (I don't use those cameras) |
| compile-time testing | who cares? | test |
| WebP (common web image format) | depends ⇗ on libwebp | webp |
| Enable usage of SIMD instructions via dev-cpp/xsimd | makedepends on xsimd | xsimd |
/etc/portage/package.use/krita
media-gfx/krita color-management fftw gif gsl heif jpegxl media mypaint-brush-engine webp xsimd
# deps
media-libs/opencv features2d
dev-python/pyqt5 gui widgets declarative network
dev-qt/qtcore icu
Blender has good defaults on Gentoo, so I don't need to change any flags.
/etc/portage/package.accept_keywords/blender
media-gfx/blender-bin ~amd64
All that for a drop of blood vector-icons.