Bug 1411004 - ./mach clang-format: Better handling of relative paths r?=mystor draft
authorSylvestre Ledru <sledru@mozilla.com>
Mon, 30 Oct 2017 18:36:28 +0100
changeset 689460 c1243c50fe0c0c4d6b853fcc9645e9da0b9e2678
parent 689459 0a7ff6e19bcc229500d92597fac9340d9bdef959
child 693328 31019e2dec46e2000d10b9bf81ed805e51cd2c7e
child 694977 f2299930e9279f6395f5725150ca1c46a8d5b155
push id87027
push userbmo:sledru@mozilla.com
push dateTue, 31 Oct 2017 15:33:27 +0000
bugs1411004
milestone58.0a1
Bug 1411004 - ./mach clang-format: Better handling of relative paths r?=mystor For example, this is addressing the issue: ./mach clang-format -p ./mfbt/ MozReview-Commit-ID: Le8mPTOEfA7
.clang-format-ignore
tools/mach_commands.py
--- a/.clang-format-ignore
+++ b/.clang-format-ignore
@@ -1,136 +1,136 @@
 # Uses the LLVM coding style
-^build/clang-plugin/.*
+build/clang-plugin/.*
 # The two templates cannot be formatted
-^config/gcc-stl-wrapper.template.h
-^config/msvc-stl-wrapper.template.h
-^dom/base/test/.*
-^dom/bindings/test/.*
-^dom/media/gtest/.*
-^gfx/testsd/.*
-^image/test/.*
-^ipc/ipdl/test/.*
-^ipc/testshell/.*
-^js/src/jsapi-tests/.*
+config/gcc-stl-wrapper.template.h
+config/msvc-stl-wrapper.template.h
+dom/base/test/.*
+dom/bindings/test/.*
+dom/media/gtest/.*
+gfx/testsd/.*
+image/test/.*
+ipc/ipdl/test/.*
+ipc/testshell/.*
+js/src/jsapi-tests/.*
 # See bug 1395584
-^js/src/vm/Opcodes.h
+js/src/vm/Opcodes.h
 # Ignored because of bug 1342657
-^layout/style/nsCSSPropAliasList.h
+layout/style/nsCSSPropAliasList.h
 # Ignored because of bug 1342657
-^layout/style/nsCSSPropList.h
-^media/mtransport/test/.*
-^mfbt/tests/.*
-^storage/test/.*
-^testing/gtest/.*
-^tools/profiler/tests/.*
-^uriloader/exthandler/tests/.*
+layout/style/nsCSSPropList.h
+media/mtransport/test/.*
+mfbt/tests/.*
+storage/test/.*
+testing/gtest/.*
+tools/profiler/tests/.*
+uriloader/exthandler/tests/.*
 # JNI code is generated
-^widget/android/GeneratedJNINatives.h
-^widget/android/GeneratedJNIWrappers.cpp
-^widget/android/GeneratedJNIWrappers.h
-^widget/android/fennec/FennecJNINatives.h
-^widget/android/fennec/FennecJNIWrappers.cpp
-^widget/android/fennec/FennecJNIWrappers.h
-^widget/tests/.*
-^xpcom/glue/tests/.*
-^xpcom/tests/.*
+widget/android/GeneratedJNINatives.h
+widget/android/GeneratedJNIWrappers.cpp
+widget/android/GeneratedJNIWrappers.h
+widget/android/fennec/FennecJNINatives.h
+widget/android/fennec/FennecJNIWrappers.cpp
+widget/android/fennec/FennecJNIWrappers.h
+widget/tests/.*
+xpcom/glue/tests/.*
+xpcom/tests/.*
 
 # Generated from ./tools/rewriting/ThirdPartyPaths.txt
