diff options
Diffstat (limited to 'meta/classes/sourcepkg.bbclass')
| -rw-r--r-- | meta/classes/sourcepkg.bbclass | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/meta/classes/sourcepkg.bbclass b/meta/classes/sourcepkg.bbclass new file mode 100644 index 0000000000..390d3684d4 --- /dev/null +++ b/meta/classes/sourcepkg.bbclass | |||
| @@ -0,0 +1,111 @@ | |||
| 1 | DEPLOY_DIR_SRC ?= "${DEPLOY_DIR}/source" | ||
| 2 | EXCLUDE_FROM ?= ".pc autom4te.cache" | ||
| 3 | |||
| 4 | # used as part of a path. make sure it's set | ||
| 5 | DISTRO ?= "openembedded" | ||
| 6 | |||
| 7 | def get_src_tree(d): | ||
| 8 | import bb | ||
| 9 | import os, os.path | ||
| 10 | |||
| 11 | workdir = bb.data.getVar('WORKDIR', d, 1) | ||
| 12 | if not workdir: | ||
| 13 | bb.error("WORKDIR not defined, unable to find source tree.") | ||
| 14 | return | ||
| 15 | |||
| 16 | s = bb.data.getVar('S', d, 0) | ||
| 17 | if not s: | ||
| 18 | bb.error("S not defined, unable to find source tree.") | ||
| 19 | return | ||
| 20 | |||
| 21 | s_tree_raw = s.split('/')[1] | ||
| 22 | s_tree = bb.data.expand(s_tree_raw, d) | ||
| 23 | |||
| 24 | src_tree_path = os.path.join(workdir, s_tree) | ||
| 25 | try: | ||
| 26 | os.listdir(src_tree_path) | ||
| 27 | except OSError: | ||
| 28 | bb.fatal("Expected to find source tree in '%s' which doesn't exist." % src_tree_path) | ||
| 29 | bb.debug("Assuming source tree is '%s'" % src_tree_path) | ||
| 30 | |||
| 31 | return s_tree | ||
| 32 | |||
| 33 | sourcepkg_do_create_orig_tgz(){ | ||
| 34 | |||
| 35 | mkdir -p ${DEPLOY_DIR_SRC} | ||
| 36 | cd ${WORKDIR} | ||
| 37 | for i in ${EXCLUDE_FROM}; do | ||
| 38 | echo $i >> temp/exclude-from-file | ||
| 39 | done | ||
| 40 | |||
| 41 | src_tree=${@get_src_tree(d)} | ||
| 42 | |||
| 43 | echo $src_tree | ||
| 44 | oenote "Creating .orig.tar.gz in ${DEPLOY_DIR_SRC}/${P}.orig.tar.gz" | ||
| 45 | tar cvzf ${DEPLOY_DIR_SRC}/${P}.orig.tar.gz --exclude-from temp/exclude-from-file $src_tree | ||
| 46 | cp -pPR $src_tree $src_tree.orig | ||
| 47 | } | ||
| 48 | |||
| 49 | sourcepkg_do_archive_bb() { | ||
| 50 | |||
| 51 | src_tree=${@get_src_tree(d)} | ||
| 52 | dest=${WORKDIR}/$src_tree/${DISTRO} | ||
| 53 | mkdir -p $dest | ||
| 54 | |||
| 55 | cp ${FILE} $dest | ||
| 56 | } | ||
| 57 | |||
| 58 | python sourcepkg_do_dumpdata() { | ||
| 59 | import os | ||
| 60 | import os.path | ||
| 61 | |||
| 62 | workdir = bb.data.getVar('WORKDIR', d, 1) | ||
| 63 | distro = bb.data.getVar('DISTRO', d, 1) | ||
| 64 | s_tree = get_src_tree(d) | ||
| 65 | openembeddeddir = os.path.join(workdir, s_tree, distro) | ||
| 66 | dumpfile = os.path.join(openembeddeddir, bb.data.expand("${P}-${PR}.showdata.dump",d)) | ||
| 67 | |||
| 68 | try: | ||
| 69 | os.mkdir(openembeddeddir) | ||
| 70 | except OSError: | ||
| 71 | # dir exists | ||
| 72 | pass | ||
| 73 | |||
| 74 | bb.note("Dumping metadata into '%s'" % dumpfile) | ||
| 75 | f = open(dumpfile, "w") | ||
| 76 | # emit variables and shell functions | ||
| 77 | bb.data.emit_env(f, d, True) | ||
| 78 | # emit the metadata which isnt valid shell | ||
| 79 | for e in d.keys(): | ||
| 80 | if bb.data.getVarFlag(e, 'python', d): | ||
| 81 | f.write("\npython %s () {\n%s}\n" % (e, bb.data.getVar(e, d, 1))) | ||
| 82 | f.close() | ||
| 83 | } | ||
| 84 | |||
| 85 | sourcepkg_do_create_diff_gz(){ | ||
| 86 | |||
| 87 | cd ${WORKDIR} | ||
| 88 | for i in ${EXCLUDE_FROM}; do | ||
| 89 | echo $i >> temp/exclude-from-file | ||
| 90 | done | ||
| 91 | |||
| 92 | |||
| 93 | src_tree=${@get_src_tree(d)} | ||
| 94 | |||
| 95 | for i in `find . -maxdepth 1 -type f`; do | ||
| 96 | mkdir -p $src_tree/${DISTRO}/files | ||
| 97 | cp $i $src_tree/${DISTRO}/files | ||
| 98 | done | ||
| 99 | |||
| 100 | oenote "Creating .diff.gz in ${DEPLOY_DIR_SRC}/${P}-${PR}.diff.gz" | ||
| 101 | LC_ALL=C TZ=UTC0 diff --exclude-from=temp/exclude-from-file -Naur $src_tree.orig $src_tree | gzip -c > ${DEPLOY_DIR_SRC}/${P}-${PR}.diff.gz | ||
| 102 | rm -rf $src_tree.orig | ||
| 103 | } | ||
| 104 | |||
| 105 | EXPORT_FUNCTIONS do_create_orig_tgz do_archive_bb do_dumpdata do_create_diff_gz | ||
| 106 | |||
| 107 | addtask create_orig_tgz after do_unpack before do_patch | ||
| 108 | addtask archive_bb after do_patch before do_dumpdata | ||
| 109 | addtask dumpdata after archive_bb before do_create_diff_gz | ||
| 110 | addtask create_diff_gz after do_dump_data before do_configure | ||
| 111 | |||
