Skip to content
Snippets Groups Projects
  1. Nov 09, 2023
  2. Oct 03, 2023
  3. May 08, 2023
    • Sean Bright's avatar
      core: Cleanup gerrit and JIRA references. (#57) · 7677e78b
      Sean Bright authored
      * Remove .gitreview and switch to pulling the main asterisk branch
        version from configure.ac instead.
      
      * Replace references to JIRA with GitHub.
      
      * Other minor cleanup found along the way.
      
      Resolves: #39
      (cherry picked from commit 5c6d5ea38fd4c4966a91fa8fe4cff417407fff7c)
      7677e78b
    • George Joseph's avatar
      make_version: Strip svn stuff and suppress ref HEAD errors · bd1f8b89
      George Joseph authored
      * All of the code that used subversion has been removed.
      
      * When Asterisk is checked out from a tag or commit instead
        of one of the regular branches, git would emit messages like
        "fatal: ref HEAD is not a symbolic ref" which weren't fatal
        at all.  Those are now suppressed.
      
      Change-Id: I2a11bc9ebbaf6dfa50f53516ede50a6bac65ca3c
      (cherry picked from commit bbec5d1a9926c419265fc2382ce14b37a8ec142e)
      bd1f8b89
  4. Jul 13, 2022
    • Mike Bradeen's avatar
      Makefile: Avoid git-make user conflict · 7cc026b3
      Mike Bradeen authored
      make_version now silently checks if the required git commands will
      fail.  If they do, then return UNKNOWN__git_check_fail to
      distinguish this failure from other UNKNOWN__ version failures
      
      Makefile checks for this value on install and exits out with
      instructions
      
      ASTERISK-30029
      
      Change-Id: If8f10cac8f509c08981120f17555762342020221
      7cc026b3
  5. Mar 29, 2022
    • George Joseph's avatar
      make_xml_documentation: Remove usage of get_sourceable_makeopts · 144b3c54
      George Joseph authored
      get_sourceable_makeopts wasn't handling variables with embedded
      double quotes in them very well.  One example was the DOWNLOAD
      variable when curl was being used instead of wget.  Rather than
      trying to fix get_sourceable_makeopts, it's just been removed.
      
      ASTERISK-29986
      Reported by: Stefan Ruijsenaars
      
      Change-Id: Idf2a90902228c2558daa5be7a4f8327556099cd2
      144b3c54
    • George Joseph's avatar
      make_xml_documentation: Remove usage of get_sourceable_makeopts · 663b5656
      George Joseph authored
      get_sourceable_makeopts wasn't handling variables with embedded
      double quotes in them very well.  One example was the DOWNLOAD
      variable when curl was being used instead of wget.  Rather than
      trying to fix get_sourceable_makeopts, it's just been removed.
      
      ASTERISK-29986
      Reported by: Stefan Ruijsenaars
      
      Change-Id: Idf2a90902228c2558daa5be7a4f8327556099cd2
      663b5656
  6. Mar 23, 2022
  7. Mar 03, 2022
    • George Joseph's avatar
      xml.c, config,c: Add stylesheets and variable list string parsing · b40c4d59
      George Joseph authored
      Added functions to open, close, and apply XML Stylesheets
      to XML documents.  Although the presence of libxslt was already
      being checked by configure, it was only happening if xmldoc was
      enabled.  Now it's checked regardless.
      
      Added ability to parse a string consisting of comma separated
      name/value pairs into an ast_variable list.  The reverse of
      ast_variable_list_join().
      
      Change-Id: I1e1d149be22165a1fb8e88e2903a36bba1a6cf2e
      b40c4d59
    • George Joseph's avatar
      xml.c, config,c: Add stylesheets and variable list string parsing · b6e482be
      George Joseph authored
      Added functions to open, close, and apply XML Stylesheets
      to XML documents.  Although the presence of libxslt was already
      being checked by configure, it was only happening if xmldoc was
      enabled.  Now it's checked regardless.
      
      Added ability to parse a string consisting of comma separated
      name/value pairs into an ast_variable list.  The reverse of
      ast_variable_list_join().
      
      Change-Id: I1e1d149be22165a1fb8e88e2903a36bba1a6cf2e
      b6e482be
  8. Mar 01, 2022
    • George Joseph's avatar
      xmldoc: Fix issue with xmlstarlet validation · 9c36c055
      George Joseph authored
      Added the missing xml-stylesheet and Xinclude namespace
      declarations in pjsip_config.xml and pjsip_manager.xml.
      
      Updated make_xml_documentation to show detailed errors when
      xmlstarlet is the validator.  It's now run once with the '-q'
      option to suppress harmless/expected messages and if it actually
      fails, it's run again without '-q' but with '-e' to show
      the actual errors.
      
      Change-Id: I4bdc9d2ea6741e8d2e5eb82df60c68ccc59e1f5e
      9c36c055
    • George Joseph's avatar
      xmldoc: Fix issue with xmlstarlet validation · 46844112
      George Joseph authored
      Added the missing xml-stylesheet and Xinclude namespace
      declarations in pjsip_config.xml and pjsip_manager.xml.
      
      Updated make_xml_documentation to show detailed errors when
      xmlstarlet is the validator.  It's now run once with the '-q'
      option to suppress harmless/expected messages and if it actually
      fails, it's run again without '-q' but with '-e' to show
      the actual errors.
      
      Change-Id: I4bdc9d2ea6741e8d2e5eb82df60c68ccc59e1f5e
      46844112
  9. Feb 28, 2022
    • George Joseph's avatar
      Makefile: Allow XML documentation to exist outside source files · a81e14d2
      George Joseph authored
      Moved the xmldoc build logic from the top-level Makefile into
      its own script "make_xml_documentation" in the build_tools
      directory.
      
      Created a new utility script "get_sourceable_makeopts", also in
      the build_tools directory, that dumps the top-level "makeopts"
      file in a format that can be "sourced" from shell sscripts.
      This allows scripts to easily get the values of common make
      build variables such as the location of the GREP, SED, AWK, etc.
      utilities as well as the AST* and library *_LIB and *_INCLUDE
      variables.
      
      Besides moving logic out of the Makefile, some optimizations
      were done like removing "third-party" from the list of
      subdirectories to be searched for documentation and changing some
      assignments from "=" to ":=" so they're only evaluated once.
      The speed increase is noticeable.
      
      The makeopts.in file was updated to include the paths to
      REALPATH and DIRNAME.  The ./conifgure script was setting them
      but makeopts.in wasn't including them.
      
      So...
      
      With this change, you can now place documentation in any"c"
      source file AND you can now place it in a separate XML file
      altogether.  The following are examples of valid locations:
      
      res/res_pjsip.c
          Using the existing /*** DOCUMENTATION ***/ fragment.
      
      res/res_pjsip/pjsip_configuration.c
          Using the existing /*** DOCUMENTATION ***/ fragment.
      
      res/res_pjsip/pjsip_doc.xml
          A fully-formed XML file.  The "configInfo", "manager",
          "managerEvent", etc. elements that would be in the "c"
          file DOCUMENTATION fragment should be wrapped in proper
          XML.  Example for "somemodule.xml":
      
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE docs SYSTEM "appdocsxml.dtd">
          <docs>
              <configInfo>
              ...
              </configInfo>
          </docs>
      
      It's the "appdocsxml.dtd" that tells make_xml_documentation
      that this is a documentation XML file and not some other XML file.
      It also allows many XML-capable editors to do formatting and
      validation.
      
      Other than the ".xml" suffix, the name of the file is not
      significant.
      
      As a start... This change also moves the documentation that was
      in res_pjsip.c to 2 new XML files in res/res_pjsip:
      pjsip_config.xml and pjsip_manager.xml.  This cut the number of
      lines in res_pjsip.c in half. :)
      
      Change-Id: I486c16c0b5a44d7a8870008e10c941fb19b71ade
      a81e14d2
    • George Joseph's avatar
      Makefile: Allow XML documentation to exist outside source files · 2e00b5ed
      George Joseph authored
      Moved the xmldoc build logic from the top-level Makefile into
      its own script "make_xml_documentation" in the build_tools
      directory.
      
      Created a new utility script "get_sourceable_makeopts", also in
      the build_tools directory, that dumps the top-level "makeopts"
      file in a format that can be "sourced" from shell sscripts.
      This allows scripts to easily get the values of common make
      build variables such as the location of the GREP, SED, AWK, etc.
      utilities as well as the AST* and library *_LIB and *_INCLUDE
      variables.
      
      Besides moving logic out of the Makefile, some optimizations
      were done like removing "third-party" from the list of
      subdirectories to be searched for documentation and changing some
      assignments from "=" to ":=" so they're only evaluated once.
      The speed increase is noticeable.
      
      The makeopts.in file was updated to include the paths to
      REALPATH and DIRNAME.  The ./conifgure script was setting them
      but makeopts.in wasn't including them.
      
      So...
      
      With this change, you can now place documentation in any"c"
      source file AND you can now place it in a separate XML file
      altogether.  The following are examples of valid locations:
      
      res/res_pjsip.c
          Using the existing /*** DOCUMENTATION ***/ fragment.
      
      res/res_pjsip/pjsip_configuration.c
          Using the existing /*** DOCUMENTATION ***/ fragment.
      
      res/res_pjsip/pjsip_doc.xml
          A fully-formed XML file.  The "configInfo", "manager",
          "managerEvent", etc. elements that would be in the "c"
          file DOCUMENTATION fragment should be wrapped in proper
          XML.  Example for "somemodule.xml":
      
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE docs SYSTEM "appdocsxml.dtd">
          <docs>
              <configInfo>
              ...
              </configInfo>
          </docs>
      
      It's the "appdocsxml.dtd" that tells make_xml_documentation
      that this is a documentation XML file and not some other XML file.
      It also allows many XML-capable editors to do formatting and
      validation.
      
      Other than the ".xml" suffix, the name of the file is not
      significant.
      
      As a start... This change also moves the documentation that was
      in res_pjsip.c to 2 new XML files in res/res_pjsip:
      pjsip_config.xml and pjsip_manager.xml.  This cut the number of
      lines in res_pjsip.c in half. :)
      
      Change-Id: I486c16c0b5a44d7a8870008e10c941fb19b71ade
      2e00b5ed
    • George Joseph's avatar
      build: Refactor the earlier "basebranch" commit · 1950cec3
      George Joseph authored
      Recap from earlier commit:  If you have a development branch for a
      major project that will receive gerrit reviews it'll probably be
      named something like "development/16/newproject" or a work branch
      based on that "development" branch.  That will necessitate
      setting "defaultbranch=development/16/newproject" in .gitreview.
      The make_version script uses that variable to construct the
      asterisk version however, which results in versions
      like "GIT-development/16/newproject-ee582a8c7b" which is probably
      not what you want.  It also constructs the URLs for downloading
      external modules with that version, which will fail.
      
      Fast-forward:
      
      The earlier attempt at adding a "basebranch" variable to
      .gitreview didn't work out too well in practice because changes
      were made to .gitreview, which is a checked-in file.  So, if
      you wanted to rebase your work branch on the base branch, rebase
      would attempt to overwrite your .gitreview with the one from
      the base branch and complain about a conflict.
      
      This is a slighltly different approach that adds three methods to
      determine the mainline branch:
      
      1.  --- MAINLINE_BRANCH from the environment
      
      If MAINLINE_BRANCH is already set in the environment, that will
      be used.  This is primarily for the Jenkins jobs.
      
      2.  --- .develvars
      
      Instead of storing the basebranch in .gitreview, it can now be
      stored in a non-checked-in ".develvars" file and keyed by the
      current branch.  So, if you were working on a branch named
      "new-feature-work" based on "development/16/new-feature" and wanted
       to push to that branch in Gerrit but wanted to pull the external
       modules for 16, you'd create the following .develvars file:
      
      [branch "new-feature-work"]
          mainline-branch = 16
      
      The .gitreview file would still look like:
      
      [gerrit]
      defaultbranch=development/16/new-feature
      
      ...which would cause any reviews pushed from "new-feature-work" to
      go to the "development/16/new-feature" branch in Gerrit.
      
      The key is that the .develvars file is NEVER checked in (it's been
      added to .gitignore).
      
      3.  --- Well Known Development Branch
      
      If you're actually working in a branch named like
      "development/<mainline_branch>/some-feature", the mainline branch
      will be parsed from it.
      
      4.  --- .gitreview
      
      If none of the earlier conditions exist, the .gitreview
      "defaultbranch" variable will be used just as before.
      
      Change-Id: I1cdeeaa0944bba3f2e01d7a2039559d0c266f8c9
      1950cec3
    • George Joseph's avatar
      build: Refactor the earlier "basebranch" commit · 47106a09
      George Joseph authored
      Recap from earlier commit:  If you have a development branch for a
      major project that will receive gerrit reviews it'll probably be
      named something like "development/16/newproject" or a work branch
      based on that "development" branch.  That will necessitate
      setting "defaultbranch=development/16/newproject" in .gitreview.
      The make_version script uses that variable to construct the
      asterisk version however, which results in versions
      like "GIT-development/16/newproject-ee582a8c7b" which is probably
      not what you want.  It also constructs the URLs for downloading
      external modules with that version, which will fail.
      
      Fast-forward:
      
      The earlier attempt at adding a "basebranch" variable to
      .gitreview didn't work out too well in practice because changes
      were made to .gitreview, which is a checked-in file.  So, if
      you wanted to rebase your work branch on the base branch, rebase
      would attempt to overwrite your .gitreview with the one from
      the base branch and complain about a conflict.
      
      This is a slighltly different approach that adds three methods to
      determine the mainline branch:
      
      1.  --- MAINLINE_BRANCH from the environment
      
      If MAINLINE_BRANCH is already set in the environment, that will
      be used.  This is primarily for the Jenkins jobs.
      
      2.  --- .develvars
      
      Instead of storing the basebranch in .gitreview, it can now be
      stored in a non-checked-in ".develvars" file and keyed by the
      current branch.  So, if you were working on a branch named
      "new-feature-work" based on "development/16/new-feature" and wanted
       to push to that branch in Gerrit but wanted to pull the external
       modules for 16, you'd create the following .develvars file:
      
      [branch "new-feature-work"]
          mainline-branch = 16
      
      The .gitreview file would still look like:
      
      [gerrit]
      defaultbranch=development/16/new-feature
      
      ...which would cause any reviews pushed from "new-feature-work" to
      go to the "development/16/new-feature" branch in Gerrit.
      
      The key is that the .develvars file is NEVER checked in (it's been
      added to .gitignore).
      
      3.  --- Well Known Development Branch
      
      If you're actually working in a branch named like
      "development/<mainline_branch>/some-feature", the mainline branch
      will be parsed from it.
      
      4.  --- .gitreview
      
      If none of the earlier conditions exist, the .gitreview
      "defaultbranch" variable will be used just as before.
      
      Change-Id: I1cdeeaa0944bba3f2e01d7a2039559d0c266f8c9
      47106a09
  10. Feb 01, 2022
    • Sean Bright's avatar
      build_tools/make_version: Fix bashism in comparison. · c51353e4
      Sean Bright authored
      In POSIX sh (which we indicate in the shebang), there is no ==
      operator.
      
      Change-Id: Ic03d38214d14cdf329b0ba272279a815bb532965
      c51353e4
    • Sean Bright's avatar
      build_tools/make_version: Fix bashism in comparison. · 4126d703
      Sean Bright authored
      In POSIX sh (which we indicate in the shebang), there is no ==
      operator.
      
      Change-Id: Ic03d38214d14cdf329b0ba272279a815bb532965
      4126d703
    • George Joseph's avatar
      build: Add "basebranch" to .gitreview · bfc4d63d
      George Joseph authored
      If you have a development branch for a major project that
      will receive gerrit reviews it'll probably be named something
      like "development/16/newproject".  That will necessitate setting
      "defaultbranch=development/16/newproject" in .gitreview.  The
      make_version script uses that variable to construct the asterisk
      version however, which results in versions like
      "GIT-development/16/newproject-ee582a8c7b" which is probably not
      what you want.  Worse, since the download_externals script uses
      make_version to construct the URL to download the binary codecs
      or DPMA.  Since it's expecting a simple numeric version, the
      downloads will fail.
      
      To get this to work, a new variable "basebranch" has been added
      to .gitreview and make_version has been updated to use that instead
      of defaultversion:
      
      .gitreview:
      defaultbranch=development/16/myproject
      basebranch=16
      
      Now git-review will send the reviews to the proper branch
      (development/16/myproject) but the version will still be
      constructed using the simple branch number (16).
      
      If "basebranch" is missing from .gitreview, make_version will
      fall back to using "defaultbranch".
      
      Change-Id: I2941a3b21e668febeb6cfbc1a7bb51a67726fcc4
      bfc4d63d
    • George Joseph's avatar
      build: Add "basebranch" to .gitreview · 135e48de
      George Joseph authored
      If you have a development branch for a major project that
      will receive gerrit reviews it'll probably be named something
      like "development/16/newproject".  That will necessitate setting
      "defaultbranch=development/16/newproject" in .gitreview.  The
      make_version script uses that variable to construct the asterisk
      version however, which results in versions like
      "GIT-development/16/newproject-ee582a8c7b" which is probably not
      what you want.  Worse, since the download_externals script uses
      make_version to construct the URL to download the binary codecs
      or DPMA.  Since it's expecting a simple numeric version, the
      downloads will fail.
      
      To get this to work, a new variable "basebranch" has been added
      to .gitreview and make_version has been updated to use that instead
      of defaultversion:
      
      .gitreview:
      defaultbranch=development/16/myproject
      basebranch=16
      
      Now git-review will send the reviews to the proper branch
      (development/16/myproject) but the version will still be
      constructed using the simple branch number (16).
      
      If "basebranch" is missing from .gitreview, make_version will
      fall back to using "defaultbranch".
      
      Change-Id: I2941a3b21e668febeb6cfbc1a7bb51a67726fcc4
      135e48de
  11. Jan 19, 2022
    • Michał Górny's avatar
      build_tools/make_version: Fix sed(1) syntax compatibility with NetBSD · 90d02cf0
      Michał Górny authored
      Fix the sed(1) invocation used to process git-svn-id not to use "\s"
      that is a GNU-ism and is not supported by NetBSD sed.  As a result,
      this call did not work properly and make_version did output the full
      git-svn-id line rather than the revision.
      
      ASTERISK-29852
      
      Change-Id: Ie4b406e2748920643446851a0a252a4ca7245772
      90d02cf0
    • Michał Górny's avatar
      build_tools/make_version: Fix sed(1) syntax compatibility with NetBSD · 23be22ab
      Michał Górny authored
      Fix the sed(1) invocation used to process git-svn-id not to use "\s"
      that is a GNU-ism and is not supported by NetBSD sed.  As a result,
      this call did not work properly and make_version did output the full
      git-svn-id line rather than the revision.
      
      ASTERISK-29852
      
      Change-Id: Ie4b406e2748920643446851a0a252a4ca7245772
      23be22ab
  12. Nov 16, 2021
    • Josh Soref's avatar
      build_tools: Spelling fixes · b4966c4f
      Josh Soref authored
      Correct typos of the following word families:
      
      binutils
      
      ASTERISK-29714
      
      Change-Id: I2f676ab48cd50edc400c43307cb53679e4c09b97
      b4966c4f
    • Josh Soref's avatar
      build_tools: Spelling fixes · 8fb9588e
      Josh Soref authored
      Correct typos of the following word families:
      
      binutils
      
      ASTERISK-29714
      
      Change-Id: I2f676ab48cd50edc400c43307cb53679e4c09b97
      8fb9588e
  13. Oct 15, 2021
  14. Aug 17, 2021
  15. Dec 09, 2020
    • lvl's avatar
      Introduce astcachedir, to be used for temporary bucket files · 92fcd4ed
      lvl authored
      As described in the issue, /tmp is not a suitable location for a
      large amount of cached media files, since most distributions make
      /tmp a RAM-based tmpfs mount with limited capacity.
      
      I opted for a location that can be configured separately, as opposed
      to using a subdirectory of spooldir, given the different storage
      profile (transient files vs files that might stay there indefinitely).
      
      This commit just makes the cache directory configurable, but leaves
      it at /tmp by default, to ensure backwards compatibility.
      
      A future commit that only targets master could change the default
      location to something more sensible such as /var/tmp/asterisk. At
      that point, the cachedir could be created and cleaned up during
      uninstall by the Makefile script.
      
      ASTERISK-29143
      
      Change-Id: Ic54e95199405abacd9e509cef5f08fa14c510b5d
      92fcd4ed
    • lvl's avatar
      Introduce astcachedir, to be used for temporary bucket files · b0842713
      lvl authored
      As described in the issue, /tmp is not a suitable location for a
      large amount of cached media files, since most distributions make
      /tmp a RAM-based tmpfs mount with limited capacity.
      
      I opted for a location that can be configured separately, as opposed
      to using a subdirectory of spooldir, given the different storage
      profile (transient files vs files that might stay there indefinitely).
      
      This commit just makes the cache directory configurable, and changes
      the default location from /tmp to /var/cache/asterisk.
      
      ASTERISK-29143
      
      Change-Id: Ic54e95199405abacd9e509cef5f08fa14c510b5d
      b0842713
  16. Aug 27, 2018
    • Corey Farrell's avatar
      Create --disable-binary-modules option. · a2001c00
      Corey Farrell authored
      This new option can be passed for ./configure or
      ./tests/CI/buildAsterisk.sh to prevent download/install of binary
      modules.
      
      Normally enabling the categories MENUSELECT_CODECS or MENUSELECT_RES
      will result in binary modules being enabled even if the build target is
      incompatible with those modules.  This includes CI scripts which enable
      categories before disabling specific modules.
      
      If more binary modules are offered in the future this will help avoid
      accidentally downloading them if unwanted or incompatible.  Adding a
      binary module will only require creating a new menuselect entry similar
      to the existing ones, it will not be necessary to modify the CI scripts.
      
      Change-Id: I6b1bd1c75a2e48f05b8b8a45b7a7a2d00a079166
      a2001c00
  17. Aug 01, 2018
    • Corey Farrell's avatar
      Build System: Improve ccache matching for different menuselect options. · a10a3aff
      Corey Farrell authored
      Changing any Menuselect option in the `Compiler Flags` section causes a
      full rebuild of the Asterisk source tree.  Every enabled option causes
      a #define to be added to buildopts.h, thus breaking ccache caching for
      every source file that includes "asterisk.h".  In most cases each option
      only applies to one or two files.  Now we only define those options for
      the specific sources which use them, this causes much better cache
      matching when working with multiple builds.  For example testing code
      with an without MALLOC_DEBUG will now use just over half the ccache
      size, only main/astmm.o will have two builds cached instead of every
      file.
      
      Reorder main/Makefile so _ASTCFLAGS set on specific object files are all
      together, sorted by filename.  Stop adding -DMALLOC_DEBUG to CFLAGS of
      bundled pjproject, this define is no longer used by any header so only
      serves to break cache.
      
      The only code change is a slight adjustment to how main/astmm.c is
      initialized.  Initialization functions always exist so main/asterisk.c
      can call them unconditionally.  Additionally rename the astmm
      initialization functions so they are not exported.
      
      Change-Id: Ie2085237a964f6e1e6fff55ed046e2afff83c027
      a10a3aff
  18. Jul 23, 2018
    • Richard Mudgett's avatar
      core: AST_DEVMODE no longer affects ABI. · 0504594a
      Richard Mudgett authored
      Remove AST_DEVMODE from the AST_BUILDOPTS list and the AST_BUILDOPTS_SUM
      calculation as it no longer affects API/ABI compatibility.
      
      Change-Id: Id5bd6dfade173a53b3a49f715586b86e3fb24acb
      0504594a
  19. Jul 22, 2018
    • Corey Farrell's avatar
      build_tools/make_version: Get MAINLINE_BRANCH from .gitreview. · 747b65f6
      Corey Farrell authored
      Use .gitreview defaultbranch setting to determine the mainline branch.
      This allows the script to be used against other directories which might
      not be on the same defaultbranch.  This can be used by CI scripts to
      report the testsuite version being used:
      ./build_tools/make_version ${TESTSUITE_DIR}
      
      Change-Id: Ifdad4a9d8a26138c41bc6b630ecc3e34ea1c2758
      747b65f6
  20. Jul 18, 2018
  21. Mar 17, 2018
    • Alexander Traud's avatar
      BuildSystem: Remove unused dependency on libltdl. · 10a97882
      Alexander Traud authored
      Asterisk does not need the development package of libltdl, because it does not
      use any symbol of -lltdl directly. Instead, it uses the runtime package via the
      shared library -lodbc. On the supported platforms, that shared library declares
      its dependency on -lltdl correctly, otherwise AST_EXT_LIB_CHECK would have
      failed.
      
      ASTERISK-27745
      
      Change-Id: Icd315809b8e7978203431f3afb66240dd3a040ba
      10a97882
Loading