[arch-general] [patch] AIF, discover repos on iso.
Aaron Griffin
aaronmgriffin at gmail.com
Fri Feb 19 17:12:40 EST 2010
On Fri, Feb 19, 2010 at 3:26 PM, Mark Pustjens <pustjens at dds.nl> wrote:
> Hi List,
>
> The attached patch fixes a TODO in lib-pacman of aif.
> Instead of hardcoding that `core' is always available locally and falling
> back to net for others, it now checks /src/ for repos.
>
> It assumes repos are stored at /src/$repo/pkg/. All these repos are added as
> cache dirs.
>
> While preparing pacman, a number of repo names are provided to be prepared.
>
> All those repos which were requested are added as actual repo. If this repo
> is available locally, the url points to disk. Otherwise it falls back to the
> mirrorlist.
CCing to the arch-releng list
-------------- next part --------------
diff -u -Naur aif-2009.08.07/src/core/libs/lib-pacman.sh aif-2009.08.07-new/src/core/libs/lib-pacman.sh
--- aif-2009.08.07/src/core/libs/lib-pacman.sh 2009-08-07 21:25:04.000000000 +0200
+++ aif-2009.08.07-new/src/core/libs/lib-pacman.sh 2010-02-19 22:12:33.000000000 +0100
@@ -62,25 +62,34 @@
[ "$var_PKG_SOURCE_TYPE" = "cd" ] && local serverurl="${var_FILE_URL}"
[ "$var_PKG_SOURCE_TYPE" = "net" ] && local serverurl="${var_SYNC_URL}"
- [ -z "$1" ] && repos=core
- [ -n "$1" ] && repos="$@"
- # Setup a pacman.conf in /tmp
- cat << EOF > /tmp/pacman.conf
-[options]
-CacheDir = ${var_TARGET_DIR}/var/cache/pacman/pkg
-CacheDir = /src/core/pkg
-EOF
-
-for repo in $repos
-do
- #TODO: this is a VERY, VERY dirty hack. we fall back to net for any non-core repo because we only have core on the CD. also user maybe didn't pick a mirror yet
- if [ "$repo" != core ]
- then
- add_pacman_repo target ${repo} "Include = $var_MIRRORLIST"
+ if [ -z "$1" ]; then
+ repos="core"
else
- add_pacman_repo target ${repo} "Server = ${serverurl/\$repo/$repo}" # replace literal '$repo' in the serverurl string by "$repo" where $repo is our variable.
+ repos="$@"
fi
-done
+
+ # We make the assumption that /src/ contains a number of directories, each
+ # of which contains a package repository under subdir `pkg'.
+ # Eg: /src/core/pkg is a package repository.
+ local_repos=`ls /src/`
+
+ # Setup a pacman.conf in /tmp
+ echo "[options]" > /tmp/pacman.conf
+ echo "CacheDir = ${var_TARGET_DIR}/var/cache/pacman/pkg" >> /tmp/pacman.conf
+ for repo in ${local_repos}; do
+ echo "CacheDir = /src/${repo}/pkg" >> /tmp/pacman.conf
+ done
+
+ # Add each repo to the config file
+ # If the repo is available locally, add a local url, otherwise refer to the mirrorlist.
+ for repo in ${repos}; do
+ if echo "${local_repos}" | grep "^${repo}$" >/dev/null ;then
+ add_pacman_repo target ${repo} "Server = file:///src/${repo}/pkg"
+ else
+ add_pacman_repo target ${repo} "Include = ${var_MIRRORLIST}"
+ fi
+ done
+
# Set up the necessary directories for pacman use
[ ! -d "${var_TARGET_DIR}/var/cache/pacman/pkg" ] && mkdir -m 755 -p "${var_TARGET_DIR}/var/cache/pacman/pkg"
[ ! -d "${var_TARGET_DIR}/var/lib/pacman" ] && mkdir -m 755 -p "${var_TARGET_DIR}/var/lib/pacman"
More information about the arch-general
mailing list