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
This commit is contained in:
parent
b55c0d5f56
commit
a2aac2f5e5
@ -84,6 +84,12 @@ struct fingerprint {
|
|||||||
STAILQ_ENTRY(fingerprint) next;
|
STAILQ_ENTRY(fingerprint) next;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char *bootstrap_names [] = {
|
||||||
|
"pkg.bsd",
|
||||||
|
"pkg.txz",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
STAILQ_HEAD(fingerprint_list, fingerprint);
|
STAILQ_HEAD(fingerprint_list, fingerprint);
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -836,6 +842,7 @@ bootstrap_pkg(bool force, const char *fetchOpts)
|
|||||||
const char *packagesite;
|
const char *packagesite;
|
||||||
const char *signature_type;
|
const char *signature_type;
|
||||||
char pkgstatic[MAXPATHLEN];
|
char pkgstatic[MAXPATHLEN];
|
||||||
|
const char *bootstrap_name;
|
||||||
|
|
||||||
fd_sig = -1;
|
fd_sig = -1;
|
||||||
ret = -1;
|
ret = -1;
|
||||||
@ -858,22 +865,29 @@ bootstrap_pkg(bool force, const char *fetchOpts)
|
|||||||
if (strncmp(URL_SCHEME_PREFIX, packagesite,
|
if (strncmp(URL_SCHEME_PREFIX, packagesite,
|
||||||
strlen(URL_SCHEME_PREFIX)) == 0)
|
strlen(URL_SCHEME_PREFIX)) == 0)
|
||||||
packagesite += strlen(URL_SCHEME_PREFIX);
|
packagesite += strlen(URL_SCHEME_PREFIX);
|
||||||
snprintf(url, MAXPATHLEN, "%s/Latest/pkg.txz", packagesite);
|
for (int j = 0; bootstrap_names[j] != NULL; j++) {
|
||||||
|
bootstrap_name = bootstrap_names[j];
|
||||||
|
|
||||||
snprintf(tmppkg, MAXPATHLEN, "%s/pkg.txz.XXXXXX",
|
snprintf(url, MAXPATHLEN, "%s/Latest/%s", packagesite, bootstrap_name);
|
||||||
getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP);
|
snprintf(tmppkg, MAXPATHLEN, "%s/%s.XXXXXX",
|
||||||
|
getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP,
|
||||||
if ((fd_pkg = fetch_to_fd(url, tmppkg, fetchOpts)) == -1)
|
bootstrap_name);
|
||||||
|
if ((fd_pkg = fetch_to_fd(url, tmppkg, fetchOpts)) != -1)
|
||||||
|
break;
|
||||||
|
bootstrap_name = NULL;
|
||||||
|
}
|
||||||
|
if (bootstrap_name == NULL)
|
||||||
goto fetchfail;
|
goto fetchfail;
|
||||||
|
|
||||||
if (signature_type != NULL &&
|
if (signature_type != NULL &&
|
||||||
strcasecmp(signature_type, "NONE") != 0) {
|
strcasecmp(signature_type, "NONE") != 0) {
|
||||||
if (strcasecmp(signature_type, "FINGERPRINTS") == 0) {
|
if (strcasecmp(signature_type, "FINGERPRINTS") == 0) {
|
||||||
|
|
||||||
snprintf(tmpsig, MAXPATHLEN, "%s/pkg.txz.sig.XXXXXX",
|
snprintf(tmpsig, MAXPATHLEN, "%s/%s.sig.XXXXXX",
|
||||||
getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP);
|
getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP,
|
||||||
snprintf(url, MAXPATHLEN, "%s/Latest/pkg.txz.sig",
|
bootstrap_name);
|
||||||
packagesite);
|
snprintf(url, MAXPATHLEN, "%s/Latest/%s.sig",
|
||||||
|
packagesite, bootstrap_name);
|
||||||
|
|
||||||
if ((fd_sig = fetch_to_fd(url, tmpsig, fetchOpts)) == -1) {
|
if ((fd_sig = fetch_to_fd(url, tmpsig, fetchOpts)) == -1) {
|
||||||
fprintf(stderr, "Signature for pkg not "
|
fprintf(stderr, "Signature for pkg not "
|
||||||
@ -886,10 +900,11 @@ bootstrap_pkg(bool force, const char *fetchOpts)
|
|||||||
} else if (strcasecmp(signature_type, "PUBKEY") == 0) {
|
} else if (strcasecmp(signature_type, "PUBKEY") == 0) {
|
||||||
|
|
||||||
snprintf(tmpsig, MAXPATHLEN,
|
snprintf(tmpsig, MAXPATHLEN,
|
||||||
"%s/pkg.txz.pubkeysig.XXXXXX",
|
"%s/%s.pubkeysig.XXXXXX",
|
||||||
getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP);
|
getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP,
|
||||||
snprintf(url, MAXPATHLEN, "%s/Latest/pkg.txz.pubkeysig",
|
bootstrap_name);
|
||||||
packagesite);
|
snprintf(url, MAXPATHLEN, "%s/Latest/%s.pubkeysig",
|
||||||
|
packagesite, bootstrap_name);
|
||||||
|
|
||||||
if ((fd_sig = fetch_to_fd(url, tmpsig, fetchOpts)) == -1) {
|
if ((fd_sig = fetch_to_fd(url, tmpsig, fetchOpts)) == -1) {
|
||||||
fprintf(stderr, "Signature for pkg not "
|
fprintf(stderr, "Signature for pkg not "
|
||||||
|
Loading…
Reference in New Issue
Block a user