Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 188756 Details for
Bug 266455
app-portage/portage-utils does not fetch dependencies
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Fetch binary packages recursively
pkgfetch-recursive.patch (text/plain), 6.46 KB, created by
Zdenek Behan
on 2009-04-18 01:26:53 UTC
(
hide
)
Description:
Fetch binary packages recursively
Filename:
MIME Type:
Creator:
Zdenek Behan
Created:
2009-04-18 01:26:53 UTC
Size:
6.46 KB
patch
obsolete
>Index: qmerge.c >=================================================================== >RCS file: /var/cvsroot/gentoo-projects/portage-utils/qmerge.c,v >retrieving revision 1.82 >diff -u -r1.82 qmerge.c >--- qmerge.c 17 Apr 2009 14:44:55 -0000 1.82 >+++ qmerge.c 18 Apr 2009 01:24:37 -0000 >@@ -98,10 +98,11 @@ > void fetch(const char *, const char *); > void qmerge_initialize(const char *); > char *best_version(const char *, const char *); >+void pkg_fetch(int, depend_atom *, struct pkg_t *); > void pkg_merge(int, depend_atom *, struct pkg_t *); > int pkg_unmerge(char *, char *); > int unlink_empty(char *); >-void pkg_fetch(int, char **, struct pkg_t *); >+void pkg_process(int, char **, struct pkg_t *); > void print_Pkg(int, struct pkg_t *); > int parse_packages(const char *, int, char **); > int config_protected(const char *, int, char **); >@@ -509,7 +510,7 @@ > IF_DEBUG(fprintf(stderr, "+Installed: %s\n", p)); > if (strlen(p) < 1) > if (!((strcmp(pkg->PF, subpkg->PF) == 0) && (strcmp(pkg->CATEGORY, subpkg->CATEGORY) == 0))) >- pkg_merge(level+1, ratom, subpkg); >+ pkg_fetch(level+1, ratom, subpkg); > > atom_implode(subatom); > atom_implode(ratom); >@@ -1004,23 +1005,18 @@ > return ret; > } > >-void pkg_fetch(int argc, char **argv, struct pkg_t *pkg) >+void pkg_process(int argc, char **argv, struct pkg_t *pkg) > { > depend_atom *atom; >- char savecwd[_POSIX_PATH_MAX]; >- char buf[255], str[255]; >+ char buf[255]; > int i; > > memset(buf, 0, sizeof(buf)); >- memset(str, 0, sizeof(str)); > > snprintf(buf, sizeof(buf), "%s/%s", pkg->CATEGORY, pkg->PF); > if ((atom = atom_explode(buf)) == NULL) > errf("%s/%s is not a valid atom", pkg->CATEGORY, pkg->PF); > >- snprintf(str, sizeof(str), "%s/%s", pkgdir, pkg->CATEGORY); >- mkdir(str, 0755); >- > for (i = 1; i < argc; i++) { > if (argv[i][0] == '-') > continue; >@@ -1029,79 +1025,93 @@ > if (match_pkg(argv[i], pkg) < 1) > continue; > >- /* qmerge -pv patch */ >- if (pretend) { >- int level = 0; >- if (!install) install++; >- /* qprint_tree_node(level, atom, pkg); */ >- pkg_merge(level, atom, pkg); >- continue; >- } >+ pkg_fetch(0, atom, pkg); >+ } >+ /* free the atom */ >+ atom_implode(atom); >+} > >- /* check to see if file exists and it's checksum matches */ >- snprintf(buf, sizeof(buf), "%s/%s/%s.tbz2", pkgdir, pkg->CATEGORY, pkg->PF); >- unlink_empty(buf); >- >- if ((force_download) && (access(buf, R_OK) == 0) && ((pkg->SHA1[0]) || (pkg->MD5[0]))) { >- if ((pkg_verify_checksums(buf, pkg, atom, 0, 0)) != 0) >- unlink(buf); >- } >- if (access(buf, R_OK) == 0) { >- if ((!pkg->SHA1[0]) && (!pkg->MD5[0])) { >- warn("No checksum data for %s", buf); >- continue; >- } else { >- if ((pkg_verify_checksums(buf, pkg, atom, qmerge_strict, 1)) == 0) { >- pkg_merge(0, atom, pkg); >- continue; >- } >- } >- } >- if (verbose) >- printf("Fetching %s/%s.tbz2\n", atom->CATEGORY, pkg->PF); >+void pkg_fetch(int level, depend_atom *atom, struct pkg_t *pkg) >+{ >+ char savecwd[_POSIX_PATH_MAX]; >+ char buf[255], str[255]; >+ memset(str, 0, sizeof(str)); > >- /* fetch the package */ >- /* Check CATEGORY first */ >- if (!old_repo) { >- snprintf(buf, sizeof(buf), "%s/%s.tbz2", atom->CATEGORY, pkg->PF); >- fetch(str, buf); >- } >- snprintf(buf, sizeof(buf), "%s/%s/%s.tbz2", pkgdir, atom->CATEGORY, pkg->PF); >- if (access(buf, R_OK) != 0) { >- snprintf(buf, sizeof(buf), "%s.tbz2", pkg->PF); >- fetch(str, buf); >- old_repo = 1; >- } >- >- /* verify the pkg exists now. unlink if zero bytes */ >- snprintf(buf, sizeof(buf), "%s/%s/%s.tbz2", pkgdir, atom->CATEGORY, pkg->PF); >- unlink_empty(buf); >- >- if (access(buf, R_OK) != 0) { >- warn("Failed to fetch %s.tbz2 from %s", pkg->PF, binhost); >- fflush(stderr); >- continue; >- } >- getcwd(savecwd, sizeof(savecwd)); >- assert(chdir(pkgdir) == 0); >- if (chdir("All/") == 0) { >- snprintf(buf, sizeof(buf), "%s.tbz2", pkg->PF); >- snprintf(str, sizeof(str), "../%s/%s.tbz2", atom->CATEGORY, pkg->PF); >+ /* qmerge -pv patch */ >+ if (pretend) { >+ if (!install) install++; >+ /* qprint_tree_node(level, atom, pkg); */ >+ pkg_merge(level, atom, pkg); >+ return; >+ } >+ >+ /* check to see if file exists and it's checksum matches */ >+ snprintf(buf, sizeof(buf), "%s/%s/%s.tbz2", pkgdir, pkg->CATEGORY, pkg->PF); >+ unlink_empty(buf); >+ >+ snprintf(str, sizeof(str), "%s/%s", pkgdir, pkg->CATEGORY); >+ mkdir(str, 0755); >+ >+ if ((force_download) && (access(buf, R_OK) == 0) && ((pkg->SHA1[0]) || (pkg->MD5[0]))) { >+ if ((pkg_verify_checksums(buf, pkg, atom, 0, 0)) != 0) > unlink(buf); >- symlink(str, buf); >+ } >+ if (access(buf, R_OK) == 0) { >+ if ((!pkg->SHA1[0]) && (!pkg->MD5[0])) { >+ warn("No checksum data for %s", buf); >+ return; >+ } else { >+ if ((pkg_verify_checksums(buf, pkg, atom, qmerge_strict, 1)) == 0) { >+ pkg_merge(0, atom, pkg); >+ return; >+ } > } >- chdir(savecwd); >+ } >+ if (verbose) >+ printf("Fetching %s/%s.tbz2\n", atom->CATEGORY, pkg->PF); > >- snprintf(buf, sizeof(buf), "%s/%s/%s.tbz2", pkgdir, atom->CATEGORY, pkg->PF); >- if ((pkg_verify_checksums(buf, pkg, atom, qmerge_strict, 1)) == 0) { >- pkg_merge(0, atom, pkg); >- continue; >- } >+ /* fetch the package */ >+ /* Check CATEGORY first */ >+ if (!old_repo) { >+ snprintf(buf, sizeof(buf), "%s/%s.tbz2", atom->CATEGORY, pkg->PF); >+ fetch(str, buf); >+ } >+ snprintf(buf, sizeof(buf), "%s/%s/%s.tbz2", pkgdir, atom->CATEGORY, pkg->PF); >+ if (access(buf, R_OK) != 0) { >+ snprintf(buf, sizeof(buf), "%s.tbz2", pkg->PF); >+ fetch(str, buf); >+ old_repo = 1; >+ } >+ >+ /* verify the pkg exists now. unlink if zero bytes */ >+ snprintf(buf, sizeof(buf), "%s/%s/%s.tbz2", pkgdir, atom->CATEGORY, pkg->PF); >+ unlink_empty(buf); >+ >+ if (access(buf, R_OK) != 0) { >+ warn("Failed to fetch %s.tbz2 from %s", pkg->PF, binhost); >+ fflush(stderr); >+ return; >+ } >+ getcwd(savecwd, sizeof(savecwd)); >+ assert(chdir(pkgdir) == 0); >+ if (chdir("All/") == 0) { >+ snprintf(buf, sizeof(buf), "%s.tbz2", pkg->PF); >+ snprintf(str, sizeof(str), "../%s/%s.tbz2", atom->CATEGORY, pkg->PF); >+ unlink(buf); >+ symlink(str, buf); >+ } >+ chdir(savecwd); >+ >+ snprintf(buf, sizeof(buf), "%s/%s/%s.tbz2", pkgdir, atom->CATEGORY, pkg->PF); >+ if ((pkg_verify_checksums(buf, pkg, atom, qmerge_strict, 1)) == 0) { >+ pkg_merge(0, atom, pkg); >+ return; > } >- /* free the atom */ >- atom_implode(atom); > } > >+ >+ >+ > void print_Pkg(int full, struct pkg_t *pkg) > { > char *p = NULL; >@@ -1407,8 +1417,7 @@ > print_Pkg(verbose, pkg); > } > } else { >- /* this name is misleading */ >- pkg_fetch(argc, argv, pkg); >+ pkg_process(argc, argv, pkg); > } > free(pkg); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 266455
: 188756