[Cmake-commits] [cmake-commits] king committed cmAddCustomTargetCommand.cxx 1.35 1.36 cmCMakeMinimumRequired.h 1.11 1.12 cmCMakePolicyCommand.h 1.2 1.3 cmConfigureFileCommand.cxx 1.33 1.34 cmFindBase.cxx 1.34 1.35 cmListFileCache.cxx 1.37 1.38 cmLocalGenerator.cxx 1.267 1.268 cmMakefile.cxx 1.448 1.449 cmPolicies.cxx 1.14 1.15 cmPolicies.h 1.7 1.8 cmake.cxx 1.365 1.366
cmake-commits at cmake.org
cmake-commits at cmake.org
Fri Mar 7 15:30:37 EST 2008
Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv16041/Source
Modified Files:
cmAddCustomTargetCommand.cxx cmCMakeMinimumRequired.h
cmCMakePolicyCommand.h cmConfigureFileCommand.cxx
cmFindBase.cxx cmListFileCache.cxx cmLocalGenerator.cxx
cmMakefile.cxx cmPolicies.cxx cmPolicies.h cmake.cxx
Log Message:
ENH: Improve handling of old-style compatibility.
- Remove CMP_0001 (no slash in target name) and restore
old CMAKE_BACKWARDS_COMPATIBILITY check for it
- Replace all checks of CMAKE_BACKWARDS_COMPATIBILITY
with cmLocalGenerator::NeedBackwardsCompatibility calls
- Create new CMP_0001 to determine whether or not
CMAKE_BACKWARDS_COMPATIBILITY is used.
(old = use, new = ignore)
- Show CMAKE_BACKWARDS_COMPATIBILITY in cache only when
CMP_0001 is set to OLD or WARN
- Update documentation of cmake_policy and cmake_minimum_required
to indicate their relationship and the 2.4 version boundary
- When no cmake policy version is set in top level makefile
implicitly call cmake_policy(VERSION 2.4) which restores
CMAKE_BACKWARDS_COMPATIBILITY and other 2.4 compatibility
- Fix tests MakeClean and Preprocess to call
cmake_policy(VERSION 2.6) because they depend on new policies
Index: cmLocalGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalGenerator.cxx,v
retrieving revision 1.267
retrieving revision 1.268
diff -C 2 -d -r1.267 -r1.268
*** cmLocalGenerator.cxx 2 Mar 2008 19:35:23 -0000 1.267
--- cmLocalGenerator.cxx 7 Mar 2008 20:30:33 -0000 1.268
***************
*** 1196,1208 ****
// CMake versions below 2.0 would add the source tree to the -I path
// automatically. Preserve compatibility.
! const char* versionValue =
! this->Makefile->GetDefinition("CMAKE_BACKWARDS_COMPATIBILITY");
! int major = 0;
! int minor = 0;
! if(versionValue && sscanf(versionValue, "%d.%d", &major, &minor) != 2)
! {
! versionValue = 0;
! }
! if(versionValue && major < 2)
{
includeSourceDir = true;
--- 1196,1200 ----
// CMake versions below 2.0 would add the source tree to the -I path
// automatically. Preserve compatibility.
! if(this->NeedBackwardsCompatibility(1,9))
{
includeSourceDir = true;
***************
*** 2680,2683 ****
--- 2672,2697 ----
unsigned int patch)
{
+ // Check the policy to decide whether to pay attention to this
+ // variable.
+ switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP_0001))
+ {
+ case cmPolicies::WARN:
+ // WARN is just OLD without warning because user code does not
+ // always affect whether this check is done.
+ case cmPolicies::OLD:
+ // Old behavior is to check the variable.
+ break;
+ case cmPolicies::NEW:
+ // New behavior is to ignore the variable.
+ return false;
+ case cmPolicies::REQUIRED_IF_USED:
+ case cmPolicies::REQUIRED_ALWAYS:
+ // This will never be the case because the only way to require
+ // the setting is to require the user to specify version policy
+ // 2.6 or higher. Once we add that requirement then this whole
+ // method can be removed anyway.
+ return false;
+ }
+
// Compatibility is needed if CMAKE_BACKWARDS_COMPATIBILITY is set
// equal to or lower than the given version.
Index: cmListFileCache.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmListFileCache.cxx,v
retrieving revision 1.37
retrieving revision 1.38
diff -C 2 -d -r1.37 -r1.38
*** cmListFileCache.cxx 7 Mar 2008 16:43:47 -0000 1.37
--- cmListFileCache.cxx 7 Mar 2008 20:30:33 -0000 1.38
***************
*** 150,153 ****
--- 150,156 ----
mf->GetPolicies()->GetPolicyWarning(cmPolicies::CMP_0000)
);
+
+ // Implicitly set the version for the user.
+ mf->SetPolicyVersion("2.4");
case cmPolicies::OLD:
break;
Index: cmPolicies.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmPolicies.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -C 2 -d -r1.7 -r1.8
*** cmPolicies.h 5 Mar 2008 16:41:25 -0000 1.7
--- cmPolicies.h 7 Mar 2008 20:30:33 -0000 1.8
***************
*** 39,48 ****
static const char* PolicyStatusNames[];
! enum PolicyID {CMP_0000, CMP_POLICY_SPECIFICATION = CMP_0000,
! CMP_0001, CMP_TARGET_NAMES_WITH_SLASHES = CMP_0001,
! CMP_0002, CMP_REQUIRE_UNIQUE_TARGET_NAMES = CMP_0002,
! CMP_0003, CMP_CONFIGURE_FILE_IMMEDIATE = CMP_0003
! };
!
///! convert a string policy ID into a number
--- 39,48 ----
static const char* PolicyStatusNames[];
! enum PolicyID
! {
! CMP_0000, // Policy version specification
! CMP_0001, // Ignore old compatibility variable
! CMP_0002
! };
///! convert a string policy ID into a number
Index: cmPolicies.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmPolicies.cxx,v
retrieving revision 1.14
retrieving revision 1.15
diff -C 2 -d -r1.14 -r1.15
*** cmPolicies.cxx 7 Mar 2008 16:43:47 -0000 1.14
--- cmPolicies.cxx 7 Mar 2008 20:30:33 -0000 1.15
***************
*** 85,89 ****
{
// define all the policies
! this->DefinePolicy(CMP_0000, "CMP_0000",
"Missing a CMake version specification. You must have a cmake_policy "
"call.",
--- 85,90 ----
{
// define all the policies
! this->DefinePolicy(
! CMP_0000, "CMP_0000",
"Missing a CMake version specification. You must have a cmake_policy "
"call.",
***************
*** 95,128 ****
"This policy is being put in place because it aids us in detecting "
"and maintaining backwards compatibility.",
! 2,6,0, cmPolicies::WARN);
! // this->PolicyStringMap["CMP_POLICY_SPECIFICATION"] = CMP_0000;
!
! this->DefinePolicy(CMP_0001, "CMP_0001",
! "CMake does not allow target names to include slash characters.",
! "CMake requires that target names not include any / or \\ characters "
! "please change the name of any targets to not use such characters."
! ,
! 2,4,0, cmPolicies::REQUIRED_IF_USED);
! // this->PolicyStringMap["CMP_TARGET_NAMES_WITH_SLASHES"] = CMP_0001;
!
! this->DefinePolicy(CMP_0002, "CMP_0002",
! "CMake requires that target names be globaly unique.",
! "CMake requires that target names not include any / or \\ characters "
! "please change the name of any targets to not use such characters."
! ,
! 2,6,0, cmPolicies::WARN);
! // this->PolicyStringMap["CMP_REQUIRE_UNIQUE_TARGET_NAMES"] = CMP_0002;
! this->DefinePolicy(CMP_0003, "CMP_0003",
! "CMake configures file immediately after 2.0.",
! "In CMake 2.0 and earlier the configure_file command would not "
! "configure the file until after processing all CMakeLists files. "
! "In CMake 2.2 and later the default behavior is that it will "
! "configure the file right when the command is invoked."
! ,
! 2,6,0, cmPolicies::NEW);
! // this->PolicyStringMap["CMP_CONFIGURE_FILE_IMMEDIATE"] = CMP_0003;
! }
cmPolicies::~cmPolicies()
--- 96,125 ----
"This policy is being put in place because it aids us in detecting "
"and maintaining backwards compatibility.",
! 2,6,0, cmPolicies::WARN
! );
! this->DefinePolicy(
! CMP_0001, "CMP_0001",
! "CMAKE_BACKWARDS_COMPATIBILITY should no longer be used.",
! "The OLD behavior is to check CMAKE_BACKWARDS_COMPATIBILITY and present "
! "it to the user. "
! "The NEW behavior is to ignore CMAKE_BACKWARDS_COMPATIBILITY "
! "completely.\n"
! "In CMake 2.4 and below the variable CMAKE_BACKWARDS_COMPATIBILITY was "
! "used to request compatibility with earlier versions of CMake. "
! "In CMake 2.6 and above all compatibility issues are handled by policies "
! "and the cmake_policy command. "
! "However, CMake must still check CMAKE_BACKWARDS_COMPATIBILITY for "
! "projects written for CMake 2.4 and below.",
! 2,6,0, cmPolicies::WARN
! );
! this->DefinePolicy(
! CMP_0002, "CMP_0002",
! "CMake requires that target names be globaly unique.",
! "....",
! 2,6,0, cmPolicies::WARN
! );
! }
cmPolicies::~cmPolicies()
***************
*** 188,212 ****
if (majorVer < 2 || majorVer == 2 && minorVer < 4)
{
! mf->IssueError("An attempt was made to set the policy version of "
! "CMake to something earlier than 2.4, this is an error!");
! }
!
! // if the version is 2.4 then make sure the backwards compatibility variable is visible
! if (majorVer == 2 && minorVer == 4)
! {
! // set the default BACKWARDS compatibility to be visible
! mf->GetCacheManager()->GetCacheIterator(
! "CMAKE_BACKWARDS_COMPATIBILITY").SetType
! (cmCacheManager::STRING);
! // const char *cbcValue =
! // mf->GetCacheManager()->
! // GetCacheValue("CMAKE_BACKWARDS_COMPATIBILITY");
! // mf->AddCacheDefinition
! // ("CMAKE_BACKWARDS_COMPATIBILITY",cbcValue,
! // "For backwards compatibility, what version of CMake commands and "
! // "syntax should this version of CMake allow.",
! // cmCacheManager::STRING);
}
!
// now loop over all the policies and set them as appropriate
std::map<cmPolicies::PolicyID,cmPolicy *>::iterator i
--- 185,200 ----
if (majorVer < 2 || majorVer == 2 && minorVer < 4)
{
! mf->IssueError(
! "An attempt was made to set the policy version of CMake to something "
! "earlier than \"2.4\". "
! "In CMake 2.4 and below backwards compatibility was handled with the "
! "CMAKE_BACKWARDS_COMPATIBILITY variable. "
! "In order to get compatibility features supporting versions earlier "
! "than 2.4 set policy CMP_0001 to OLD to tell CMake to check the "
! "CMAKE_BACKWARDS_COMPATIBILITY variable. "
! "One way to so this is to set the policy version to 2.4 exactly."
! );
}
!
// now loop over all the policies and set them as appropriate
std::map<cmPolicies::PolicyID,cmPolicy *>::iterator i
Index: cmFindBase.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindBase.cxx,v
retrieving revision 1.34
retrieving revision 1.35
diff -C 2 -d -r1.34 -r1.35
*** cmFindBase.cxx 17 Jan 2008 22:49:30 -0000 1.34
--- cmFindBase.cxx 7 Mar 2008 20:30:33 -0000 1.35
***************
*** 110,126 ****
// locations. Preserve compatibility unless a modern argument is
// passed.
! bool compatibility = false;
! const char* versionValue =
! this->Makefile->GetDefinition("CMAKE_BACKWARDS_COMPATIBILITY");
! int major = 0;
! int minor = 0;
! if(versionValue && sscanf(versionValue, "%d.%d", &major, &minor) != 2)
! {
! versionValue = 0;
! }
! if(versionValue && (major < 2 || major == 2 && minor < 3))
! {
! compatibility = true;
! }
// copy argsIn into args so it can be modified,
--- 110,114 ----
// locations. Preserve compatibility unless a modern argument is
// passed.
! bool compatibility = this->Makefile->NeedBackwardsCompatibility(2,3);
// copy argsIn into args so it can be modified,
Index: cmAddCustomTargetCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddCustomTargetCommand.cxx,v
retrieving revision 1.35
retrieving revision 1.36
diff -C 2 -d -r1.35 -r1.36
*** cmAddCustomTargetCommand.cxx 7 Mar 2008 13:40:36 -0000 1.35
--- cmAddCustomTargetCommand.cxx 7 Mar 2008 20:30:32 -0000 1.36
***************
*** 22,37 ****
cmExecutionStatus& status)
{
- // This enum must be before an enum is used in a switch statment.
- // If not there is an ICE on the itanium version of gcc we are running
- // on dash8
-
- // Keep track of parser state.
- enum tdoing {
- doing_command,
- doing_depends,
- doing_working_directory,
- doing_comment,
- doing_verbatim
- };
if(args.size() < 1 )
{
--- 22,25 ----
***************
*** 42,73 ****
// Check the target name.
if(args[0].find_first_of("/\\") != args[0].npos)
- {
- // slashes are not allowed anymore in taret names CMP_0001
- switch (this->Makefile->GetPolicyStatus(cmPolicies::CMP_0001))
{
! case cmPolicies::WARN:
! this->Makefile->IssueWarning(
! this->Makefile->GetPolicies()->GetPolicyWarning
! (cmPolicies::CMP_0001));
! case cmPolicies::OLD:
! // if (this->Makefile->IsBWCompatibilityLessThan(2,2))
! // {
! // break;
! // }
! case cmPolicies::NEW:
! this->SetError("You included a / or \\ in your target name and "
! "this is not allowed according to policy CMP_0001. Run "
! "cmake --help-policy CMP_0001 for more information.");
! return false;
! case cmPolicies::REQUIRED_IF_USED:
! case cmPolicies::REQUIRED_ALWAYS:
! this->Makefile->IssueError(
! this->Makefile->GetPolicies()->GetRequiredPolicyError
! (cmPolicies::CMP_0001).c_str()
! );
! return false;
}
! }
!
// Accumulate one command line at a time.
cmCustomCommandLine currentLine;
--- 30,47 ----
// Check the target name.
if(args[0].find_first_of("/\\") != args[0].npos)
{
! if(!this->Makefile->NeedBackwardsCompatibility(2,2))
! {
! cmOStringStream e;
! e << "called with invalid target name \"" << args[0]
! << "\". Target names may not contain a slash. "
! << "Use ADD_CUSTOM_COMMAND to generate files. "
! << "Set CMAKE_BACKWARDS_COMPATIBILITY to 2.2 "
! << "or lower to skip this check.";
! this->SetError(e.str().c_str());
! return false;
! }
}
!
// Accumulate one command line at a time.
cmCustomCommandLine currentLine;
***************
*** 84,87 ****
--- 58,68 ----
// Keep track of parser state.
+ enum tdoing {
+ doing_command,
+ doing_depends,
+ doing_working_directory,
+ doing_comment,
+ doing_verbatim
+ };
tdoing doing = doing_command;
Index: cmake.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmake.cxx,v
retrieving revision 1.365
retrieving revision 1.366
diff -C 2 -d -r1.365 -r1.366
*** cmake.cxx 7 Mar 2008 16:43:47 -0000 1.365
--- cmake.cxx 7 Mar 2008 20:30:33 -0000 1.366
***************
*** 1900,1916 ****
}
- // set the default BACKWARDS compatibility to the current version
- if(!this->CacheManager->GetCacheValue("CMAKE_BACKWARDS_COMPATIBILITY"))
- {
- char ver[256];
- sprintf(ver,"%i.%i",cmVersion::GetMajorVersion(),
- cmVersion::GetMinorVersion());
- this->CacheManager->AddCacheEntry
- ("CMAKE_BACKWARDS_COMPATIBILITY",ver,
- "For backwards compatibility, what version of CMake commands and "
- "syntax should this version of CMake allow.",
- cmCacheManager::INTERNAL);
- }
-
// no generator specified on the command line
if(!this->GlobalGenerator)
--- 1900,1903 ----
***************
*** 2393,2410 ****
return -3;
}
-
- // set the default BACKWARDS compatibility to the current version
- if(!this->CacheManager->GetCacheValue("CMAKE_BACKWARDS_COMPATIBILITY"))
- {
- char ver[256];
- sprintf(ver,"%i.%i",cmVersion::GetMajorVersion(),
- cmVersion::GetMinorVersion());
- this->CacheManager->AddCacheEntry
- ("CMAKE_BACKWARDS_COMPATIBILITY",ver,
- "For backwards compatibility, what version of CMake commands and "
- "syntax should this version of CMake allow.",
- cmCacheManager::INTERNAL);
- }
-
return 0;
}
--- 2380,2383 ----
Index: cmCMakePolicyCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmCMakePolicyCommand.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C 2 -d -r1.2 -r1.3
*** cmCMakePolicyCommand.h 5 Mar 2008 23:21:09 -0000 1.2
--- cmCMakePolicyCommand.h 7 Mar 2008 20:30:32 -0000 1.3
***************
*** 77,81 ****
"This effectively requests behavior preferred as of a given CMake "
"version and tells newer CMake versions to warn about their new "
! "policies."
"\n"
" cmake_policy(SET <CMP_NNNN> NEW)\n"
--- 77,85 ----
"This effectively requests behavior preferred as of a given CMake "
"version and tells newer CMake versions to warn about their new "
! "policies. "
! "The policy version specified must be at least 2.4 or the command "
! "will report an error. "
! "In order to get compatibility features supporting versions earlier "
! "than 2.4 see documentation of policy CMP_0001."
"\n"
" cmake_policy(SET <CMP_NNNN> NEW)\n"
Index: cmConfigureFileCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmConfigureFileCommand.cxx,v
retrieving revision 1.33
retrieving revision 1.34
diff -C 2 -d -r1.33 -r1.34
*** cmConfigureFileCommand.cxx 6 Mar 2008 20:08:03 -0000 1.33
--- cmConfigureFileCommand.cxx 7 Mar 2008 20:30:33 -0000 1.34
***************
*** 41,67 ****
this->EscapeQuotes = false;
-
// for CMake 2.0 and earlier CONFIGURE_FILE defaults to the FinalPass,
// after 2.0 it only does InitialPass
! this->Immediate = false;
! const char* versionValue
! = this->Makefile->GetDefinition("CMAKE_BACKWARDS_COMPATIBILITY");
! if (versionValue && atof(versionValue) > 2.0)
! {
! this->Immediate = true;
! }
- switch (this->Makefile->GetPolicyStatus(cmPolicies::CMP_0003))
- {
- case cmPolicies::WARN:
- case cmPolicies::OLD:
- break;
- case cmPolicies::NEW:
- case cmPolicies::REQUIRED_IF_USED:
- case cmPolicies::REQUIRED_ALWAYS:
- this->Immediate = true;
- }
-
-
this->AtOnly = false;
for(unsigned int i=2;i < args.size();++i)
--- 41,48 ----
this->EscapeQuotes = false;
// for CMake 2.0 and earlier CONFIGURE_FILE defaults to the FinalPass,
// after 2.0 it only does InitialPass
! this->Immediate = !this->Makefile->NeedBackwardsCompatibility(2,0);
this->AtOnly = false;
for(unsigned int i=2;i < args.size();++i)
Index: cmCMakeMinimumRequired.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmCMakeMinimumRequired.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -C 2 -d -r1.11 -r1.12
*** cmCMakeMinimumRequired.h 4 Mar 2008 23:42:06 -0000 1.11
--- cmCMakeMinimumRequired.h 7 Mar 2008 20:30:32 -0000 1.12
***************
*** 71,74 ****
--- 71,81 ----
"If the current version of CMake is lower than that required "
"it will stop processing the project and report an error.\n"
+ "When a version higher than 2.4 is specified the command implicitly "
+ "invokes\n"
+ " cmake_policy(VERSION major[.minor[.patch]])\n"
+ "which sets the cmake policy version level to the version specified.\n"
+ "When version 2.4 or lower is given the command implicitly invokes\n"
+ " cmake_policy(VERSION 2.4)\n"
+ "which enables compatibility features for CMake 2.4 and lower.\n"
"The FATAL_ERROR option is accepted but ignored. It is left from "
"CMake versions 2.4 and lower in which failure to meet the minimum "
Index: cmMakefile.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMakefile.cxx,v
retrieving revision 1.448
retrieving revision 1.449
diff -C 2 -d -r1.448 -r1.449
*** cmMakefile.cxx 7 Mar 2008 14:09:21 -0000 1.448
--- cmMakefile.cxx 7 Mar 2008 20:30:33 -0000 1.449
***************
*** 1144,1154 ****
if(tgt)
{
! bool allowModules = true;
! const char* versionValue
! = this->GetDefinition("CMAKE_BACKWARDS_COMPATIBILITY");
! if (versionValue && (atof(versionValue) >= 2.4) )
! {
! allowModules = false;
! }
// if it is not a static or shared library then you can not link to it
if(!((tgt->GetType() == cmTarget::STATIC_LIBRARY) ||
--- 1144,1149 ----
if(tgt)
{
! // CMake versions below 2.4 allowed linking to modules.
! bool allowModules = this->NeedBackwardsCompatibility(2,3);
// if it is not a static or shared library then you can not link to it
if(!((tgt->GetType() == cmTarget::STATIC_LIBRARY) ||
***************
*** 2093,2105 ****
<< parser.GetError() << ", when parsing string \""
<< source.c_str() << "\"";
! const char* versionValue
! = this->GetDefinition("CMAKE_BACKWARDS_COMPATIBILITY");
! int major = 0;
! int minor = 0;
! if ( versionValue )
! {
! sscanf(versionValue, "%d.%d", &major, &minor);
! }
! if ( major < 2 || major == 2 && minor < 1 )
{
cmSystemTools::Error(error.str().c_str());
--- 2088,2092 ----
<< parser.GetError() << ", when parsing string \""
<< source.c_str() << "\"";
! if(this->NeedBackwardsCompatibility(2,0))
{
cmSystemTools::Error(error.str().c_str());
***************
*** 3334,3340 ****
"If you are building an older project it is possible that "
"it violated this rule but was working accidentally because "
! "CMake did not previously diagnose this problem. "
! "Set CMAKE_BACKWARDS_COMPATIBILITY to 2.4 or lower to disable "
! "this error.\n";
if(isCustom && existing->GetType() == cmTarget::UTILITY)
{
--- 3321,3325 ----
"If you are building an older project it is possible that "
"it violated this rule but was working accidentally because "
! "CMake did not previously diagnose this problem.\n";
if(isCustom && existing->GetType() == cmTarget::UTILITY)
{
***************
*** 3423,3426 ****
--- 3408,3431 ----
{
this->PolicyStack.back()[id] = status;
+
+ // Special hook for presenting compatibility variable as soon as
+ // the user requests it.
+ if(id == cmPolicies::CMP_0001 &&
+ (status == cmPolicies::WARN || status == cmPolicies::OLD))
+ {
+ if(!(this->GetCacheManager()
+ ->GetCacheValue("CMAKE_BACKWARDS_COMPATIBILITY")))
+ {
+ // Set it to 2.4 because that is the last version where the
+ // variable had meaning.
+ this->AddCacheDefinition
+ ("CMAKE_BACKWARDS_COMPATIBILITY", "2.4",
+ "For backwards compatibility, what version of CMake "
+ "commands and "
+ "syntax should this version of CMake try to support.",
+ cmCacheManager::STRING);
+ }
+ }
+
return true;
}
More information about the Cmake-commits
mailing list