update
[shellsnippets/shellsnippets.git] / posix / pbuilder-hooks / D00local
1 #!/bin/bash
2 # $MirOS: contrib/hosted/tg/deb/hookdir/D00local,v 1.5 2016/10/14 22:41:53 tg Exp $
3 #-
4 # Copyright © 2014, 2016
5 #       mirabilos <m@mirbsd.org>
6 #
7 # Provided that these terms and disclaimer and all copyright notices
8 # are retained or reproduced in an accompanying document, permission
9 # is granted to deal in this work without restriction, including un‐
10 # limited rights to use, publicly perform, distribute, sell, modify,
11 # merge, give away, or sublicence.
12 #
13 # This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
14 # the utmost extent permitted by applicable law, neither express nor
15 # implied; without malicious intent or gross negligence. In no event
16 # may a licensor, author or contributor be held liable for indirect,
17 # direct, other damage, loss, or other issues arising in any way out
18 # of dealing in the work, even if advised of the possibility of such
19 # damage or existence of a defect, except proven that it results out
20 # of said person’s immediate fault when using the work as intended.
21 #-
22 # Configure $base and $this at the beginning of the file. Do ensure:
23 # • base must be URI safe since we do not encode it for sources.list
24 # • this must be a valid basename for sources.list.d: [A-Za-z0-9._-]
25
26 base=/var/cache/apt
27 this=D00local
28
29
30 unset LANGUAGE
31 LC_ALL=C; export LC_ALL
32
33 shopt -s extglob
34 base=${base%%*(/)}
35 pstr=${base//\//_}_._Packages
36
37 echo >&2 "I: creating Packages file for local APT cache in $base"
38 rm -f "$base/Packages"
39 (cd "$base"
40 #dpkg-scanpackages -h md5 -m . >Packages 2>/dev/null || \
41     dpkg-scanpackages -m . >Packages)
42 paste -d_ <(sed -n '/^Package: /s///p' "$base/Packages") \
43     <(sed -n '/^Version: /s///p' "$base/Packages") \
44     <(sed -n '/^Architecture: /s///p' "$base/Packages") | \
45     sed 's/^/N: /' >&2
46 echo >&2 "I: updating APT repository information"
47 cp "$base/Packages" "/var/lib/apt/lists/$pstr"
48 echo "deb [trusted=yes] file://$base ./" >"/etc/apt/sources.list.d/$this.list"
49 apt-cache gencaches
50 echo >&2 "I: made $(grep -c '^Package: ' "$base/Packages") packages available from $base"
51 exit 0