From 72655331a819f15b192ed00e67049c92a2607d9f Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Mon, 4 Sep 2023 17:10:16 +0000 Subject: [PATCH 1/3] chore(coderd/database): add compile-time guard against import in slim build This change introduces a compile-time error when `coderd/database` is imported into the slim build. This is to guard against accidentally growing the binary size via import. Ref: #9380 --- coderd/database/no_slim.go | 7 +++++++ coderd/database/no_slim_slim.go | 13 +++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 coderd/database/no_slim.go create mode 100644 coderd/database/no_slim_slim.go diff --git a/coderd/database/no_slim.go b/coderd/database/no_slim.go new file mode 100644 index 0000000000000..1976e09439e2b --- /dev/null +++ b/coderd/database/no_slim.go @@ -0,0 +1,7 @@ +package database + +const ( + // This declaration protects against imports in slim builds, see + // no_slim_slim.go. + _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS = "DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS" +) diff --git a/coderd/database/no_slim_slim.go b/coderd/database/no_slim_slim.go new file mode 100644 index 0000000000000..f0fdd044eb3f8 --- /dev/null +++ b/coderd/database/no_slim_slim.go @@ -0,0 +1,13 @@ +//go:build slim + +package database + +const ( + // This re-declaration will result in a compilation error and is present to + // prevent increasing the slim binary size by importing this package, + // directly or indirectly. + // + // coderd/database/no_slim_slim.go:7:2: _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS redeclared in this block + // coderd/database/no_slim.go:4:2: other declaration of _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS + _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS = "DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS" +) From 2d6eeb0dded2747edfdd9471e1e79f0331b9cf0d Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Mon, 4 Sep 2023 17:50:32 +0000 Subject: [PATCH 2/3] add nolint --- coderd/database/no_slim.go | 1 + coderd/database/no_slim_slim.go | 1 + 2 files changed, 2 insertions(+) diff --git a/coderd/database/no_slim.go b/coderd/database/no_slim.go index 1976e09439e2b..dd38f9968c1d6 100644 --- a/coderd/database/no_slim.go +++ b/coderd/database/no_slim.go @@ -3,5 +3,6 @@ package database const ( // This declaration protects against imports in slim builds, see // no_slim_slim.go. + //nolint:revive _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS = "DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS" ) diff --git a/coderd/database/no_slim_slim.go b/coderd/database/no_slim_slim.go index f0fdd044eb3f8..a8e02d0a42dd4 100644 --- a/coderd/database/no_slim_slim.go +++ b/coderd/database/no_slim_slim.go @@ -9,5 +9,6 @@ const ( // // coderd/database/no_slim_slim.go:7:2: _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS redeclared in this block // coderd/database/no_slim.go:4:2: other declaration of _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS + //nolint:revive _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS = "DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS" ) From 94cc9b71cc78ce1138368c3bc82a5cfd82a7731b Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Mon, 4 Sep 2023 18:45:23 +0000 Subject: [PATCH 3/3] fix lint --- coderd/database/no_slim.go | 2 +- coderd/database/no_slim_slim.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/coderd/database/no_slim.go b/coderd/database/no_slim.go index dd38f9968c1d6..561466490f53e 100644 --- a/coderd/database/no_slim.go +++ b/coderd/database/no_slim.go @@ -3,6 +3,6 @@ package database const ( // This declaration protects against imports in slim builds, see // no_slim_slim.go. - //nolint:revive + //nolint:revive,unused _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS = "DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS" ) diff --git a/coderd/database/no_slim_slim.go b/coderd/database/no_slim_slim.go index a8e02d0a42dd4..845ac0df77942 100644 --- a/coderd/database/no_slim_slim.go +++ b/coderd/database/no_slim_slim.go @@ -7,8 +7,8 @@ const ( // prevent increasing the slim binary size by importing this package, // directly or indirectly. // - // coderd/database/no_slim_slim.go:7:2: _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS redeclared in this block - // coderd/database/no_slim.go:4:2: other declaration of _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS - //nolint:revive + // no_slim_slim.go:7:2: _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS redeclared in this block + // no_slim.go:4:2: other declaration of _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS + //nolint:revive,unused _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS = "DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS" )