ivtv-utils
- Path: arch/maintained/ivtv-utils
- User (Andreas Baumann) is the upstream AUR maintainer.
2026-08-20: v4l-utils conflict investigated – initial “zero overlap” conclusion was wrong, fixed by renaming instead
- User asked to check why this declares
conflicts=('v4l-utils') and whether
it’s a real file collision or an overly broad declaration.
- The PKGBUILD’s own
package() had a clue, half-forgotten in a comment:
# Resolve conflict with v4l-utils / rm -f "${pkgdir}"/usr/bin/v4l2-ctl –
both packages used to ship a v4l2-ctl binary; ivtv-utils’ own copy was
removed from its package years ago specifically to fix that, but the blanket
conflicts=() declaration was never removed afterward – suggesting it might
now be stale.
- First check was wrong. Built the package, extracted its file list, diffed
against
v4l-utils’s (809 files) via comm -12 and got zero overlap – but
tar tf emits paths without a leading / (usr/bin/...) while
pacman -Ql | awk '{print $2}' emits them with one (/usr/bin/...), so the
comparison silently matched nothing regardless of real content. Removed
conflicts=() based on this false negative and published (pkgrel 10) –
broke real installs: user reported
ivtv-utils: /usr/bin/ivtv-ctl exists in filesystem (owned by v4l-utils).
v4l-utils has grown its own same-named ivtv-ctl in the years since the
original v4l2-ctl fix – a genuine, new collision, not covered by that old
fix.
- Redid the comparison with matching path formats (prefixed a
/ on ivtv-utils’
side) – confirmed exactly one real overlap: /usr/bin/ivtv-ctl. Unlike
v4l2-ctl (a generic tool ivtv-utils didn’t need to duplicate), ivtv-ctl is
this package’s own signature tool – dropping it isn’t a good option.
- Final fix (per user’s suggestion): rename ivtv-utils’ own binary to
ivtv-utils-ctl in package() rather than keep the blanket
conflicts=('v4l-utils') or drop the tool – both packages can now install
side by side. Verified in the built package: usr/bin/ivtv-utils-ctl
present, usr/bin/ivtv-ctl gone.
- Also extended
arch=('x86_64' 'i686' 'pentium4') (plain C, no arch-specific
code, built cleanly on all three on the first try throughout). pkgrel
history: 9 -> 10 (conflict removed, WRONG, briefly live) -> 11
(conflict restored, superseded before publish) -> 12 (rename fix,
current/correct).
- Lesson: when diffing file lists from two different sources (
tar tf vs
pacman -Ql), normalize path format explicitly before comparing – a
leading-slash mismatch produces a silent, confident “zero overlap” false
negative rather than an obvious error.