pkg.in/lists/Makefile, metadep-expander, doc: Add @META suffix for pkglist items
The @META suffix is used to expand the metapackage into a list. apt asks for the dependencies of such a package and adds them to the package list after this metapackage.
This commit is contained in:
parent
0f68446da7
commit
31975900dd
26
bin/metadep-expander
Executable file
26
bin/metadep-expander
Executable file
@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
# Expand metapackage dependenies
|
||||
#
|
||||
APT_CACHE=$1
|
||||
f=$2
|
||||
[ -n "$f" ] || exit 0
|
||||
|
||||
metapkgs="$(grep -e @META "$f" | grep -v '^#')"
|
||||
[ -n "metapkgs" ] || exit 0
|
||||
|
||||
for metapkg in $metapkgs; do
|
||||
metapkg=${metapkg%@META}
|
||||
if ! "$APT_CACHE" show "$metapkg" 1>&2 2>/dev/null; then
|
||||
echo "Error: Metapackage $metapkg not available!!!"
|
||||
exit 1
|
||||
fi
|
||||
t="`mktemp`"
|
||||
LANG=C "$APT_CACHE" depends "$metapkg"| grep 'Depends:' |
|
||||
cut -f4 -d ' ' |grep -v '<' > "$t"
|
||||
if [ -s "$t" ]; then
|
||||
sed -i -e "/$metapkg@META/r $t" -e "s/$metapkg@META/$metapkg/" "$f"
|
||||
fi
|
||||
sed -i "s/$metapkg@META/$metapkg/" "$f"
|
||||
rm -f "$t"
|
||||
done
|
||||
exit 0
|
19
doc/metadep.txt
Normal file
19
doc/metadep.txt
Normal file
@ -0,0 +1,19 @@
|
||||
== Метапакеты ==
|
||||
|
||||
=== списки пакетов, профили групп ===
|
||||
|
||||
Для раскрытия метапакета в список используется суффикс @META:
|
||||
|
||||
engineering-2D-CAD@META
|
||||
|
||||
apt запрашивает зависимости такого пакета и добавляет их в список пакетов
|
||||
после этого метапакета.
|
||||
|
||||
Обратите внимание, что игнорируются нечёткие зависимости,
|
||||
т.е. предоставляемые несколькими пакетами.
|
||||
|
||||
Возможности совмещать с суффиксом @ARCH нет. Так что имейте в виду,
|
||||
что метапакет должен быть доступен для всех целевых архитектур.
|
||||
|
||||
Для лучшего понимания работы механизма раскрытия списка нужно смотреть
|
||||
bin/metadep-expander. metadep-expander выполняется до archdep-filter.
|
@ -83,3 +83,5 @@ include::vm.txt[]
|
||||
include::qemu.txt[]
|
||||
|
||||
include::archdep.txt[]
|
||||
|
||||
include::metadep.txt[]
|
||||
|
@ -20,7 +20,7 @@ include $(BUILDDIR)/functions.mk
|
||||
SUFFIX := pkg/lists
|
||||
TARGET := $(BUILDDIR)/$(SUFFIX)
|
||||
|
||||
all: | $(TARGET) $(GLOBAL_DEBUG) copy-lists copy-groups grep-archdep
|
||||
all: | $(TARGET) $(GLOBAL_DEBUG) copy-lists copy-groups grep-metadep grep-archdep
|
||||
@mp-commit "$(TARGET)" "requested $(SUFFIX) copied over"
|
||||
|
||||
# env | sort -u | grep _LISTS | xargs -r cp -t
|
||||
@ -39,6 +39,13 @@ grep-archdep:
|
||||
@find $(TARGET) -type f \
|
||||
| xargs -r -I __ -- archdep-filter -a "$(ARCH)" -i __
|
||||
|
||||
grep-metadep:
|
||||
@APT_CACHE=$(BUILDDIR)/.work/pkgbox/aptbox/apt-cache; \
|
||||
if [ -f "$$APT_CACHE" ]; then \
|
||||
find $(TARGET) -type f \
|
||||
| xargs -r -I __ -- metadep-expander "$$APT_CACHE" __; \
|
||||
fi
|
||||
|
||||
# do beforehand as foreach gets expanded before recipe execution
|
||||
$(TARGET):
|
||||
@mkdir -p $(TARGET)
|
||||
|
Loading…
Reference in New Issue
Block a user