From 648d3f5b7d63f36cea87dca6562003ec71aa6241 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Wed, 15 Jan 2020 18:13:42 +0100 Subject: [PATCH] [arrow] Submit Apache Arrow for inclusion (#3233) * Submit Apache Arrow for inclusion Arrow is both an efficient in-memory format for tabular data, an IPC format with zero-copy capabilities, and a set of interoperable language implementations (~10 languages currently: C++, Python, Java, Rust, Go...). This submission is for fuzzing the Arrow C++ IPC reader. If accepted, we plan to add other fuzz targets, for example for reading Parquet files. * Add license header to project.yaml --- projects/arrow/Dockerfile | 29 ++++++++++++++++++ projects/arrow/build.sh | 61 +++++++++++++++++++++++++++++++++++++ projects/arrow/project.yaml | 24 +++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 projects/arrow/Dockerfile create mode 100755 projects/arrow/build.sh create mode 100644 projects/arrow/project.yaml diff --git a/projects/arrow/Dockerfile b/projects/arrow/Dockerfile new file mode 100644 index 000000000..110056d96 --- /dev/null +++ b/projects/arrow/Dockerfile @@ -0,0 +1,29 @@ +# Copyright 2020 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +FROM gcr.io/oss-fuzz-base/base-builder +MAINTAINER dev@arrow.apache.org + +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update -y -q && \ + apt-get update -y -q && \ + apt-get install -y -q --no-install-recommends \ + cmake \ + ninja-build \ + python3 + +RUN git clone --depth=1 https://github.com/apache/arrow.git $SRC/arrow +COPY build.sh $SRC/ diff --git a/projects/arrow/build.sh b/projects/arrow/build.sh new file mode 100755 index 000000000..dad1c0d83 --- /dev/null +++ b/projects/arrow/build.sh @@ -0,0 +1,61 @@ +#!/bin/bash -eu +# Copyright 2020 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +set -ex + +ARROW=${SRC}/arrow/cpp + +cd ${WORK} + +cmake ${ARROW} -GNinja \ + -DCMAKE_BUILD_TYPE=Release \ + -DARROW_DEPENDENCY_SOURCE=BUNDLED \ + -DCMAKE_C_FLAGS="${CFLAGS}" \ + -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ + -DARROW_EXTRA_ERROR_CONTEXT=off \ + -DARROW_JEMALLOC=off \ + -DARROW_MIMALLOC=off \ + -DARROW_FILESYSTEM=off \ + -DARROW_PARQUET=off \ + -DARROW_BUILD_SHARED=off \ + -DARROW_BUILD_STATIC=on \ + -DARROW_BUILD_TESTS=off \ + -DARROW_BUILD_INTEGRATION=off \ + -DARROW_BUILD_BENCHMARKS=off \ + -DARROW_BUILD_EXAMPLES=off \ + -DARROW_BUILD_UTILITIES=off \ + -DARROW_TEST_LINKAGE=static \ + -DPARQUET_BUILD_EXAMPLES=off \ + -DPARQUET_BUILD_EXECUTABLES=off \ + -DPARQUET_REQUIRE_ENCRYPTION=off \ + -DARROW_WITH_BROTLI=off \ + -DARROW_WITH_BZ2=off \ + -DARROW_WITH_LZ4=off \ + -DARROW_WITH_SNAPPY=off \ + -DARROW_WITH_ZLIB=off \ + -DARROW_WITH_ZSTD=off \ + -DARROW_USE_GLOG=off \ + -DARROW_USE_ASAN=off \ + -DARROW_USE_UBSAN=off \ + -DARROW_USE_TSAN=off \ + -DARROW_FUZZING=on \ + +cmake --build . + +cp -a release/* ${OUT} + +${ARROW}/build-support/fuzzing/generate_corpuses.sh ${OUT} diff --git a/projects/arrow/project.yaml b/projects/arrow/project.yaml new file mode 100644 index 000000000..c034633fd --- /dev/null +++ b/projects/arrow/project.yaml @@ -0,0 +1,24 @@ +# Copyright 2018 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +homepage: "https://arrow.apache.org/" +primary_contact: "antoine@python.org" +auto_ccs: + - "wesmckinn@gmail.com" + - "private@arrow.apache.org" +sanitizers: + - address + - undefined