-# awk '{print "^"$1".*"}' ./tools/rewriting/ThirdPartyPaths.txt
-^browser/components/translation/cld2/.*
-^browser/extensions/mortar/ppapi/.*
-^db/sqlite3/src/.*
-^extensions/spellcheck/hunspell/src/.*
-^gfx/angle/.*
-^gfx/cairo/.*
-^gfx/graphite2/.*
-^gfx/harfbuzz/.*
-^gfx/ots/.*
-^gfx/qcms/.*
-^gfx/sfntly/.*
-^gfx/skia/.*
-^gfx/vr/openvr/.*
-^gfx/webrender.*
-^gfx/webrender_api.*
-^gfx/ycbcr/.*
-^intl/hyphenation/hyphen/.*
-^intl/icu/.*
-^ipc/chromium/.*
-^js/src/ctypes/libffi/.*
-^js/src/dtoa.c.*
-^js/src/jit/arm64/vixl/.*
-^media/ffvpx/.*
-^media/gmp-clearkey/0.1/openaes/.*
-^media/kiss_fft/.*
-^media/libav/.*
-^media/libcubeb/.*
-^media/libjpeg/.*
-^media/libmkv/.*
-^media/libnestegg/.*
-^media/libogg/.*
-^media/libopus/.*
-^media/libpng/.*
-^media/libsoundtouch/.*
-^media/libspeex_resampler/.*
-^media/libstagefright/.*
-^media/libtheora/.*
-^media/libtremor/.*
-^media/libvorbis/.*
-^media/libvpx/.*
-^media/libyuv/.*
-^media/mtransport/third_party/.*
-^media/openmax_dl/.*
-^media/sphinxbase/.*
-^media/webrtc/signaling/src/sdp/sipcc/.*
-^media/webrtc/trunk/.*
-^mfbt/decimal/.*
-^mfbt/double-conversion/double-conversion/.*
-^mobile/android/geckoview/src/thirdparty/.*
-^mobile/android/thirdparty/.*
-^modules/brotli/.*
-^modules/fdlibm/.*
-^modules/freetype2/.*
-^modules/libbz2/.*
-^modules/libmar/.*
-^modules/pdfium/.*
-^modules/woff2/.*
-^modules/zlib/.*
-^netwerk/sctp/src/.*
-^netwerk/srtp/src/.*
-^nsprpub/.*
-^other-licenses/.*
-^parser/expat/.*
-^security/nss/.*
-^security/sandbox/chromium/.*
-^testing/gtest/gmock/.*
-^testing/gtest/gtest/.*
-^testing/talos/talos/tests/canvasmark/.*
-^testing/talos/talos/tests/dromaeo/.*
-^testing/talos/talos/tests/kraken/.*
-^testing/talos/talos/tests/v8_7/.*
-^third_party/aom/.*
-^third_party/python/blessings/.*
-^third_party/python/configobj/.*
-^third_party/python/futures/.*
-^third_party/python/jsmin/.*
-^third_party/python/mock-*/.*
-^third_party/python/psutil/.*
-^third_party/python/py/.*
-^third_party/python/pyasn1/.*
-^third_party/python/pyasn1-modules/.*
-^third_party/python/PyECC/.*
-^third_party/python/pytest/.*
-^third_party/python/pytoml/.*
-^third_party/python/pyyaml/.*
-^third_party/python/redo/.*
-^third_party/python/requests/.*
-^third_party/python/rsa/.*
-^third_party/python/six/.*
-^third_party/python/which/.*
-^third_party/rust/.*
-^toolkit/components/jsoncpp/.*
-^toolkit/components/lz4/.*
-^toolkit/components/protobuf/.*
-^toolkit/components/url-classifier/chromium/.*
-^toolkit/components/url-classifier/protobuf/.*
-^toolkit/crashreporter/google-breakpad/.*
-^tools/fuzzing/libfuzzer.*
+# awk '{print ""$1".*"}' ./tools/rewriting/ThirdPartyPaths.txt
+browser/components/translation/cld2/.*
+browser/extensions/mortar/ppapi/.*
+db/sqlite3/src/.*
+extensions/spellcheck/hunspell/src/.*
+gfx/angle/.*
+gfx/cairo/.*
+gfx/graphite2/.*
+gfx/harfbuzz/.*
+gfx/ots/.*
+gfx/qcms/.*
+gfx/sfntly/.*
+gfx/skia/.*
+gfx/vr/openvr/.*
+gfx/webrender.*
+gfx/webrender_api.*
+gfx/ycbcr/.*
+intl/hyphenation/hyphen/.*
+intl/icu/.*
+ipc/chromium/.*
+js/src/ctypes/libffi/.*
+js/src/dtoa.c.*
+js/src/jit/arm64/vixl/.*
+media/ffvpx/.*
+media/gmp-clearkey/0.1/openaes/.*
+media/kiss_fft/.*
+media/libav/.*
+media/libcubeb/.*
+media/libjpeg/.*
+media/libmkv/.*
+media/libnestegg/.*
+media/libogg/.*
+media/libopus/.*
+media/libpng/.*
+media/libsoundtouch/.*
+media/libspeex_resampler/.*
+media/libstagefright/.*
+media/libtheora/.*
+media/libtremor/.*
+media/libvorbis/.*
+media/libvpx/.*
+media/libyuv/.*
+media/mtransport/third_party/.*
+media/openmax_dl/.*
+media/sphinxbase/.*
+media/webrtc/signaling/src/sdp/sipcc/.*
+media/webrtc/trunk/.*
+mfbt/decimal/.*
+mfbt/double-conversion/double-conversion/.*
+mobile/android/geckoview/src/thirdparty/.*
+mobile/android/thirdparty/.*
+modules/brotli/.*
+modules/fdlibm/.*
+modules/freetype2/.*
+modules/libbz2/.*
+modules/libmar/.*
+modules/pdfium/.*
+modules/woff2/.*
+modules/zlib/.*
+netwerk/sctp/src/.*
+netwerk/srtp/src/.*
+nsprpub/.*
+other-licenses/.*
+parser/expat/.*
+security/nss/.*
+security/sandbox/chromium/.*
+testing/gtest/gmock/.*
+testing/gtest/gtest/.*
+testing/talos/talos/tests/canvasmark/.*
+testing/talos/talos/tests/dromaeo/.*
+testing/talos/talos/tests/kraken/.*
+testing/talos/talos/tests/v8_7/.*
+third_party/aom/.*
+third_party/python/blessings/.*
+third_party/python/configobj/.*
+third_party/python/futures/.*
+third_party/python/jsmin/.*
+third_party/python/mock-*/.*
+third_party/python/psutil/.*
+third_party/python/py/.*
+third_party/python/pyasn1/.*
+third_party/python/pyasn1-modules/.*
+third_party/python/PyECC/.*
+third_party/python/pytest/.*
+third_party/python/pytoml/.*
+third_party/python/pyyaml/.*
+third_party/python/redo/.*
+third_party/python/requests/.*
+third_party/python/rsa/.*
+third_party/python/six/.*
+third_party/python/which/.*
+third_party/rust/.*
+toolkit/components/jsoncpp/.*
+toolkit/components/lz4/.*
+toolkit/components/protobuf/.*
+toolkit/components/url-classifier/chromium/.*
+toolkit/components/url-classifier/protobuf/.*
+toolkit/crashreporter/google-breakpad/.*
+tools/fuzzing/libfuzzer.*
--- a/tools/mach_commands.py
+++ b/tools/mach_commands.py
@@ -299,17 +299,18 @@ class FormatProvider(MachCommandBase):
 
     def generate_path_list(self, paths):
         pathToThirdparty = os.path.join(self.topsrcdir, self._format_ignore_file)
         ignored_dir = []
         for line in open(pathToThirdparty):
             # Remove comments and empty lines
             if line.startswith('#') or len(line.strip()) == 0:
                 continue
-            ignored_dir.append(line.rstrip())
+            # The regexp is to make sure we are managing relative paths
+            ignored_dir.append("^[\./]*" + line.rstrip())
 
         # Generates the list of regexp
         ignored_dir_re = '(%s)' % '|'.join(ignored_dir)
         extensions = self._format_include_extensions
 
         path_list = []
         for f in paths:
             if re.match(ignored_dir_re, f):