From eef1bf2c72b7e3905fc9d3fb649d2e8578acff98 Mon Sep 17 00:00:00 2001 From: Christopher Obbard Date: Wed, 24 Jun 2026 02:01:56 +0100 Subject: [PATCH 1/2] HACK: Use fakemachine development branch Signed-off-by: Christopher Obbard --- go.mod | 8 ++++---- go.sum | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 48c2c551..a588c7a4 100644 --- a/go.mod +++ b/go.mod @@ -1,12 +1,12 @@ module github.com/go-debos/debos -go 1.24 +go 1.24.0 require ( al.essio.dev/pkg/shellescape v1.6.0 github.com/docker/go-units v0.5.0 github.com/freddierice/go-losetup/v2 v2.0.1 - github.com/go-debos/fakemachine v0.0.12 + github.com/go-debos/fakemachine v0.0.13-0.20260421232847-3fd484f7a37c github.com/go-task/slim-sprig/v3 v3.0.0 github.com/goccy/go-yaml v1.19.2 github.com/google/uuid v1.6.0 @@ -18,10 +18,10 @@ require ( require ( github.com/14rcole/gopopulate v0.0.0-20180821133914-b175b219e774 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.18.5 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/surma/gocpio v1.1.0 // indirect github.com/ulikunitz/xz v0.5.15 // indirect - golang.org/x/sys v0.22.0 // indirect + golang.org/x/sys v0.41.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 7e3ab279..0927b775 100644 --- a/go.sum +++ b/go.sum @@ -8,8 +8,8 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/freddierice/go-losetup/v2 v2.0.1 h1:wPDx/Elu9nDV8y/CvIbEDz5Xi5Zo80y4h7MKbi3XaAI= github.com/freddierice/go-losetup/v2 v2.0.1/go.mod h1:TEyBrvlOelsPEhfWD5rutNXDmUszBXuFnwT1kIQF4J8= -github.com/go-debos/fakemachine v0.0.12 h1:NbOFyWnc8xamXDgat/WrXym9LQn4P4gJ1/sWzp8GLxY= -github.com/go-debos/fakemachine v0.0.12/go.mod h1:vv6ZYmaY8qofwdZF3BZJW6xvb2fxUuKX59bQdGu6sRI= +github.com/go-debos/fakemachine v0.0.13-0.20260421232847-3fd484f7a37c h1:pX36QTX2OdaxpRNzERVQKCA4fCS0ZOWLgvT8lmPVNnk= +github.com/go-debos/fakemachine v0.0.13-0.20260421232847-3fd484f7a37c/go.mod h1:g2jKP3T5yoB/gU7Vv5Y+zn/QzUGaBVClFEa1J4txOnA= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= @@ -20,8 +20,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/jessevdk/go-flags v1.6.1 h1:Cvu5U8UGrLay1rZfv/zP7iLpSHGUZ/Ou68T0iX1bBK4= github.com/jessevdk/go-flags v1.6.1/go.mod h1:Mk8T1hIAWpOiJiHa9rJASDK2UGWji0EuPGBnNLMooyc= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE= +github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sjoerdsimons/ostree-go v0.0.0-20201014091107-8fae757256f8 h1:fLxnJNJ++tkunS7BATed+mFqhA8KZYG7kT+WYEarYU4= @@ -32,8 +32,8 @@ github.com/surma/gocpio v1.1.0 h1:RUWT+VqJ8GSodSv7Oh5xjIxy7r24CV1YvothHFfPxcQ= github.com/surma/gocpio v1.1.0/go.mod h1:zaLNaN+EDnfSnNdWPJJf9OZxWF817w5dt8JNzF9LCVI= github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY= github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= From 109ec8a3279c410852342f055f2eb9f01eedc945 Mon Sep 17 00:00:00 2001 From: Christopher Obbard Date: Wed, 22 Apr 2026 00:30:25 +0100 Subject: [PATCH 2/2] debos: disable ext4 dir_index on scratch for 32-bit architectures On 32-bit guests readdir() returns EOVERFLOW when d_off holds an htree hash value with bit 31 set. Disable dir_index on the scratch ext4 filesystem for known 32-bit Debian architectures to avoid this. This depends on fakemachine PR: https://github.com/go-debos/fakemachine/pull/301 Fixes: #620 Signed-off-by: Christopher Obbard --- cmd/debos/debos.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/cmd/debos/debos.go b/cmd/debos/debos.go index 0175612c..83f8041c 100644 --- a/cmd/debos/debos.go +++ b/cmd/debos/debos.go @@ -82,6 +82,14 @@ func doRun(r actions.Recipe, context *debos.Context) bool { return true } +func is32BitArch(arch string) bool { + switch arch { + case "armhf", "armel", "i386", "mips", "mipsel", "powerpc", "sh4": + return true + } + return false +} + func warnLocalhost(variable string, value string) { message := `WARNING: Environment variable %[1]s contains a reference to localhost. This may not work when running from fakemachine. @@ -335,6 +343,11 @@ func main() { log.Printf("WARNING: Scratch size of %dMB is less than recommended minimum 512MB\n", scratchsizeMB) } m.SetScratch(size, "") + if is32BitArch(r.Architecture) { + // dir_index stores d_off as a hash which can exceed INT32_MAX, + // causing readdir() to return EOVERFLOW on 32-bit guests. + m.SetScratchMkfsArgs([]string{"-O", "^dir_index"}) + } } m.SetShowBoot(options.ShowBoot)