aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/util
Commit message (Collapse)AuthorAge
* Fix slow hostname lookupGravatar Marcel Hlopko2016-08-17
| | | | | | | | | | | InetAddress.getLocalHost().getHostName() can take seconds to complete as it performs reverse DNS lookup. Prior to this cl hostname lookup was performed on every build, noticeably slowing down null builds especially. This cl caches computed hostname so null builds are faster for the lifetime of the server. -- Reviewed-on: https://bazel-review.googlesource.com/#/c/5432/ MOS_MIGRATED_REVID=130441617
* Changes DependencyResolver <Attribute, Dep> map from a ListMultimap to new classGravatar Greg Estren2016-08-12
| | | | | | | | | | | | | | | | | | | | | | OrderedSetMultimap. This maintains insertion order while eliminating duplicates. Certain rules, in particular, otherwise break this invariant: https://github.com/bazelbuild/bazel/blo[]e3e28274cca5b87f48abe33884edb84016dd3/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java#L403 There's no reason (to my knowledge) to need multiple instances of the same <Attribute, Dependency> pair. More context from Google code review: (Michael Staib): > There are many things which pass around a dependentNodeMap or help construct one or modify one. We want an interface which has the right guarantees. > ListMultimap is not the right interface because it has no guarantee of unique elements, which we want - we don't want the problem that this CL ran into, and there's no reason (that we know of, to be confirmed) that anyone would want multiple identical Dependencies. > SetMultimap is not the right interface because it has no guarantee of deterministic iteration order or efficient iteration, which we want - dependency order sometimes matters (e.g., Java classpath or C++ link order). > We agreed that the best way to get what we want is to define our own interface with its own simultaneous uniqueness and iterability guarantees. Unspoken in the discussion was why we wouldn't just use LinkedHashMultimap as the thing we pass around. IMO the reason for that is that we don't care that it be a LinkedHashMultimap specifically; if tomorrow Guava comes out with a faster cooler map that has deterministic and efficient iteration and guarantees element uniqueness, we want it. > In this case we're going to make the "interface" be a (final?) class: OrderedSetMultimap, an extension of ForwardingSetMultimap which delegates to LinkedHashMultimap, an implementation which does support both of those guarantees. > I had mentioned in the conversation that none of the Multimap implementations make guarantees about key iteration order, but this is not true - LinkedHashMultimap preserves key insertion order. We should perhaps declare this as part of the OrderedSetMultimap contract as well. -- MOS_MIGRATED_REVID=130037643
* Call precomputed() on static CharMatcher instances.Gravatar Googler2016-07-26
| | | | | | | Removes a noticeable hotspot from LabelValidator.validateTargetName(). -- MOS_MIGRATED_REVID=128359980
* Be less naive with CcLibraryHelper precompiled library collision detection.Gravatar Michael Staib2016-07-25
| | | | | | | | | | The naive algorithm was O(n*m) where n = number of precompiled libraries and m = number of libraries linked during this rule. Ugly! This one provides hopefully much more reasonable performance. -- MOS_MIGRATED_REVID=128206057
* Rephrase Fingerprint in terms of guava HashFunction.Gravatar Eric Fellheimer2016-07-12
| | | | | | | This minimizes API divergence and allows us to make use of performance enhancements in guava, such as https://github.com/google/guava/issues/1197. -- MOS_MIGRATED_REVID=127108107
* Rollback of commit 1e37a5375f918376c132fa537e25695f673f41b8.Gravatar Dmitry Lomov2016-07-07
| | | | | | | | | | | | | *** Reason for rollback *** Apparently we now try to open output files for the process twice: once when we are constructing the output streams, and the second time when we tell the process to redirect its outputs. This causes the outputs to be empty on Windows *** Original change description *** Do redirection of stdout / stderr in Java instead of reimplementing it in every process wrapper again. -- MOS_MIGRATED_REVID=126801016
* Remove Fingerprint.toString() to avoid relying on MessageDigest.clone().Gravatar Googler2016-07-04
| | | | | -- MOS_MIGRATED_REVID=126566280
* Rename the property io.bazel.UnixFileSystem to io.bazel.EnableJni because ↵Gravatar Lukacs Berki2016-07-01
| | | | | | | | | that's what it does. In particular, it affects Windows. -- MOS_MIGRATED_REVID=126293339
* Do redirection of stdout / stderr in Java instead of reimplementing it in ↵Gravatar Philipp Wollermann2016-06-30
| | | | | | | every process wrapper again. -- MOS_MIGRATED_REVID=126279021
* Make Windows bootstrapping work again by temporarily disabling JNI.Gravatar Lukacs Berki2016-06-29
| | | | | -- MOS_MIGRATED_REVID=126177747
* Rename FileOutErr.get{Output,Error}File to get{Output,Error}Path, because ↵Gravatar Philipp Wollermann2016-06-29
| | | | | | | they actually return a Path and not a File. -- MOS_MIGRATED_REVID=126102820
* Make "bazel info server_pid" work on Windows.Gravatar Lukacs Berki2016-06-29
| | | | | | | | | This is the first actual use of Windows JNI! Also a cleanup of ProcessUtils. Injecting a mock implementation was never used. -- MOS_MIGRATED_REVID=126068832
* Polish the command-line reference.Gravatar Ulf Adams2016-06-27
| | | | | | | | | | | - change options to print --foo=value - allow option to specify what "value" should be - update the documentation for the startup options - add some indentation to the descriptions - add some spacing between flag texts -- MOS_MIGRATED_REVID=125960618
* Move LoggingTerminalWriter out of testGravatar Klaus Aehlig2016-06-27
| | | | | | | | | ...so that it can be used by the main code base. -- Change-Id: Ibf59d74ab1b0cca9bd9406bb76ee6e71189653bf Reviewed-on: https://bazel-review.googlesource.com/#/c/3903 MOS_MIGRATED_REVID=125950656
* Remove BuildConfiguration.addRoots() and the pregrepped includes directory.Gravatar Lukacs Berki2016-06-17
| | | | | | | This is to simplify the contract of BuildConfiguration.Fragment, thus making it simpler to create BuildConfigurations without unnecessary fragments and eventually create configuration fragments from Skylark. -- MOS_MIGRATED_REVID=125137625
* Make persistent action cache work on WindowsGravatar Yun Peng2016-06-15
| | | | | | | | | CompactPersistentActionCache didn't work because it trys to rename a file to an existing file which JavaIoFileSystem doesn't support. Solution is deleting the file before renaming. -- Change-Id: I8d476cd2835c8cddbeed8f556361e0e35d1a2bd4 Reviewed-on: https://bazel-review.googlesource.com/#/c/3802 MOS_MIGRATED_REVID=124828957
* Optimize hotspot in DependencySet.process().Gravatar Googler2016-06-14
| | | | | -- MOS_MIGRATED_REVID=124744073
* Make a 'did you mean' suggestion when referencing a non-existent label.Gravatar Laurent Le Brun2016-06-06
| | | | | | | It works for both labels on the command-line and labels in BUILD files. -- MOS_MIGRATED_REVID=123967347
* Add a SpellChecker class with edit distance function.Gravatar Laurent Le Brun2016-06-01
| | | | | | | This will be used later to detect typos and provide suggestions. -- MOS_MIGRATED_REVID=123761611
* Replace the occurrences of Constants.PRODUCT_NAME for a call toGravatar Luis Fernando Pino Duque2016-05-23
| | | | | | | | | BlazeRuntime#getProductName() or a reference to TestConstants.PRODUCT_NAME for tests. This CL prepares the codebase in order to delete the constant. -- MOS_MIGRATED_REVID=122993568
* Simplify DependencySet.Gravatar Ulf Adams2016-05-19
| | | | | | | | | | - mark the addDependencies method as @VisibleForTesting, and don't round-trip through PathFragment - use Path.getRelative(String) instead of Path.getRelative(PathFragment), which may do additional optimizations -- MOS_MIGRATED_REVID=122720947
* Stop converting temporary direct deps to a set. In almost all cases, this ↵Gravatar Janak Ramakrishnan2016-05-16
| | | | | | | conversion is unnecessary and wasteful. In the remaining cases, the set conversion can be explicit. -- MOS_MIGRATED_REVID=122294939
* Rollback of commit 7f339de7feb071d790ecbca1c346244f5794a7e3.Gravatar Greg Estren2016-05-13
| | | | | | | | | | | | | | | | | *** Reason for rollback *** This is breaking ~1,000 tests in the latest Blaze nightly: [] Per sheriff policy, we need to either roll back or provide a quick fix tonight. *** Original change description *** Optimize hotspot in DependencySet.process(). -- MOS_MIGRATED_REVID=122220429
* Optimize hotspot in DependencySet.process().Gravatar Googler2016-05-12
| | | | | -- MOS_MIGRATED_REVID=122050015
* Support case-insensitive comparision in Path.java with WindowsFileSystemGravatar Yun Peng2016-05-09
| | | | | | | | Since file path is case-insensitive on Windows, we need to support this. Also fixed .d file inclusions check in CppCompileAction.java on Windows -- MOS_MIGRATED_REVID=121823250
* Add random-access indexing into GroupedList. Intended to be a no-op, ↵Gravatar Janak Ramakrishnan2016-04-28
| | | | | | | allowing for future work that may want to access a particular group in the GroupedList without advancing the iterator. -- MOS_MIGRATED_REVID=120933039
* Add nullable variants to Fingerprint.Gravatar Ulf Adams2016-04-20
| | | | | -- MOS_MIGRATED_REVID=120325869
* Review a number of action subclasses and update them according to the spec.Gravatar Ulf Adams2016-04-19
| | | | | | | | Consists of adding @Immutable annotations, adding final modifiers, and changing the types of fields to immutable types. -- MOS_MIGRATED_REVID=120221067
* Make LineWrappingAnsiTerminalWriter more efficientGravatar Klaus Aehlig2016-04-15
| | | | | | | | | | ...by only starting the new line, if needed and not already if the last usable character of the line is written. -- Change-Id: I86519389fe64fe74ba9045be07483ce5f55d5e9a Reviewed-on: https://bazel-review.googlesource.com/#/c/3384 MOS_MIGRATED_REVID=119949042
* Add a position-aware wrapper around AnsiTerminalWriterGravatar Klaus Aehlig2016-04-15
| | | | | | | | | | | | | When generating output targeted for a specific terminal width, it is important to know the current position in order to appropriately shorten the message still to be added to the current line. So make it possible to add this functionality to the terminal writer itself, to avoid too many lengthy position computations at call site. -- Change-Id: I03400b9544c32567fc6ea7ab35e742c4ccd7b610 Reviewed-on: https://bazel-review.googlesource.com/#/c/3373 MOS_MIGRATED_REVID=119946982
* Log whenever a periodic flush of the action cache is slow.Gravatar Nathan Harmata2016-04-14
| | | | | -- MOS_MIGRATED_REVID=119813568
* Description redacted.Gravatar Googler2016-04-07
| | | | | -- MOS_MIGRATED_REVID=119053259
* Revamp the client/server communication protocol so that it is portable to ↵Gravatar Lukacs Berki2016-03-22
| | | | | | | | | Windows. Progress towards #930. -- MOS_MIGRATED_REVID=117799006
* Refer to CharMatcher.javaLetterOrDigit() in a comment.Gravatar Michael Zhou2016-03-15
| | | | | | | | | | | This was a leftover from the global cleanup change to replace the usages of static final fields on Guava's CharMatcher with their equivalent static factory methods. -- Change-Id: I9ee765a2545eabdd01b00e4ea924801b7a88898a Reviewed-on: https://bazel-review.googlesource.com/#/c/3060 MOS_MIGRATED_REVID=117160725
* Global cleanup change.Gravatar Googler2016-03-08
| | | | | -- MOS_MIGRATED_REVID=116569594
* Use a list instead of a set for the current group in GroupedListHelper to ↵Gravatar Janak Ramakrishnan2016-03-08
| | | | | | | save memory. This is a partial rollback of f745e99db7632cfb2145b6926f961e85f9084bc5, but that part of the change was unnecessary -- we are already ensuring that an element isn't added twice in GroupedListHelper#add by adding it to elements. -- MOS_MIGRATED_REVID=116560479
* Make LineWrappingAnsiTerminalWriter a public classGravatar Klaus Aehlig2016-03-01
| | | | | | | | | ...so that it can be used by other event handlers as well. -- Change-Id: Ic7b37f9041aab63611d05bdb5f18e72bb0c8f1d9 Reviewed-on: https://bazel-review.googlesource.com/#/c/3040 MOS_MIGRATED_REVID=116012068
* Add wrapper class around AnsiTerminalWriter that breaks linesGravatar Klaus Aehlig2016-02-29
| | | | | | | | | | | | | | | In order to update Bazel's progress bar, the old one has to be removed first; this requires knowledge about the number of lines it currently uses. For small terminals, this requires us to take line breaks into account. While this normally works well, there are situations where our believe about the terminal width is smaller that the actual width of the terminal, causing the deletion of too many lines. This wrapper class provides a solution for this case by explicitly breaking lines at the given width. -- Change-Id: I9d33e389730568ab8c15ee082594de9b35abb71c Reviewed-on: https://bazel-review.googlesource.com/#/c/3023 MOS_MIGRATED_REVID=115827354
* Add an interface for append-only access to an AnsiTerminalGravatar Klaus Aehlig2016-02-25
| | | | | | | | | | | | Providing only access to this interface rather than handing out a full AnsiTerminal allows a more controlled access. In particular, it will be easier to track the state the terminal will end up in. -- Change-Id: Ic47b14a045ece2a84113698632a61daf7948c3b4 Reviewed-on: https://bazel-review.googlesource.com/#/c/3013 MOS_MIGRATED_REVID=115533760
* Add variant of Preconditions.checkArgument that takes int placeholder.Gravatar Janak Ramakrishnan2016-01-19
| | | | | -- MOS_MIGRATED_REVID=112472854
* Use JavaIoFileSystem during the bootstrapping, removing JNI compilation.Gravatar Damien Martin-Guillerez2016-01-18
| | | | | | | Another step towards no C++ compilation outside of Bazel for bootstrapping. -- MOS_MIGRATED_REVID=112399835
* Stream TargetPattern#eval implementations' results to a callback rather than ↵Gravatar Janak Ramakrishnan2016-01-07
| | | | | | | | | returning a ResolvedTargets set. This is the second step in a series to allow processing large sets of targets in query target patterns via streaming batches rather than all at once. This should also be a functional no-op. -- MOS_MIGRATED_REVID=111611858
* Stream results of targets below directory to a callback rather than ↵Gravatar Janak Ramakrishnan2016-01-07
| | | | | | | | | returning a ResolvedTargets set. This is the first step in a series to allow processing large sets of targets in query target patterns via streaming batches rather than all at once. This should be a functional no-op. -- MOS_MIGRATED_REVID=111609309
* Remove Runnables and RuntimeUtils from Bazel. An earlier commit moved these ↵Gravatar Nathan Harmata2016-01-07
| | | | | | | classes in because we thought we would need them, but they ended up not being needed. -- MOS_MIGRATED_REVID=111534289
* Move Runnables into lib.util so that it can be used by other packages.Gravatar Janak Ramakrishnan2015-12-21
| | | | | -- MOS_MIGRATED_REVID=110709069
* Prevent ProcMemInfo from crashing when it gets weird inputGravatar Kristina Chodorow2015-12-15
| | | | | -- MOS_MIGRATED_REVID=110155243
* Use Bazel Preconditions variant which avoids varargs array creationGravatar Mark Schaller2015-12-10
| | | | | | | Reduces garbage. -- MOS_MIGRATED_REVID=109914243
* Add Preconditions variant that avoids varargs array creationGravatar Mark Schaller2015-12-10
| | | | | | | Reduces garbage. -- MOS_MIGRATED_REVID=109898521
* Efficiency improvements to GroupedListGravatar Mark Schaller2015-12-10
| | | | | | | | | Presize GroupedListHelper sets when initialized from collections. Use CompactHashSets throughout. Avoid primitive autoboxing in Precondition statements. -- MOS_MIGRATED_REVID=109835986
* Avoid list copy in BuildingState.getNextDirtyDirectDepsGravatar Mark Schaller2015-12-09
| | | | | | | | | Also, in GroupedList, short-circuit expensive group equality check with a reference check, saving time and garbage when groups are the same object. -- MOS_MIGRATED_REVID=109795332