Subject: bug#76933: Test suite broken due to file name limits

From: Vagrant Cascadian <[email-masked]>
Date: Tue, 11 Mar 2025 00:15:30 -0700

Guix seems to be a bit overly cautious about the filename lengths used
in the test suite:

https://buildd.debian.org/status/fetch.php?pkg=guix&arch=amd64&ver=1.4.0%2B154709.ab1b557d8f3-1&stamp=1740103252&raw=1

  make  check-TESTS check-local
  make[5]: Entering directory '/build/reproducible-path/guix-1.4.0+154709.ab1b557d8f3'
  make[6]: Entering directory '/build/reproducible-path/guix-1.4.0+154709.ab1b557d8f3'
  ============================================================================
  Testsuite summary for GNU Guix 1.4.0+154709.ab1b557d8f3
  ============================================================================
  # TOTAL: 0
  # PASS:  0
  # SKIP:  0
  # XFAIL: 0
  # FAIL:  0
  # XPASS: 0
  # ERROR: 0
  ============================================================================
  make[6]: Leaving directory
  '/build/reproducible-path/guix-1.4.0+154709.ab1b557d8f3'
  
  Cannot run tests because file name limits would be exceeded.
  Look for 'length' in the 'config.log' file for details.

That is a base build path of only 55 characters. I managed to get it to
build successfully by shortening it down to use a version that was only
49 characters total... but that leaves very little wiggle room...

While that is an unusually long version number as part of the
directory(it a version roughly based on the output of "git
describe")... this seems likely to be a fairly arbitrary and unecessary
length limit, at least with any reasonably modern filesystem...

In another build performed where this check failed with 50 character
build paths, I checked config.log:

  $ grep length config.log
  configure:7282: checking the length of the installed socket file name
  configure:7305: checking the length of the socket file name used in tests
  configure:7316: checking the length of a typical hash bang line
  configure:7328: checking the length of a hash bang line used in tests
  ac_cv_guix_hash_bang_length=73
  ac_cv_guix_socket_file_name_length=30
  ac_cv_guix_test_hash_bang_length=127
  ac_cv_guix_test_socket_file_name_length=90

File name limits of 90 characters? Many store items are much longer than
that!

Why is this check implemented, and do we really still need it? :)

live well,
  vagrant