libv8 3.3.10.4 → 3.5.10.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/libv8/scons/CHANGES.txt +24 -231
- data/lib/libv8/scons/LICENSE.txt +1 -1
- data/lib/libv8/scons/MANIFEST +0 -1
- data/lib/libv8/scons/PKG-INFO +1 -1
- data/lib/libv8/scons/README.txt +9 -9
- data/lib/libv8/scons/RELEASE.txt +75 -77
- data/lib/libv8/scons/engine/SCons/Action.py +6 -22
- data/lib/libv8/scons/engine/SCons/Builder.py +2 -2
- data/lib/libv8/scons/engine/SCons/CacheDir.py +2 -2
- data/lib/libv8/scons/engine/SCons/Debug.py +2 -2
- data/lib/libv8/scons/engine/SCons/Defaults.py +10 -24
- data/lib/libv8/scons/engine/SCons/Environment.py +19 -118
- data/lib/libv8/scons/engine/SCons/Errors.py +2 -2
- data/lib/libv8/scons/engine/SCons/Executor.py +2 -2
- data/lib/libv8/scons/engine/SCons/Job.py +2 -2
- data/lib/libv8/scons/engine/SCons/Memoize.py +2 -2
- data/lib/libv8/scons/engine/SCons/Node/Alias.py +2 -2
- data/lib/libv8/scons/engine/SCons/Node/FS.py +121 -281
- data/lib/libv8/scons/engine/SCons/Node/Python.py +2 -2
- data/lib/libv8/scons/engine/SCons/Node/__init__.py +5 -6
- data/lib/libv8/scons/engine/SCons/Options/BoolOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/EnumOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/ListOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/PackageOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/PathOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/PathList.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/aix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/cygwin.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/darwin.py +3 -27
- data/lib/libv8/scons/engine/SCons/Platform/hpux.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/irix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/os2.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/posix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/sunos.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/win32.py +2 -2
- data/lib/libv8/scons/engine/SCons/SConf.py +2 -2
- data/lib/libv8/scons/engine/SCons/SConsign.py +3 -9
- data/lib/libv8/scons/engine/SCons/Scanner/C.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/D.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/Dir.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/Fortran.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/IDL.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/LaTeX.py +2 -5
- data/lib/libv8/scons/engine/SCons/Scanner/Prog.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/RC.py +3 -3
- data/lib/libv8/scons/engine/SCons/Scanner/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Script/Interactive.py +2 -2
- data/lib/libv8/scons/engine/SCons/Script/Main.py +11 -82
- data/lib/libv8/scons/engine/SCons/Script/SConsOptions.py +5 -5
- data/lib/libv8/scons/engine/SCons/Script/SConscript.py +2 -2
- data/lib/libv8/scons/engine/SCons/Script/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Sig.py +2 -2
- data/lib/libv8/scons/engine/SCons/Subst.py +2 -2
- data/lib/libv8/scons/engine/SCons/Taskmaster.py +2 -10
- data/lib/libv8/scons/engine/SCons/Tool/386asm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/BitKeeper.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/CVS.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/FortranCommon.py +2 -19
- data/lib/libv8/scons/engine/SCons/Tool/JavaCommon.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/arch.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/common.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/netframework.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/sdk.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vc.py +6 -9
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vs.py +2 -29
- data/lib/libv8/scons/engine/SCons/Tool/Perforce.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/PharLapCommon.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/RCS.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/SCCS.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/Subversion.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/__init__.py +3 -3
- data/lib/libv8/scons/engine/SCons/Tool/aixc++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/aixcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/aixf77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/aixlink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/applelink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/as.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/bcc32.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/c++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/cc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/cvf.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/default.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/dmd.py +7 -24
- data/lib/libv8/scons/engine/SCons/Tool/dvi.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/dvipdf.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/dvips.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/f77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/f90.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/f95.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/filesystem.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/fortran.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/g++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/g77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/gas.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/gcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/gfortran.py +3 -3
- data/lib/libv8/scons/engine/SCons/Tool/gnulink.py +3 -2
- data/lib/libv8/scons/engine/SCons/Tool/gs.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/hpc++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/hpcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/hplink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/icc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/icl.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ifl.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ifort.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ilink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ilink32.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/install.py +3 -57
- data/lib/libv8/scons/engine/SCons/Tool/intelc.py +25 -65
- data/lib/libv8/scons/engine/SCons/Tool/ipkg.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/jar.py +3 -9
- data/lib/libv8/scons/engine/SCons/Tool/javac.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/javah.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/latex.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/lex.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/link.py +5 -6
- data/lib/libv8/scons/engine/SCons/Tool/linkloc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/m4.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/masm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/midl.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/mingw.py +10 -31
- data/lib/libv8/scons/engine/SCons/Tool/mslib.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/mslink.py +9 -61
- data/lib/libv8/scons/engine/SCons/Tool/mssdk.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/msvc.py +11 -21
- data/lib/libv8/scons/engine/SCons/Tool/msvs.py +59 -477
- data/lib/libv8/scons/engine/SCons/Tool/mwcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/mwld.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/nasm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/ipk.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/msi.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/rpm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/src_tarbz2.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/src_targz.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/src_zip.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/tarbz2.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/targz.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/zip.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/pdf.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/pdflatex.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/pdftex.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/qt.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/rmic.py +3 -9
- data/lib/libv8/scons/engine/SCons/Tool/rpcgen.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/rpm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgiar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgic++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgicc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgilink.py +3 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunc++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/suncc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunf77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunf90.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunf95.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunlink.py +3 -2
- data/lib/libv8/scons/engine/SCons/Tool/swig.py +5 -6
- data/lib/libv8/scons/engine/SCons/Tool/tar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/tex.py +43 -96
- data/lib/libv8/scons/engine/SCons/Tool/textfile.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/tlib.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/wix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/yacc.py +2 -12
- data/lib/libv8/scons/engine/SCons/Tool/zip.py +2 -2
- data/lib/libv8/scons/engine/SCons/Util.py +3 -3
- data/lib/libv8/scons/engine/SCons/Variables/BoolVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/EnumVariable.py +3 -3
- data/lib/libv8/scons/engine/SCons/Variables/ListVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/PackageVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/PathVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Warnings.py +2 -2
- data/lib/libv8/scons/engine/SCons/__init__.py +6 -6
- data/lib/libv8/scons/engine/SCons/compat/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_builtins.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_collections.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_dbm.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_hashlib.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_io.py +2 -2
- data/lib/libv8/scons/engine/SCons/cpp.py +2 -2
- data/lib/libv8/scons/engine/SCons/dblite.py +1 -4
- data/lib/libv8/scons/engine/SCons/exitfuncs.py +2 -2
- data/lib/libv8/scons/scons-time.1 +3 -3
- data/lib/libv8/scons/scons.1 +1164 -1170
- data/lib/libv8/scons/sconsign.1 +3 -3
- data/lib/libv8/scons/script/scons +22 -22
- data/lib/libv8/scons/script/scons-time +2 -2
- data/lib/libv8/scons/script/scons.bat +4 -7
- data/lib/libv8/scons/script/sconsign +20 -21
- data/lib/libv8/scons/setup.cfg +1 -0
- data/lib/libv8/scons/setup.py +40 -38
- data/lib/libv8/v8/.gitignore +1 -1
- data/lib/libv8/v8/AUTHORS +2 -0
- data/lib/libv8/v8/ChangeLog +387 -0
- data/lib/libv8/v8/Makefile +171 -0
- data/lib/libv8/v8/SConstruct +124 -51
- data/lib/libv8/v8/build/README.txt +31 -14
- data/lib/libv8/v8/build/all.gyp +11 -4
- data/lib/libv8/v8/build/armu.gypi +6 -2
- data/lib/libv8/v8/build/common.gypi +240 -94
- data/lib/libv8/v8/build/gyp_v8 +32 -4
- data/lib/libv8/v8/build/standalone.gypi +200 -0
- data/lib/libv8/v8/include/v8-debug.h +0 -0
- data/lib/libv8/v8/include/v8-profiler.h +8 -11
- data/lib/libv8/v8/include/v8.h +191 -108
- data/lib/libv8/v8/preparser/SConscript +2 -2
- data/lib/libv8/v8/preparser/preparser-process.cc +3 -3
- data/lib/libv8/v8/preparser/preparser.gyp +42 -0
- data/lib/libv8/v8/src/SConscript +33 -8
- data/lib/libv8/v8/src/accessors.cc +77 -43
- data/lib/libv8/v8/src/api.cc +393 -191
- data/lib/libv8/v8/src/api.h +4 -8
- data/lib/libv8/v8/src/apinatives.js +15 -3
- data/lib/libv8/v8/src/arguments.h +8 -0
- data/lib/libv8/v8/src/arm/assembler-arm.cc +120 -120
- data/lib/libv8/v8/src/arm/assembler-arm.h +92 -43
- data/lib/libv8/v8/src/arm/builtins-arm.cc +32 -39
- data/lib/libv8/v8/src/arm/code-stubs-arm.cc +572 -351
- data/lib/libv8/v8/src/arm/code-stubs-arm.h +8 -77
- data/lib/libv8/v8/src/arm/codegen-arm.h +0 -2
- data/lib/libv8/v8/src/arm/deoptimizer-arm.cc +50 -30
- data/lib/libv8/v8/src/arm/disasm-arm.cc +1 -1
- data/lib/libv8/v8/src/arm/frames-arm.h +9 -5
- data/lib/libv8/v8/src/arm/full-codegen-arm.cc +331 -432
- data/lib/libv8/v8/src/arm/ic-arm.cc +192 -124
- data/lib/libv8/v8/src/arm/lithium-arm.cc +216 -232
- data/lib/libv8/v8/src/arm/lithium-arm.h +106 -259
- data/lib/libv8/v8/src/arm/lithium-codegen-arm.cc +633 -642
- data/lib/libv8/v8/src/arm/lithium-codegen-arm.h +4 -4
- data/lib/libv8/v8/src/arm/lithium-gap-resolver-arm.cc +1 -3
- data/lib/libv8/v8/src/arm/macro-assembler-arm.cc +260 -185
- data/lib/libv8/v8/src/arm/macro-assembler-arm.h +45 -25
- data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.cc +25 -13
- data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.h +3 -0
- data/lib/libv8/v8/src/arm/stub-cache-arm.cc +413 -226
- data/lib/libv8/v8/src/array.js +38 -18
- data/lib/libv8/v8/src/assembler.cc +12 -5
- data/lib/libv8/v8/src/assembler.h +15 -9
- data/lib/libv8/v8/src/ast-inl.h +34 -25
- data/lib/libv8/v8/src/ast.cc +141 -72
- data/lib/libv8/v8/src/ast.h +255 -181
- data/lib/libv8/v8/src/bignum.cc +3 -4
- data/lib/libv8/v8/src/bootstrapper.cc +55 -11
- data/lib/libv8/v8/src/bootstrapper.h +3 -2
- data/lib/libv8/v8/src/builtins.cc +8 -2
- data/lib/libv8/v8/src/builtins.h +4 -0
- data/lib/libv8/v8/src/cached-powers.cc +8 -4
- data/lib/libv8/v8/src/checks.h +3 -3
- data/lib/libv8/v8/src/code-stubs.cc +173 -28
- data/lib/libv8/v8/src/code-stubs.h +104 -148
- data/lib/libv8/v8/src/codegen.cc +8 -8
- data/lib/libv8/v8/src/compilation-cache.cc +2 -47
- data/lib/libv8/v8/src/compilation-cache.h +0 -10
- data/lib/libv8/v8/src/compiler.cc +27 -16
- data/lib/libv8/v8/src/compiler.h +13 -18
- data/lib/libv8/v8/src/contexts.cc +107 -72
- data/lib/libv8/v8/src/contexts.h +70 -34
- data/lib/libv8/v8/src/conversions-inl.h +572 -14
- data/lib/libv8/v8/src/conversions.cc +9 -707
- data/lib/libv8/v8/src/conversions.h +23 -12
- data/lib/libv8/v8/src/cpu-profiler-inl.h +2 -19
- data/lib/libv8/v8/src/cpu-profiler.cc +4 -21
- data/lib/libv8/v8/src/cpu-profiler.h +8 -17
- data/lib/libv8/v8/src/d8-debug.cc +5 -3
- data/lib/libv8/v8/src/d8-debug.h +6 -7
- data/lib/libv8/v8/src/d8-posix.cc +1 -10
- data/lib/libv8/v8/src/d8.cc +721 -219
- data/lib/libv8/v8/src/d8.gyp +37 -12
- data/lib/libv8/v8/src/d8.h +141 -19
- data/lib/libv8/v8/src/d8.js +17 -8
- data/lib/libv8/v8/src/date.js +16 -5
- data/lib/libv8/v8/src/dateparser-inl.h +242 -39
- data/lib/libv8/v8/src/dateparser.cc +38 -4
- data/lib/libv8/v8/src/dateparser.h +170 -28
- data/lib/libv8/v8/src/debug-agent.cc +5 -3
- data/lib/libv8/v8/src/debug-agent.h +11 -7
- data/lib/libv8/v8/src/debug-debugger.js +65 -34
- data/lib/libv8/v8/src/debug.cc +30 -60
- data/lib/libv8/v8/src/debug.h +5 -3
- data/lib/libv8/v8/src/deoptimizer.cc +227 -10
- data/lib/libv8/v8/src/deoptimizer.h +133 -9
- data/lib/libv8/v8/src/disassembler.cc +22 -14
- data/lib/libv8/v8/src/diy-fp.cc +4 -3
- data/lib/libv8/v8/src/diy-fp.h +3 -3
- data/lib/libv8/v8/src/elements.cc +634 -0
- data/lib/libv8/v8/src/elements.h +95 -0
- data/lib/libv8/v8/src/execution.cc +5 -21
- data/lib/libv8/v8/src/extensions/experimental/break-iterator.cc +3 -1
- data/lib/libv8/v8/src/extensions/experimental/break-iterator.h +1 -1
- data/lib/libv8/v8/src/extensions/experimental/collator.cc +6 -2
- data/lib/libv8/v8/src/extensions/experimental/collator.h +1 -2
- data/lib/libv8/v8/src/extensions/experimental/datetime-format.cc +384 -0
- data/lib/libv8/v8/src/extensions/experimental/datetime-format.h +83 -0
- data/lib/libv8/v8/src/extensions/experimental/experimental.gyp +18 -7
- data/lib/libv8/v8/src/extensions/experimental/i18n-extension.cc +12 -16
- data/lib/libv8/v8/src/extensions/experimental/i18n-extension.h +1 -1
- data/lib/libv8/v8/src/extensions/experimental/i18n-js2c.py +126 -0
- data/lib/libv8/v8/src/extensions/experimental/i18n-locale.cc +3 -4
- data/lib/libv8/v8/src/extensions/experimental/i18n-locale.h +1 -1
- data/lib/libv8/v8/src/{shell.h → extensions/experimental/i18n-natives.h} +8 -20
- data/lib/libv8/v8/src/extensions/experimental/i18n-utils.cc +45 -1
- data/lib/libv8/v8/src/extensions/experimental/i18n-utils.h +21 -1
- data/lib/libv8/v8/src/extensions/experimental/i18n.js +211 -11
- data/lib/libv8/v8/src/extensions/experimental/language-matcher.cc +4 -3
- data/lib/libv8/v8/src/extensions/experimental/language-matcher.h +1 -1
- data/lib/libv8/v8/src/extensions/experimental/number-format.cc +374 -0
- data/lib/libv8/v8/src/extensions/experimental/number-format.h +71 -0
- data/lib/libv8/v8/src/factory.cc +89 -18
- data/lib/libv8/v8/src/factory.h +36 -8
- data/lib/libv8/v8/src/flag-definitions.h +11 -44
- data/lib/libv8/v8/src/frames-inl.h +8 -1
- data/lib/libv8/v8/src/frames.cc +39 -3
- data/lib/libv8/v8/src/frames.h +10 -3
- data/lib/libv8/v8/src/full-codegen.cc +311 -293
- data/lib/libv8/v8/src/full-codegen.h +183 -143
- data/lib/libv8/v8/src/func-name-inferrer.cc +29 -15
- data/lib/libv8/v8/src/func-name-inferrer.h +19 -9
- data/lib/libv8/v8/src/gdb-jit.cc +658 -55
- data/lib/libv8/v8/src/gdb-jit.h +6 -2
- data/lib/libv8/v8/src/global-handles.cc +368 -312
- data/lib/libv8/v8/src/global-handles.h +29 -36
- data/lib/libv8/v8/src/globals.h +3 -1
- data/lib/libv8/v8/src/handles.cc +43 -69
- data/lib/libv8/v8/src/handles.h +21 -16
- data/lib/libv8/v8/src/heap-inl.h +11 -13
- data/lib/libv8/v8/src/heap-profiler.cc +0 -999
- data/lib/libv8/v8/src/heap-profiler.h +0 -303
- data/lib/libv8/v8/src/heap.cc +366 -141
- data/lib/libv8/v8/src/heap.h +87 -26
- data/lib/libv8/v8/src/hydrogen-instructions.cc +192 -81
- data/lib/libv8/v8/src/hydrogen-instructions.h +711 -482
- data/lib/libv8/v8/src/hydrogen.cc +1146 -629
- data/lib/libv8/v8/src/hydrogen.h +100 -64
- data/lib/libv8/v8/src/ia32/assembler-ia32.cc +19 -0
- data/lib/libv8/v8/src/ia32/assembler-ia32.h +15 -2
- data/lib/libv8/v8/src/ia32/builtins-ia32.cc +34 -39
- data/lib/libv8/v8/src/ia32/code-stubs-ia32.cc +675 -377
- data/lib/libv8/v8/src/ia32/code-stubs-ia32.h +8 -69
- data/lib/libv8/v8/src/ia32/codegen-ia32.cc +1 -0
- data/lib/libv8/v8/src/ia32/codegen-ia32.h +0 -2
- data/lib/libv8/v8/src/ia32/cpu-ia32.cc +3 -2
- data/lib/libv8/v8/src/ia32/deoptimizer-ia32.cc +28 -3
- data/lib/libv8/v8/src/ia32/disasm-ia32.cc +21 -10
- data/lib/libv8/v8/src/ia32/frames-ia32.h +6 -5
- data/lib/libv8/v8/src/ia32/full-codegen-ia32.cc +459 -465
- data/lib/libv8/v8/src/ia32/ic-ia32.cc +196 -147
- data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.cc +575 -650
- data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.h +19 -21
- data/lib/libv8/v8/src/ia32/lithium-gap-resolver-ia32.cc +7 -2
- data/lib/libv8/v8/src/ia32/lithium-ia32.cc +261 -256
- data/lib/libv8/v8/src/ia32/lithium-ia32.h +234 -335
- data/lib/libv8/v8/src/ia32/macro-assembler-ia32.cc +224 -67
- data/lib/libv8/v8/src/ia32/macro-assembler-ia32.h +63 -19
- data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.cc +22 -8
- data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.h +3 -0
- data/lib/libv8/v8/src/ia32/stub-cache-ia32.cc +380 -239
- data/lib/libv8/v8/src/ic.cc +198 -234
- data/lib/libv8/v8/src/ic.h +32 -30
- data/lib/libv8/v8/src/interpreter-irregexp.cc +6 -4
- data/lib/libv8/v8/src/isolate.cc +112 -95
- data/lib/libv8/v8/src/isolate.h +55 -71
- data/lib/libv8/v8/src/json-parser.h +486 -48
- data/lib/libv8/v8/src/json.js +28 -23
- data/lib/libv8/v8/src/jsregexp.cc +163 -208
- data/lib/libv8/v8/src/jsregexp.h +0 -1
- data/lib/libv8/v8/src/lithium-allocator-inl.h +29 -27
- data/lib/libv8/v8/src/lithium-allocator.cc +22 -17
- data/lib/libv8/v8/src/lithium-allocator.h +8 -8
- data/lib/libv8/v8/src/lithium.cc +16 -11
- data/lib/libv8/v8/src/lithium.h +31 -34
- data/lib/libv8/v8/src/liveedit.cc +111 -15
- data/lib/libv8/v8/src/liveedit.h +3 -4
- data/lib/libv8/v8/src/liveobjectlist.cc +116 -80
- data/lib/libv8/v8/src/liveobjectlist.h +2 -2
- data/lib/libv8/v8/src/log-inl.h +0 -4
- data/lib/libv8/v8/src/log-utils.cc +25 -143
- data/lib/libv8/v8/src/log-utils.h +13 -92
- data/lib/libv8/v8/src/log.cc +26 -249
- data/lib/libv8/v8/src/log.h +6 -17
- data/lib/libv8/v8/src/macros.py +9 -6
- data/lib/libv8/v8/src/mark-compact.cc +276 -56
- data/lib/libv8/v8/src/mark-compact.h +20 -0
- data/lib/libv8/v8/src/messages.js +93 -39
- data/lib/libv8/v8/src/mips/assembler-mips-inl.h +9 -3
- data/lib/libv8/v8/src/mips/assembler-mips.cc +297 -189
- data/lib/libv8/v8/src/mips/assembler-mips.h +121 -54
- data/lib/libv8/v8/src/mips/builtins-mips.cc +23 -24
- data/lib/libv8/v8/src/mips/code-stubs-mips.cc +484 -263
- data/lib/libv8/v8/src/mips/code-stubs-mips.h +8 -83
- data/lib/libv8/v8/src/mips/codegen-mips.h +0 -2
- data/lib/libv8/v8/src/mips/constants-mips.h +37 -11
- data/lib/libv8/v8/src/mips/deoptimizer-mips.cc +6 -1
- data/lib/libv8/v8/src/mips/frames-mips.h +8 -7
- data/lib/libv8/v8/src/mips/full-codegen-mips.cc +258 -419
- data/lib/libv8/v8/src/mips/ic-mips.cc +181 -121
- data/lib/libv8/v8/src/mips/macro-assembler-mips.cc +640 -382
- data/lib/libv8/v8/src/mips/macro-assembler-mips.h +94 -89
- data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.cc +23 -10
- data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.h +6 -1
- data/lib/libv8/v8/src/mips/simulator-mips.cc +249 -49
- data/lib/libv8/v8/src/mips/simulator-mips.h +25 -1
- data/lib/libv8/v8/src/mips/stub-cache-mips.cc +373 -161
- data/lib/libv8/v8/src/mirror-debugger.js +55 -8
- data/lib/libv8/v8/src/misc-intrinsics.h +89 -0
- data/lib/libv8/v8/src/mksnapshot.cc +36 -4
- data/lib/libv8/v8/src/natives.h +5 -2
- data/lib/libv8/v8/src/objects-debug.cc +73 -6
- data/lib/libv8/v8/src/objects-inl.h +529 -164
- data/lib/libv8/v8/src/objects-printer.cc +67 -12
- data/lib/libv8/v8/src/objects-visiting.cc +13 -2
- data/lib/libv8/v8/src/objects-visiting.h +41 -1
- data/lib/libv8/v8/src/objects.cc +2200 -1177
- data/lib/libv8/v8/src/objects.h +912 -283
- data/lib/libv8/v8/src/parser.cc +566 -371
- data/lib/libv8/v8/src/parser.h +35 -33
- data/lib/libv8/v8/src/platform-cygwin.cc +10 -25
- data/lib/libv8/v8/src/platform-freebsd.cc +4 -29
- data/lib/libv8/v8/src/platform-linux.cc +60 -57
- data/lib/libv8/v8/src/platform-macos.cc +4 -27
- data/lib/libv8/v8/src/platform-nullos.cc +3 -16
- data/lib/libv8/v8/src/platform-openbsd.cc +247 -85
- data/lib/libv8/v8/src/platform-posix.cc +43 -1
- data/lib/libv8/v8/src/platform-solaris.cc +151 -112
- data/lib/libv8/v8/src/platform-tls.h +1 -1
- data/lib/libv8/v8/src/platform-win32.cc +65 -39
- data/lib/libv8/v8/src/platform.h +17 -14
- data/lib/libv8/v8/src/preparse-data-format.h +2 -2
- data/lib/libv8/v8/src/preparse-data.h +8 -2
- data/lib/libv8/v8/src/preparser-api.cc +2 -18
- data/lib/libv8/v8/src/preparser.cc +106 -65
- data/lib/libv8/v8/src/preparser.h +26 -5
- data/lib/libv8/v8/src/prettyprinter.cc +25 -43
- data/lib/libv8/v8/src/profile-generator-inl.h +0 -4
- data/lib/libv8/v8/src/profile-generator.cc +213 -34
- data/lib/libv8/v8/src/profile-generator.h +9 -9
- data/lib/libv8/v8/src/property.h +1 -0
- data/lib/libv8/v8/src/proxy.js +74 -4
- data/lib/libv8/v8/src/regexp-macro-assembler.cc +10 -6
- data/lib/libv8/v8/src/regexp.js +16 -11
- data/lib/libv8/v8/src/rewriter.cc +24 -133
- data/lib/libv8/v8/src/runtime-profiler.cc +27 -151
- data/lib/libv8/v8/src/runtime-profiler.h +5 -31
- data/lib/libv8/v8/src/runtime.cc +1450 -681
- data/lib/libv8/v8/src/runtime.h +47 -31
- data/lib/libv8/v8/src/runtime.js +2 -1
- data/lib/libv8/v8/src/scanner-base.cc +358 -220
- data/lib/libv8/v8/src/scanner-base.h +30 -138
- data/lib/libv8/v8/src/scanner.cc +0 -18
- data/lib/libv8/v8/src/scanner.h +0 -15
- data/lib/libv8/v8/src/scopeinfo.cc +3 -1
- data/lib/libv8/v8/src/scopeinfo.h +1 -6
- data/lib/libv8/v8/src/scopes.cc +243 -253
- data/lib/libv8/v8/src/scopes.h +58 -109
- data/lib/libv8/v8/src/serialize.cc +12 -54
- data/lib/libv8/v8/src/serialize.h +47 -0
- data/lib/libv8/v8/src/small-pointer-list.h +25 -0
- data/lib/libv8/v8/src/spaces-inl.h +4 -50
- data/lib/libv8/v8/src/spaces.cc +64 -131
- data/lib/libv8/v8/src/spaces.h +19 -70
- data/lib/libv8/v8/src/string-stream.cc +3 -1
- data/lib/libv8/v8/src/string.js +10 -6
- data/lib/libv8/v8/src/strtod.cc +7 -3
- data/lib/libv8/v8/src/stub-cache.cc +59 -129
- data/lib/libv8/v8/src/stub-cache.h +42 -54
- data/lib/libv8/v8/src/third_party/valgrind/valgrind.h +1447 -1339
- data/lib/libv8/v8/src/token.cc +4 -4
- data/lib/libv8/v8/src/token.h +6 -5
- data/lib/libv8/v8/src/type-info.cc +173 -129
- data/lib/libv8/v8/src/type-info.h +40 -22
- data/lib/libv8/v8/src/utils.cc +25 -304
- data/lib/libv8/v8/src/utils.h +118 -3
- data/lib/libv8/v8/src/v8-counters.h +3 -6
- data/lib/libv8/v8/src/v8.cc +34 -27
- data/lib/libv8/v8/src/v8.h +7 -7
- data/lib/libv8/v8/src/v8conversions.cc +129 -0
- data/lib/libv8/v8/src/v8conversions.h +60 -0
- data/lib/libv8/v8/src/v8globals.h +15 -6
- data/lib/libv8/v8/src/v8natives.js +300 -78
- data/lib/libv8/v8/src/v8threads.cc +14 -6
- data/lib/libv8/v8/src/v8threads.h +4 -1
- data/lib/libv8/v8/src/v8utils.cc +360 -0
- data/lib/libv8/v8/src/v8utils.h +17 -66
- data/lib/libv8/v8/src/variables.cc +7 -12
- data/lib/libv8/v8/src/variables.h +12 -10
- data/lib/libv8/v8/src/version.cc +2 -2
- data/lib/libv8/v8/src/vm-state-inl.h +0 -41
- data/lib/libv8/v8/src/vm-state.h +0 -11
- data/lib/libv8/v8/src/weakmap.js +103 -0
- data/lib/libv8/v8/src/x64/assembler-x64.h +6 -3
- data/lib/libv8/v8/src/x64/builtins-x64.cc +25 -22
- data/lib/libv8/v8/src/x64/code-stubs-x64.cc +523 -250
- data/lib/libv8/v8/src/x64/code-stubs-x64.h +8 -71
- data/lib/libv8/v8/src/x64/codegen-x64.cc +1 -0
- data/lib/libv8/v8/src/x64/codegen-x64.h +0 -2
- data/lib/libv8/v8/src/x64/cpu-x64.cc +2 -1
- data/lib/libv8/v8/src/x64/deoptimizer-x64.cc +40 -8
- data/lib/libv8/v8/src/x64/disasm-x64.cc +12 -10
- data/lib/libv8/v8/src/x64/frames-x64.h +7 -6
- data/lib/libv8/v8/src/x64/full-codegen-x64.cc +310 -415
- data/lib/libv8/v8/src/x64/ic-x64.cc +180 -117
- data/lib/libv8/v8/src/x64/lithium-codegen-x64.cc +411 -523
- data/lib/libv8/v8/src/x64/lithium-codegen-x64.h +11 -6
- data/lib/libv8/v8/src/x64/lithium-x64.cc +191 -216
- data/lib/libv8/v8/src/x64/lithium-x64.h +112 -263
- data/lib/libv8/v8/src/x64/macro-assembler-x64.cc +177 -61
- data/lib/libv8/v8/src/x64/macro-assembler-x64.h +23 -7
- data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.cc +21 -9
- data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.h +6 -0
- data/lib/libv8/v8/src/x64/stub-cache-x64.cc +273 -107
- data/lib/libv8/v8/src/zone.cc +31 -22
- data/lib/libv8/v8/src/zone.h +12 -6
- data/lib/libv8/v8/tools/codemap.js +8 -0
- data/lib/libv8/v8/tools/gcmole/Makefile +43 -0
- data/lib/libv8/v8/tools/gcmole/gcmole.lua +0 -2
- data/lib/libv8/v8/tools/gdb-v8-support.py +154 -0
- data/lib/libv8/v8/tools/grokdump.py +44 -35
- data/lib/libv8/v8/tools/gyp/v8.gyp +94 -248
- data/lib/libv8/v8/tools/js2c.py +83 -52
- data/lib/libv8/v8/tools/linux-tick-processor +4 -6
- data/lib/libv8/v8/tools/ll_prof.py +3 -3
- data/lib/libv8/v8/tools/oom_dump/README +3 -1
- data/lib/libv8/v8/tools/presubmit.py +11 -4
- data/lib/libv8/v8/tools/profile.js +46 -2
- data/lib/libv8/v8/tools/splaytree.js +11 -0
- data/lib/libv8/v8/tools/stats-viewer.py +15 -11
- data/lib/libv8/v8/tools/test-wrapper-gypbuild.py +227 -0
- data/lib/libv8/v8/tools/test.py +28 -8
- data/lib/libv8/v8/tools/tickprocessor.js +0 -16
- data/lib/libv8/version.rb +1 -1
- data/libv8.gemspec +2 -2
- metadata +31 -19
- data/lib/libv8/scons/engine/SCons/Tool/f03.py +0 -63
- data/lib/libv8/v8/src/json-parser.cc +0 -504
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#
|
|
2
|
-
# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
|
2
|
+
# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
|
|
3
3
|
#
|
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
5
|
# a copy of this software and associated documentation files (the
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
22
|
#
|
|
23
23
|
|
|
24
|
-
__revision__ = "src/engine/SCons/Memoize.py
|
|
24
|
+
__revision__ = "src/engine/SCons/Memoize.py 5134 2010/08/16 23:02:40 bdeegan"
|
|
25
25
|
|
|
26
26
|
__doc__ = """Memoizer
|
|
27
27
|
|
|
@@ -8,7 +8,7 @@ This creates a hash of global Aliases (dummy targets).
|
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
#
|
|
11
|
-
# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
|
11
|
+
# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
|
|
12
12
|
#
|
|
13
13
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
14
14
|
# a copy of this software and associated documentation files (the
|
|
@@ -30,7 +30,7 @@ This creates a hash of global Aliases (dummy targets).
|
|
|
30
30
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
31
31
|
#
|
|
32
32
|
|
|
33
|
-
__revision__ = "src/engine/SCons/Node/Alias.py
|
|
33
|
+
__revision__ = "src/engine/SCons/Node/Alias.py 5134 2010/08/16 23:02:40 bdeegan"
|
|
34
34
|
|
|
35
35
|
import collections
|
|
36
36
|
|
|
@@ -11,7 +11,7 @@ that can be used by scripts or modules looking for the canonical default.
|
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
#
|
|
14
|
-
# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
|
14
|
+
# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
|
|
15
15
|
#
|
|
16
16
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
17
17
|
# a copy of this software and associated documentation files (the
|
|
@@ -32,7 +32,7 @@ that can be used by scripts or modules looking for the canonical default.
|
|
|
32
32
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
33
33
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
34
34
|
|
|
35
|
-
__revision__ = "src/engine/SCons/Node/FS.py
|
|
35
|
+
__revision__ = "src/engine/SCons/Node/FS.py 5134 2010/08/16 23:02:40 bdeegan"
|
|
36
36
|
|
|
37
37
|
import fnmatch
|
|
38
38
|
import os
|
|
@@ -56,7 +56,6 @@ import SCons.Warnings
|
|
|
56
56
|
from SCons.Debug import Trace
|
|
57
57
|
|
|
58
58
|
do_store_info = True
|
|
59
|
-
print_duplicate = 0
|
|
60
59
|
|
|
61
60
|
|
|
62
61
|
class EntryProxyAttributeError(AttributeError):
|
|
@@ -111,85 +110,33 @@ def save_strings(val):
|
|
|
111
110
|
#
|
|
112
111
|
|
|
113
112
|
do_splitdrive = None
|
|
114
|
-
_my_splitdrive =None
|
|
115
113
|
|
|
116
114
|
def initialize_do_splitdrive():
|
|
117
115
|
global do_splitdrive
|
|
118
|
-
global has_unc
|
|
119
116
|
drive, path = os.path.splitdrive('X:/foo')
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
do_splitdrive = not not drive or has_unc
|
|
123
|
-
|
|
124
|
-
global _my_splitdrive
|
|
125
|
-
if has_unc:
|
|
126
|
-
def splitdrive(p):
|
|
127
|
-
if p[1:2] == ':':
|
|
128
|
-
return p[:2], p[2:]
|
|
129
|
-
if p[0:2] == '//':
|
|
130
|
-
# Note that we leave a leading slash in the path
|
|
131
|
-
# because UNC paths are always absolute.
|
|
132
|
-
return '//', p[1:]
|
|
133
|
-
return '', p
|
|
134
|
-
else:
|
|
135
|
-
def splitdrive(p):
|
|
136
|
-
if p[1:2] == ':':
|
|
137
|
-
return p[:2], p[2:]
|
|
138
|
-
return '', p
|
|
139
|
-
_my_splitdrive = splitdrive
|
|
140
|
-
|
|
141
|
-
# Keep some commonly used values in global variables to skip to
|
|
142
|
-
# module look-up costs.
|
|
143
|
-
global OS_SEP
|
|
144
|
-
global UNC_PREFIX
|
|
145
|
-
global os_sep_is_slash
|
|
146
|
-
|
|
147
|
-
OS_SEP = os.sep
|
|
148
|
-
UNC_PREFIX = OS_SEP + OS_SEP
|
|
149
|
-
os_sep_is_slash = OS_SEP == '/'
|
|
117
|
+
do_splitdrive = not not drive
|
|
150
118
|
|
|
151
119
|
initialize_do_splitdrive()
|
|
152
120
|
|
|
153
|
-
#
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
# We need to renormalize the path if it contains a '.'
|
|
173
|
-
# directory, but NOT if it is a single '.' '/' characters. We
|
|
174
|
-
# do not want to match a single '.' because this case is checked
|
|
175
|
-
# for explicitely since this is common enough case.
|
|
176
|
-
#
|
|
177
|
-
# Note that we check for all the following cases:
|
|
178
|
-
#
|
|
179
|
-
# a) We don't match a single '.'
|
|
180
|
-
# b) We match if the path starts with '.'. E.g. './' or
|
|
181
|
-
# './moredirs' but we not match '.abc/'.
|
|
182
|
-
# c) We match if the path ends with '.'. E.g. '/.' or
|
|
183
|
-
# 'dirs/.'
|
|
184
|
-
# d) We match if the path contains a '.' in the middle.
|
|
185
|
-
# E.g. dirs/./moredirs
|
|
186
|
-
|
|
187
|
-
\./|.*/\.(?:/|$)
|
|
188
|
-
|
|
189
|
-
''',
|
|
190
|
-
re.VERBOSE
|
|
191
|
-
)
|
|
192
|
-
needs_normpath_match = needs_normpath_check.match
|
|
121
|
+
#
|
|
122
|
+
|
|
123
|
+
needs_normpath_check = None
|
|
124
|
+
|
|
125
|
+
def initialize_normpath_check():
|
|
126
|
+
"""
|
|
127
|
+
Initialize the normpath_check regular expression.
|
|
128
|
+
|
|
129
|
+
This function is used by the unit tests to re-initialize the pattern
|
|
130
|
+
when testing for behavior with different values of os.sep.
|
|
131
|
+
"""
|
|
132
|
+
global needs_normpath_check
|
|
133
|
+
if os.sep == '/':
|
|
134
|
+
pattern = r'.*/|\.$|\.\.$'
|
|
135
|
+
else:
|
|
136
|
+
pattern = r'.*[/%s]|\.$|\.\.$' % re.escape(os.sep)
|
|
137
|
+
needs_normpath_check = re.compile(pattern)
|
|
138
|
+
|
|
139
|
+
initialize_normpath_check()
|
|
193
140
|
|
|
194
141
|
#
|
|
195
142
|
# SCons.Action objects for interacting with the outside world.
|
|
@@ -491,21 +438,21 @@ class EntryProxy(SCons.Util.Proxy):
|
|
|
491
438
|
def __get_posix_path(self):
|
|
492
439
|
"""Return the path with / as the path separator,
|
|
493
440
|
regardless of platform."""
|
|
494
|
-
if
|
|
441
|
+
if os.sep == '/':
|
|
495
442
|
return self
|
|
496
443
|
else:
|
|
497
444
|
entry = self.get()
|
|
498
|
-
r = entry.get_path().replace(
|
|
445
|
+
r = entry.get_path().replace(os.sep, '/')
|
|
499
446
|
return SCons.Subst.SpecialAttrWrapper(r, entry.name + "_posix")
|
|
500
447
|
|
|
501
448
|
def __get_windows_path(self):
|
|
502
449
|
"""Return the path with \ as the path separator,
|
|
503
450
|
regardless of platform."""
|
|
504
|
-
if
|
|
451
|
+
if os.sep == '\\':
|
|
505
452
|
return self
|
|
506
453
|
else:
|
|
507
454
|
entry = self.get()
|
|
508
|
-
r = entry.get_path().replace(
|
|
455
|
+
r = entry.get_path().replace(os.sep, '\\')
|
|
509
456
|
return SCons.Subst.SpecialAttrWrapper(r, entry.name + "_windows")
|
|
510
457
|
|
|
511
458
|
def __get_srcnode(self):
|
|
@@ -586,13 +533,9 @@ class Base(SCons.Node.Node):
|
|
|
586
533
|
|
|
587
534
|
# Filenames and paths are probably reused and are intern'ed to
|
|
588
535
|
# save some memory.
|
|
589
|
-
|
|
590
|
-
#: Filename with extension as it was specified when the object was
|
|
591
|
-
#: created; to obtain filesystem path, use Python str() function
|
|
592
536
|
self.name = SCons.Util.silent_intern(name)
|
|
593
|
-
#: Cached filename extension
|
|
594
537
|
self.suffix = SCons.Util.silent_intern(SCons.Util.splitext(name)[1])
|
|
595
|
-
self.fs = fs
|
|
538
|
+
self.fs = fs
|
|
596
539
|
|
|
597
540
|
assert directory, "A directory must be provided"
|
|
598
541
|
|
|
@@ -663,7 +606,7 @@ class Base(SCons.Node.Node):
|
|
|
663
606
|
else:
|
|
664
607
|
result = srcnode.get_path()
|
|
665
608
|
if not Save_Strings:
|
|
666
|
-
# We're not at the point where we're saving the string
|
|
609
|
+
# We're not at the point where we're saving the string string
|
|
667
610
|
# representations of FS Nodes (because we haven't finished
|
|
668
611
|
# reading the SConscript files and need to have str() return
|
|
669
612
|
# things relative to them). That also means we can't yet
|
|
@@ -752,15 +695,11 @@ class Base(SCons.Node.Node):
|
|
|
752
695
|
if self == dir:
|
|
753
696
|
return '.'
|
|
754
697
|
path_elems = self.path_elements
|
|
755
|
-
pathname = ''
|
|
756
698
|
try: i = path_elems.index(dir)
|
|
757
|
-
except ValueError:
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
for p in path_elems[i+1:-1]:
|
|
762
|
-
pathname += p.dirname
|
|
763
|
-
return pathname + path_elems[-1].name
|
|
699
|
+
except ValueError: pass
|
|
700
|
+
else: path_elems = path_elems[i+1:]
|
|
701
|
+
path_elems = [n.name for n in path_elems]
|
|
702
|
+
return os.sep.join(path_elems)
|
|
764
703
|
|
|
765
704
|
def set_src_builder(self, builder):
|
|
766
705
|
"""Set the source code builder for this node."""
|
|
@@ -1124,7 +1063,7 @@ class FS(LocalFS):
|
|
|
1124
1063
|
self.pathTop = os.getcwd()
|
|
1125
1064
|
else:
|
|
1126
1065
|
self.pathTop = path
|
|
1127
|
-
self.defaultDrive = _my_normcase(
|
|
1066
|
+
self.defaultDrive = _my_normcase(os.path.splitdrive(self.pathTop)[0])
|
|
1128
1067
|
|
|
1129
1068
|
self.Top = self.Dir(self.pathTop)
|
|
1130
1069
|
self.Top.path = '.'
|
|
@@ -1144,10 +1083,7 @@ class FS(LocalFS):
|
|
|
1144
1083
|
self.max_drift = max_drift
|
|
1145
1084
|
|
|
1146
1085
|
def getcwd(self):
|
|
1147
|
-
|
|
1148
|
-
return self._cwd
|
|
1149
|
-
else:
|
|
1150
|
-
return "<no cwd>"
|
|
1086
|
+
return self._cwd
|
|
1151
1087
|
|
|
1152
1088
|
def chdir(self, dir, change_os_dir=0):
|
|
1153
1089
|
"""Change the current working directory for lookups.
|
|
@@ -1211,110 +1147,54 @@ class FS(LocalFS):
|
|
|
1211
1147
|
# str(p) in case it's something like a proxy object
|
|
1212
1148
|
p = str(p)
|
|
1213
1149
|
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
if p[0:1] == '#':
|
|
1150
|
+
initial_hash = (p[0:1] == '#')
|
|
1151
|
+
if initial_hash:
|
|
1218
1152
|
# There was an initial '#', so we strip it and override
|
|
1219
1153
|
# whatever directory they may have specified with the
|
|
1220
1154
|
# top-level SConstruct directory.
|
|
1221
1155
|
p = p[1:]
|
|
1222
1156
|
directory = self.Top
|
|
1223
1157
|
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
# the regression test suite explicitly tests for that
|
|
1227
|
-
# syntax. It seems to mean the following thing:
|
|
1228
|
-
#
|
|
1229
|
-
# Assuming the the SCons top dir is in C:/xxx/yyy,
|
|
1230
|
-
# '#X:/toto' means X:/xxx/yyy/toto.
|
|
1231
|
-
#
|
|
1232
|
-
# i.e. it assumes that the X: drive has a directory
|
|
1233
|
-
# structure similar to the one found on drive C:.
|
|
1234
|
-
if do_splitdrive:
|
|
1235
|
-
drive, p = _my_splitdrive(p)
|
|
1236
|
-
if drive:
|
|
1237
|
-
root = self.get_root(drive)
|
|
1238
|
-
else:
|
|
1239
|
-
root = directory.root
|
|
1240
|
-
else:
|
|
1241
|
-
root = directory.root
|
|
1158
|
+
if directory and not isinstance(directory, Dir):
|
|
1159
|
+
directory = self.Dir(directory)
|
|
1242
1160
|
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
p = p.strip('/')
|
|
1246
|
-
|
|
1247
|
-
needs_normpath = needs_normpath_match(p)
|
|
1248
|
-
|
|
1249
|
-
# The path is relative to the top-level SCons directory.
|
|
1250
|
-
if p in ('', '.'):
|
|
1251
|
-
p = directory.labspath
|
|
1252
|
-
else:
|
|
1253
|
-
p = directory.labspath + '/' + p
|
|
1161
|
+
if do_splitdrive:
|
|
1162
|
+
drive, p = os.path.splitdrive(p)
|
|
1254
1163
|
else:
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
#
|
|
1266
|
-
#
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
if p
|
|
1273
|
-
|
|
1274
|
-
root = self.get_root(drive)
|
|
1164
|
+
drive = ''
|
|
1165
|
+
if drive and not p:
|
|
1166
|
+
# This causes a naked drive letter to be treated as a synonym
|
|
1167
|
+
# for the root directory on that drive.
|
|
1168
|
+
p = os.sep
|
|
1169
|
+
absolute = os.path.isabs(p)
|
|
1170
|
+
|
|
1171
|
+
needs_normpath = needs_normpath_check.match(p)
|
|
1172
|
+
|
|
1173
|
+
if initial_hash or not absolute:
|
|
1174
|
+
# This is a relative lookup, either to the top-level
|
|
1175
|
+
# SConstruct directory (because of the initial '#') or to
|
|
1176
|
+
# the current directory (the path name is not absolute).
|
|
1177
|
+
# Add the string to the appropriate directory lookup path,
|
|
1178
|
+
# after which the whole thing gets normalized.
|
|
1179
|
+
if not directory:
|
|
1180
|
+
directory = self._cwd
|
|
1181
|
+
if p:
|
|
1182
|
+
p = directory.labspath + '/' + p
|
|
1275
1183
|
else:
|
|
1276
|
-
|
|
1277
|
-
# (the path name is not absolute). Add the string to the
|
|
1278
|
-
# appropriate directory lookup path, after which the whole
|
|
1279
|
-
# thing gets normalized.
|
|
1280
|
-
if directory:
|
|
1281
|
-
if not isinstance(directory, Dir):
|
|
1282
|
-
directory = self.Dir(directory)
|
|
1283
|
-
else:
|
|
1284
|
-
directory = self._cwd
|
|
1184
|
+
p = directory.labspath
|
|
1285
1185
|
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
else:
|
|
1289
|
-
p = directory.labspath + '/' + p
|
|
1186
|
+
if needs_normpath:
|
|
1187
|
+
p = os.path.normpath(p)
|
|
1290
1188
|
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
# Normalize a pathname. Will return the same result for
|
|
1298
|
-
# equivalent paths.
|
|
1299
|
-
#
|
|
1300
|
-
# We take advantage of the fact that we have an absolute
|
|
1301
|
-
# path here for sure. In addition, we know that the
|
|
1302
|
-
# components of lookup path are separated by slashes at
|
|
1303
|
-
# this point. Because of this, this code is about 2X
|
|
1304
|
-
# faster than calling os.path.normpath() followed by
|
|
1305
|
-
# replacing os.sep with '/' again.
|
|
1306
|
-
ins = p.split('/')[1:]
|
|
1307
|
-
outs = []
|
|
1308
|
-
for d in ins:
|
|
1309
|
-
if d == '..':
|
|
1310
|
-
try:
|
|
1311
|
-
outs.pop()
|
|
1312
|
-
except IndexError:
|
|
1313
|
-
pass
|
|
1314
|
-
elif d not in ('', '.'):
|
|
1315
|
-
outs.append(d)
|
|
1316
|
-
p = '/' + '/'.join(outs)
|
|
1189
|
+
if drive or absolute:
|
|
1190
|
+
root = self.get_root(drive)
|
|
1191
|
+
else:
|
|
1192
|
+
if not directory:
|
|
1193
|
+
directory = self._cwd
|
|
1194
|
+
root = directory.root
|
|
1317
1195
|
|
|
1196
|
+
if os.sep != '/':
|
|
1197
|
+
p = p.replace(os.sep, '/')
|
|
1318
1198
|
return root._lookup_abs(p, fsclass, create)
|
|
1319
1199
|
|
|
1320
1200
|
def Entry(self, name, directory = None, create = 1):
|
|
@@ -1420,7 +1300,7 @@ class DirNodeInfo(SCons.Node.NodeInfoBase):
|
|
|
1420
1300
|
top = self.fs.Top
|
|
1421
1301
|
root = top.root
|
|
1422
1302
|
if do_splitdrive:
|
|
1423
|
-
drive, s =
|
|
1303
|
+
drive, s = os.path.splitdrive(s)
|
|
1424
1304
|
if drive:
|
|
1425
1305
|
root = self.fs.get_root(drive)
|
|
1426
1306
|
if not os.path.isabs(s):
|
|
@@ -1470,34 +1350,11 @@ class Dir(Base):
|
|
|
1470
1350
|
self.variant_dirs = []
|
|
1471
1351
|
self.root = self.dir.root
|
|
1472
1352
|
|
|
1473
|
-
# For directories, we make a difference between the directory
|
|
1474
|
-
# 'name' and the directory 'dirname'. The 'name' attribute is
|
|
1475
|
-
# used when we need to print the 'name' of the directory or
|
|
1476
|
-
# when we it is used as the last part of a path. The 'dirname'
|
|
1477
|
-
# is used when the directory is not the last element of the
|
|
1478
|
-
# path. The main reason for making that distinction is that
|
|
1479
|
-
# for RoorDir's the dirname can not be easily inferred from
|
|
1480
|
-
# the name. For example, we have to add a '/' after a drive
|
|
1481
|
-
# letter but not after a UNC path prefix ('//').
|
|
1482
|
-
self.dirname = self.name + OS_SEP
|
|
1483
|
-
|
|
1484
1353
|
# Don't just reset the executor, replace its action list,
|
|
1485
1354
|
# because it might have some pre-or post-actions that need to
|
|
1486
1355
|
# be preserved.
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
# attached already. The existing executor might have other
|
|
1490
|
-
# targets, in which case replacing the action list with a
|
|
1491
|
-
# Mkdir action is a big mistake.
|
|
1492
|
-
if not hasattr(self, 'executor'):
|
|
1493
|
-
self.builder = get_MkdirBuilder()
|
|
1494
|
-
self.get_executor().set_action_list(self.builder.action)
|
|
1495
|
-
else:
|
|
1496
|
-
# Prepend MkdirBuilder action to existing action list
|
|
1497
|
-
l = self.get_executor().action_list
|
|
1498
|
-
a = get_MkdirBuilder().action
|
|
1499
|
-
l.insert(0, a)
|
|
1500
|
-
self.get_executor().set_action_list(l)
|
|
1356
|
+
self.builder = get_MkdirBuilder()
|
|
1357
|
+
self.get_executor().set_action_list(self.builder.action)
|
|
1501
1358
|
|
|
1502
1359
|
def diskcheck_match(self):
|
|
1503
1360
|
diskcheck_match(self, self.isfile,
|
|
@@ -1546,6 +1403,23 @@ class Dir(Base):
|
|
|
1546
1403
|
"""
|
|
1547
1404
|
return self.fs.File(name, self)
|
|
1548
1405
|
|
|
1406
|
+
def _lookup_rel(self, name, klass, create=1):
|
|
1407
|
+
"""
|
|
1408
|
+
Looks up a *normalized* relative path name, relative to this
|
|
1409
|
+
directory.
|
|
1410
|
+
|
|
1411
|
+
This method is intended for use by internal lookups with
|
|
1412
|
+
already-normalized path data. For general-purpose lookups,
|
|
1413
|
+
use the Entry(), Dir() and File() methods above.
|
|
1414
|
+
|
|
1415
|
+
This method does *no* input checking and will die or give
|
|
1416
|
+
incorrect results if it's passed a non-normalized path name (e.g.,
|
|
1417
|
+
a path containing '..'), an absolute path name, a top-relative
|
|
1418
|
+
('#foo') path name, or any kind of object.
|
|
1419
|
+
"""
|
|
1420
|
+
name = self.entry_labspath(name)
|
|
1421
|
+
return self.root._lookup_abs(name, klass, create)
|
|
1422
|
+
|
|
1549
1423
|
def link(self, srcdir, duplicate):
|
|
1550
1424
|
"""Set this directory as the variant directory for the
|
|
1551
1425
|
supplied source directory."""
|
|
@@ -1578,7 +1452,7 @@ class Dir(Base):
|
|
|
1578
1452
|
if fname == '.':
|
|
1579
1453
|
fname = dir.name
|
|
1580
1454
|
else:
|
|
1581
|
-
fname = dir.name +
|
|
1455
|
+
fname = dir.name + os.sep + fname
|
|
1582
1456
|
dir = dir.up()
|
|
1583
1457
|
|
|
1584
1458
|
self._memo['get_all_rdirs'] = list(result)
|
|
@@ -1592,7 +1466,7 @@ class Dir(Base):
|
|
|
1592
1466
|
self.__clearRepositoryCache()
|
|
1593
1467
|
|
|
1594
1468
|
def up(self):
|
|
1595
|
-
return self.
|
|
1469
|
+
return self.entries['..']
|
|
1596
1470
|
|
|
1597
1471
|
def _rel_path_key(self, other):
|
|
1598
1472
|
return str(other)
|
|
@@ -1640,14 +1514,14 @@ class Dir(Base):
|
|
|
1640
1514
|
if dir_rel_path == '.':
|
|
1641
1515
|
result = other.name
|
|
1642
1516
|
else:
|
|
1643
|
-
result = dir_rel_path +
|
|
1517
|
+
result = dir_rel_path + os.sep + other.name
|
|
1644
1518
|
else:
|
|
1645
1519
|
i = self.path_elements.index(other) + 1
|
|
1646
1520
|
|
|
1647
1521
|
path_elems = ['..'] * (len(self.path_elements) - i) \
|
|
1648
1522
|
+ [n.name for n in other.path_elements[i:]]
|
|
1649
1523
|
|
|
1650
|
-
result =
|
|
1524
|
+
result = os.sep.join(path_elems)
|
|
1651
1525
|
|
|
1652
1526
|
memo_dict[other] = result
|
|
1653
1527
|
|
|
@@ -1817,16 +1691,16 @@ class Dir(Base):
|
|
|
1817
1691
|
return stamp
|
|
1818
1692
|
|
|
1819
1693
|
def entry_abspath(self, name):
|
|
1820
|
-
return self.abspath +
|
|
1694
|
+
return self.abspath + os.sep + name
|
|
1821
1695
|
|
|
1822
1696
|
def entry_labspath(self, name):
|
|
1823
1697
|
return self.labspath + '/' + name
|
|
1824
1698
|
|
|
1825
1699
|
def entry_path(self, name):
|
|
1826
|
-
return self.path +
|
|
1700
|
+
return self.path + os.sep + name
|
|
1827
1701
|
|
|
1828
1702
|
def entry_tpath(self, name):
|
|
1829
|
-
return self.tpath +
|
|
1703
|
+
return self.tpath + os.sep + name
|
|
1830
1704
|
|
|
1831
1705
|
def entry_exists_on_disk(self, name):
|
|
1832
1706
|
try:
|
|
@@ -1847,7 +1721,7 @@ class Dir(Base):
|
|
|
1847
1721
|
if result is None:
|
|
1848
1722
|
# Belt-and-suspenders for Windows: check directly for
|
|
1849
1723
|
# 8.3 file names that don't show up in os.listdir().
|
|
1850
|
-
result = os.path.exists(self.abspath +
|
|
1724
|
+
result = os.path.exists(self.abspath + os.sep + name)
|
|
1851
1725
|
d[name] = result
|
|
1852
1726
|
return result
|
|
1853
1727
|
else:
|
|
@@ -1868,7 +1742,7 @@ class Dir(Base):
|
|
|
1868
1742
|
while dir:
|
|
1869
1743
|
if dir.srcdir:
|
|
1870
1744
|
result.append(dir.srcdir.Dir(dirname))
|
|
1871
|
-
dirname = dir.name +
|
|
1745
|
+
dirname = dir.name + os.sep + dirname
|
|
1872
1746
|
dir = dir.up()
|
|
1873
1747
|
|
|
1874
1748
|
self._memo['srcdir_list'] = result
|
|
@@ -2112,7 +1986,7 @@ class RootDir(Dir):
|
|
|
2112
1986
|
add a separator when creating the path names of entries within
|
|
2113
1987
|
this directory.
|
|
2114
1988
|
"""
|
|
2115
|
-
def __init__(self,
|
|
1989
|
+
def __init__(self, name, fs):
|
|
2116
1990
|
if __debug__: logInstanceCreation(self, 'Node.FS.RootDir')
|
|
2117
1991
|
# We're going to be our own parent directory (".." entry and .dir
|
|
2118
1992
|
# attribute) so we have to set up some values so Base.__init__()
|
|
@@ -2124,47 +1998,29 @@ class RootDir(Dir):
|
|
|
2124
1998
|
self.path_elements = []
|
|
2125
1999
|
self.duplicate = 0
|
|
2126
2000
|
self.root = self
|
|
2127
|
-
|
|
2128
|
-
# Handle all the types of drives:
|
|
2129
|
-
if drive == '':
|
|
2130
|
-
# No drive, regular UNIX root or Windows default drive.
|
|
2131
|
-
name = OS_SEP
|
|
2132
|
-
dirname = OS_SEP
|
|
2133
|
-
elif drive == '//':
|
|
2134
|
-
# UNC path
|
|
2135
|
-
name = UNC_PREFIX
|
|
2136
|
-
dirname = UNC_PREFIX
|
|
2137
|
-
else:
|
|
2138
|
-
# Windows drive letter
|
|
2139
|
-
name = drive
|
|
2140
|
-
dirname = drive + OS_SEP
|
|
2141
|
-
|
|
2142
2001
|
Base.__init__(self, name, self, fs)
|
|
2143
2002
|
|
|
2144
|
-
# Now set our paths to what we really want them to be
|
|
2145
|
-
#
|
|
2146
|
-
#
|
|
2147
|
-
#
|
|
2148
|
-
|
|
2149
|
-
self.abspath = dirname
|
|
2003
|
+
# Now set our paths to what we really want them to be: the
|
|
2004
|
+
# initial drive letter (the name) plus the directory separator,
|
|
2005
|
+
# except for the "lookup abspath," which does not have the
|
|
2006
|
+
# drive letter.
|
|
2007
|
+
self.abspath = name + os.sep
|
|
2150
2008
|
self.labspath = ''
|
|
2151
|
-
self.path =
|
|
2152
|
-
self.tpath =
|
|
2009
|
+
self.path = name + os.sep
|
|
2010
|
+
self.tpath = name + os.sep
|
|
2153
2011
|
self._morph()
|
|
2154
2012
|
|
|
2155
|
-
# Must be reset after Dir._morph() is invoked...
|
|
2156
|
-
self.dirname = dirname
|
|
2157
|
-
|
|
2158
2013
|
self._lookupDict = {}
|
|
2159
2014
|
|
|
2015
|
+
# The // and os.sep + os.sep entries are necessary because
|
|
2016
|
+
# os.path.normpath() seems to preserve double slashes at the
|
|
2017
|
+
# beginning of a path (presumably for UNC path names), but
|
|
2018
|
+
# collapses triple slashes to a single slash.
|
|
2160
2019
|
self._lookupDict[''] = self
|
|
2161
2020
|
self._lookupDict['/'] = self
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
# platforms.
|
|
2166
|
-
if not has_unc:
|
|
2167
|
-
self._lookupDict['//'] = self
|
|
2021
|
+
self._lookupDict['//'] = self
|
|
2022
|
+
self._lookupDict[os.sep] = self
|
|
2023
|
+
self._lookupDict[os.sep + os.sep] = self
|
|
2168
2024
|
|
|
2169
2025
|
def must_be_same(self, klass):
|
|
2170
2026
|
if klass is Dir:
|
|
@@ -2183,7 +2039,7 @@ class RootDir(Dir):
|
|
|
2183
2039
|
normalized absolute path; we merely let Python's dictionary look
|
|
2184
2040
|
up and return the One True Node.FS object for the path.
|
|
2185
2041
|
|
|
2186
|
-
If
|
|
2042
|
+
If no Node for the specified "p" doesn't already exist, and
|
|
2187
2043
|
"create" is specified, the Node may be created after recursive
|
|
2188
2044
|
invocation to find or create the parent directory or directories.
|
|
2189
2045
|
"""
|
|
@@ -2196,17 +2052,7 @@ class RootDir(Dir):
|
|
|
2196
2052
|
raise SCons.Errors.UserError(msg)
|
|
2197
2053
|
# There is no Node for this path name, and we're allowed
|
|
2198
2054
|
# to create it.
|
|
2199
|
-
|
|
2200
|
-
# that's not in python 2.3)
|
|
2201
|
-
# e.g.: dir_name, file_name = p.rsplit('/',1)
|
|
2202
|
-
last_slash = p.rindex('/')
|
|
2203
|
-
if (last_slash >= 0):
|
|
2204
|
-
dir_name = p[:last_slash]
|
|
2205
|
-
file_name = p[last_slash+1:]
|
|
2206
|
-
else:
|
|
2207
|
-
dir_name = p # shouldn't happen, just in case
|
|
2208
|
-
file_name = ''
|
|
2209
|
-
|
|
2055
|
+
dir_name, file_name = os.path.split(p)
|
|
2210
2056
|
dir_node = self._lookup_abs(dir_name, Dir)
|
|
2211
2057
|
result = klass(file_name, dir_node, self.fs)
|
|
2212
2058
|
|
|
@@ -2265,7 +2111,7 @@ class FileNodeInfo(SCons.Node.NodeInfoBase):
|
|
|
2265
2111
|
top = self.fs.Top
|
|
2266
2112
|
root = top.root
|
|
2267
2113
|
if do_splitdrive:
|
|
2268
|
-
drive, s =
|
|
2114
|
+
drive, s = os.path.splitdrive(s)
|
|
2269
2115
|
if drive:
|
|
2270
2116
|
root = self.fs.get_root(drive)
|
|
2271
2117
|
if not os.path.isabs(s):
|
|
@@ -2283,7 +2129,7 @@ class FileBuildInfo(SCons.Node.BuildInfoBase):
|
|
|
2283
2129
|
usual string representation: relative to the top-level SConstruct
|
|
2284
2130
|
directory, or an absolute path if it's outside.
|
|
2285
2131
|
"""
|
|
2286
|
-
if
|
|
2132
|
+
if os.sep == '/':
|
|
2287
2133
|
node_to_str = str
|
|
2288
2134
|
else:
|
|
2289
2135
|
def node_to_str(n):
|
|
@@ -2292,7 +2138,7 @@ class FileBuildInfo(SCons.Node.BuildInfoBase):
|
|
|
2292
2138
|
except AttributeError:
|
|
2293
2139
|
s = str(n)
|
|
2294
2140
|
else:
|
|
2295
|
-
s = s.replace(
|
|
2141
|
+
s = s.replace(os.sep, '/')
|
|
2296
2142
|
return s
|
|
2297
2143
|
for attr in ['bsources', 'bdepends', 'bimplicit']:
|
|
2298
2144
|
try:
|
|
@@ -2792,8 +2638,6 @@ class File(Base):
|
|
|
2792
2638
|
|
|
2793
2639
|
def _rmv_existing(self):
|
|
2794
2640
|
self.clear_memoized_values()
|
|
2795
|
-
if print_duplicate:
|
|
2796
|
-
print "dup: removing existing target %s"%self
|
|
2797
2641
|
e = Unlink(self, [], None)
|
|
2798
2642
|
if isinstance(e, SCons.Errors.BuildError):
|
|
2799
2643
|
raise e
|
|
@@ -2834,8 +2678,6 @@ class File(Base):
|
|
|
2834
2678
|
|
|
2835
2679
|
def do_duplicate(self, src):
|
|
2836
2680
|
self._createDir()
|
|
2837
|
-
if print_duplicate:
|
|
2838
|
-
print "dup: relinking variant '%s' from '%s'"%(self, src)
|
|
2839
2681
|
Unlink(self, None, None)
|
|
2840
2682
|
e = Link(self, src, None)
|
|
2841
2683
|
if isinstance(e, SCons.Errors.BuildError):
|
|
@@ -2869,8 +2711,6 @@ class File(Base):
|
|
|
2869
2711
|
else:
|
|
2870
2712
|
# The source file does not exist. Make sure no old
|
|
2871
2713
|
# copy remains in the variant directory.
|
|
2872
|
-
if print_duplicate:
|
|
2873
|
-
print "dup: no src for %s, unlinking old variant copy"%self
|
|
2874
2714
|
if Base.exists(self) or self.islink():
|
|
2875
2715
|
self.fs.unlink(self.path)
|
|
2876
2716
|
# Return None explicitly because the Base.exists() call
|
|
@@ -3142,8 +2982,8 @@ class FileFinder(object):
|
|
|
3142
2982
|
if fd is None:
|
|
3143
2983
|
fd = self.default_filedir
|
|
3144
2984
|
dir, name = os.path.split(fd)
|
|
3145
|
-
drive, d =
|
|
3146
|
-
if not name and d[:1] in ('/',
|
|
2985
|
+
drive, d = os.path.splitdrive(dir)
|
|
2986
|
+
if not name and d[:1] in ('/', os.sep):
|
|
3147
2987
|
#return p.fs.get_root(drive).dir_on_disk(name)
|
|
3148
2988
|
return p.fs.get_root(drive)
|
|
3149
2989
|
if dir:
|