diff --git a/build/spec.c b/build/spec.c index 87eb242c99..6c7ebfa7e0 100644 --- a/build/spec.c +++ b/build/spec.c @@ -312,15 +312,19 @@ rpmds rpmSpecDS(rpmSpec spec, rpmTagVal tag) rpmps rpmSpecCheckDeps(rpmts ts, rpmSpec spec) { + /* Make a temporary immutable header to appease rpmtsAddInstallElement() */ + Header h = headerReload(headerCopy(rpmSpecSourceHeader(spec)), + RPMTAG_HEADERIMMUTABLE); rpmps probs = NULL; rpmtsEmpty(ts); - rpmtsAddInstallElement(ts, rpmSpecSourceHeader(spec), NULL, 0, NULL); + rpmtsAddInstallElement(ts, h, NULL, 0, NULL); rpmtsCheck(ts); probs = rpmtsProblems(ts); rpmtsEmpty(ts); + headerFree(h); return probs; } diff --git a/lib/depends.c b/lib/depends.c index f1810c94a6..a0c6799205 100644 --- a/lib/depends.c +++ b/lib/depends.c @@ -392,6 +392,12 @@ static int addPackage(rpmts ts, Header h, goto exit; } + /* Installing v3 packages is no longer supported */ + if (!headerIsEntry(h, RPMTAG_HEADERIMMUTABLE)) { + ec = 3; + goto exit; + } + /* Source packages are never "upgraded" */ if (isSource) op = RPMTE_INSTALL; diff --git a/lib/rpminstall.c b/lib/rpminstall.c index dc643b595e..16a8c42588 100644 --- a/lib/rpminstall.c +++ b/lib/rpminstall.c @@ -635,6 +635,12 @@ int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia, ARGV_t fileArgv) eiu->numFailed++; goto exit; break; + case 3: + rpmlog(RPMLOG_ERR, + _("package format not supported: %s\n"), *eiu->fnp); + eiu->numFailed++; + goto exit; + break; default: eiu->numFailed++; goto exit; diff --git a/tests/rpmpkgfmt.at b/tests/rpmpkgfmt.at index 4520a2f4c0..eacfbe4613 100644 --- a/tests/rpmpkgfmt.at +++ b/tests/rpmpkgfmt.at @@ -63,15 +63,15 @@ runroot rpm -U --nodeps /data/RPMS/hello-1.0-1.x86_64.rpm-v3 [1], [], [warning: RPM v3 packages are deprecated: hello-1.0-1.x86_64 - package hello-1.0-1.x86_64 does not verify: no digest +error: package format not supported: /data/RPMS/hello-1.0-1.x86_64.rpm-v3 ]) RPMTEST_CHECK([ runroot rpm -U --nodeps --noverify /data/RPMS/hello-1.0-1.x86_64.rpm-v3 ], -[0], +[1], [], [warning: RPM v3 packages are deprecated: hello-1.0-1.x86_64 -warning: RPM v3 packages are deprecated: hello-1.0-1.x86_64 +error: package format not supported: /data/RPMS/hello-1.0-1.x86_64.rpm-v3 ]) RPMTEST_CLEANUP