Add variable expansion to string valued attributes
diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index 327b0dc..80d10f5 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -2,7 +2,7 @@
   "permissions": {
     "allow": [
       "Bash(gh issue *)",
-      "Bash(buildifier)",
+      "Bash(buildifier *)",
       "Bash(echo \"exit: $?\")"
     ]
   }
diff --git a/pkg/private/deb/deb.bzl b/pkg/private/deb/deb.bzl
index fa666c3..5b94893 100644
--- a/pkg/private/deb/deb.bzl
+++ b/pkg/private/deb/deb.bzl
@@ -46,7 +46,7 @@
     args.add("--changes", changes_file)
     args.add("--data", ctx.file.data)
     args.add("--package", package)
-    args.add("--maintainer", ctx.attr.maintainer)
+    args.add("--maintainer", substitute_package_variables(ctx, ctx.attr.maintainer))
 
     if ctx.attr.architecture_file:
         if ctx.attr.architecture != "all":
@@ -54,7 +54,7 @@
         args.add("--architecture", "@" + ctx.file.architecture_file.path)
         files.append(ctx.file.architecture_file)
     else:
-        args.add("--architecture", ctx.attr.architecture)
+        args.add("--architecture", substitute_package_variables(ctx, ctx.attr.architecture))
 
     if ctx.attr.preinst:
         args.add("--preinst", "@" + ctx.file.preinst.path)
@@ -98,7 +98,7 @@
         args.add("--version", "@" + ctx.file.version_file.path)
         files.append(ctx.file.version_file)
     elif ctx.attr.version:
-        args.add("--version", ctx.attr.version)
+        args.add("--version", substitute_package_variables(ctx, ctx.attr.version))
     else:
         fail("Neither version_file nor version attribute was specified")
 
@@ -109,7 +109,7 @@
         files.append(ctx.file.description_file)
     elif ctx.attr.description:
         desc_file = ctx.actions.declare_file(out_file_name_base + ".description")
-        ctx.actions.write(desc_file, ctx.attr.description)
+        ctx.actions.write(desc_file, substitute_package_variables(ctx, ctx.attr.description))
         files.append(desc_file)
         args.add("--description", "@" + desc_file.path)
     else:
@@ -126,7 +126,7 @@
         args.add("--built_using", "@" + ctx.file.built_using_file.path)
         files.append(ctx.file.built_using_file)
     elif ctx.attr.built_using:
-        args.add("--built_using", ctx.attr.built_using)
+        args.add("--built_using", substitute_package_variables(ctx, ctx.attr.built_using))
 
     if ctx.attr.depends_file:
         if ctx.attr.depends:
@@ -135,31 +135,31 @@
         files.append(ctx.file.depends_file)
     elif ctx.attr.depends:
         for d in ctx.attr.depends:
-            args.add("--depends", d)
+            args.add("--depends", substitute_package_variables(ctx, d))
 
     if ctx.attr.priority:
-        args.add("--priority", ctx.attr.priority)
+        args.add("--priority", substitute_package_variables(ctx, ctx.attr.priority))
     if ctx.attr.section:
-        args.add("--section", ctx.attr.section)
+        args.add("--section", substitute_package_variables(ctx, ctx.attr.section))
     if ctx.attr.homepage:
-        args.add("--homepage", ctx.attr.homepage)
+        args.add("--homepage", substitute_package_variables(ctx, ctx.attr.homepage))
     if ctx.attr.license:
-        args.add("--license", ctx.attr.license)
+        args.add("--license", substitute_package_variables(ctx, ctx.attr.license))
 
-    args.add("--distribution", ctx.attr.distribution)
-    args.add("--urgency", ctx.attr.urgency)
+    args.add("--distribution", substitute_package_variables(ctx, ctx.attr.distribution))
+    args.add("--urgency", substitute_package_variables(ctx, ctx.attr.urgency))
     for d in ctx.attr.suggests:
