Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 23d37e09 authored by Dan Albert's avatar Dan Albert
Browse files

Allow NDK APIs to be marked as drafts.

Draft APIs are available to the platform and to CTS to allow
developers to iterate on an API, but hidden from the NDK artifacts to
avoid releasing the API until it is ready.

Test: Mark binder_ndk headers and library as drafts, make checkbuild,
      build-ndk-prebuilts.sh, verify missing from NDK artifact.
Bug: http://b/120091134
Change-Id: I8685e92bdaaea581e17fe98e7a2bfb9388f9f132
parent f9e2c3f5
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -900,6 +900,10 @@ func (c *config) NdkAbis() bool {
	return Bool(c.productVariables.Ndk_abis)
}

func (c *config) ExcludeDraftNdkApis() bool {
	return Bool(c.productVariables.Exclude_draft_ndk_apis)
}

func (c *config) FlattenApex() bool {
	return Bool(c.productVariables.FlattenApex)
}
+2 −1
Original line number Diff line number Diff line
@@ -259,6 +259,7 @@ type productVariables struct {
	VendorVars map[string]map[string]string `json:",omitempty"`

	Ndk_abis               *bool `json:",omitempty"`
	Exclude_draft_ndk_apis *bool `json:",omitempty"`

	FlattenApex *bool `json:",omitempty"`
}
+15 −0
Original line number Diff line number Diff line
@@ -77,6 +77,11 @@ type headerProperties struct {

	// Path to the NOTICE file associated with the headers.
	License *string

	// True if this API is not yet ready to be shipped in the NDK. It will be
	// available in the platform for testing, but will be excluded from the
	// sysroot provided to the NDK proper.
	Draft bool
}

type headerModule struct {
@@ -182,6 +187,11 @@ type versionedHeaderProperties struct {

	// Path to the NOTICE file associated with the headers.
	License *string

	// True if this API is not yet ready to be shipped in the NDK. It will be
	// available in the platform for testing, but will be excluded from the
	// sysroot provided to the NDK proper.
	Draft bool
}

// Like ndk_headers, but preprocesses the headers with the bionic versioner:
@@ -309,6 +319,11 @@ type preprocessedHeadersProperties struct {

	// Path to the NOTICE file associated with the headers.
	License *string

	// True if this API is not yet ready to be shipped in the NDK. It will be
	// available in the platform for testing, but will be excluded from the
	// sysroot provided to the NDK proper.
	Draft bool
}

type preprocessedHeadersModule struct {
+5 −0
Original line number Diff line number Diff line
@@ -91,6 +91,11 @@ type libraryProperties struct {

	// Private property for use by the mutator that splits per-API level.
	ApiLevel string `blueprint:"mutated"`

	// True if this API is not yet ready to be shipped in the NDK. It will be
	// available in the platform for testing, but will be excluded from the
	// sysroot provided to the NDK proper.
	Draft bool
}

type stubDecorator struct {
+16 −0
Original line number Diff line number Diff line
@@ -104,22 +104,38 @@ func (n *ndkSingleton) GenerateBuildActions(ctx android.SingletonContext) {
		}

		if m, ok := module.(*headerModule); ok {
			if ctx.Config().ExcludeDraftNdkApis() && m.properties.Draft {
				return
			}

			installPaths = append(installPaths, m.installPaths...)
			licensePaths = append(licensePaths, m.licensePath)
		}

		if m, ok := module.(*versionedHeaderModule); ok {
			if ctx.Config().ExcludeDraftNdkApis() && m.properties.Draft {
				return
			}

			installPaths = append(installPaths, m.installPaths...)
			licensePaths = append(licensePaths, m.licensePath)
		}

		if m, ok := module.(*preprocessedHeadersModule); ok {
			if ctx.Config().ExcludeDraftNdkApis() && m.properties.Draft {
				return
			}

			installPaths = append(installPaths, m.installPaths...)
			licensePaths = append(licensePaths, m.licensePath)
		}

		if m, ok := module.(*Module); ok {
			if installer, ok := m.installer.(*stubDecorator); ok {
				if ctx.Config().ExcludeDraftNdkApis() &&
					installer.properties.Draft {
					return
				}
				installPaths = append(installPaths, installer.installPath)
			}

Loading