mirror of
https://github.com/flatcar/scripts.git
synced 2025-10-15 01:11:45 +02:00
The new glibc caused a series of problems with Paygen based delta generation. First, the new glibc is newer than what is used in workstations, or on the Paygen servers. Since libc wasn't one of the libraries bundled up by generate_au_zip.py, the executables bundled up (including delta_generator) would fail because of unstatisfied library requirements at startup. When the new libc was included by generate_au_zip.py, the delta_generator executable started causing the dynamic loader to segfault during startup, presumably because it was linked for a newer version. This means that the new loader needs to be bundled and explicitly used when invoking the new executables (thanks David James for figuring this out!). Next, after including all of the new libraries, bash would crash at startup with these libraries at the start of LD_LIBRARY_PATH. Since Paygen which set LD_LIBRARY_PATH before invoking a shell script which invokes the delta generator, this means delta generation would crash before it started. If I modified Paygen to not set LD_LIBRARY_PATH, then older au_generator.zip files could not be properly handled (and we do so regularly). This change moves the required dynamic libraries into a subdir of the zip file which will not be in Paygens LD_LIBRARY_PATH which allows bash to operate correctly. It also renames each dynamically linked executable from xxx to xxx.wrapped and creates a shell script named xxx which invokes xxx.wrapped with the new LD_LIBRARY_PATH and using ld-linux-x86-64.so.2 to do so. This change also moves a number of constants from inline in various functions to constants at the top of the script, and introduces a WHITE_LIST to cause a build failure if ld-linux-x86-64.so.2 isn't present. (Fixing chromium-os:32550 would help with that) BUG=chromium-os:32542 TEST=Generated au_generator.zip by hand, extracted files in a test directory, and generated a delta using Paygen's command line: LD_LIBRARY_PATH=. PATH=.:$PATH ./cros_generate_update_payload --image ../chromiumos_test_image.bin --output fuzzy --outside_chroot Change-Id: I90d18a6d17a8f9824b19a6ce480048e388832b56 Reviewed-on: https://gerrit.chromium.org/gerrit/27443 Reviewed-by: Jay Srinivasan <jaysri@chromium.org> Tested-by: Don Garrett <dgarrett@chromium.org> Commit-Ready: Don Garrett <dgarrett@chromium.org>