[PyQt] Patch to make the built .so files reproducible

Dmitry Shachnev mitya57 at ubuntu.com
Tue Apr 7 18:58:44 BST 2020


Hi Phil!

Please consider applying the attached patch for sip to make the built
extension modules reproducible.

Without this patch, the files are linked in random order. Below is an example
(formatted for readability):

Build 1:

x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -Wl,-z,relro \
    build/temp.linux-amd64-3.8/code_generator/lexer.o \
    build/temp.linux-amd64-3.8/code_generator/export.o \
    build/temp.linux-amd64-3.8/code_generator/heap.o \
    build/temp.linux-amd64-3.8/code_generator/transform.o \
    build/temp.linux-amd64-3.8/code_generator/pybinding.o \
    build/temp.linux-amd64-3.8/code_generator/extracts.o \
    build/temp.linux-amd64-3.8/code_generator/gencode.o \
    build/temp.linux-amd64-3.8/code_generator/parser.o \
    build/temp.linux-amd64-3.8/code_generator/type_hints.o \
    -o .pybuild/cpython3_3.8_sipbuild/build/sipbuild/code_generator.cpython-38-x86_64-linux-gnu.so

Build 2:

x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -Wl,-z,relro \
    build/temp.linux-amd64-3.8/code_generator/parser.o \
    build/temp.linux-amd64-3.8/code_generator/export.o \
    build/temp.linux-amd64-3.8/code_generator/pybinding.o \
    build/temp.linux-amd64-3.8/code_generator/extracts.o \
    build/temp.linux-amd64-3.8/code_generator/gencode.o \
    build/temp.linux-amd64-3.8/code_generator/transform.o \
    build/temp.linux-amd64-3.8/code_generator/type_hints.o \
    build/temp.linux-amd64-3.8/code_generator/heap.o \
    build/temp.linux-amd64-3.8/code_generator/lexer.o \
    -o .pybuild/cpython3_3.8_sipbuild/build/sipbuild/code_generator.cpython-38-x86_64-linux-gnu.so

After applying this patch, the build becomes reproducible in our CI system.

It applies to both sipbuild and the runtime module.

--
Dmitry Shachnev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Sort-the-input-files-to-make-the-generated-.so-files.patch
Type: text/x-diff
Size: 1312 bytes
Desc: not available
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20200407/25fcd4c9/attachment.patch>


More information about the PyQt mailing list