Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Mar 2021 16:57:25 GMT
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: a2aac2f5e564 - main - pkg(7): when bootstrapping first search for pkg.bsd file then pkg.txz
Message-ID:  <202103151657.12FGvPPj003593@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by bapt:

URL: https://cgit.FreeBSD.org/src/commit/?id=a2aac2f5e5642740507a3cadb98046f3dd434ce4

commit a2aac2f5e5642740507a3cadb98046f3dd434ce4
Author:     Baptiste Daroussin <bapt@FreeBSD.org>
AuthorDate: 2021-03-12 17:36:30 +0000
Commit:     Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2021-03-15 16:52:22 +0000

    pkg(7): when bootstrapping first search for pkg.bsd file then pkg.txz
    
    The package extension is going to be changed to .bsd to be among other
    things resilient to the change of compression format used and reduce
    the impact of all third party tool of that change.
    
    Ensure the bootstrap knows about it
    
    Reviewed by:    manu
    Differential revision:  https://reviews.freebsd.org/D29232
---
 usr.sbin/pkg/pkg.c | 43 +++++++++++++++++++++++++++++--------------
 1 file changed, 29 insertions(+), 14 deletions(-)

diff --git a/usr.sbin/pkg/pkg.c b/usr.sbin/pkg/pkg.c
index 1f787e3dd246..48b92049b869 100644
--- a/usr.sbin/pkg/pkg.c
+++ b/usr.sbin/pkg/pkg.c
@@ -84,6 +84,12 @@ struct fingerprint {
 	STAILQ_ENTRY(fingerprint) next;
 };
 
+static const char *bootstrap_names []  = {
+	"pkg.bsd",
+	"pkg.txz",
+	NULL
+};
+
 STAILQ_HEAD(fingerprint_list, fingerprint);
 
 static int
@@ -836,6 +842,7 @@ bootstrap_pkg(bool force, const char *fetchOpts)
 	const char *packagesite;
 	const char *signature_type;
 	char pkgstatic[MAXPATHLEN];
+	const char *bootstrap_name;
 
 	fd_sig = -1;
 	ret = -1;
@@ -858,22 +865,29 @@ bootstrap_pkg(bool force, const char *fetchOpts)
 	if (strncmp(URL_SCHEME_PREFIX, packagesite,
 	    strlen(URL_SCHEME_PREFIX)) == 0)
 		packagesite += strlen(URL_SCHEME_PREFIX);
-	snprintf(url, MAXPATHLEN, "%s/Latest/pkg.txz", packagesite);
-
-	snprintf(tmppkg, MAXPATHLEN, "%s/pkg.txz.XXXXXX",
-	    getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP);
-
-	if ((fd_pkg = fetch_to_fd(url, tmppkg, fetchOpts)) == -1)
+	for (int j = 0; bootstrap_names[j] != NULL; j++) {
+		bootstrap_name = bootstrap_names[j];
+
+		snprintf(url, MAXPATHLEN, "%s/Latest/%s", packagesite, bootstrap_name);
+		snprintf(tmppkg, MAXPATHLEN, "%s/%s.XXXXXX",
+		    getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP,
+		    bootstrap_name);
+		if ((fd_pkg = fetch_to_fd(url, tmppkg, fetchOpts)) != -1)
+			break;
+		bootstrap_name = NULL;
+	}
+	if (bootstrap_name == NULL)
 		goto fetchfail;
 
 	if (signature_type != NULL &&
 	    strcasecmp(signature_type, "NONE") != 0) {
 		if (strcasecmp(signature_type, "FINGERPRINTS") == 0) {
 
-			snprintf(tmpsig, MAXPATHLEN, "%s/pkg.txz.sig.XXXXXX",
-			    getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP);
-			snprintf(url, MAXPATHLEN, "%s/Latest/pkg.txz.sig",
-			    packagesite);
+			snprintf(tmpsig, MAXPATHLEN, "%s/%s.sig.XXXXXX",
+			    getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP,
+			    bootstrap_name);
+			snprintf(url, MAXPATHLEN, "%s/Latest/%s.sig",
+			    packagesite, bootstrap_name);
 
 			if ((fd_sig = fetch_to_fd(url, tmpsig, fetchOpts)) == -1) {
 				fprintf(stderr, "Signature for pkg not "
@@ -886,10 +900,11 @@ bootstrap_pkg(bool force, const char *fetchOpts)
 		} else if (strcasecmp(signature_type, "PUBKEY") == 0) {
 
 			snprintf(tmpsig, MAXPATHLEN,
-			    "%s/pkg.txz.pubkeysig.XXXXXX",
-			    getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP);
-			snprintf(url, MAXPATHLEN, "%s/Latest/pkg.txz.pubkeysig",
-			    packagesite);
+			    "%s/%s.pubkeysig.XXXXXX",
+			    getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP,
+			    bootstrap_name);
+			snprintf(url, MAXPATHLEN, "%s/Latest/%s.pubkeysig",
+			    packagesite, bootstrap_name);
 
 			if ((fd_sig = fetch_to_fd(url, tmpsig, fetchOpts)) == -1) {
 				fprintf(stderr, "Signature for pkg not "



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202103151657.12FGvPPj003593>