diff --git a/abuild.in b/abuild.in index 9951dba..3e41902 100644 --- a/abuild.in +++ b/abuild.in @@ -1299,6 +1299,13 @@ prepare_command_provides() { if ! [ -x "$i" ] || ! [ -f "$i" ]; then continue fi + # exclude any provides: lines for commands that has '@' because '@' + # is used as seperator between command name and repository. This + # avoids potential conflicts + # ref: https://gitlab.alpinelinux.org/alpine/abuild/-/issues/10074 + case "$i" in + *@*) continue;; + esac local f=${i##*/} echo $f >> "$controldir"/.provides-command done diff --git a/tests/abuild_test b/tests/abuild_test index 7e500d1..f358e56 100755 --- a/tests/abuild_test +++ b/tests/abuild_test @@ -1056,6 +1056,7 @@ abuild_command_provides_body() { mkdir -p "\$pkgdir/usr/bin" printf "%s\n" '#!/bin/sh' >"\$pkgdir/usr/bin/foo" chmod +x "\$pkgdir/usr/bin/foo" + cp -a "\$pkgdir/usr/bin/foo" "\$pkgdir/usr/bin/foo@" mkdir -p "\$pkgdir/usr/bin/dir/" } EOF @@ -1063,6 +1064,7 @@ abuild_command_provides_body() { atf_check \ -o match:"provides = cmd:foo=1.0-r0" \ + -o not-match:"provides = cmd:foo@=1.0-r0" \ -o not-match:"provides = cmd:dir=1.0-r0" \ grep '^provides = ' pkg/.control.testprovides/.PKGINFO }