RFR: JDK-8072950: api/xinclude/Harold/harold-97.html\#harold-97, api/xinclude/Harold/harold-67.html\#harold-67 fails on solaris with build port-stage-aarch64
tim.bell at oracle.com
Thu Feb 12 15:31:24 UTC 2015
> Please review this small fix to property cleaning. We normally build
> on Solaris (11.1) machines with gnu tools installed, including gnu sed
> so this has not affected official Oracle builds or JPRT. However, we
> cannot rely on gnu sed always being present so the build should be
> correct even with Solaris sed. The problem in this case is that
> Solaris sed ignores the last input line unless it is terminated by a
> newline character. The fix is to add an empty echo after the cat. The
> sed expression is already filtering out empty lines so the final
> output will not be changed.
> I have verified that the affected lines no longer disappears when
> using Solaris sed.
Looks good to me.
> Bug: https://bugs.openjdk.java.net/browse/JDK-8072950
> Patch inline:
> diff --git a/make/common/JavaCompilation.gmk
> --- a/make/common/JavaCompilation.gmk
> +++ b/make/common/JavaCompilation.gmk
> @@ -362,6 +362,10 @@
> # This is the new clean standard. Though it is to be superseded by
> # a standard annotation processor from with sjavac.
> +# An empty echo ensures that the input to sed always ends with a
> +# Certain implementations (e.g. Solaris) will skip the last line without
> +# it.
> # The sed expression does this:
> # 1. Add a backslash before any :, = or ! that do not have a
> backslash already.
> # 2. Apply the file unicode2x.sed which does a whole bunch of \u00XX
> to \xXX
> @@ -384,7 +388,7 @@
> # Now we can setup the depency that will trigger the copying.
> $$($1_BIN)$$($2_TARGET) : $2
> $(MKDIR) -p $$(@D)
> - export LC_ALL=C ; $(CAT) $$< \
> + export LC_ALL=C ; ( $(CAT) $$< && $(ECHO) "" ) \
> | $(SED) -e 's/\([^\\]\):/\1\\:/g' -e
> 's/\([^\\]\)=/\1\\=/g' \
> -e 's/\([^\\]\)!/\1\\!/g' -e 's/#.*/#/g' \
> | $(SED) -f "$(SRC_ROOT)/make/common/support/unicode2x.sed" \
More information about the build-dev