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 ffmpeg.
I'll also tell you what the hell these flags mean so you don't go ehrmagerdgentoo 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 |
| 32-bit (x86) libraries | idk lol | abi_x86_32 |
| Add support for media-libs/alsa-lib (Advanced Linux Sound Architecture) | makedepends ⇗ on | alsa |
| Enable AMD's Advanced Media Framework support via media-video/amdgpu-pro-amf | makedepends ⇗ on | amf |
| Enable Adaptive Multi-Rate Audio support via media-libs/opencore-amr | makedepends ⇗ on | amr |
| Enable Adaptive Multi-Rate Audio encoding support via media-libs/vo-amrwbenc | makedepends ⇗ on | amrenc |
| Enable Blu-ray filesystems reading support via media-libs/libbluray | makedepends ⇗ on | bluray |
| Enable Bauer Stereo-to-Binaural filter support via media-libs/libbs2b | makedepends ⇗ on | bs2b |
| Enable bzip2 compression support | makedepends ⇗ on | bzip2 |
| Enable audio CDs reading via dev-libs/libcdio-paranoia | makedepends ⇗ on | cdio |
| Enable audio fingerprinting support via media-libs/chromaprint | makedepends ⇗ on | chromaprint |
| Builds libffmpeg.so to enable media playback in Chromium-based browsers like Opera and Vivaldi. | makedepends ⇗ on | chromium |
| Enable codec2 low bit rate speech codec support via media-libs/codec2 | makedepends ⇗ on | codec2 |
| Enable support for various GPU-accelerated filters using NVIDIA PTX compiled with llvm-core/clang | makedepends ⇗ on | cuda |
| Enable AV1 decoding support via media-libs/dav1d | makedepends ⇗ on | dav1d |
| Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally | makedepends ⇗ on | doc |
| Enable use of x11-libs/libdrm for various hardware accelerated functions and Kernel Mode Setting screen capture | makedepends ⇗ on | drm |
| Add support for DVDs | makedepends ⇗ on | dvd |
| Enable AAC (Advanced Audio Coding) encoding support via media-libs/fdk-aac in addition to FFmpeg's own implementation (warning: if USE=gpl is enabled, this produces a | makedepends ⇗ on | fdk |
| ) | makedepends ⇗ on | redistributable |
| Enable text-to-speech filter support via app-accessibility/flite | makedepends ⇗ on | flite |
| Support for configuring and customizing font access via media-libs/fontconfig | makedepends ⇗ on | fontconfig |
| Enable use of filters through media-plugins/frei0r-plugins | makedepends ⇗ on | frei0r |
| Enable Bidi support for the drawtext filter via dev-libs/fribidi | makedepends ⇗ on | fribidi |
| Enable using dev-libs/libgcrypt for rtmp(t)e support (not needed if using any of USE=gmp,librtmp,openssl), and for obtaining random bytes (not needed if USE=openssl) | makedepends ⇗ on | gcrypt |
| Enables various game music formats support via media-libs/game-music-emu | makedepends ⇗ on | gme |
| Add support for dev-libs/gmp (GNU MP library) | makedepends ⇗ on | gmp |
| Enable using net-libs/gnutls for TLS/HTTPS support and other minor functions (has no effect if USE=openssl is set) | makedepends ⇗ on | gnutls |
| Enable use of GPL licensed code, should be kept enabled unless LGPL binaries are needed | makedepends ⇗ on | gpl |
| Add support for the gsm lossy speech compression codec | makedepends ⇗ on | gsm |
| Enable FireWire DV/HDV input device support via media-libs/libiec61883 | makedepends ⇗ on | iec61883 |
| Enable FireWire/iLink IEEE1394 support (dv, camera, ...) | makedepends ⇗ on | ieee1394 |
| Add support for the JACK Audio Connection Kit | makedepends ⇗ on | jack |
| Support for JPEG 2000, a wavelet-based image compression format | makedepends ⇗ on | jpeg2k |
| Add JPEG XL image support | makedepends ⇗ on | jpegxl |
| Enable H.265/HEVC encoding support via media-libs/kvazaar | makedepends ⇗ on | kvazaar |
| Enable the ability to support ladspa plugins | makedepends ⇗ on | ladspa |
| Add support for MP3 encoding using LAME | makedepends ⇗ on | lame |
| Enable ICC profile support via media-libs/lcms | makedepends ⇗ on | lcms |
| Enable AV1 de/encoding via media-libs/libaom (warning: this is the reference implementation and is slower than the alternatives) | makedepends ⇗ on | libaom |
| Enable ARIB text and caption decoding via media-libs/aribb24 | makedepends ⇗ on | libaribb24 |
| SRT/SSA/ASS (SubRip / SubStation Alpha) subtitle support | makedepends ⇗ on | libass |
| Add support for colored ASCII-art graphics | makedepends ⇗ on | libcaca |
| Enable internet Low Bitrate Codec de/encoding support via media-libs/libilbc | makedepends ⇗ on | libilbc |
| Enable Low Complexity Communication Codec de/encoding support via media-sound/liblc3 | makedepends ⇗ on | liblc3 |
| Enable use of GPU-accelerated filters from media-libs/libplacebo | makedepends ⇗ on | libplacebo |
| Enable Real Time Messaging Protocol support via media-video/rtmpdump in addition to FFmpeg's own implementation | makedepends ⇗ on | librtmp |
| Enable use of the audio resampler from media-libs/soxr | makedepends ⇗ on | libsoxr |
| Enable Optical Character Recognition (OCR) filter support via app-text/tesseract | makedepends ⇗ on | libtesseract |
| Enable use of filters through media-libs/lv2 | makedepends ⇗ on | lv2 |
| Support for LZMA compression algorithm | makedepends ⇗ on | lzma |
| Add libmodplug support for playing SoundTracker-style music files | makedepends ⇗ on | modplug |
| Add support for NVIDIA Encoder/Decoder (NVENC/NVDEC) API for hardware accelerated encoding and decoding on NVIDIA cards (requires x11-drivers/nvidia-drivers) | makedepends ⇗ on | nvenc |
| Add support for the Open Audio Library | makedepends ⇗ on | openal |
| Enable OpenCL support (computation on GPU) | makedepends ⇗ on | opencl |
| Add support for OpenGL (3D graphics) | makedepends ⇗ on | opengl |
| Enable H.264 encoding support via media-libs/openh264 | makedepends ⇗ on | openh264 |
| Enable MPTM tracked music files decoding support via media-libs/libopenmpt | makedepends ⇗ on | openmpt |
| Enable using dev-libs/openssl for TLS/HTTPS support and other minor functions (USE=gnutls has no effect if set) | makedepends ⇗ on | openssl |
| Enable Opus audio codec support | makedepends ⇗ on | opus |
| Enable libpostproc video post processing library support (should not disable this unless need to disable USE=gpl) | makedepends ⇗ on | postproc |
| Add sound server support via media-libs/libpulse (may be PulseAudio or PipeWire) | makedepends ⇗ on | pulseaudio |
| Enable QR encode generation support via media-gfx/qrencode | makedepends ⇗ on | qrcode |
| Enable Intel Quick Sync Video support via media-libs/libvpl | makedepends ⇗ on | qsv |
| Enable QR decoding support via media-libs/quirc | makedepends ⇗ on | quirc |
| Enable AMQP stream support via net-libs/rabbitmq-c | makedepends ⇗ on | rabbitmq |
| Enable AV1 encoding support via media-video/rav1e | makedepends ⇗ on | rav1e |
| Enable time-stretching and pitch-shifting audio filter support via media-libs/rubberband | makedepends ⇗ on | rubberband |
| Add support for SAMBA (Windows File and Printer sharing) | makedepends ⇗ on | samba |
| Enable use of the Simple Direct Layer library (required for the ffplay command) | makedepends ⇗ on | sdl |
| Enable support for various GPU-accelerated filters using Vulkan compiled with media-libs/shaderc | makedepends ⇗ on | shaderc |
| Enable Snappy compression support via app-arch/snappy (required for Vidvox Hap encoder support) | makedepends ⇗ on | snappy |
| Enable audio output support via media-sound/sndio | makedepends ⇗ on | sndio |
| Apply additional patches for efficient playback on some SoCs (e.g. ARM, RISC-V) | makedepends ⇗ on | soc |
| Add support for the speex audio codec (used for speech) | makedepends ⇗ on | speex |
| Enable Secure Reliable Transport (SRT) support via net-libs/srt | makedepends ⇗ on | srt |
| Enable SSH/SFTP support via net-libs/libssh | makedepends ⇗ on | ssh |
| Add support for SVG (Scalable Vector Graphics) | makedepends ⇗ on | svg |
| : Enable AV1 encoding support via media-libs/svt-av1 | makedepends ⇗ on | svt |
| Add support for the Theora Video Compression Codec | makedepends ⇗ on | theora |
| Enable drawtext filter support via media-libs/freetype and media-libs/harfbuzz | makedepends ⇗ on | truetype |
| Enable MP2 encoding support via media-sound/twolame in addition to FFmpeg's own implementation | makedepends ⇗ on | twolame |
| Enable support for video4linux (using linux-headers or userspace libv4l libraries) | makedepends ⇗ on | v4l |
| Enable Video Acceleration API for hardware decoding | makedepends ⇗ on | vaapi |
| Enable the Video Decode and Presentation API for Unix acceleration interface | makedepends ⇗ on | vdpau |
| : Verify upstream signatures on distfiles | makedepends ⇗ on | verify |
| Enable video stabilization filter support via media-libs/vidstab | makedepends ⇗ on | vidstab |
| Enable Netflix's perceptual video quality assessment filter support via media-libs/libvmaf | makedepends ⇗ on | vmaf |
| Add support for the OggVorbis audio codec | makedepends ⇗ on | vorbis |
| Enable VP8 and VP9 de/encoding support via media-libs/libvpx in addition to FFmpeg's own implementation (for decoding only) | makedepends ⇗ on | vpx |
| Add support for 3D graphics and computing via the Vulkan cross-platform API | makedepends ⇗ on | vulkan |
| Add support for the WebP image format | makedepends ⇗ on | webp |
| Enable h264 encoding using x264 | makedepends ⇗ on | x264 |
| Enable H.265/HEVC encoding support via media-libs/x265 | makedepends ⇗ on | x265 |
| Enable Dynamic Adaptive Streaming over HTTP (DASH) stream support using dev-libs/libxml2 | makedepends ⇗ on | xml |
| Add support for xvid.org's open-source mpeg-4 codec | makedepends ⇗ on | xvid |
| Enable ZMQ command receiver filter and streaming support via net-libs/zeromq | makedepends ⇗ on | zeromq |
| Enable zscale filter support using media-libs/zimg | makedepends ⇗ on | zimg |
| Add support for zlib compression | makedepends ⇗ on | zlib |
| Enable teletext decoding support via media-libs/zvbi | makedepends ⇗ on | zvbi |
/etc/portage/package.use/ffmpeg
media-video/ffmpeg cuda fontconfig gmp ladspa libaom libass bluray bs2b libdrm fribidi glslang gsm iec61883 jpegxl modplug mp3 opus libplacebo rav1e svg rubberband snappy soxr speex srt ssh svt-av1 theora libv4l v4l vorbis webp x264 x265 libxml2 xvid zimg nvdec nvenc opencl opengl vulkan sdl lame -bluray
I also do video editing
/etc/portage/package.use/kdenlive
media-libs/libsdl2 gles2
media-libs/mlt sdl frei0r ffmpeg qt6 xml
kde-frameworks/sonnet qml
dev-qt/qt5compat qml icu
media-libs/opencv contrib contribdnn qt6
dev-qt/qtbase libproxy icu #dafuq
kde-frameworks/kconfig qml
dev-qt/qtgui egl
sys-auth/polkit-qt qt6
kde-frameworks/prison qml
I rarely use OBS for screen recording, since it is heavy
/etc/portage/package.accept_keywords/screen-recording
media-video/obs-studio ~amd64
gui-apps/wf-recorder ~amd64
subtitles
/etc/portage/package.use/aegisub
dev-lang/luajit lua52compat
dev-libs/boost icu