| OLD | NEW |
| 1 """SCons.Platform.posix | 1 """SCons.Platform.posix |
| 2 | 2 |
| 3 Platform-specific initialization for POSIX (Linux, UNIX, etc.) systems. | 3 Platform-specific initialization for POSIX (Linux, UNIX, etc.) systems. |
| 4 | 4 |
| 5 There normally shouldn't be any need to import this module directly. It | 5 There normally shouldn't be any need to import this module directly. It |
| 6 will usually be imported through the generic SCons.Platform.Platform() | 6 will usually be imported through the generic SCons.Platform.Platform() |
| 7 selection method. | 7 selection method. |
| 8 """ | 8 """ |
| 9 | 9 |
| 10 # | 10 # |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 # | 23 # |
| 24 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY | 24 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY |
| 25 # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE | 25 # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE |
| 26 # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | 26 # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| 27 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | 27 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
| 28 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | 28 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
| 29 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | 29 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
| 30 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | 30 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| 31 # | 31 # |
| 32 | 32 |
| 33 __revision__ = "src/engine/SCons/Platform/posix.py 3603 2008/10/10 05:46:45 scon
s" | 33 __revision__ = "src/engine/SCons/Platform/posix.py 3842 2008/12/20 22:59:52 scon
s" |
| 34 | 34 |
| 35 import errno | 35 import errno |
| 36 import os | 36 import os |
| 37 import os.path | 37 import os.path |
| 38 import popen2 | |
| 39 import string | 38 import string |
| 39 import subprocess |
| 40 import sys | 40 import sys |
| 41 import select | 41 import select |
| 42 | 42 |
| 43 import SCons.Util | 43 import SCons.Util |
| 44 from SCons.Platform import TempFileMunge | 44 from SCons.Platform import TempFileMunge |
| 45 | 45 |
| 46 exitvalmap = { | 46 exitvalmap = { |
| 47 2 : 127, | 47 2 : 127, |
| 48 13 : 126, | 48 13 : 126, |
| 49 } | 49 } |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 #sys.__stderr__.write( "stderr_eof=1\n" ) | 124 #sys.__stderr__.write( "stderr_eof=1\n" ) |
| 125 stderr_eof = 1 | 125 stderr_eof = 1 |
| 126 else: | 126 else: |
| 127 #sys.__stderr__.write( "str(stderr) = %s\n" % str ) | 127 #sys.__stderr__.write( "str(stderr) = %s\n" % str ) |
| 128 stderr.write(str) | 128 stderr.write(str) |
| 129 except select.error, (_errno, _strerror): | 129 except select.error, (_errno, _strerror): |
| 130 if _errno != errno.EINTR: | 130 if _errno != errno.EINTR: |
| 131 raise | 131 raise |
| 132 | 132 |
| 133 def exec_popen3(l, env, stdout, stderr): | 133 def exec_popen3(l, env, stdout, stderr): |
| 134 proc = popen2.Popen3(string.join(l), 1) | 134 proc = subprocess.Popen(string.join(l), |
| 135 process_cmd_output(proc.fromchild, proc.childerr, stdout, stderr) | 135 stdout=stdout, |
| 136 stderr=stderr, |
| 137 shell=True) |
| 136 stat = proc.wait() | 138 stat = proc.wait() |
| 137 if stat & 0xff: | 139 if stat & 0xff: |
| 138 return stat | 0x80 | 140 return stat | 0x80 |
| 139 return stat >> 8 | 141 return stat >> 8 |
| 140 | 142 |
| 141 def exec_piped_fork(l, env, stdout, stderr): | 143 def exec_piped_fork(l, env, stdout, stderr): |
| 142 # spawn using fork / exec and providing a pipe for the command's | 144 # spawn using fork / exec and providing a pipe for the command's |
| 143 # stdout / stderr stream | 145 # stdout / stderr stream |
| 144 if stdout != stderr: | 146 if stdout != stderr: |
| 145 (rFdOut, wFdOut) = os.pipe() | 147 (rFdOut, wFdOut) = os.pipe() |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 env['SHELL'] = 'sh' | 249 env['SHELL'] = 'sh' |
| 248 env['ESCAPE'] = escape | 250 env['ESCAPE'] = escape |
| 249 env['TEMPFILE'] = TempFileMunge | 251 env['TEMPFILE'] = TempFileMunge |
| 250 env['TEMPFILEPREFIX'] = '@' | 252 env['TEMPFILEPREFIX'] = '@' |
| 251 #Based on LINUX: ARG_MAX=ARG_MAX=131072 - 3000 for environment expansion | 253 #Based on LINUX: ARG_MAX=ARG_MAX=131072 - 3000 for environment expansion |
| 252 #Note: specific platforms might rise or lower this value | 254 #Note: specific platforms might rise or lower this value |
| 253 env['MAXLINELENGTH'] = 128072 | 255 env['MAXLINELENGTH'] = 128072 |
| 254 | 256 |
| 255 # This platform supports RPATH specifications. | 257 # This platform supports RPATH specifications. |
| 256 env['__RPATH'] = '$_RPATH' | 258 env['__RPATH'] = '$_RPATH' |
| OLD | NEW |