blob: 44733c89a5598eaba9d0776d979cd5a7d734035d (
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
#!/bin/bash
[ ! -e /run/live/medium/packages ] && exit 0
for file in /root/config/*; do [ -r $file ] && . $file; done
echo "$LB_PACKAGE_LISTS" | grep -qw debpool || exit 0
echo "Starting debpool hook for Architecture $LB_ARCHITECTURE and Distribution $LB_DISTRIBUTION"
#binary=/live/image/debian
binary=/run/live/medium/debian
packages="$(cut -d'#' -f1 /run/live/medium/packages | grep .)"
[ -z "$packages" ] && exit 0
rm -rf "$binary"
mkdir -p "$binary"
mkdir -p /binary.deb/archives/partial
mv /run/live/medium/*.deb /binary.deb/archives
apt-get update
apt-get --yes -o Dir::Cache=/binary.deb --download-only install $packages
for FILE in /binary.deb/archives/*.deb
do
SOURCE="$(dpkg -f ${FILE} Source | awk '{ print $1 }')"
SECTION="$(dpkg -f ${FILE} Section | awk '{ print $1 }')"
if [ -z "${SOURCE}" ]
then
SOURCE="$(basename ${FILE} | awk -F_ '{ print $1 }')"
fi
case "${SOURCE}" in
lib?*)
LETTER="$(echo ${SOURCE} | sed 's|\(....\).*|\1|')"
;;
*)
LETTER="$(echo ${SOURCE} | sed 's|\(.\).*|\1|')"
;;
esac
if echo "${SECTION}" | grep -qs contrib
then
SECTION="contrib"
elif echo "${SECTION}" | grep -qs non-free
then
SECTION="non-free"
else
SECTION="main"
fi
# Install directory
mkdir -p "$binary"/pool/${SECTION}/"${LETTER}"/"${SOURCE}"
# Move files
mv "${FILE}" "$binary"/pool/${SECTION}/"${LETTER}"/"${SOURCE}"
done
mkdir -p /tmp
if [ ! -e /run/live/medium/live-media.asc ]; then
echo "Generate signing key for live-media repo"
echo "Key-Type: RSA
Key-Length: 1024
Subkey-Type: ELG-E
Subkey-Length: 1024
Name-Real: live-media packages key
Name-Email: live-media-key@invalid
Expire-Date: 0
%no-protection
%pubring /tmp/pubring.kbx
%commit" | gpg --batch --full-generate-key
echo "Import generated key"
gpg --no-default-keyring --keyring /tmp/pubring.kbx --export -a | gpg --import
else
echo "Import debpool key"
gpg --import /run/live/medium/live-media.asc
#for fpr in $(gpg --list-keys --with-colons | awk -F: '/fpr:/ {print $10}' | sort -u); do echo -e "5\ny\n" | gpg --command-fd 0 --expert --edit-key $fpr trust; done
fi
echo "Provide public key for use with apt"
#gpg --output /etc/apt/trusted.gpg.d/live-media.asc --armor --export live-media-key@invalid
gpg --output /usr/share/keyrings/live-media.gpg --export live-media-key@invalid
cd "$binary"
SECTIONS=
for SECTION in pool/*
do
SECTION="$(basename ${SECTION})"
SECTIONS+="$SECTION "
mkdir -p dists/${LB_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURE}
mkdir -p dists/${LB_DISTRIBUTION}/${SECTION}/binary-i386
apt-ftparchive packages pool/${SECTION} > dists/${LB_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURE}/Packages
touch dists/${LB_DISTRIBUTION}/${SECTION}/binary-i386/Packages
#apt-ftparchive packages pool/${SECTION} > dists/${LB_DISTRIBUTION}/${SECTION}/binary-i386/Packages
apt-ftparchive -o APT::FTPArchive::Release::Origin=live-media \
-o APT::FTPArchive::Release::Suite=stable \
-o APT::FTPArchive::Release::Codename=${LB_DISTRIBUTION} \
release dists/${LB_DISTRIBUTION} > dists/${LB_DISTRIBUTION}/Release
gzip -9 -c dists/${LB_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURE}/Packages > dists/${LB_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURE}/Packages.gz
gzip -9 -c dists/${LB_DISTRIBUTION}/${SECTION}/binary-i386/Packages > dists/${LB_DISTRIBUTION}/${SECTION}/binary-i386/Packages.gz
done
# Sign release with default key, we only have one key
gpg -abs -o dists/${LB_DISTRIBUTION}/Release.gpg dists/${LB_DISTRIBUTION}/Release
cd -
rm -rf /binary.deb
rm -rf /root/.gnupg
# Add sources.list entry to the beginning of the file (above the first entry)
if ! grep -q "^deb file:$binary" /etc/apt/sources.list; then
line="$(grep -nm1 -B5 '^[[:space:]]*deb' /etc/apt/sources.list | tac | grep -vm1 ... | tr -d -)"
((line++))
# set to new moutnpoint
#binary=/run/live/medium/debian
sed -i "$line{i # Live Media
i deb [signed-by=/usr/share/keyrings/live-media.gpg] file:$binary $LB_DISTRIBUTION $SECTIONS
x;p;x}" /etc/apt/sources.list
fi
# Import key
#gpg --no-default-keyring --secret-keyring /live/live-media-keyring.sec \
#--keyring /live/live-media-keyring.pub --armor \
#--export "live-media-key@invalid" | apt-key add -
apt-get update # do we need this?, yes check for proper sources.list
|