diff options
author | Qing He <qing.he@intel.com> | 2011-01-18 18:00:29 +0800 |
---|---|---|
committer | Saul Wold <sgw@linux.intel.com> | 2011-01-30 12:09:52 -0800 |
commit | e67698743eb6fea77f03d712be5d838fbc887f16 (patch) | |
tree | e53c9dfcc1b0703ec651e0bb6aa4986a594ef999 /scripts/poky-setup-rpmrepo | |
parent | f6fc1f3475e389551af440608159baeea786ba6d (diff) | |
download | poky-e67698743eb6fea77f03d712be5d838fbc887f16.tar.gz |
creating the rpmrepo metadata
This includes two method for build rpm repo:
1. create the metadata in rootfs_rpm
2. standalone binary for building the metadata
Not both of them are needed, generally #2 fits more for the purpose,
but #1 may have its use on rootfs creation using zypper.
Both share some problems and are subjected for future improvement:
1. the createrepo now builds metadata for the whole directory,
if there are more than one arch, it builds for all, which means
rootfs_rpm may run longer if more builds have been run.
2. createrepo builds metadata for stale rpms
Signed-off-by: Qing He <qing.he@intel.com>
Diffstat (limited to 'scripts/poky-setup-rpmrepo')
-rwxr-xr-x | scripts/poky-setup-rpmrepo | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/scripts/poky-setup-rpmrepo b/scripts/poky-setup-rpmrepo new file mode 100755 index 0000000000..42a9b6aedf --- /dev/null +++ b/scripts/poky-setup-rpmrepo | |||
@@ -0,0 +1,89 @@ | |||
1 | #!/bin/bash | ||
2 | # | ||
3 | # This utility setup the necessary metadata for an rpm repo | ||
4 | # | ||
5 | # Copyright (c) 2011 Intel Corp. | ||
6 | # | ||
7 | # This program is free software; you can redistribute it and/or modify | ||
8 | # it under the terms of the GNU General Public License version 2 as | ||
9 | # published by the Free Software Foundation. | ||
10 | # | ||
11 | # This program is distributed in the hope that it will be useful, | ||
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
14 | # See the GNU General Public License for more details. | ||
15 | # | ||
16 | # You should have received a copy of the GNU General Public License | ||
17 | # along with this program; if not, write to the Free Software | ||
18 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | |||
20 | function usage() { | ||
21 | echo "Usage: $0 <rpm-dir>" | ||
22 | echo " <rpm-dir>: default is $TPMDIR/deploy/rpm" | ||
23 | } | ||
24 | |||
25 | if [ $# -gt 1 ]; then | ||
26 | usage | ||
27 | exit 1 | ||
28 | fi | ||
29 | |||
30 | setup_tmpdir() { | ||
31 | if [ -z "$TMPDIR" ]; then | ||
32 | if [ "x$BUILDDIR" = "x" -o ! -d "$BUILDDIR/tmp" ]; then | ||
33 | # BUILDDIR unset, try and get TMPDIR from bitbake | ||
34 | type -P bitbake &>/dev/null || { | ||
35 | echo "In order for this script to dynamically infer paths"; | ||
36 | echo "to kernels or filesystem images, you either need"; | ||
37 | echo "bitbake in your PATH or to source poky-init-build-env"; | ||
38 | echo "before running this script" >&2; | ||
39 | exit 1; } | ||
40 | |||
41 | # We have bitbake in PATH, get TMPDIR from bitbake | ||
42 | TMPDIR=`bitbake -e | grep TMPDIR=\" | cut -d '=' -f2 | cut -d '"' -f2` | ||
43 | else | ||
44 | TMPDIR=$BUILDDIR/tmp | ||
45 | fi | ||
46 | fi | ||
47 | } | ||
48 | |||
49 | setup_sysroot() { | ||
50 | # Toolchain installs set up $POKY_NATIVE_SYSROOT in their | ||
51 | # environment script. If that variable isn't set, we're | ||
52 | # either in an in-tree poky scenario or the environment | ||
53 | # script wasn't source'd. | ||
54 | if [ -z "$POKY_NATIVE_SYSROOT" ]; then | ||
55 | setup_tmpdir | ||
56 | BUILD_ARCH=`uname -m` | ||
57 | BUILD_OS=`uname | tr '[A-Z]' '[a-z]'` | ||
58 | BUILD_SYS="$BUILD_ARCH-$BUILD_OS" | ||
59 | |||
60 | POKY_NATIVE_SYSROOT=$TMPDIR/sysroots/$BUILD_SYS | ||
61 | fi | ||
62 | } | ||
63 | |||
64 | setup_tmpdir | ||
65 | setup_sysroot | ||
66 | |||
67 | |||
68 | if [ -n "$1" ]; then | ||
69 | RPM_DIR="$1" | ||
70 | else | ||
71 | RPM_DIR="$TMPDIR/deploy/rpm" | ||
72 | fi | ||
73 | |||
74 | if [ ! -d "$RPM_DIR" ]; then | ||
75 | echo "Error: rpm dir $RPM_DIR doesn't exist" | ||
76 | exit 1 | ||
77 | fi | ||
78 | |||
79 | CREATEREPO=$POKY_NATIVE_SYSROOT/usr/bin/createrepo | ||
80 | if [ ! -e "$CREATEREPO" ]; then | ||
81 | echo "Error: can't find createrepo binary" | ||
82 | echo "please run bitbake createrepo-native first" | ||
83 | exit 1 | ||
84 | fi | ||
85 | |||
86 | |||
87 | $CREATEREPO "$RPM_DIR" | ||
88 | |||
89 | exit 0 | ||