From 4166062ea72fec32cb23b7b67f1e3a8e412a91ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Henrique=20Ferreira=20de=20Freitas?= Date: Sun, 16 Feb 2014 18:40:58 -0300 Subject: cml1.bbclass: Add diffconfig task to cml1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit diffconfig() is a new task that makes a diff between the old and new config files and writes to the fragment.cfg result file. menuconfig() always copy the original config file, so the user doesn't need to copy it. (From OE-Core rev: f0dcbbdcc37da12f84f730b8235f50be8c150c50) Signed-off-by: João Henrique Ferreira de Freitas Signed-off-by: Saul Wold Signed-off-by: Richard Purdie --- meta/classes/cml1.bbclass | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'meta/classes/cml1.bbclass') diff --git a/meta/classes/cml1.bbclass b/meta/classes/cml1.bbclass index e292ecb..34c0c4e 100644 --- a/meta/classes/cml1.bbclass +++ b/meta/classes/cml1.bbclass @@ -16,8 +16,11 @@ HOST_LOADLIBES = "-lncurses" TERMINFO = "${STAGING_DATADIR_NATIVE}/terminfo" python do_menuconfig() { + import shutil + try: mtime = os.path.getmtime(".config") + shutil.copy(".config", ".config.orig") except OSError: mtime = 0 @@ -38,3 +41,33 @@ do_menuconfig[depends] += "ncurses-native:do_populate_sysroot" do_menuconfig[nostamp] = "1" addtask menuconfig after do_configure +python do_diffconfig() { + import shutil + import subprocess + + workdir = d.getVar('WORKDIR', True) + fragment = workdir + '/fragment.cfg' + configorig = '.config.orig' + config = '.config' + + try: + md5newconfig = bb.utils.md5_file(configorig) + md5config = bb.utils.md5_file(config) + isdiff = md5newconfig != md5config + except IOError as e: + bb.fatal("No config files found. Did you do menuconfig ?\n%s" % e) + + if isdiff: + statement = 'diff -Nurp ' + configorig + ' ' + config + '| sed -n "s/^\+//p" >' + fragment + subprocess.call(statement, shell=True) + + shutil.copy(configorig, config) + + bb.plain("Config fragment has been dumped into:\n %s" % fragment) + else: + if os.path.exists(fragment): + os.unlink(fragment) +} + +do_diffconfig[nostamp] = "1" +addtask diffconfig -- cgit v1.1