summaryrefslogtreecommitdiff
path: root/compute_dependencies.sh
blob: b9a5fd66710e3439c15909ec267aad338a912550 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash

. "./default.conf"

# Compute dependencies and make-dependencies to build packages in stage1,
# stage2 or stage3

tmp_dir=$(mktemp -d 'tmp.compute-dependencies.0.XXXXXXXXXX' --tmpdir)
trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT

# all top-level packages in base and base-devel
TOP_PACKAGES=$(pacman -Qg base base-devel | cut -f 2 -d ' ')

# get dependencies
for package in $TOP_PACKAGES; do
	pactree -l $package >>${tmp_dir}/dependencies
done

# all packages needed
ALL_PACKAGES=$(cat ${tmp_dir}/dependencies | sort | uniq)

export CARCH='x86_64'

for package in $ALL_PACKAGES; do
	asp show $package >${tmp_dir}/$package.PKGBUILD
	# temporary hotfix for FS#57524
	if test "$(head -n1 ${tmp_dir}/$package.PKGBUILD | grep -c '^\$Id\$$' )" == 1; then
		sed -i 's/^\(\$Id\$\)$/#\1/' ${tmp_dir}/$package.PKGBUILD
	fi
	# asp makes redirects like '==>' ignore those and use the pointee
	if test "$(head -n1 ${tmp_dir}/$package.PKGBUILD | grep -c '==>' )" == 1; then
		_tmp=$(head -n1 ${tmp_dir}/$package.PKGBUILD | sed 's/==> \(.*\)/\1/')
		SUB_PACKAGE=$(echo $_tmp | cut -f 1 -d ' ')
		ADD_PACKAGE=$(echo $_tmp | rev | cut -f 1 -d ' ' | rev)
		# TODO: we should map sub packages to packages everywhere
		echo "WARN: seen a redirect from $SUB_PACKAGE to $ADD_PACKAGE" >&2
		continue
	fi
	depends=$(. ${tmp_dir}/$package.PKGBUILD; echo "${depends[@]}")
	makedepends=$(. ${tmp_dir}/$package.PKGBUILD; echo "${makedepends[@]}")
	# TODO handle version constraints
	#checkdepends=$(. ${tmp_dir}/$package.PKGBUILD; echo "${checkdepends[@]}")
	#echo $package
	#printf "\tdepends: $depends\n"
	#printf "\tmakedepends: $makedepends\n"
	#printf "\tcheckdepends: $checkdepends\n"
#	echo "${depends[@]}"
	echo "${makedepends[@]}"
done

# ./compute_dependencies.sh | tr -s ' ' '\n' | sort | uniq > depends
# ./compute_dependencies.sh | tr -s ' ' '\n' | sort | uniq > makedepends
# grep -xf depends makedepends > makedepends_already_depends
# grep -vxf depends makedepends > new_makedepends