diff options
-rw-r--r-- | meta/classes/package_ipk.bbclass | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/meta/classes/package_ipk.bbclass b/meta/classes/package_ipk.bbclass index 2949d1d2e0..9586e06b2e 100644 --- a/meta/classes/package_ipk.bbclass +++ b/meta/classes/package_ipk.bbclass | |||
@@ -63,7 +63,32 @@ python do_package_ipk () { | |||
63 | bb.data.update_data(localdata) | 63 | bb.data.update_data(localdata) |
64 | basedir = os.path.join(os.path.dirname(root)) | 64 | basedir = os.path.join(os.path.dirname(root)) |
65 | arch = localdata.getVar('PACKAGE_ARCH', True) | 65 | arch = localdata.getVar('PACKAGE_ARCH', True) |
66 | pkgoutdir = "%s/%s" % (outdir, arch) | 66 | |
67 | if localdata.getVar('IPK_HIERARCHICAL_FEED') == "1": | ||
68 | # Spread packages across subdirectories so each isn't too crowded | ||
69 | if pkgname.startswith('lib'): | ||
70 | pkg_prefix = 'lib' + pkgname[3] | ||
71 | else: | ||
72 | pkg_prefix = pkgname[0] | ||
73 | |||
74 | # Keep -dbg, -dev, -doc, -staticdev, -locale and -locale-* packages | ||
75 | # together. These package suffixes are taken from the definitions of | ||
76 | # PACKAGES and PACKAGES_DYNAMIC in meta/conf/bitbake.conf | ||
77 | if pkgname[-4:] in ('-dbg', '-dev', '-doc'): | ||
78 | pkg_subdir = pkgname[:-4] | ||
79 | elif pkgname.endswith('-staticdev'): | ||
80 | pkg_subdir = pkgname[:-10] | ||
81 | elif pkgname.endswith('-locale'): | ||
82 | pkg_subdir = pkgname[:-7] | ||
83 | elif '-locale-' in pkgname: | ||
84 | pkg_subdir = pkgname[:pkgname.find('-locale-')] | ||
85 | else: | ||
86 | pkg_subdir = pkgname | ||
87 | |||
88 | pkgoutdir = "%s/%s/%s/%s" % (outdir, arch, pkg_prefix, pkg_subdir) | ||
89 | else: | ||
90 | pkgoutdir = "%s/%s" % (outdir, arch) | ||
91 | |||
67 | bb.utils.mkdirhier(pkgoutdir) | 92 | bb.utils.mkdirhier(pkgoutdir) |
68 | os.chdir(root) | 93 | os.chdir(root) |
69 | cleanupcontrol(root) | 94 | cleanupcontrol(root) |