[asterisk-commits] branch group/autoconf_and_menuselect r18435 - /team/group/autoconf_and_menuse...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Fri Apr 7 15:03:38 MST 2006


Author: russell
Date: Fri Apr  7 17:03:37 2006
New Revision: 18435

URL: http://svn.digium.com/view/asterisk?rev=18435&view=rev
Log:
add the ability to set that when an option in a certain category gets changed,
to force a clean of the tree

Modified:
    team/group/autoconf_and_menuselect/build_tools/cflags.xml
    team/group/autoconf_and_menuselect/build_tools/menuselect.c

Modified: team/group/autoconf_and_menuselect/build_tools/cflags.xml
URL: http://svn.digium.com/view/asterisk/team/group/autoconf_and_menuselect/build_tools/cflags.xml?rev=18435&r1=18434&r2=18435&view=diff
==============================================================================
--- team/group/autoconf_and_menuselect/build_tools/cflags.xml (original)
+++ team/group/autoconf_and_menuselect/build_tools/cflags.xml Fri Apr  7 17:03:37 2006
@@ -1,4 +1,4 @@
-	<category name="MENUSELECT_CFLAGS" displayname="Compiler Flags" positive_output="yes">
+	<category name="MENUSELECT_CFLAGS" displayname="Compiler Flags" positive_output="yes" force_clean_on_change="yes">
 		<member name="-DDEBUG_SCHEDULER"/>
 		<member name="-DDEBUG_THREADS"/>
 		<member name="-DDETECT_DEADLOCKS"/>

Modified: team/group/autoconf_and_menuselect/build_tools/menuselect.c
URL: http://svn.digium.com/view/asterisk/team/group/autoconf_and_menuselect/build_tools/menuselect.c?rev=18435&r1=18434&r2=18435&view=diff
==============================================================================
--- team/group/autoconf_and_menuselect/build_tools/menuselect.c (original)
+++ team/group/autoconf_and_menuselect/build_tools/menuselect.c Fri Apr  7 17:03:37 2006
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <unistd.h>
 #include <signal.h>
 #include <curses.h>
 
@@ -81,6 +82,8 @@
 	const char *displayname;
 	/*! Display what is selected, as opposed to not selected */
 	int positive_output;
+	/*! Force a clean of the source tree if anything in this category changes */
+	int force_clean_on_change;
 	/*! the list of possible values to be set in this variable */
 	AST_LIST_HEAD_NOLOCK(, member) members;
 	/*! for linking */
@@ -122,6 +125,9 @@
 /*! This is set when the --check-deps argument is provided. */
 int check_deps = 0;
 
+/*! Force a clean of the source tree */
+int force_clean = 0;
+
 /*! \brief a wrapper for calloc() that generates an error message if the allocation fails */
 static inline void *my_calloc(size_t num, size_t len)
 {
@@ -205,12 +211,12 @@
 	}
 
 	if (!(tree = my_calloc(1, sizeof(*tree)))) {
-		close(f);
+		fclose(f);
 		return -1;
 	}
 
 	if (!(tree->root = mxmlLoadFile(NULL, f, MXML_OPAQUE_CALLBACK))) {
-		close(f);
+		fclose(f);
 		free(tree);
 		return -1;
 	}
@@ -240,6 +246,8 @@
 		cat->displayname = mxmlElementGetAttr(cur, "displayname");
 		if ((tmp = mxmlElementGetAttr(cur, "positive_output")))
 			cat->positive_output = !strcasecmp(tmp, "yes");
+		if ((tmp = mxmlElementGetAttr(cur, "force_clean_on_change")))
+			cat->force_clean_on_change = !strcasecmp(tmp, "yes");
 
 		if (add_category(cat)) {
 			free(cat);
@@ -280,7 +288,7 @@
 		}
 	}
 
-	close(f);
+	fclose(f);
 
 	return 0;
 }
@@ -322,7 +330,7 @@
 		memset(buf, 0, sizeof(buf));
 	}
 
-	close(f);
+	fclose(f);
 
 	/* Process dependencies of all modules */
 	AST_LIST_TRAVERSE(&categories, cat, list) {
@@ -418,8 +426,11 @@
 			break;
 	}
 
-	if (mem && !mem->depsfailed)
+	if (mem && !mem->depsfailed) {
 		mem->enabled = !mem->enabled;
+		if (cat->force_clean_on_change)
+			force_clean = 1;
+	}
 }
 
 /*! \brief Parse an existing output makeopts file and enable members previously selected */
@@ -468,7 +479,7 @@
 		}
 	}
 
-	close(f);
+	fclose(f);
 }
 
 /*! \brief Create the output makeopts file that results from the user's selections */
@@ -494,7 +505,7 @@
 		fprintf(f, "\n");
 	}
 
-	close(f);
+	fclose(f);
 
 	return 0;
 }
@@ -867,5 +878,8 @@
 		res = -1;
 	}
 
+	if (force_clean)
+		unlink(".lastclean");
+
 	exit(res);
 }



More information about the asterisk-commits mailing list