diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go
index df8101c..18cba77 100644
--- a/cmd/soong_ui/main.go
+++ b/cmd/soong_ui/main.go
@@ -59,9 +59,6 @@
 
 	// run the command
 	run func(ctx build.Context, config build.Config, args []string)
-
-	// whether to do common setup before calling run.
-	doSetup bool
 }
 
 // list of supported commands (flags) supported by soong ui
@@ -72,7 +69,6 @@
 		config:      build.NewConfig,
 		stdio:       stdio,
 		run:         runMake,
-		doSetup:     true,
 	}, {
 		flag:         "--dumpvar-mode",
 		description:  "print the value of the legacy make variable VAR to stdout",
@@ -81,7 +77,6 @@
 		config:       dumpVarConfig,
 		stdio:        customStdio,
 		run:          dumpVar,
-		doSetup:      true,
 	}, {
 		flag:         "--dumpvars-mode",
 		description:  "dump the values of one or more legacy make variables, in shell syntax",
@@ -90,7 +85,6 @@
 		config:       dumpVarConfig,
 		stdio:        customStdio,
 		run:          dumpVars,
-		doSetup:      true,
 	}, {
 		flag:        "--build-mode",
 		description: "build modules based on the specified build action",
@@ -188,12 +182,8 @@
 		CriticalPath: criticalPath,
 	}}
 
-	freshConfig := func() build.Config {
-		config := c.config(buildCtx, args...)
-		config.SetLogsPrefix(c.logsPrefix)
-		return config
-	}
-	config := freshConfig()
+	config := c.config(buildCtx, args...)
+	config.SetLogsPrefix(c.logsPrefix)
 	logsDir := config.LogsDir()
 	buildStarted = config.BuildStartedTimeOrDefault(buildStarted)
 
@@ -223,16 +213,6 @@
 		log.Verbosef("  [%d] %s", i, arg)
 	}
 
-	if c.doSetup {
-		// We need to call logAndSymlinkSetup before we can do product
-		// config, which is how we get PRODUCT_CONFIG_RELEASE_MAPS set
-		// for the final product config for the build.
-		logAndSymlinkSetup(buildCtx, config)
-		if build.SetProductReleaseConfigMaps(buildCtx, config) {
-			config = freshConfig()
-		}
-
-	}
 	defer func() {
 		stat.Finish()
 		criticalPath.WriteToMetrics(met)
@@ -331,6 +311,7 @@
 }
 
 func dumpVar(ctx build.Context, config build.Config, args []string) {
+	logAndSymlinkSetup(ctx, config)
 	flags := flag.NewFlagSet("dumpvar", flag.ExitOnError)
 	flags.SetOutput(ctx.Writer)
 
@@ -383,6 +364,7 @@
 }
 
 func dumpVars(ctx build.Context, config build.Config, args []string) {
+	logAndSymlinkSetup(ctx, config)
 
 	flags := flag.NewFlagSet("dumpvars", flag.ExitOnError)
 	flags.SetOutput(ctx.Writer)
@@ -562,6 +544,7 @@
 }
 
 func runMake(ctx build.Context, config build.Config, _ []string) {
+	logAndSymlinkSetup(ctx, config)
 	logsDir := config.LogsDir()
 	if config.IsVerbose() {
 		writer := ctx.Writer
diff --git a/ui/build/config.go b/ui/build/config.go
index ac1bc7c..b228bb4 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -31,7 +31,6 @@
 	"time"
 
 	"android/soong/shared"
-	"android/soong/ui/metrics"
 
 	"google.golang.org/protobuf/proto"
 
@@ -466,42 +465,6 @@
 	return NewConfig(ctx, getConfigArgs(action, dir, ctx, args)...)
 }
 
-// Prepare for getting make variables.  For them to be accurate, we need to have
-// obtained PRODUCT_RELEASE_CONFIG_MAPS.
-//
-// Returns:
-//
-//	Whether config should be called again.
-//
-// TODO: when converting product config to a declarative language, make sure
-// that PRODUCT_RELEASE_CONFIG_MAPS is properly handled as a separate step in
-// that process.
-func SetProductReleaseConfigMaps(ctx Context, config Config) bool {
-	ctx.BeginTrace(metrics.RunKati, "SetProductReleaseConfigMaps")
-	defer ctx.EndTrace()
-
-	if config.SkipConfig() {
-		// This duplicates the logic from Build to skip product config
-		// if the user has explicitly said to.
-		return false
-	}
-
-	releaseConfigVars := []string{
-		"PRODUCT_RELEASE_CONFIG_MAPS",
-	}
-
-	origValue, _ := config.environ.Get("PRODUCT_RELEASE_CONFIG_MAPS")
-	// Get the PRODUCT_RELEASE_CONFIG_MAPS for this product, to avoid polluting the environment
-	// when we run product config to get the rest of the make vars.
-	releaseMapVars, err := dumpMakeVars(ctx, config, nil, releaseConfigVars, false, "")
-	if err != nil {
-		ctx.Fatalln("Error getting PRODUCT_RELEASE_CONFIG_MAPS:", err)
-	}
-	productReleaseConfigMaps := releaseMapVars["PRODUCT_RELEASE_CONFIG_MAPS"]
-	os.Setenv("PRODUCT_RELEASE_CONFIG_MAPS", productReleaseConfigMaps)
-	return origValue != productReleaseConfigMaps
-}
-
 // storeConfigMetrics selects a set of configuration information and store in
 // the metrics system for further analysis.
 func storeConfigMetrics(ctx Context, config Config) {
diff --git a/ui/build/dumpvars.go b/ui/build/dumpvars.go
index d364542..efe7478 100644
--- a/ui/build/dumpvars.go
+++ b/ui/build/dumpvars.go
@@ -191,9 +191,6 @@
 		"TARGET_BUILD_APPS",
 		"TARGET_BUILD_UNBUNDLED",
 
-		// Additional release config maps
-		"PRODUCT_RELEASE_CONFIG_MAPS",
-
 		// compiler wrappers set up by make
 		"CC_WRAPPER",
 		"CXX_WRAPPER",
