mirror of
https://github.com/moparisthebest/pacman
synced 2024-11-12 12:25:02 -05:00
Allow $arch to be used in Server
similarly to the $repo variable, Server can now contain $arch, which will be automatically replaced by the appropriate architecture. This allows us to have one universal mirrorlist file, for both i686 and x86_64, woohoo! Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
5b27e78ba0
commit
65c1f06be5
@ -181,10 +181,12 @@ Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
During parsing, pacman will define the `$repo` variable to the name of the
|
||||
current section. This is often utilized in files specified using the 'Include'
|
||||
directive so all repositories can use the same mirrorfile.
|
||||
directive so all repositories can use the same mirrorfile. pacman also defines
|
||||
the `$arch` variable to the value of `Architecture`, so the same mirrorfile can
|
||||
even be used for different architectures.
|
||||
|
||||
--------
|
||||
Server = ftp://ftp.archlinux.org/$repo/os/arch
|
||||
Server = ftp://ftp.archlinux.org/$repo/os/$arch
|
||||
--------
|
||||
|
||||
The order of repositories in the configuration files matters; repositories
|
||||
|
@ -42,6 +42,7 @@ Architecture = auto
|
||||
# - repositories listed first will take precedence when packages
|
||||
# have identical names, regardless of version number
|
||||
# - URLs will have $repo replaced by the name of the current repo
|
||||
# - URLs will have $arch replaced by the name of the architecture
|
||||
#
|
||||
# Repository entries are of the format:
|
||||
# [repo-name]
|
||||
@ -57,7 +58,7 @@ Architecture = auto
|
||||
# servers immediately after the header and they will be used before the
|
||||
# default mirrors.
|
||||
#[core]
|
||||
#Server = ftp://ftp.example.com/foobar/$repo/os/i686/
|
||||
#Server = ftp://ftp.example.com/foobar/$repo/os/$arch/
|
||||
# The file referenced here should contain a list of 'Server = ' lines.
|
||||
#Include = @sysconfdir@/pacman.d/mirrorlist
|
||||
|
||||
|
@ -156,6 +156,8 @@ if __name__ == "__main__":
|
||||
|
||||
# if the $repo var is used in the url, replace it by core
|
||||
tempUrl = Template(serverUrl).safe_substitute(repo='core')
|
||||
# if the $arch var is used in the url, replace it by i686
|
||||
tempUrl = Template(tempUrl).safe_substitute(arch='i686')
|
||||
|
||||
# add @DBEXT@ to server name. the repo name is parsed
|
||||
# from the mirror url; it is the third (or fourth) dir
|
||||
|
@ -897,7 +897,22 @@ static int _parseconfig(const char *file, const char *givensection,
|
||||
}
|
||||
} else if(strcmp(key, "Server") == 0) {
|
||||
/* let's attempt a replacement for the current repo */
|
||||
char *server = strreplace(ptr, "$repo", section);
|
||||
char *temp = strreplace(ptr, "$repo", section);
|
||||
/* let's attempt a replacement for the arch */
|
||||
const char *arch = alpm_option_get_arch();
|
||||
char *server;
|
||||
if(arch) {
|
||||
server = strreplace(temp, "$arch", arch);
|
||||
free(temp);
|
||||
} else {
|
||||
if(strstr(temp, "$arch")) {
|
||||
pm_printf(PM_LOG_ERROR, _("The mirror '%s' contains the $arch"
|
||||
" variable, but no Architecture is defined.\n"), ptr);
|
||||
ret = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
server = temp;
|
||||
}
|
||||
|
||||
if(alpm_db_setserver(db, server) != 0) {
|
||||
/* pm_errno is set by alpm_db_setserver */
|
||||
|
Loading…
Reference in New Issue
Block a user