diff options
author | Samuel Gaist <samuel.gaist@idiap.ch> | 2022-07-22 20:41:49 +0200 |
---|---|---|
committer | Samuel Gaist <samuel.gaist@idiap.ch> | 2022-10-06 20:01:35 +0200 |
commit | ada0c1e4f587a2efcaeb0786419a8be8889b0526 (patch) | |
tree | 57ee8fe3804a1207271fdaba4051b19d8a1660ac /fuzzing | |
parent | 4c680169751e8a637ce50928b352df8bafe7d1b5 (diff) | |
download | qtqa-ada0c1e4f587a2efcaeb0786419a8be8889b0526.tar.gz |
fuzzing: Refactor build.sh to allow the use of local Qt checkout
The way the oss-fuzz Dockerfile is currently defined does not allow for
the use of a local checkout of Qt when building the fuzzers or the test
cases.
In order to fix that, the first step is to update this script so it is
ready for the new version of the Dockerfile but also keep it compatible
with the current version so that there's no break on the fuzzing side
until the new Dockerfile is merged by the oss-fuzz project.
Related: https://github.com/google/oss-fuzz/issues/7634
Change-Id: I98bfa4a3d83d1a3259eb4b7a33e839ededc54751
Reviewed-by: Robert Löhning <robert.loehning@qt.io>
Diffstat (limited to 'fuzzing')
-rwxr-xr-x | fuzzing/oss-fuzz/build.sh | 65 |
1 files changed, 38 insertions, 27 deletions
diff --git a/fuzzing/oss-fuzz/build.sh b/fuzzing/oss-fuzz/build.sh index 735cd4d..f0ca5fb 100755 --- a/fuzzing/oss-fuzz/build.sh +++ b/fuzzing/oss-fuzz/build.sh @@ -15,44 +15,54 @@ # ################################################################################ +# setup Qt source folder +SOURCES="$SRC/qt" +if [ ! -d "$SOURCES" ]; then + SOURCES=$SRC +fi + # build qtbase -mkdir $WORK/qt +mkdir -p $WORK/qt cd $WORK/qt -$SRC/qtbase/configure -opensource -confirm-license -prefix $PWD \ - -platform linux-clang-libc++ -release -static \ - -qt-libmd4c -no-opengl -no-widgets -- \ - -DCMAKE_CXX_FLAGS_RELEASE="-O1" -DQT_USE_DEFAULT_CMAKE_OPTIMIZATION_FLAGS=ON + +$SOURCES/qtbase/configure -opensource -confirm-license -prefix $PWD \ + -platform linux-clang-libc++ -release -static \ + -qt-libmd4c -no-opengl -no-widgets -- \ + -DCMAKE_CXX_FLAGS_RELEASE="-O1" -DQT_USE_DEFAULT_CMAKE_OPTIMIZATION_FLAGS=ON VERBOSE=1 cmake --build . --parallel # build additional modules for module in qtimageformats \ qtsvg do - mkdir "$WORK/build-$module" - pushd "$WORK/build-$module" - $WORK/qt/bin/qt-cmake -S "$SRC/$module" -GNinja + buildDir="$WORK/build-$module" + mkdir -p $buildDir + pushd $buildDir + $WORK/qt/bin/qt-cmake -S "$SOURCES/$module" -GNinja VERBOSE=1 cmake --build . --parallel popd done # prepare corpus files -zip -j $WORK/cbor $SRC/qtqa/fuzzing/testcases/cbor/* -zip -j $WORK/datetime $SRC/qtqa/fuzzing/testcases/datetime/* -zip -j $WORK/html $SRC/qtqa/fuzzing/testcases/html/* -zip -j $WORK/icc $SRC/qtqa/fuzzing/testcases/icc/* -zip -j $WORK/images $SRC/qtqa/fuzzing/testcases/{bmp,gif,icns,ico,jpg,png,svg,xbm,xpm}/* $SRC/afltestcases/images/*/* -zip -j $WORK/json $SRC/qtqa/fuzzing/testcases/json/* -zip -j $WORK/markdown $SRC/qtqa/fuzzing/testcases/markdown/* -zip -j $WORK/regexp.zip $SRC/qtqa/fuzzing/testcases/regexp/* -zip -j $WORK/ssl.pem.zip $SRC/qtqa/fuzzing/testcases/ssl.pem/* -zip -j $WORK/svg $SRC/qtqa/fuzzing/testcases/svg/* -zip -j $WORK/text $SRC/qtqa/fuzzing/testcases/text/* $SRC/afltestcases/others/text/* -zip -j $WORK/xml $SRC/qtqa/fuzzing/testcases/xml/* $SRC/afltestcases/others/xml/* +testcasesPath="$SOURCES/qtqa/fuzzing/testcases" +zip -j $WORK/cbor $testcasesPath/cbor/* +zip -j $WORK/datetime $testcasesPath/datetime/* +zip -j $WORK/html $testcasesPath/html/* +zip -j $WORK/icc $testcasesPath/icc/* +zip -j $WORK/images $testcasesPath/{bmp,gif,icns,ico,jpg,png,svg,xbm,xpm}/* $SRC/afltestcases/images/*/* +zip -j $WORK/json $testcasesPath/json/* +zip -j $WORK/markdown $testcasesPath/markdown/* +zip -j $WORK/regexp.zip $testcasesPath/regexp/* +zip -j $WORK/ssl.pem.zip $testcasesPath/ssl.pem/* +zip -j $WORK/svg $testcasesPath/svg/* +zip -j $WORK/text $testcasesPath/text/* $SRC/afltestcases/others/text/* +zip -j $WORK/xml $testcasesPath/xml/* $SRC/afltestcases/others/xml/* # prepare merged dictionaries -mkdir $WORK/merged_dicts -cat $SRC/afldictionaries/{css,html_tags}.dict > "$WORK/merged_dicts/css_and_html.dict" -cat $SRC/afldictionaries/{bmp,dds,exif,gif,icns,jpeg,png,svg,tiff,webp}.dict > "$WORK/merged_dicts/images.dict" +mergedDictsPath="$WORK/merged_dicts" +mkdir -p $mergedDictsPath +cat $SRC/afldictionaries/{css,html_tags}.dict > "$mergedDictsPath/css_and_html.dict" +cat $SRC/afldictionaries/{bmp,dds,exif,gif,icns,jpeg,png,svg,tiff,webp}.dict > "$mergedDictsPath/images.dict" # build fuzzers @@ -63,9 +73,10 @@ build_fuzzer() { local dictionary=${4-""} local exeName="${srcDir##*/}" local targetName="${module}_${srcDir//\//_}" - mkdir "build_$targetName" - pushd "build_$targetName" - $WORK/qt/bin/qt-cmake -S "$SRC/$module/tests/libfuzzer/$srcDir" -GNinja + local buildFolder="build_$targetName" + mkdir -p $buildFolder + pushd $buildFolder + $WORK/qt/bin/qt-cmake -S "$SOURCES/$module/tests/libfuzzer/$srcDir" -GNinja VERBOSE=1 cmake --build . --parallel mv "$exeName" "$OUT/$targetName" @@ -76,7 +87,7 @@ build_fuzzer() { cp "$dictionary" "$OUT/$targetName.dict" fi popd - rm -r "build_$targetName" + rm -r $buildFolder } build_fuzzer "qtbase" "corelib/serialization/qcborstreamreader/next" "cbor" |