diff --git a/ports-mgmt/portlint/src/portlint.pl b/ports-mgmt/portlint/src/portlint.pl --- a/ports-mgmt/portlint/src/portlint.pl +++ b/ports-mgmt/portlint/src/portlint.pl @@ -154,13 +154,14 @@ # get make vars my @varlist = qw( - PORTNAME PORTVERSION PORTREVISION PORTEPOCH PKGNAME PKGNAMEPREFIX - PKGNAMESUFFIX DISTVERSIONPREFIX DISTVERSION DISTVERSIONSUFFIX - DISTNAME DISTFILES CATEGORIES MASTERDIR MAINTAINER MASTER_SITES - WRKDIR WRKSRC NO_WRKSUBDIR SCRIPTDIR FILESDIR + PORTNAME PORTVERSION PORTREVISION PORTEPOCH PKGNAME PKGBASE + PKGNAMEPREFIX PKGNAMESUFFIX DISTVERSIONPREFIX DISTVERSION + DISTVERSIONSUFFIX DISTNAME DISTFILES CATEGORIES MASTERDIR MAINTAINER + MASTER_SITES WRKDIR WRKSRC NO_WRKSUBDIR SCRIPTDIR FILESDIR PKGDIR COMMENT DESCR PLIST PKGCATEGORY PKGINSTALL PKGDEINSTALL PKGREQ PKGMESSAGE DISTINFO_FILE .CURDIR USE_LDCONFIG USE_AUTOTOOLS - USE_GNOME USE_PERL5 USE_QT USE_QT5 INDEXFILE PKGORIGIN CONFLICTS PKG_VERSION + USE_GNOME USE_PERL5 USE_QT USE_QT5 INDEXFILE PKGORIGIN + CONFLICTS CONFLICTS_BUILD CONFLICTS_INSTALL PKG_VERSION PLIST_FILES PLIST_DIRS PORTDOCS PORTEXAMPLES OPTIONS_DEFINE OPTIONS_RADIO OPTIONS_SINGLE OPTIONS_MULTI OPTIONS_GROUP OPTIONS_SUB INSTALLS_OMF USE_RC_SUBR USES DIST_SUBDIR @@ -1378,6 +1379,7 @@ my $docsused = 0; my $optused = 0; my $desktop_entries = ''; + my $conflicts = ""; my $masterdir = $makevar{MASTERDIR}; if ($masterdir ne '' && $masterdir ne $makevar{'.CURDIR'}) { @@ -2989,14 +2991,27 @@ $pkg_version = $makevar{PKG_VERSION}; - if ($makevar{CONFLICTS}) { + $conflicts = $makevar{CONFLICTS}; + if ($makevar{CONFLICTS_BUILD}) { + $conflicts .= " " if $conflicts; + $conflicts .= $makevar{CONFLICTS_BUILD}; + } + if ($makevar{CONFLICTS_INSTALL}) { + $conflicts .= " " if $conflicts; + $conflicts .= $makevar{CONFLICTS_INSTALL}; + } + if ($conflicts) { print "OK: checking CONFLICTS.\n" if ($verbose); - foreach my $conflict (split ' ', $makevar{CONFLICTS}) { - `$pkg_version -T '$makevar{PKGNAME}' '$conflict'`; - my $selfconflict = !$?; - if ($selfconflict) { - &perror("FATAL", "", -1, "Package conflicts with itself. ". - "You should remove \"$conflict\" from CONFLICTS."); + my %seen; + foreach my $conflict (split ' ', $conflicts) { + if (not $seen{$conflict}) { + `$pkg_version -T '$makevar{PKGBASE}' '$conflict' || $pkg_version -T '$makevar{PKGNAME}' '$conflict'`; + my $selfconflict = !$?; + if ($selfconflict) { + &perror("FATAL", "", -1, "Package conflicts with itself. ". + "You should remove \"$conflict\" from CONFLICTS."); + } + $seen{$conflict} = 1; } } }