db: use per-pkg architecture (if available) to form download url
Allows one arch index files to refer to other arch packages. Mostly useful with noarch packages, but could be used e.g. to ship build with some of packages optimized for specific cpu generation and share most packages with the standard build.cute-signatures
parent
6ea922cc87
commit
f5674b9582
|
@ -589,16 +589,20 @@ int apk_repo_format_cache_index(apk_blob_t to, struct apk_repository *repo)
|
||||||
int apk_repo_format_real_url(struct apk_database *db, struct apk_repository *repo,
|
int apk_repo_format_real_url(struct apk_database *db, struct apk_repository *repo,
|
||||||
struct apk_package *pkg, char *buf, size_t len)
|
struct apk_package *pkg, char *buf, size_t len)
|
||||||
{
|
{
|
||||||
|
apk_blob_t arch;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
|
if (pkg && pkg->arch) arch = *pkg->arch;
|
||||||
|
else arch = *db->arch;
|
||||||
|
|
||||||
if (pkg != NULL)
|
if (pkg != NULL)
|
||||||
r = snprintf(buf, len, "%s%s" BLOB_FMT "/" PKG_FILE_FMT,
|
r = snprintf(buf, len, "%s%s" BLOB_FMT "/" PKG_FILE_FMT,
|
||||||
repo->url, repo->url[strlen(repo->url)-1] == '/' ? "" : "/",
|
repo->url, repo->url[strlen(repo->url)-1] == '/' ? "" : "/",
|
||||||
BLOB_PRINTF(*db->arch), PKG_FILE_PRINTF(pkg));
|
BLOB_PRINTF(arch), PKG_FILE_PRINTF(pkg));
|
||||||
else
|
else
|
||||||
r = snprintf(buf, len, "%s%s" BLOB_FMT "/%s",
|
r = snprintf(buf, len, "%s%s" BLOB_FMT "/%s",
|
||||||
repo->url, repo->url[strlen(repo->url)-1] == '/' ? "" : "/",
|
repo->url, repo->url[strlen(repo->url)-1] == '/' ? "" : "/",
|
||||||
BLOB_PRINTF(*db->arch), apkindex_tar_gz);
|
BLOB_PRINTF(arch), apkindex_tar_gz);
|
||||||
if (r >= len)
|
if (r >= len)
|
||||||
return -ENOBUFS;
|
return -ENOBUFS;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue