Hotspot - kind of build and how to detect?
David Holmes
david.holmes at oracle.com
Fri Feb 15 02:37:07 PST 2013
On 15/02/2013 6:24 PM, Mani Sarkar wrote:
> Hi David,
>
> Thanks for coming back with a response. My apologies for not being very
> clear on what I'm trying to achieve here.
>
> Basically my goal is to be able to populate an environment variable in
> any OS say in linux, that gives me the location of the any artefact
> under the build folder. For our case I'll select Hotspot, which would
> look like the below:
>
> export
> HOTSPOT_BINARY_LOC=$TL_FOREST_FOLDER/build/$OPENJDK_RELEASE_NAME/hotspot/$OS_PLATFORM_COMPILER_FOLDER/$BUILD_TYPE
>
> As you can see we have a number of variables here, I have the value of
> the first one, i.e. $TL_FOREST_FOLDER, how do I determine the values for
> the four other parts of the path
>
> $OPENJDK_RELEASE_NAME
> $OS_PLATFORM_COMPILER_FOLDER
> $BUILD_TYPE
>
> In my case a typical build path looks like
>
> /home/openjdk/sources/jdk8_tl/build/*linux-x86_64-normal-server-release*/hotspot/*linux_amd64_compiler2*/*product*/
>
> So I have three variables which I would like to determine after running
> configure but before building any project using the make command.
>
> Does this make it any clearer? Basically I wish to access the
> environment variables you create (if it works that way) after the
> configure command.
The configure command doesn't create environment variables it sets make
variables (into spec.gmk and hotspot-spec.gmk, and the path you list
consists of pieces that come from many different places:
> $OPENJDK_RELEASE_NAME
Simplest thing is for you to define this by naming the configuration or
running configure from that directory.
> $OS_PLATFORM_COMPILER_FOLDER
You would have to create this the same was as hotspot by building it up
from OS, architecture and whether doing client/server/minimal VM build.
This is non-trivial in general but maybe easier depending on your
platform. The VM part is hard because depending on the make target
invoked, or the value of JVM_VARIANTS, different VMs will be built. But
as you will have used --with-jvm-variants as a configure arg you should
know what to look for: client=compiler1, server=compiler2 etc
> $BUILD_TYPE
Partially inferrable from --with-debug-level=XXX:
- release -> product
- debug -> debug
- fastdebug -> fastdebug
but I don't think the other variants are exposed at the configure level.
HTH
David
> Thanks.
>
> Cheers,
> Mani
>
> On Fri, Feb 15, 2013 at 7:06 AM, David Holmes <david.holmes at oracle.com
> <mailto:david.holmes at oracle.com>> wrote:
>
> On 15/02/2013 10:55 AM, Mani Sarkar wrote:
>
> Hi all again,
>
> I did some searching in the OpenJDK folders and found the below
> notations:
>
> *$(CONF_NAME)* in the below line in one of the make files:
>
> @$(PRINTF) "Building $(PRODUCT_NAME) for target '$(call
> GetRealTarget)' in
> configuration '$(CONF_NAME)'\n\n"
>
>
> You can name a configuration anything you want. There is a configure
> option for it --with-conf-name
>
> And the below from another one:
> *$(OSNAME)_$(BUILDARCH)___compiler2*
> *$(OUTPUTDIR)/$(VM_PLATFORM)___compiler2*
>
>
> How could we parse these outside the make file to get some value
> that I
> could use (provided we have run configure). Do these flags
> expect other
> flags to be set before they can be parsed?
>
>
> I'm not quite sure what you are asking.
>
> David
>
> Thanks.
>
> Cheers,
> mani
>
> On Thu, Feb 14, 2013 at 7:09 PM, Mani Sarkar
> <sadhak001 at gmail.com <mailto:sadhak001 at gmail.com>> wrote:
>
> Hi,
>
> I had asked a query [1] long ago in line with the different
> builds types
> when build the OpenJDK project or sub-projects. I have
> another query
> related to it - i.e. is there a way to determine what type
> of build you are
> currently configured for? Is there an OS environment
> variable that contains
> one of the following after we run configure:
>
> debug
> fastdebug
> generated
> jvmg
> optimized
> product
> profiles
>
>
> My other query with regards to the folder '*
> linux-x86_64-normal-server-__release*/' under the main
> /build folder. The
>
> naming is OS, CPU and other factors dependant, is there a
> way to determine
> through an OS environment variable or through calling a
> script what name
> the folder would get when a build was successful?
>
> Any suggestions leading to answers to the above would be highly
> appreciated.
>
> Thanks.
>
> Cheers
> mani
> [1]
> http://www.mail-archive.com/__build-dev@openjdk.java.net/__msg07325.html
> <http://www.mail-archive.com/build-dev@openjdk.java.net/msg07325.html>
> --
> *Twitter:* @theNeomatrix369
> *Blog:* http://neomatrix369.wordpress.__com
> <http://neomatrix369.wordpress.com>
> *JUG activity:* LJC Advocate
> *Meet-a-Project:* https://github.com/__MutabilityDetector
> <https://github.com/MutabilityDetector>
> *Come to Devoxx UK 2013:*
> http://www.devoxx.com/display/__UK13/Home
> <http://www.devoxx.com/display/UK13/Home>
>
> *Don't chase success, rather aim for "Excellence", and
> success will come
> chasing after you!*
>
>
>
>
>
>
>
> --
> *Twitter:* @theNeomatrix369
> *Blog:* http://neomatrix369.wordpress.com
> *JUG activity:* LJC Advocate
> *Meet-a-Project:* https://github.com/MutabilityDetector
> *Come to Devoxx UK 2013:* http://www.devoxx.com/display/UK13/Home
> */Don't chase success, rather aim for "Excellence", and success will
> come chasing after you!/*
More information about the build-infra-dev
mailing list