[pacman-dev] [PATCH 1/3] Give sensible feedback when a repo has no configured servers
This fixes FS#14899. When running an -Sp operation without servers
configured for a repository, we would segfault, so add an assert to the
backend method returning the first server preventing a null pointer
dereference.
In addition, add a new error code to libalpm that indicates we have no
servers configured for a repository. This makes -Sy and -S <package>
operations fail gracefully and helpfully when a repo is set up with no
servers, as the default mirrorlist in Arch is provided this way.
Signed-off-by: Dan McGee
This fixes FS#14899. When running an -Sp operation without servers configured for a repository, we would segfault, so add an assert to the backend method returning the first server preventing a null pointer dereference.
In addition, add a new error code to libalpm that indicates we have no servers configured for a repository. This makes -Sy and -S <package> operations fail gracefully and helpfully when a repo is set up with no servers, as the default mirrorlist in Arch is provided this way.
Signed-off-by: Dan McGee
I like this patch.
+ const char *dburl = alpm_db_get_url(db); + if(dburl) { + printf("%s/%s\n", dburl, alpm_pkg_get_filename(pkg)); + } else { + /* can't use WARNING here, we don't show warnings in -Sp... */ + pm_fprintf(stderr, PM_LOG_ERROR, _("no database for package: %s\n"), + alpm_pkg_get_name(pkg)); + }
IMHO we should print all error messages to stderr. (This can be done easily in callback functions.) I am sure that it would be better with -Sp (-Sp users usually do pacman -Sup > foo.txt), and I don't see any drawbacks in other cases. (What about our scripts?) See also: FS#12101. Opinions?
On Sat, Jun 6, 2009 at 1:29 PM, Nagy Gabor
This fixes FS#14899. When running an -Sp operation without servers configured for a repository, we would segfault, so add an assert to the backend method returning the first server preventing a null pointer dereference.
In addition, add a new error code to libalpm that indicates we have no servers configured for a repository. This makes -Sy and -S <package> operations fail gracefully and helpfully when a repo is set up with no servers, as the default mirrorlist in Arch is provided this way.
Signed-off-by: Dan McGee
I like this patch.
+ const char *dburl = alpm_db_get_url(db); + if(dburl) { + printf("%s/%s\n", dburl, alpm_pkg_get_filename(pkg)); + } else { + /* can't use WARNING here, we don't show warnings in -Sp... */ + pm_fprintf(stderr, PM_LOG_ERROR, _("no database for package: %s\n"), + alpm_pkg_get_name(pkg)); + }
IMHO we should print all error messages to stderr. (This can be done easily in callback functions.) I am sure that it would be better with -Sp (-Sp users usually do pacman -Sup > foo.txt), and I don't see any drawbacks in other cases. (What about our scripts?) See also: FS#12101.
Opinions?
Yeah, I think we should probably get in this habit as well. However, do we do more than just error messages? For example, the above would capture the "resolving dependencies..." text on stdout, so your first line of your text file would be bum. -Dan
IMHO we should print all error messages to stderr. (This can be done easily in callback functions.) I am sure that it would be better with -Sp (-Sp users usually do pacman -Sup > foo.txt), and I don't see any drawbacks in other cases. (What about our scripts?) See also: FS#12101.
Opinions?
Yeah, I think we should probably get in this habit as well.
However, do we do more than just error messages? For example, the above would capture the "resolving dependencies..." text on stdout, so your first line of your text file would be bum.
I don't know. I think we should follow the "GNU traditions", that I don't know too much about. ;-) (But I know that errors are usually printed to stderr.) I am a hardcore -Sp user and I can live with that one "resolving dependencies..." message (and that issue can be fixed in other ways) ;-) But if these kind of "progress messages" are usually printed to stderr, I am fine with moving those to stderr as well.
participants (3)
-
Dan McGee
-
Dan McGee
-
Nagy Gabor