aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2017-02-28 10:42:48 +0000
committerGravatar Yue Gan <yueg@google.com>2017-02-28 11:33:37 +0000
commit8afbd3c65339665992ece415e268955394507559 (patch)
treed1b0b8e4ebfecf730dea30fcdba4b68b4220bfbd /src/main/java/com
parenta843d216f9f54af27a8d1b5f605e5f5378e4714a (diff)
Move UnixFileSystem to lib.unix, WindowsFileSystem to lib.windows
-- PiperOrigin-RevId: 148749485 MOS_MIGRATED_REVID=148749485
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD39
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java34
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/InfoItem.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/standalone/BUILD1
-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.java38
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java1
-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