xbps-repo: if fetching info from remote repo for the 'show' and 'show-files'
targets and the binary package exists in cachedir, use it. --HG-- extra : convert_revision : xtraeme%40gmail.com-20091128022129-y6y2tr0vtvy2w745
This commit is contained in:
parent
21bea723f4
commit
f3d2481c31
@ -121,7 +121,7 @@ download_package_list(prop_object_iterator_t iter)
|
||||
"filename-sha256", &sha256))
|
||||
return errno;
|
||||
|
||||
lbinfile = xbps_get_binpkg_local_path(obj);
|
||||
lbinfile = xbps_get_binpkg_local_path(obj, repoloc);
|
||||
if (lbinfile == NULL)
|
||||
return errno;
|
||||
|
||||
|
@ -66,8 +66,8 @@ Please note that all targets are *case insensitive*.
|
||||
Shows information about binary package 'pkgname'. This will print
|
||||
the size it takes in filesystem, description, maintainer, architecture
|
||||
and other information. The first repository in the pool wins. *NOTE:
|
||||
if a remote repository is the winner it will have to fetch some info
|
||||
from it.*
|
||||
if a remote repository is the winner and binary package is not available
|
||||
in cachedir, it will fetch remotely and __on-the-fly__ the info*.
|
||||
|
||||
*show-deps 'pkgname'*::
|
||||
Shows run time dependencies for binary package 'pkgname'. The first
|
||||
@ -75,8 +75,10 @@ Please note that all targets are *case insensitive*.
|
||||
|
||||
*show-files 'pkgname'*::
|
||||
Shows the file list for a binary package 'pkgname' by searching it
|
||||
in repository pool. *NOTE: if a remote repository is the winner it will
|
||||
have to fetch some info from it.*
|
||||
in repository pool. The first repository in the pool wins. *NOTE:
|
||||
if a remote repository is the winner and binary package is not
|
||||
available in `cachedir`, it will fetch remotely and __on-the-fly__
|
||||
the info*.
|
||||
|
||||
*sync*::
|
||||
Syncs the package index file for all registered remote repositories.
|
||||
|
@ -238,7 +238,8 @@ int SYMEXPORT xbps_check_file_hash(const char *, const char *);
|
||||
int SYMEXPORT xbps_check_is_installed_pkg(const char *);
|
||||
bool SYMEXPORT xbps_check_is_installed_pkgname(const char *);
|
||||
bool SYMEXPORT xbps_check_is_repo_string_remote(const char *);
|
||||
char SYMEXPORT *xbps_get_binpkg_local_path(prop_dictionary_t);
|
||||
char SYMEXPORT
|
||||
*xbps_get_binpkg_local_path(prop_dictionary_t, const char *);
|
||||
char SYMEXPORT *xbps_get_pkg_index_plist(const char *);
|
||||
char SYMEXPORT *xbps_get_pkg_name(const char *);
|
||||
char SYMEXPORT *xbps_get_pkgdep_name(const char *);
|
||||
|
@ -136,10 +136,30 @@ open_archive(const char *url)
|
||||
return a;
|
||||
}
|
||||
|
||||
static char *
|
||||
binpkg_in_cachedir(prop_dictionary_t d, const char *uri)
|
||||
{
|
||||
char *lbinfile;
|
||||
|
||||
lbinfile = xbps_get_binpkg_local_path(d, uri);
|
||||
if (lbinfile == NULL)
|
||||
return NULL;
|
||||
|
||||
if (access(lbinfile, R_OK) == 0)
|
||||
return lbinfile;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char SYMEXPORT *
|
||||
xbps_get_path_from_pkg_dict_repo(prop_dictionary_t d, const char *uri)
|
||||
{
|
||||
const char *arch, *filen;
|
||||
char *path = NULL;
|
||||
|
||||
path = binpkg_in_cachedir(d, uri);
|
||||
if (path)
|
||||
return path;
|
||||
|
||||
if (!prop_dictionary_get_cstring_nocopy(d, "architecture", &arch))
|
||||
return NULL;
|
||||
|
@ -39,7 +39,7 @@ static void set_extract_flags(int *);
|
||||
int SYMEXPORT
|
||||
xbps_unpack_binary_pkg(prop_dictionary_t pkg, bool essential)
|
||||
{
|
||||
const char *pkgname;
|
||||
const char *pkgname, *repoloc;
|
||||
struct archive *ar = NULL;
|
||||
char *binfile = NULL;
|
||||
int pkg_fd, rv = 0;
|
||||
@ -48,8 +48,9 @@ xbps_unpack_binary_pkg(prop_dictionary_t pkg, bool essential)
|
||||
|
||||
if (!prop_dictionary_get_cstring_nocopy(pkg, "pkgname", &pkgname))
|
||||
return errno;
|
||||
|
||||
binfile = xbps_get_binpkg_local_path(pkg);
|
||||
if (!prop_dictionary_get_cstring_nocopy(pkg, "repository", &repoloc))
|
||||
return errno;
|
||||
binfile = xbps_get_binpkg_local_path(pkg, repoloc);
|
||||
if (binfile == NULL)
|
||||
return EINVAL;
|
||||
|
||||
|
@ -305,12 +305,10 @@ xbps_get_pkg_index_plist(const char *uri)
|
||||
}
|
||||
|
||||
char SYMEXPORT *
|
||||
xbps_get_binpkg_local_path(prop_dictionary_t pkg)
|
||||
xbps_get_binpkg_local_path(prop_dictionary_t pkg, const char *repoloc)
|
||||
{
|
||||
const char *repoloc, *filen, *arch, *cdir;
|
||||
const char *filen, *arch, *cdir;
|
||||
|
||||
if (!prop_dictionary_get_cstring_nocopy(pkg, "repository", &repoloc))
|
||||
return NULL;
|
||||
if (!prop_dictionary_get_cstring_nocopy(pkg, "filename", &filen))
|
||||
return NULL;
|
||||
if (!prop_dictionary_get_cstring_nocopy(pkg, "architecture", &arch))
|
||||
|
Loading…
Reference in New Issue
Block a user