Remove special Fileset symlink behaviour.
PiperOrigin-RevId: 679606874
Change-Id: I09445146582d232535a1663551c35ee81ad3d86f
diff --git a/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParams.java b/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParams.java
index 743e574..83e4bf1 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParams.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParams.java
@@ -24,7 +24,6 @@
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.vfs.Root;
import com.google.devtools.build.lib.vfs.RootedPath;
-import java.util.Locale;
import java.util.Objects;
import javax.annotation.Nullable;
@@ -37,27 +36,6 @@
*/
public interface FilesetTraversalParams {
- /** Specifies how symlinks should be treated. */
- enum SymlinkBehavior {
- /** Symlinks are treated as regular files (the same as the runfiles output tree). */
- IGNORE,
-
- /** Symlinks are copied to the output tree. */
- COPY,
-
- /** Symlinks are dereferenced and the underlying file is used for the output tree. */
- DEREFERENCE;
-
- public static SymlinkBehavior parse(String value) throws IllegalArgumentException {
- return valueOf(value.toUpperCase(Locale.ROOT));
- }
-
- @Override
- public String toString() {
- return super.toString().toLowerCase(Locale.ROOT);
- }
- }
-
/** Desired behavior if the traversal hits a directory with a BUILD file, i.e. a subpackage. */
enum PackageBoundaryMode {
/** The traversal should recurse into the directory, optionally reporting a warning. */
@@ -195,9 +173,6 @@
/** Returns true if the root points to a generated file, symlink or directory. */
public abstract boolean isGenerated();
- /** Returns the desired behaviour for handling symlinks */
- public abstract SymlinkBehavior getSymlinkBehavior();
-
/** Returns the desired behavior when the traversal hits a subpackage. */
public abstract PackageBoundaryMode getPackageBoundaryMode();
@@ -219,24 +194,17 @@
fp.addBoolean(isStrictFilesetOutput());
fp.addBoolean(permitDirectories());
getPackageBoundaryMode().fingerprint(fp);
- fp.addInt(getSymlinkBehavior().ordinal());
return fp.digestAndReset();
}
static DirectTraversal getDirectTraversal(
DirectTraversalRoot root,
- SymlinkBehavior symlinkBehavior,
PackageBoundaryMode packageBoundaryMode,
boolean isStrictFilesetOutput,
boolean permitSourceDirectories,
boolean isGenerated) {
return new AutoValue_FilesetTraversalParams_DirectTraversal(
- root,
- isGenerated,
- symlinkBehavior,
- packageBoundaryMode,
- isStrictFilesetOutput,
- permitSourceDirectories);
+ root, isGenerated, packageBoundaryMode, isStrictFilesetOutput, permitSourceDirectories);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParamsFactory.java b/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParamsFactory.java
index eb2af99..3c42c89 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParamsFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParamsFactory.java
@@ -19,7 +19,6 @@
import com.google.common.collect.Ordering;
import com.google.devtools.build.lib.actions.FilesetTraversalParams.DirectTraversalRoot;
import com.google.devtools.build.lib.actions.FilesetTraversalParams.PackageBoundaryMode;
-import com.google.devtools.build.lib.actions.FilesetTraversalParams.SymlinkBehavior;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -39,7 +38,6 @@
* directory or a symlink to one then it'll be traversed as one
* @param destPath path in the Fileset's output directory that will be the name of this file's
* respective symlink there, or the root of files found (in case this is a directory)
- * @param symlinkBehaviorMode what to do with symlinks
* @param pkgBoundaryMode what to do when the traversal hits a subdirectory that is also a
* @param strictFilesetOutput whether Fileset assumes that output Artifacts are regular files.
*/
@@ -47,7 +45,6 @@
Label ownerLabel,
Artifact fileToTraverse,
PathFragment destPath,
- SymlinkBehavior symlinkBehaviorMode,
PackageBoundaryMode pkgBoundaryMode,
boolean strictFilesetOutput,
boolean permitDirectories) {
@@ -56,7 +53,6 @@
DirectTraversalRoot.forFileOrDirectory(fileToTraverse),
destPath,
null,
- symlinkBehaviorMode,
pkgBoundaryMode,
strictFilesetOutput,
permitDirectories,
@@ -121,19 +117,13 @@
DirectTraversalRoot root,
PathFragment destPath,
@Nullable Set<String> excludes,
- SymlinkBehavior symlinkBehaviorMode,
PackageBoundaryMode pkgBoundaryMode,
boolean strictFilesetOutput,
boolean permitDirectories,
boolean isGenerated) {
DirectTraversal traversal =
DirectTraversal.getDirectTraversal(
- root,
- symlinkBehaviorMode,
- pkgBoundaryMode,
- strictFilesetOutput,
- permitDirectories,
- isGenerated);
+ root, pkgBoundaryMode, strictFilesetOutput, permitDirectories, isGenerated);
return new AutoValue_FilesetTraversalParamsFactory_DirectoryTraversalParams(
ownerLabelForErrorMessages, destPath, getOrderedExcludes(excludes), traversal);
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java
index 3f5b297..848846f 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java
@@ -24,7 +24,6 @@
import com.google.devtools.build.lib.actions.FilesetTraversalParams;
import com.google.devtools.build.lib.actions.FilesetTraversalParams.DirectTraversal;
import com.google.devtools.build.lib.actions.HasDigest;
-import com.google.devtools.build.lib.skyframe.RecursiveFilesystemTraversalFunction.DanglingSymlinkException;
import com.google.devtools.build.lib.skyframe.RecursiveFilesystemTraversalFunction.RecursiveFilesystemTraversalException;
import com.google.devtools.build.lib.skyframe.RecursiveFilesystemTraversalValue.ResolvedFile;
import com.google.devtools.build.lib.vfs.Path;
@@ -177,23 +176,7 @@
continue;
}
- PathFragment targetName;
- try {
- switch (direct.getSymlinkBehavior()) {
- case COPY:
- targetName = f.getTargetInSymlinkTree(false);
- break;
- case DEREFERENCE:
- targetName = f.getTargetInSymlinkTree(true);
- break;
- default:
- targetName = f.getPath().asPath().asFragment();
- break;
- }
- } catch (DanglingSymlinkException e) {
- throw new FilesetEntryFunctionException(e);
- }
-
+ PathFragment targetName = f.getPath().asPath().asFragment();
maybeStoreSymlink(
linkName,
targetName,
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java
index b09b95f..72a1aba 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java
@@ -20,7 +20,6 @@
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
-import com.google.devtools.build.lib.skyframe.RecursiveFilesystemTraversalFunction.DanglingSymlinkException;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyValue;
@@ -326,11 +325,6 @@
public PathFragment getNameInSymlinkTree() {
return path.getRootRelativePath();
}
-
- @Override
- public PathFragment getTargetInSymlinkTree(boolean followSymlinks) {
- return path.asPath().asFragment();
- }
}
private static final class Directory implements ResolvedFile {
@@ -380,11 +374,6 @@
public PathFragment getNameInSymlinkTree() {
return path.getRootRelativePath();
}
-
- @Override
- public PathFragment getTargetInSymlinkTree(boolean followSymlinks) {
- return path.asPath().asFragment();
- }
}
private static final class DanglingSymlink implements ResolvedFile {
@@ -438,17 +427,6 @@
public PathFragment getNameInSymlinkTree() {
return symlink.getNameInSymlinkTree();
}
-
- @Override
- public PathFragment getTargetInSymlinkTree(boolean followSymlinks)
- throws DanglingSymlinkException {
- if (followSymlinks) {
- throw new DanglingSymlinkException(symlink.linkName.asPath().getPathString(),
- symlink.unresolvedLinkTarget.getPathString());
- } else {
- return symlink.unresolvedLinkTarget;
- }
- }
}
private static final class SymlinkToFile implements ResolvedFile {
@@ -508,11 +486,6 @@
public PathFragment getNameInSymlinkTree() {
return symlink.getNameInSymlinkTree();
}
-
- @Override
- public PathFragment getTargetInSymlinkTree(boolean followSymlinks) {
- return followSymlinks ? path.asPath().asFragment() : symlink.unresolvedLinkTarget;
- }
}
private static final class SymlinkToDirectory implements ResolvedFile {
@@ -572,11 +545,6 @@
public PathFragment getNameInSymlinkTree() {
return symlink.getNameInSymlinkTree();
}
-
- @Override
- public PathFragment getTargetInSymlinkTree(boolean followSymlinks) {
- return followSymlinks ? path.asPath().asFragment() : symlink.unresolvedLinkTarget;
- }
}
static final class ResolvedFileFactory {
@@ -639,15 +607,6 @@
* should have necessary prefixes stripped (if any).
*/
PathFragment getNameInSymlinkTree();
-
-
- /**
- * Returns the path of the symlink target.
- *
- * @throws DanglingSymlinkException if the target cannot be resolved because the symlink is
- * dangling
- */
- PathFragment getTargetInSymlinkTree(boolean followSymlinks) throws DanglingSymlinkException;
}
@Override