@@ -15,20 +15,21 @@ use url::Url;
1515/// variable changes. The build type is represented with bit flags so that we can easily list
1616/// multiple build types for a single variable. See `[BuildType]` and `[rerun_for_envs]` below to
1717/// see how this list is used.
18- const REBUILD_VARS : [ ( & str , u8 ) ; 13 ] = [
19- ( "BUILDSYS_ARCH" , PACKAGE | VARIANT ) ,
20- ( "BUILDSYS_OUTPUT_GENERATION_ID " , PACKAGE | VARIANT ) ,
18+ const REBUILD_VARS : [ ( & str , u8 ) ; 14 ] = [
19+ ( "BUILDSYS_ARCH" , PACKAGE | KIT | VARIANT ) ,
20+ ( "BUILDSYS_KITS_DIR " , KIT ) ,
2121 ( "BUILDSYS_NAME" , VARIANT ) ,
2222 ( "BUILDSYS_OUTPUT_DIR" , VARIANT ) ,
23+ ( "BUILDSYS_OUTPUT_GENERATION_ID" , PACKAGE | KIT | VARIANT ) ,
2324 ( "BUILDSYS_PACKAGES_DIR" , PACKAGE ) ,
2425 ( "BUILDSYS_PRETTY_NAME" , VARIANT ) ,
25- ( "BUILDSYS_ROOT_DIR" , PACKAGE | VARIANT ) ,
26- ( "BUILDSYS_STATE_DIR" , PACKAGE | VARIANT ) ,
26+ ( "BUILDSYS_ROOT_DIR" , PACKAGE | KIT | VARIANT ) ,
27+ ( "BUILDSYS_STATE_DIR" , PACKAGE | KIT | VARIANT ) ,
2728 ( "BUILDSYS_TIMESTAMP" , VARIANT ) ,
2829 ( "BUILDSYS_VARIANT" , VARIANT ) ,
2930 ( "BUILDSYS_VERSION_BUILD" , VARIANT ) ,
3031 ( "BUILDSYS_VERSION_IMAGE" , VARIANT ) ,
31- ( "TLPRIVATE_SDK_IMAGE" , PACKAGE | VARIANT ) ,
32+ ( "TLPRIVATE_SDK_IMAGE" , PACKAGE | KIT | VARIANT ) ,
3233] ;
3334
3435/// A tool for building Bottlerocket images and artifacts.
@@ -41,6 +42,7 @@ pub(crate) struct Buildsys {
4142#[ derive( Subcommand , Debug ) ]
4243pub ( crate ) enum Command {
4344 BuildPackage ( Box < BuildPackageArgs > ) ,
45+ BuildKit ( Box < BuildKitArgs > ) ,
4446 BuildVariant ( Box < BuildVariantArgs > ) ,
4547 RepackVariant ( Box < RepackVariantArgs > ) ,
4648}
@@ -49,6 +51,7 @@ impl Command {
4951 pub ( crate ) fn build_type ( & self ) -> BuildType {
5052 match self {
5153 Command :: BuildPackage ( _) => BuildType :: Package ,
54+ Command :: BuildKit ( _) => BuildType :: Kit ,
5255 Command :: BuildVariant ( _) => BuildType :: Variant ,
5356 Command :: RepackVariant ( _) => BuildType :: Repack ,
5457 }
@@ -126,6 +129,21 @@ pub(crate) struct BuildPackageArgs {
126129 pub ( crate ) common : Common ,
127130}
128131
132+ /// Place the required RPMs into a kit (directory) and make a yum repo.
133+ #[ derive( Debug , Parser ) ]
134+ pub ( crate ) struct BuildKitArgs {
135+ /// The directory where built RPMs go, e.g. build/rpms
136+ #[ arg( long, env = "BUILDSYS_PACKAGES_DIR" ) ]
137+ pub ( crate ) packages_dir : PathBuf ,
138+
139+ /// The directory where built kits go, e.g. build/kits
140+ #[ arg( long, env = "BUILDSYS_KITS_DIR" ) ]
141+ pub ( crate ) kits_dir : PathBuf ,
142+
143+ #[ command( flatten) ]
144+ pub ( crate ) common : Common ,
145+ }
146+
129147/// Build filesystem and disk images from RPMs.
130148#[ derive( Debug , Parser ) ]
131149pub ( crate ) struct BuildVariantArgs {
@@ -230,6 +248,7 @@ impl BuildFlags {
230248#[ allow( dead_code) ]
231249const REPACK : u8 = BuildFlags :: Repack as u8 ;
232250const PACKAGE : u8 = BuildFlags :: Package as u8 ;
251+ const KIT : u8 = BuildFlags :: Kit as u8 ;
233252const VARIANT : u8 = BuildFlags :: Variant as u8 ;
234253
235254#[ test]
0 commit comments