Changeset View
Changeset View
Standalone View
Standalone View
test/lint/lint-boost-dependencies.sh
#!/usr/bin/env bash | #!/usr/bin/env bash | ||||
# | # | ||||
# Copyright (c) 2018 The Bitcoin Core developers | # Copyright (c) 2018 The Bitcoin Core developers | ||||
# Distributed under the MIT software license, see the accompanying | # Distributed under the MIT software license, see the accompanying | ||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. | # file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
# | # | ||||
# Guard against accidental introduction of new Boost dependencies. | # Guard against accidental introduction of new Boost dependencies. | ||||
EXIT_CODE=0 | |||||
EXPECTED_BOOST_INCLUDES=( | EXPECTED_BOOST_INCLUDES=( | ||||
boost/algorithm/string.hpp | boost/algorithm/string.hpp | ||||
boost/algorithm/string/classification.hpp | boost/algorithm/string/classification.hpp | ||||
boost/algorithm/string/predicate.hpp | boost/algorithm/string/predicate.hpp | ||||
boost/algorithm/string/replace.hpp | boost/algorithm/string/replace.hpp | ||||
boost/algorithm/string/split.hpp | boost/algorithm/string/split.hpp | ||||
boost/assign/std/vector.hpp | boost/assign/std/vector.hpp | ||||
boost/bind.hpp | boost/bind.hpp | ||||
Show All 36 Lines | for BOOST_INCLUDE in $(git grep '^#include <boost/' -- "*.cpp" "*.h" | cut -f2 -d: | cut -f2 -d'<' | cut -f1 -d'>' | sort -u); do | ||||
IS_EXPECTED_INCLUDE=0 | IS_EXPECTED_INCLUDE=0 | ||||
for EXPECTED_BOOST_INCLUDE in "${EXPECTED_BOOST_INCLUDES[@]}"; do | for EXPECTED_BOOST_INCLUDE in "${EXPECTED_BOOST_INCLUDES[@]}"; do | ||||
if [[ "${BOOST_INCLUDE}" == "${EXPECTED_BOOST_INCLUDE}" ]]; then | if [[ "${BOOST_INCLUDE}" == "${EXPECTED_BOOST_INCLUDE}" ]]; then | ||||
IS_EXPECTED_INCLUDE=1 | IS_EXPECTED_INCLUDE=1 | ||||
break | break | ||||
fi | fi | ||||
done | done | ||||
if [[ ${IS_EXPECTED_INCLUDE} == 0 ]]; then | if [[ ${IS_EXPECTED_INCLUDE} == 0 ]]; then | ||||
EXIT_CODE=1 | |||||
echo "A new Boost dependency in the form of \"${BOOST_INCLUDE}\" appears to have been introduced:" | echo "A new Boost dependency in the form of \"${BOOST_INCLUDE}\" appears to have been introduced:" | ||||
git grep "${BOOST_INCLUDE}" -- "*.cpp" "*.h" | git grep "${BOOST_INCLUDE}" -- "*.cpp" "*.h" | ||||
echo | echo | ||||
fi | fi | ||||
done | done | ||||
for EXPECTED_BOOST_INCLUDE in "${EXPECTED_BOOST_INCLUDES[@]}"; do | for EXPECTED_BOOST_INCLUDE in "${EXPECTED_BOOST_INCLUDES[@]}"; do | ||||
if ! git grep -q "^#include <${EXPECTED_BOOST_INCLUDE}>" -- "*.cpp" "*.h"; then | if ! git grep -q "^#include <${EXPECTED_BOOST_INCLUDE}>" -- "*.cpp" "*.h"; then | ||||
echo "Good job! The Boost dependency \"${EXPECTED_BOOST_INCLUDE}\" is no longer used." | echo "Good job! The Boost dependency \"${EXPECTED_BOOST_INCLUDE}\" is no longer used." | ||||
echo "Please remove it from EXPECTED_BOOST_INCLUDES in $0" | echo "Please remove it from EXPECTED_BOOST_INCLUDES in $0" | ||||
echo "to make sure this dependency is not accidentally reintroduced." | echo "to make sure this dependency is not accidentally reintroduced." | ||||
echo | echo | ||||
EXIT_CODE=1 | |||||
fi | fi | ||||
done | done | ||||
exit ${EXIT_CODE} |