[55280] branches/release_1_8
jmr at macports.org
jmr at macports.org
Fri Aug 7 19:45:31 PDT 2009
Revision: 55280
http://trac.macports.org/changeset/55280
Author: jmr at macports.org
Date: 2009-08-07 19:45:30 -0700 (Fri, 07 Aug 2009)
Log Message:
-----------
merge r55279 from trunk:
limit default build.jobs based on available memory
Modified Paths:
--------------
branches/release_1_8/base/doc/macports.conf.in
branches/release_1_8/base/src/macports1.0/sysctl.c
branches/release_1_8/base/src/port1.0/portbuild.tcl
Property Changed:
----------------
branches/release_1_8/
branches/release_1_8/base/
Property changes on: branches/release_1_8
___________________________________________________________________
Modified: svn:mergeinfo
- /trunk:55268
+ /trunk:55268,55279
Property changes on: branches/release_1_8/base
___________________________________________________________________
Modified: svn:mergeinfo
- /branches/gsoc08-privileges/base:37343-46937
/branches/universal-sanity/base:51872-52323
/branches/variant-descs-14482/base:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/trunk/base:55268
/users/perry/base-bugs_and_notes:45682-46060
/users/perry/base-select:44044-44692
+ /branches/gsoc08-privileges/base:37343-46937
/branches/universal-sanity/base:51872-52323
/branches/variant-descs-14482/base:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/trunk/base:55268,55279
/users/perry/base-bugs_and_notes:45682-46060
/users/perry/base-select:44044-44692
Modified: branches/release_1_8/base/doc/macports.conf.in
===================================================================
--- branches/release_1_8/base/doc/macports.conf.in 2009-08-08 02:43:22 UTC (rev 55279)
+++ branches/release_1_8/base/doc/macports.conf.in 2009-08-08 02:45:30 UTC (rev 55280)
@@ -72,7 +72,8 @@
# Number of simultaneous make jobs (commands) to use when building ports. This
# value may be set to 0 so the number of simultaneous make jobs will be set to
-# the number of CPU cores that are automatically detected.
+# the number of CPU cores that are automatically detected, or the number of GB
+# of physical memory plus one, whichever is less.
#buildmakejobs 0
# Set whether to automatically execute "clean" after "install" of ports
Modified: branches/release_1_8/base/src/macports1.0/sysctl.c
===================================================================
--- branches/release_1_8/base/src/macports1.0/sysctl.c 2009-08-08 02:43:22 UTC (rev 55279)
+++ branches/release_1_8/base/src/macports1.0/sysctl.c 2009-08-08 02:45:30 UTC (rev 55280)
@@ -44,7 +44,7 @@
#include "sysctl.h"
/*
- * Read-only wrapper for sysctlbyname(3). Only works for values of type CTLTYPE_INT.
+ * Read-only wrapper for sysctlbyname(3). Only works for values of type CTLTYPE_INT and CTLTYPE_QUAD.
*/
int SysctlCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
{
@@ -53,6 +53,7 @@
int res;
char *name;
int value;
+ Tcl_WideInt long_value;
size_t len = sizeof(value);
if (objc != 2) {
@@ -62,14 +63,25 @@
name = Tcl_GetString(objv[1]);
res = sysctlbyname(name, &value, &len, NULL, 0);
- if (res == -1) {
+ if (res == -1 && errno != ENOMEM && errno != ERANGE) {
tcl_result = Tcl_NewStringObj(error_message, sizeof(error_message) - 1);
Tcl_AppendObjToObj(tcl_result, Tcl_NewStringObj(strerror(errno), -1));
Tcl_SetObjResult(interp, tcl_result);
return TCL_ERROR;
+ } else if (res == -1) {
+ len = sizeof(long_value);
+ res = sysctlbyname(name, &long_value, &len, NULL, 0);
+ if (res == -1) {
+ tcl_result = Tcl_NewStringObj(error_message, sizeof(error_message) - 1);
+ Tcl_AppendObjToObj(tcl_result, Tcl_NewStringObj(strerror(errno), -1));
+ Tcl_SetObjResult(interp, tcl_result);
+ return TCL_ERROR;
+ }
+ tcl_result = Tcl_NewWideIntObj(long_value);
+ } else {
+ tcl_result = Tcl_NewIntObj(value);
}
-
- tcl_result = Tcl_NewIntObj(value);
+
Tcl_SetObjResult(interp, tcl_result);
return TCL_OK;
}
Modified: branches/release_1_8/base/src/port1.0/portbuild.tcl
===================================================================
--- branches/release_1_8/base/src/port1.0/portbuild.tcl 2009-08-08 02:43:22 UTC (rev 55279)
+++ branches/release_1_8/base/src/port1.0/portbuild.tcl 2009-08-08 02:45:30 UTC (rev 55280)
@@ -119,11 +119,14 @@
set jobs $buildmakejobs
# if set to '0', use the number of cores for the number of jobs
if {$jobs == 0} {
- if {[catch {set jobs [sysctl hw.activecpu]}]} {
+ if {[catch {set jobs [sysctl hw.activecpu]}] || [catch {set memsize [sysctl hw.memsize]}]} {
set jobs 2
ui_warn "failed to determine the number of available CPUs (probably not supported on this platform)"
ui_warn "defaulting to $jobs jobs, consider setting buildmakejobs to a nonzero value in macports.conf"
}
+ if {$jobs > $memsize / 1000000000 + 1} {
+ set jobs [expr $memsize / 1000000000 + 1]
+ }
}
if {![string is integer -strict $jobs] || $jobs <= 1} {
set jobs 1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090807/f75c9e86/attachment-0001.html>
More information about the macports-changes
mailing list