-        args.add("--suggests", d)
+        args.add("--suggests", substitute_package_variables(ctx, d))
     for d in ctx.attr.enhances:
-        args.add("--enhances", d)
+        args.add("--enhances", substitute_package_variables(ctx, d))
     for d in ctx.attr.conflicts:
-        args.add("--conflicts", d)
+        args.add("--conflicts", substitute_package_variables(ctx, d))
     for d in ctx.attr.breaks:
-        args.add("--breaks", d)
+        args.add("--breaks", substitute_package_variables(ctx, d))
     for d in ctx.attr.predepends:
-        args.add("--pre_depends", d)
+        args.add("--pre_depends", substitute_package_variables(ctx, d))
     for d in ctx.attr.recommends:
-        args.add("--recommends", d)
+        args.add("--recommends", substitute_package_variables(ctx, d))
     if ctx.attr.replaces_file:
         if ctx.attr.replaces:
             fail("Both replaces and replaces_file attributes were specified")
@@ -167,7 +167,7 @@
         files.append(ctx.file.replaces_file)
     elif ctx.attr.replaces:
         for d in ctx.attr.replaces:
-            args.add("--replaces", d)
+            args.add("--replaces", substitute_package_variables(ctx, d))
 
     if ctx.attr.provides_file:
         if ctx.attr.provides:
@@ -176,7 +176,7 @@
         files.append(ctx.file.provides_file)
     elif ctx.attr.provides:
         for d in ctx.attr.provides:
-            args.add("--provides", d)
+            args.add("--provides", substitute_package_variables(ctx, d))
 
     args.set_param_file_format("flag_per_line")
     args.use_param_file("@%s", use_always = True)
diff --git a/pkg/rpm_pfg.bzl b/pkg/rpm_pfg.bzl
index 9533ad0..9b759a0 100644
--- a/pkg/rpm_pfg.bzl
+++ b/pkg/rpm_pfg.bzl
@@ -511,7 +511,7 @@
     #### Calculate output file name
     # rpm_name takes precedence over name if provided
     if ctx.attr.package_name:
-        rpm_name = ctx.attr.package_name
+        rpm_name = substitute_package_variables(ctx, ctx.attr.package_name)
     else:
         rpm_name = ctx.attr.name
 
@@ -650,7 +650,7 @@
         )
         ctx.actions.write(
             output = description_file,
-            content = ctx.attr.description,
+            content = substitute_package_variables(ctx, ctx.attr.description),
         )
     else:
         fail("None of the description or description_file attributes were specified")
diff --git a/tests/deb/BUILD b/tests/deb/BUILD
index 5c7a930..fad3910 100644
--- a/tests/deb/BUILD
+++ b/tests/deb/BUILD
@@ -158,3 +158,40 @@
     expected_name = "fizzbuzz_7_fastbuild.deb",
     target_under_test = ":deb_using_ctxvar",
 )
+
+# Test case for expanding $(var) constructions from package_variables
+pkg_deb(
+    name = "deb_with_package_variables",
+    architecture = "$(label)",
+    config = "config",
+    data = ":tar_input",
+    depends = ["dep-$(label)"],
+    description = "Description for $(label)",
+    maintainer = "test@example.com",
+    package = "pkg-$(label)",
+    package_variables = ":my_package_variables",
+    version = "1.0",
+)
+
+package_naming_test(
+    name = "expand_from_package_variables",
+    expected_name = "pkg-some_value_1.0_some_value.deb",
+    target_under_test = ":deb_with_package_variables",
+)
+
+py_test(
+    name = "pkg_deb_variables_test",
+    size = "medium",
+    srcs = [
+        "pkg_deb_variables_test.py",
+    ],
+    data = [
+        ":deb_with_package_variables",
+    ],
+    imports = ["../.."],
+    python_version = "PY3",
+    deps = [
+        "//pkg/private:archive",
+        "@rules_python//python/runfiles",
+    ],
+)