-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
I have a package which runs CI on Github Actions.
When I did a recent cargo update
to bump versions, it caused the build to fail. In one case, build is working. Then run cargo update
, which updates the lockfile. That then causes the build to fail. That behavior is captured in this link: https://github.com/kurtbuilds/oasgen/actions
When it does fail, the error messages are, to me at least, quite cryptic. See full message here: https://github.com/kurtbuilds/oasgen/actions/runs/5501738098/jobs/10025536987#step:7:207
/usr/bin/ld: BrotliDecoderVersion: undefined version:
/usr/bin/ld: BrotliDecoderTakeOutput: undefined version:
/usr/bin/ld: BrotliDecoderSetParameter: undefined version:
/usr/bin/ld: BrotliDecoderMallocUsize: undefined version:
/usr/bin/ld: BrotliDecoderMallocU8: undefined version:
/usr/bin/ld: BrotliDecoderIsUsed: undefined version:
/usr/bin/ld: BrotliDecoderIsFinished: undefined version:
/usr/bin/ld: BrotliDecoderHasMoreOutput: undefined version:
/usr/bin/ld: BrotliDecoderGetErrorString: undefined version:
/usr/bin/ld: BrotliDecoderGetErrorCode: undefined version:
/usr/bin/ld: BrotliDecoderFreeUsize: undefined version:
/usr/bin/ld: BrotliDecoderFreeU8: undefined version:
/usr/bin/ld: BrotliDecoderErrorString: undefined version:
/usr/bin/ld: BrotliDecoderDestroyInstance: undefined version:
/usr/bin/ld: BrotliDecoderDecompressWithReturnInfo: undefined version:
/usr/bin/ld: BrotliDecoderDecompressStreaming: undefined version:
/usr/bin/ld: BrotliDecoderDecompressStream: undefined version:
/usr/bin/ld: BrotliDecoderDecompressPrealloc: undefined version:
/usr/bin/ld: BrotliDecoderDecompress: undefined version:
/usr/bin/ld: BrotliDecoderCreateInstance: undefined version:
/usr/bin/ld: CBrotliDecoderTakeOutput: undefined version:
/usr/bin/ld: CBrotliDecoderIsUsed: undefined version:
/usr/bin/ld: CBrotliDecoderIsFinished: undefined version:
/usr/bin/ld: CBrotliDecoderHasMoreOutput: undefined version:
/usr/bin/ld: CBrotliDecoderGetErrorString: undefined version:
/usr/bin/ld: CBrotliDecoderGetErrorCode: undefined version:
/usr/bin/ld: CBrotliDecoderErrorString: undefined version:
/usr/bin/ld: BrotliEncoderVersion: undefined version:
/usr/bin/ld: BrotliEncoderTakeOutput: undefined version:
/usr/bin/ld: BrotliEncoderSetParameter: undefined version:
/usr/bin/ld: BrotliEncoderSetCustomDictionary: undefined version:
/usr/bin/ld: BrotliEncoderMaxCompressedSizeMulti: undefined version:
/usr/bin/ld: BrotliEncoderMaxCompressedSize: undefined version:
/usr/bin/ld: BrotliEncoderMallocUsize: undefined version:
/usr/bin/ld: BrotliEncoderMallocU8: undefined version:
/usr/bin/ld: BrotliEncoderIsFinished: undefined version:
/usr/bin/ld: BrotliEncoderHasMoreOutput: undefined version:
/usr/bin/ld: BrotliEncoderFreeUsize: undefined version:
/usr/bin/ld: BrotliEncoderFreeU8: undefined version:
/usr/bin/ld: BrotliEncoderDestroyWorkPool: undefined version:
/usr/bin/ld: BrotliEncoderDestroyInstance: undefined version:
/usr/bin/ld: BrotliEncoderCreateWorkPool: undefined version:
/usr/bin/ld: BrotliEncoderCreateInstance: undefined version:
/usr/bin/ld: BrotliEncoderCompressWorkPool: undefined version:
/usr/bin/ld: BrotliEncoderCompressStreaming: undefined version:
/usr/bin/ld: BrotliEncoderCompressStream: undefined version:
/usr/bin/ld: BrotliEncoderCompressMulti: undefined version:
/usr/bin/ld: BrotliEncoderCompress: undefined version:
/usr/bin/ld: BroccoliNewBrotliFile: undefined version:
/usr/bin/ld: BroccoliDestroyInstance: undefined version:
/usr/bin/ld: BroccoliCreateInstanceWithWindowSize: undefined version:
/usr/bin/ld: BroccoliCreateInstance: undefined version:
/usr/bin/ld: BroccoliConcatStreaming: undefined version:
/usr/bin/ld: BroccoliConcatStream: undefined version:
/usr/bin/ld: BroccoliConcatFinished: undefined version:
/usr/bin/ld: BroccoliConcatFinish: undefined version:
/usr/bin/ld: failed to set dynamic section sizes: bad value
collect2: error: ld returned 1 exit status
It looks like the compiler can't find brotli headers, or something like that. However, importantly note that bumping Cargo lockfile did not change the versions of any of: cc
(1.0.79) , pkg-config
(0.3.27), zstd-sys
(v2.0.8+zstd.1.5.5), or brotli-decompressor
(2.3.4). I also tried including a line on Github Actions sudo apt install libbrotli-dev
, but that did not fix it.
After some trial and error comparing the package delta between the two lockfiles, I narrowed it down to libc
. And I confirmed that fixing libc
to 0.2.144 fixes the build. See this build: https://github.com/kurtbuilds/oasgen/actions/runs/5501781013 and the associated commit: kurtbuilds/oasgen@b978be0
So the build works on 0.2.144, and is broken on 0.2.147. I confirmed that 0.2.146 also breaks the build, see: https://github.com/kurtbuilds/oasgen/actions/runs/5501841088
I noticed that 0.2.145 got yanked, so going out on a limb, I'm guessing that's the version that caused the regression, and the subsequent versions haven't fixed the issue. I couldn't find a description on the changelog for why the version was yanked.
Let me know if there's any additional information I can provide to help isolate and resolve the issue.
Also note, this package compiles locally with libc=0.2.147
. It's on github actions (which I believe is x64 Ubuntu) where I encounter the issue.