From ff4bae9c43d138ad76e684b59dbacf9dbcd66aab Mon Sep 17 00:00:00 2001 From: Ammar Askar Date: Mon, 10 Jun 2019 11:13:22 -0700 Subject: Create docker and build files for cpython3 (#2493) * Create docker and build files for cpython * Remove temporary patch (merged upstream) --- projects/cpython3/Dockerfile | 12 ++++++++++++ projects/cpython3/build.sh | 36 ++++++++++++++++++++++++++++++++++++ projects/cpython3/project.yaml | 2 +- 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 projects/cpython3/Dockerfile create mode 100644 projects/cpython3/build.sh (limited to 'projects') diff --git a/projects/cpython3/Dockerfile b/projects/cpython3/Dockerfile new file mode 100644 index 00000000..154076bb --- /dev/null +++ b/projects/cpython3/Dockerfile @@ -0,0 +1,12 @@ +FROM gcr.io/oss-fuzz-base/base-builder +LABEL maintainer="aaskar@google.com; ammar@ammaraskar.com" + +RUN apt-get update +RUN apt-get install -y build-essential libncursesw5-dev \ + libreadline-dev libssl-dev libgdbm-dev \ + libc6-dev libsqlite3-dev tk-dev libbz2-dev \ + zlib1g-dev libffi-dev + +RUN git clone https://github.com/python/cpython.git cpython3 +WORKDIR cpython3 +COPY build.sh $SRC/ diff --git a/projects/cpython3/build.sh b/projects/cpython3/build.sh new file mode 100644 index 00000000..8d22f02a --- /dev/null +++ b/projects/cpython3/build.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Ignore memory leaks from python scripts invoked in the build +export ASAN_OPTIONS="detect_leaks=0" + +# Remove -pthread from CFLAGS, this trips up ./configure +# which thinks pthreads are available without any CLI flags +CFLAGS=${CFLAGS//"-pthread"/} + +FLAGS="" +case $SANITIZER in + address) + FLAGS="--with-address-sanitizer" + ;; + memory) + FLAGS="--with-memory-sanitizer" + ;; + undefined) + FLAGS="--with-undefined-behavior-sanitizer" + ;; +esac +./configure $FLAGS --prefix $OUT + +make -j$(nproc) install + +FUZZ_DIR=Modules/_xxtestfuzz +for fuzz_test in $(cat $FUZZ_DIR/fuzz_tests.txt) +do + # Build (but don't link) the fuzzing stub with a C compiler + $CC $CFLAGS $($OUT/bin/python3-config --cflags) $FUZZ_DIR/fuzzer.c \ + -D _Py_FUZZ_ONE -D _Py_FUZZ_$fuzz_test -c -Wno-unused-function \ + -o $WORK/$fuzz_test.o + # Link with C++ compiler to appease libfuzzer + $CXX $CXXFLAGS $WORK/$fuzz_test.o -o $OUT/$fuzz_test \ + $LIB_FUZZING_ENGINE $($OUT/bin/python3-config --ldflags --embed) +done diff --git a/projects/cpython3/project.yaml b/projects/cpython3/project.yaml index 7996b044..522054f5 100644 --- a/projects/cpython3/project.yaml +++ b/projects/cpython3/project.yaml @@ -1,5 +1,5 @@ homepage: "https://python.org/" primary_contact: "gps@google.com" auto_ccs: - - "jeanpierreda@google.com" - "alex.gaynor@gmail.com" +experimental: True -- cgit v1.2.3