update from MirBSD CVS
[shellsnippets/shellsnippets.git] / bash / pbuilder-hooks / D01slashrepo
1 #!/bin/bash
2 # $MirOS: contrib/hosted/tg/deb/hookdir/D01slashrepo,v 1.3 2019/02/24 03:34:00 tg Exp $
3 #-
4 # Copyright © 2014, 2018, 2019
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=/repo
27 this=D01slashrepo
28
29
30 unset LANGUAGE
31 LC_ALL=C; export LC_ALL
32
33 test -d "$base/." || {
34         echo >&2 "E: D01slashrepo: base '$base' does not exist"
35         exit 1
36 }
37
38 shopt -s extglob
39 base=${base%%*(/)}
40 pstr=${base//\//_}_._Packages
41
42 echo >&2 "I: creating Packages file for local APT cache in $base"
43 rm -f "$base/Packages"
44 (cd "$base"
45 #dpkg-scanpackages -h md5 -m . >Packages 2>/dev/null || \
46     dpkg-scanpackages -m . >Packages 2>/dev/null || \
47     dpkg-scanpackages . /dev/null >Packages)
48 paste -d_ <(sed -n '/^Package: /s///p' "$base/Packages") \
49     <(sed -n '/^Version: /s///p' "$base/Packages") \
50     <(sed -n '/^Architecture: /s///p' "$base/Packages") | \
51     sed 's/^/N: /' >&2
52 echo >&2 "I: updating APT repository information"
53 cp "$base/Packages" "/var/lib/apt/lists/$pstr"
54 if test -d /etc/apt/sources.list.d/.; then
55         echo "deb [trusted=yes] file://$base ./" >"/etc/apt/sources.list.d/$this.list"
56 else
57         echo "deb file://$base ./" >>"/etc/apt/sources.list"
58 fi
59 apt-cache gencaches
60 echo >&2 "I: made $(grep -c '^Package: ' "$base/Packages") packages available from $base"
61 exit 0