Commit 31975900 authored by Anton Midyukov's avatar Anton Midyukov

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.
parent 0f68446d
#!/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
== Метапакеты ==
=== списки пакетов, профили групп ===
Для раскрытия метапакета в список используется суффикс @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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment