diff options
author | Ulf Adams <ulfjack@google.com> | 2017-02-28 10:42:48 +0000 |
---|---|---|
committer | Yue Gan <yueg@google.com> | 2017-02-28 11:33:37 +0000 |
commit | 8afbd3c65339665992ece415e268955394507559 (patch) | |
tree | d1b0b8e4ebfecf730dea30fcdba4b68b4220bfbd /src/main/java/com/google | |
parent | a843d216f9f54af27a8d1b5f605e5f5378e4714a (diff) |
Move UnixFileSystem to lib.unix, WindowsFileSystem to lib.windows
--
PiperOrigin-RevId: 148749485
MOS_MIGRATED_REVID=148749485
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/BUILD | 39 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java | 34 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/commands/InfoItem.java | 4 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/sandbox/BUILD | 1 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/standalone/BUILD | 1 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/unix/UnixFileSystem.java (renamed from src/main/java/com/google/devtools/build/lib/vfs/UnixFileSystem.java) | 9 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/util/OsUtils.java | 38 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java | 5 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java | 1 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/windows/WindowsFileSystem.java (renamed from src/main/java/com/google/devtools/build/lib/vfs/WindowsFileSystem.java) | 26 |
10 files changed, 96 insertions, 62 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index a2915e2d03..d6663eafe8 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD @@ -73,9 +73,32 @@ java_library( "//conditions:default": ["//src/main/native:libunix.so"], }), deps = [ + ":concurrent", + ":os_util", + ":preconditions", + ":shell", + ":vfs", + "//third_party:guava", + ], +) + +java_library( + name = "windows", + srcs = glob([ + "windows/*.java", + ]), + visibility = ["//visibility:public"], + deps = [ + ":base-util", + ":clock", + ":concurrent", ":os_util", + ":preconditions", ":shell", + ":vfs", + "//src/main/java/com/google/devtools/common/options", "//third_party:guava", + "//third_party:jsr305", ], ) @@ -126,7 +149,6 @@ java_library( srcs = glob([ "profiler/*.java", "vfs/*.java", - "windows/*.java", ]), visibility = ["//visibility:public"], deps = [ @@ -136,7 +158,6 @@ java_library( ":os_util", ":preconditions", ":shell", - ":unix", "//src/main/java/com/google/devtools/common/options", "//third_party:guava", "//third_party:jsr305", @@ -238,6 +259,17 @@ java_library( ) java_library( + name = "process_util", + srcs = ["util/ProcessUtils.java"], + deps = [ + ":concurrent", + ":os_util", + ":unix", + ":windows", + ], +) + +java_library( name = "util", srcs = glob( ["util/*.java"], @@ -248,6 +280,7 @@ java_library( "util/JavaClock.java", "util/OS.java", "util/Preconditions.java", + "util/ProcessUtils.java", "util/StringCanonicalizer.java", "util/StringTrie.java", "util/VarInt.java", @@ -1020,12 +1053,14 @@ java_library( ":flags", ":io", ":packages-internal", + ":process_util", ":profiler-output", ":shared-base-rules", ":shell", ":unix", ":util", ":vfs", + ":windows", "//src/main/java/com/google/devtools/build/docgen:docgen_javalib", "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto", diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java index 2612048ba3..efe5a2111f 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java @@ -56,6 +56,7 @@ import com.google.devtools.build.lib.server.signal.InterruptSignalHandler; import com.google.devtools.build.lib.shell.JavaSubprocessFactory; import com.google.devtools.build.lib.shell.Subprocess; import com.google.devtools.build.lib.shell.SubprocessBuilder; +import com.google.devtools.build.lib.unix.UnixFileSystem; import com.google.devtools.build.lib.util.AbruptExitException; import com.google.devtools.build.lib.util.BlazeClock; import com.google.devtools.build.lib.util.Clock; @@ -63,16 +64,15 @@ import com.google.devtools.build.lib.util.CustomExitCodePublisher; import com.google.devtools.build.lib.util.ExitCode; import com.google.devtools.build.lib.util.LoggingUtil; import com.google.devtools.build.lib.util.OS; -import com.google.devtools.build.lib.util.OsUtils; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.lib.util.ProcessUtils; import com.google.devtools.build.lib.util.ThreadUtils; import com.google.devtools.build.lib.util.io.OutErr; import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.build.lib.vfs.JavaIoFileSystem; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; -import com.google.devtools.build.lib.vfs.UnixFileSystem; -import com.google.devtools.build.lib.vfs.WindowsFileSystem; +import com.google.devtools.build.lib.windows.WindowsFileSystem; import com.google.devtools.build.lib.windows.WindowsSubprocessFactory; import com.google.devtools.common.options.Option; import com.google.devtools.common.options.OptionPriority; @@ -934,7 +934,7 @@ public final class BlazeRuntime { PathFragment installBase = startupOptions.installBase; PathFragment outputBase = startupOptions.outputBase; - OsUtils.maybeForceJNI(installBase); // Must be before first use of JNI. + maybeForceJNI(installBase); // Must be before first use of JNI. // From the point of view of the Java program --install_base and --output_base // are mandatory options, despite the comment in their declarations. @@ -1019,6 +1019,32 @@ public final class BlazeRuntime { } /** + * Loads JNI libraries, if necessary under the current platform. + */ + public static void maybeForceJNI(PathFragment installBase) { + if (jniLibsAvailable()) { + forceJNI(installBase); + } + } + + private static boolean jniLibsAvailable() { + return !"0".equals(System.getProperty("io.bazel.EnableJni")); + } + + // Force JNI linking at a moment when we have 'installBase' handy, and print + // an informative error if it fails. + private static void forceJNI(PathFragment installBase) { + try { + ProcessUtils.getpid(); // force JNI initialization + } catch (UnsatisfiedLinkError t) { + System.err.println("JNI initialization failed: " + t.getMessage() + ". " + + "Possibly your installation has been corrupted; " + + "if this problem persists, try 'rm -fr " + installBase + "'."); + throw t; + } + } + + /** * Returns a logger that crashes as soon as it's written to, since tests should not cause events * that would be logged. */ diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoItem.java index 579c3f4d5b..08bd03a412 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoItem.java @@ -36,7 +36,7 @@ import com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition import com.google.devtools.build.lib.runtime.BlazeCommandDispatcher; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.util.AbruptExitException; -import com.google.devtools.build.lib.util.OsUtils; +import com.google.devtools.build.lib.util.ProcessUtils; import com.google.devtools.build.lib.util.StringUtilities; import com.google.devtools.common.options.OptionsProvider; import java.io.ByteArrayOutputStream; @@ -334,7 +334,7 @@ public abstract class InfoItem { @Override public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) throws AbruptExitException { - return print(OsUtils.getpid()); + return print(ProcessUtils.getpid()); } } diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/BUILD b/src/main/java/com/google/devtools/build/lib/sandbox/BUILD index 593aafa73e..82010f3128 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/BUILD +++ b/src/main/java/com/google/devtools/build/lib/sandbox/BUILD @@ -14,6 +14,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib:events", "//src/main/java/com/google/devtools/build/lib:io", "//src/main/java/com/google/devtools/build/lib:packages-internal", + "//src/main/java/com/google/devtools/build/lib:process_util", "//src/main/java/com/google/devtools/build/lib:runtime", "//src/main/java/com/google/devtools/build/lib:shell", "//src/main/java/com/google/devtools/build/lib:unix", diff --git a/src/main/java/com/google/devtools/build/lib/standalone/BUILD b/src/main/java/com/google/devtools/build/lib/standalone/BUILD index de704cd840..0b2171e25e 100644 --- a/src/main/java/com/google/devtools/build/lib/standalone/BUILD +++ b/src/main/java/com/google/devtools/build/lib/standalone/BUILD @@ -12,6 +12,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib:build-base", "//src/main/java/com/google/devtools/build/lib:io", "//src/main/java/com/google/devtools/build/lib:packages-internal", + "//src/main/java/com/google/devtools/build/lib:process_util", "//src/main/java/com/google/devtools/build/lib:runtime", "//src/main/java/com/google/devtools/build/lib:shell", "//src/main/java/com/google/devtools/build/lib:util", diff --git a/src/main/java/com/google/devtools/build/lib/vfs/UnixFileSystem.java b/src/main/java/com/google/devtools/build/lib/unix/UnixFileSystem.java index 53db44cc22..c21848a9f7 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/UnixFileSystem.java +++ b/src/main/java/com/google/devtools/build/lib/unix/UnixFileSystem.java @@ -11,18 +11,21 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package com.google.devtools.build.lib.vfs; +package com.google.devtools.build.lib.unix; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.Lists; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.profiler.Profiler; import com.google.devtools.build.lib.profiler.ProfilerTask; -import com.google.devtools.build.lib.unix.ErrnoFileStatus; -import com.google.devtools.build.lib.unix.NativePosixFiles; import com.google.devtools.build.lib.unix.NativePosixFiles.Dirents; import com.google.devtools.build.lib.unix.NativePosixFiles.ReadTypes; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.lib.vfs.AbstractFileSystemWithCustomStat; +import com.google.devtools.build.lib.vfs.Dirent; +import com.google.devtools.build.lib.vfs.FileStatus; +import com.google.devtools.build.lib.vfs.Path; +import com.google.devtools.build.lib.vfs.PathFragment; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/com/google/devtools/build/lib/util/OsUtils.java b/src/main/java/com/google/devtools/build/lib/util/OsUtils.java index 85c892046d..a25e64bac2 100644 --- a/src/main/java/com/google/devtools/build/lib/util/OsUtils.java +++ b/src/main/java/com/google/devtools/build/lib/util/OsUtils.java @@ -14,8 +14,6 @@ package com.google.devtools.build.lib.util; -import com.google.devtools.build.lib.vfs.PathFragment; - /** * Operating system-specific utilities. */ @@ -34,40 +32,4 @@ public final class OsUtils { public static String executableExtension() { return EXECUTABLE_EXTENSION; } - - /** - * Loads JNI libraries, if necessary under the current platform. - */ - public static void maybeForceJNI(PathFragment installBase) { - if (jniLibsAvailable()) { - forceJNI(installBase); - } - } - - private static boolean jniLibsAvailable() { - return !"0".equals(System.getProperty("io.bazel.EnableJni")); - } - - // Force JNI linking at a moment when we have 'installBase' handy, and print - // an informative error if it fails. - private static void forceJNI(PathFragment installBase) { - try { - ProcessUtils.getpid(); // force JNI initialization - } catch (UnsatisfiedLinkError t) { - System.err.println("JNI initialization failed: " + t.getMessage() + ". " - + "Possibly your installation has been corrupted; " - + "if this problem persists, try 'rm -fr " + installBase + "'."); - throw t; - } - } - - /** - * Returns the PID of the current process, or -1 if not available. - */ - public static int getpid() { - if (jniLibsAvailable()) { - return ProcessUtils.getpid(); - } - return -1; - } } diff --git a/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java b/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java index fd5b711e2e..9cc3dc78d8 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java @@ -976,11 +976,6 @@ public class FileSystemUtils { * <p>Its results are unspecified and MUST NOT be interpreted programmatically. */ public static void dump(FileSystem fs, final PrintStream out) { - if (!(fs instanceof UnixFileSystem)) { - out.println(" Not a UnixFileSystem."); - return; - } - // Unfortunately there's no "letrec" for anonymous functions so we have to // (a) name the function, (b) put it in a box and (c) use List not array // because of the generic type. *sigh*. diff --git a/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java b/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java index 221659f9f4..e4099693a6 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java @@ -19,7 +19,6 @@ import com.google.devtools.build.lib.profiler.Profiler; import com.google.devtools.build.lib.profiler.ProfilerTask; import com.google.devtools.build.lib.util.Clock; import com.google.devtools.build.lib.util.JavaClock; - import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; diff --git a/src/main/java/com/google/devtools/build/lib/vfs/WindowsFileSystem.java b/src/main/java/com/google/devtools/build/lib/windows/WindowsFileSystem.java index 4167d817e4..ab1ee20346 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/WindowsFileSystem.java +++ b/src/main/java/com/google/devtools/build/lib/windows/WindowsFileSystem.java @@ -11,16 +11,19 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package com.google.devtools.build.lib.vfs; +package com.google.devtools.build.lib.windows; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.base.Predicate; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.lib.vfs.FileStatus; +import com.google.devtools.build.lib.vfs.FileSystem; +import com.google.devtools.build.lib.vfs.JavaIoFileSystem; +import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.Path.PathFactory; -import com.google.devtools.build.lib.vfs.Path.PathFactory.TranslatedPath; -import com.google.devtools.build.lib.windows.WindowsFileOperations; +import com.google.devtools.build.lib.vfs.PathFragment; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -200,7 +203,9 @@ public class WindowsFileSystem extends JavaIoFileSystem { } } - private static final class WindowsPath extends Path { + /** A windows-specific subclass of Path. */ + @VisibleForTesting + protected static final class WindowsPath extends Path { // The drive letter is '\0' if and only if this Path is the filesystem root "/". private char driveLetter; @@ -223,8 +228,9 @@ public class WindowsFileSystem extends JavaIoFileSystem { if (isTopLevelDirectory()) { result.append(driveLetter).append(':').append(PathFragment.SEPARATOR_CHAR); } else { - getParentDirectory().buildPathString(result); - if (!getParentDirectory().isTopLevelDirectory()) { + WindowsPath parent = (WindowsPath) getParentDirectory(); + parent.buildPathString(result); + if (!parent.isTopLevelDirectory()) { result.append(PathFragment.SEPARATOR_CHAR); } result.append(getBaseName()); @@ -260,7 +266,7 @@ public class WindowsFileSystem extends JavaIoFileSystem { segments = Arrays.copyOfRange(segments, 1, segments.length); } - return new PathFragment(driveLetter, true, segments); + return PathFragment.create(driveLetter, true, segments); } @Override @@ -295,6 +301,12 @@ public class WindowsFileSystem extends JavaIoFileSystem { } } } + + @VisibleForTesting + @Override + protected void applyToChildren(Predicate<Path> function) { + super.applyToChildren(function); + } } @VisibleForTesting |