This is an automated email from the ASF dual-hosted git repository.
aharui pushed a commit to branch release_practice
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
The following commit(s) were added to refs/heads/release_practice by this push:
new efbbf18 use qnames for CompilationUnit names instead of
absolutefilepath so the string is the same during all builds on all platforms
and machines. This may be affecting the SWF order between machines. We want
them to be the same for reproducible builds
efbbf18 is described below
commit efbbf18698034d3d0a5f6338d86ad8c42abdff09
Author: Alex Harui <[email protected]>
AuthorDate: Wed May 1 21:01:10 2019 -0700
use qnames for CompilationUnit names instead of absolutefilepath so the
string is the same during all builds on all platforms and machines. This may
be affecting the SWF order between machines. We want them to be the same for
reproducible builds
---
.../royale/compiler/internal/units/CompilationUnitBase.java | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git
a/compiler/src/main/java/org/apache/royale/compiler/internal/units/CompilationUnitBase.java
b/compiler/src/main/java/org/apache/royale/compiler/internal/units/CompilationUnitBase.java
index 9e680f6..0da5cb2 100644
---
a/compiler/src/main/java/org/apache/royale/compiler/internal/units/CompilationUnitBase.java
+++
b/compiler/src/main/java/org/apache/royale/compiler/internal/units/CompilationUnitBase.java
@@ -1005,9 +1005,14 @@ public abstract class CompilationUnitBase implements
ICompilationUnit
*/
private String computeName()
{
- final String filename =
FilenameUtils.getName(getAbsoluteFilename()).replace('.', '_');
- final String encodedAbsolutePath =
StringEncoder.stringToHashCodeString(getAbsoluteFilename());
- String encodedName = encodedAbsolutePath + ":" + filename;
+ String absoluteFileName = getAbsoluteFilename();
+ final String filename =
FilenameUtils.getName(absoluteFileName).replace('.', '_');
+ // we used to use the absolute path, but it would be different
+ // on different machines and we want builds to be binary reproducible.
+ // So we will use the first definition's QName as that should be unique
+ IDefinition def0 = getDefinitionPromises().get(0);
+ final String encodedQName =
StringEncoder.stringToHashCodeString(def0.getQualifiedName());
+ String encodedName = encodedQName + ":" + filename;
if (definitionPromises.isEmpty())
{
return encodedName;