~launchpad-pqm/launchpad/devel

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
#! /bin/sh

set -e
set -u

ARCHIVEROOT=/srv/launchpad.net/ubuntu-archive/ubuntu
MISCROOT=$ARCHIVEROOT/../ubuntu-misc
LOCKROOT=$ARCHIVEROOT/..
GERMINATEROOT=$ARCHIVEROOT/../ubuntu-germinate

## Check to see if another germinate run is in progress

LOCKFILE=$LOCKROOT/cron.germinate.lock
if lockfile -! -l 43200 -r 0 "${LOCKFILE}"; then
  echo Another cron.germinate appears to be running
  exit 1
fi

cleanup () {
  rm -f "$LOCKFILE"
}

trap cleanup EXIT

LAUNCHPADROOT=/srv/launchpad.net/codelines/current
suite=`$LAUNCHPADROOT/scripts/ftpmaster-tools/lp-query-distro.py development`

echo -n "Running germinate... "
cd $GERMINATEROOT

# Clean up temporary files
rm -f germinate.output ALL ALL.sources UBUNTU-* KUBUNTU-* EDUBUNTU-* XUBUNTU-* MOBILE-* MYTHBUNTU-*
rm -f all_* all.sources_*

# Grab a local copy of Sources files
for component in main universe restricted; do
  zcat $ARCHIVEROOT/dists/"$suite"/"$component"/source/Sources.gz > archive.ubuntu.com_"$suite"_"$component"_Sources;
done

> "$MISCROOT/more-extra.override.$suite.main.new"
for distro in ubuntu kubuntu edubuntu xubuntu mobile mythbuntu; do
  DISTRO="$(echo $distro | tr a-z A-Z)"
  germinate_suite="$distro.$suite"
  germinate_components=main,universe,restricted
  for arch in i386 amd64 lpia powerpc sparc ia64 hppa armel; do
    # Grab local copy of Packages and InstallerPackages files
    for component in main universe restricted; do
      zcat $ARCHIVEROOT/dists/"$suite"/"$component"/binary-$arch/Packages.gz > archive.ubuntu.com_"$suite"_"$component"_Packages
      zcat $ARCHIVEROOT/dists/"$suite"/"$component"/debian-installer/binary-$arch/Packages.gz > archive.ubuntu.com_"$suite"_"$component"_InstallerPackages
    done

    # Run germinate
    echo " **************** $distro/$suite/$arch ********************* " >> germinate.output
    germinate --no-rdepends -s "$germinate_suite" -d "$suite" -c "$germinate_components" -a $arch >> germinate.output 2>&1

    # The structure file is generally useful; keep per distro/suite/arch
    # copies for convenience
    cp structure structure_"$distro"_"$suite"_"$arch"

    # Keep per distro/suite/arch copies of 'all' and 'all.sources' for anastacia
    cp all all_"$distro"_"$suite"_"$arch"
    cp all.sources all.sources_"$distro"_"$suite"_"$arch"

    # Keep per distro/suite/arch copies of 'minimal' and 'standard' for jessica
    cp minimal minimal_"$distro"_"$suite"_"$arch"
    cp standard standard_"$distro"_"$suite"_"$arch"

    # Keep amalgamated copies of 'all' and 'all.sources', just for convenience
    cat all >> ALL; cat all.sources >> ALL.sources

    # We need to fetch a number of seeds so that we can generate Task fields
    # for them. This changes over time and differs from derivative to
    # derivative, so it's best to just fetch them all.
    taskseeds="$(cut -d: -f1 structure | xargs -n1 | sort -u)"

    for seed in $taskseeds; do
      cp "$seed" "$seed"_"$distro"_"$suite"_"$arch"
    done
    echo " ********************************************************************** " >> germinate.output
    echo "" >> germinate.output
    echo -n "."

    ## Generate apt-ftparchive 'extra' overrides for Task: fields
    for seed in $taskseeds; do
      if ! grep -iq '^Task-' "$seed.seedtext"; then
	continue
      fi
      if grep -iq '^Task-Per-Derivative:' "$seed.seedtext"; then
	task="$distro-$seed"
      else
	# If a seed is not per-derivative, then we only honour it for Ubuntu,
	# and its task name is archive-global.
	if [ "$distro" = ubuntu ]; then
	  task="$seed"
	else
	  continue
	fi
      fi
      if grep -iq '^Task-Seeds:' "$seed.seedtext"; then
	scanseeds="$( (grep '^Task-Seeds:' "$seed.seedtext" | cut -d: -f2 | xargs -n1; echo "$seed") | sort -u )"
      else
	scanseeds="$seed"
      fi
      for scanseed in $scanseeds; do
	egrep -v -- "^(-|Package| )" "$scanseed"_"$distro"_"$suite"_"$arch" | awk '{print $1}' | sed -e "s,$,/$arch  Task  $task," | sort -u >> "$MISCROOT/more-extra.override.$suite.main.new"
      done
    done

    # Generate apt-ftparchive 'extra' overrides for Build-Essential: fields
    if [ -e build-essential ] && [ "$distro" = ubuntu ]; then
      # Keep a copy, just for convenience
      cp build-essential build-essential_"$distro"_"$suite"_"$arch"
      egrep -v -- "^(-|Package| )" build-essential_"$distro"_"$suite"_"$arch" | awk '{print $1}' | sed -e "s,$,/$arch  Build-Essential  yes," | sort -u >> "$MISCROOT/more-extra.override.$suite.main.new"
    fi
  done
done
echo " done."

mv -f "$MISCROOT/more-extra.override.$suite.main.new" "$MISCROOT/more-extra.override.$suite.main"