Skip to content
Snippets Groups Projects
  1. Mar 01, 2016
    • George Joseph's avatar
      build-system: Allow building with static pjproject · 3173e91b
      George Joseph authored
      Background here:
      http://lists.digium.com/pipermail/asterisk-dev/2016-January/075266.html
      
      From CHANGES:
       * To help insure that Asterisk is compiled and run with the same known
         version of pjproject, a new option (--with-pjproject-bundled) has been
         added to ./configure.  When specified, the version of pjproject specified
         in third-party/versions.mak will be downloaded and configured.  When you
         make Asterisk, the build process will also automatically build pjproject
         and Asterisk will be statically linked to it.  Once a particular version
         of pjproject is configured and built, it won't be configured or built
         again unless you run a 'make distclean'.
      
         To facilitate testing, when 'make install' is run, the pjsua and pjsystest
         utilities and the pjproject python bindings will be installed in
         ASTDATADIR/third-party/pjproject.
      
         The default behavior remains building with the shared pjproject
         installation, if any.
      
      Building:
      
         All you have to do is include the --with-pjproject-bundled option on
         the ./configure command line (and remove any existing --with-pjproject
         option if specified).  Everything else is automatic.
      
      Behind the scenes:
      
         The top-level Makefile was modified to include 'third-party' in the
         list of MOD_SUBDIRS.
      
         The third-party directory was created to contain any third party
         packages that may be needed in the future.  Its Makefile automatically
         iterates over any subdirectories passing on targets.
      
         The third-party/pjproject directory was created to house the pjproject
         source distribution.  Its Makefile contains targets to download, patch
         configure, generate dependencies, compile libs, apps and python bindings,
         sanitized build.mak and generate a symbols list.
      
         When bootstrap.sh is run, it automatically includes the configure.m4
         file in third-party/pjproject.  This file has a macro to download and
         conifgure pjproject and get and set PJPROJECT_INCLUDE, PJPROJECT_DIR
         and PJPROJECT_BUNDLED.  It also tests for the capabilities like
         PJ_TRANSACTION_GRP_LOCK by parsing preprocessor output as opposed to
         trying to compile.  Of course, bootstrap.sh is only run once and the
         configure file is incldued in the patch.
      
         When configure is run with the new options, the macro in configure.m4
         triggers the download, patch, conifgure and tests.  No compilation is
         performed at this time.  The downloaded tarball is cached in /tmp so
         it doesn't get downloaded again on a distclean.
      
         When make is run in the top-level Asterisk source directory, it will
         automatically descend all the subdirectories in third_party just as it
         does for addons, apps, etc.  The top-level Makefile makes sure that
         the 'third-party' is built before 'main' so that dependencies from the
         other directories are built first.
      
         When main does build, a new shared library (libasteriskpj) is created that
         links statically to the pjproject .a files and exports all their symbols.
         The asterisk binary links to that, just as it does with libasteriskssl.
      
         When Asterisk is installed, the pjsua and pjsystest apps, and the pjproject
         python bindings are installed in ASTDATADIR/third-party/pjproject.  This
         will facilitate testing, including running the testsuite which will be
         updated to check that directory for the pjsua module ahead of the system
         python library.
      
      Modules should continue to depend on pjproject if they use pjproject APIs
      directly.  They should not care about the implementation.  No changes to any
      res_pjsip modules were made.
      
      Change-Id: Ia7a60c28c2e9ba9537c5570f933c1ebcb20a3103
      3173e91b
  2. Jan 27, 2016
    • George Joseph's avatar
      build_system: Prevent goals needing makeopts from running when it's missing · c53903d4
      George Joseph authored
      The Makefile only optionally includes makeopts so when goals like uninstall that
      dont depend on anything else are run after a distclean, rules like
      'rm -f "$(DESTDIR)$(ASTMODDIR)/"*' get run as 'rm -f ""/*' which attempts
      to remove everything in the root directory.
      
      Although there's a rule defined for makeopts which prints a message and does
      an 'exit 1', since '-include makepopts' was specified (with the -), the exit
      was ignored letting the rest of the rules run.
      
      This patch makes makeopts required unless the goal has the string 'clean' in it.
      
      ASTERISK-25730 #close
      Reported-by: George Joseph
      
      Change-Id: I1bce59a7ea4f48e7a468e22b2abbb13c63417ac7
      c53903d4
  3. Jan 21, 2016
  4. Nov 04, 2015
    • Corey Farrell's avatar
      Fix cli display of build options. · b0bf1899
      Corey Farrell authored
      A previous commit reduced the AST_BUILDOPTS compiler define to
      only include options that affected ABI.  This included some options
      that were previously displayed by cli "core show settings".  This
      change corrects the CLI display while still restricting buildopts.h
      to ABI effecting options only.
      
      ASTERISK-25434 #close
      Reported by: Rusty Newton
      
      Change-Id: Id07af6bedd1d7d325878023e403fbd9d3607e325
      b0bf1899
  5. Oct 31, 2015
    • Matt Jordan's avatar
      Makefile: Add a rule 'basic-pbx' that installs the Basic PBX configs · 80cf4960
      Matt Jordan authored
      This patch adds a rule for installing the Super Awesome Company based 'Basic
      PBX' configuration files. As part of adding this rule, a bit of the content
      that makes up installing the configuration files under the 'samples' target
      was refactored into a make subroutine for usage by additional later config
      make targets.
      
      Change-Id: I6c2e27906f73e2919a2b691da0be20ae70302404
      80cf4960
  6. Sep 25, 2015
  7. Jun 05, 2015
    • David M. Lee's avatar
      Fixes for OS X · 9fca378b
      David M. Lee authored
       * Add some type casting so tv_usec can really be a long, instead of
         some strange platform specific type.
      
       * Add some .dylib style files to .gitignore.
      
       * Switch from using -Xlinker to -Wl,. For [reasons unknown][], newer
         versions of GCC, when compiling the Homebrew formula for Asterisk,
         are not properly passing the -Xlinker options to the linker. Given
         that -Wl, does exactly the [same thing][], and does it properly, this
         patch changes the -Xlinker options to use -Wl, instead.
      
       [reasons unknown]: http://bit.ly/1SUbEYx
       [same thing]: https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
      
      Change-Id: Id5e6b3c6cc86282ea5fca630dc3991137c5bf4dd
      9fca378b
  8. May 12, 2015
  9. May 08, 2015
    • George Joseph's avatar
      doc: Make progdocs play nice with git · cf637f25
      George Joseph authored
      Moved contrib/asterisk-ng-doxygen to doc/asterisk-ng-doxygen.in
      
      Changed /Makefile to copy asterisk-ng-doxygen.in to
      asterisk-ng-doxygen then modify it with version instead of
      modifying asterisk-ng-doxygen directly.  Updated clean
      targets as well.
      
      Updated /.gitignore and doc/.gitignore.
      
      Change-Id: I38712d3e334fa4baec19d30d05de8c6f28137622
      cf637f25
  10. Apr 29, 2015
    • Corey Farrell's avatar
      Git Migration: Create doc/rest-api when needed. · c232ff3a
      Corey Farrell authored
      Create the directory './doc/rest-api' at the start of 'make ari-stubs'
      to prevent an error when documentation is generated.  The directory is
      also added to git ignores.
      
      ASTERISK-25027
      Reported by: Corey Farrell
      
      Change-Id: Iaccc7f0138501c23aa78feaca2f3cce9e68cbc1b
      c232ff3a
  11. Apr 15, 2015
    • Corey Farrell's avatar
      Build System: Enable use of ~/.asterisk.makeopts and /etc/asterisk.makeopts. · abf10a1d
      Corey Farrell authored
      The Makefile claims that you can set default menuselect options by creating
      ~/.asterisk.makeopts or /etc/asterisk.makeopts, but they are never read.
      The rule for menuselect.makeopts is only allowed to run if the active target
      is 'menuselect', but the menuselect target doesn't depend on
      menuselect.makeopts.  A dot (wildcard character) was added so the rule will
      be active for the targets that cause it to run: nmenuselect, cmenuselect,
      and gmenuselect.
      
      ASTERISK-13271 #close
      Reported by: John Nemeth
      
      Change-Id: Ibde804ff196283def49ccb9432fbf224a22586e2
      abf10a1d
  12. Mar 12, 2015
  13. Oct 31, 2014
  14. Oct 19, 2014
  15. Oct 12, 2014
  16. Sep 18, 2014
  17. Jul 17, 2014
  18. Jul 03, 2014
  19. Jun 22, 2014
  20. Jun 12, 2014
  21. Feb 16, 2014
  22. Feb 14, 2014
  23. Dec 11, 2013
  24. Oct 18, 2013
  25. Oct 02, 2013
  26. Sep 03, 2013
  27. Aug 29, 2013
  28. Aug 01, 2013
  29. Jul 21, 2013
    • Matthew Jordan's avatar
      Always install safe_asterisk; add configuration file support · 54803338
      Matthew Jordan authored
      This patch modifies the behavior of safe_asterisk in two ways:
      (1) It modifies the Asterisk Makefile such that safe_asterisk is always
          installed on a 'make install'. This was done as bugfixes in the
          safe_asterisk script were not applied in previous version of Asterisk
          without first removing the old version of the script.
      (2) In order to keep a newly installed version of safe_asterisk from impacting
          local modifications, a new config file - safe_asterisk.conf.sample - has
          been provided. Settings that were previously modified in safe_asterisk can
          be set there instead.
      
      (closes issue ASTERISK-21965)
      Reported by: Jeremy Kister
      patches:
        safe_asterisk.patch uploaded by jkister (License 6232)
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@394939 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      54803338
  30. Jul 03, 2013
    • David M. Lee's avatar
      ARI - channel recording support · a75fd322
      David M. Lee authored
      This patch is the first step in adding recording support to the
      Asterisk REST Interface.
      
      Recordings are stored in /var/spool/recording. Since recordings may be
      destructive (overwriting existing files), the API rejects attempts to
      escape the recording directory (avoiding issues if someone attempts to
      record to ../../lib/sounds/greeting, for example).
      
      (closes issue ASTERISK-21594)
      (closes issue ASTERISK-21581)
      Review: https://reviewboard.asterisk.org/r/2612/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@393550 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      a75fd322
    • David M. Lee's avatar
      Update events to use Swagger 1.3 subtyping, and related aftermath · c9a3d456
      David M. Lee authored
      This patch started with the simple idea of changing the /events data
      model to be more sane. The original model would send out events like:
      
          { "stasis_start": { "args": [], "channel": { ... } } }
      
      The event discriminator was the field name instead of being a value in
      the object, due to limitations in how Swagger 1.1 could model objects.
      While technically sufficient in communicating event information, it was
      really difficult to deal with in terms of client side JSON handling.
      
      This patch takes advantage of a proposed extension[1] to Swagger which
      allows type variance through the use of a discriminator field. This had
      a domino effect that made this a surprisingly large patch.
      
       [1]: https://groups.google.com/d/msg/wordnik-api/EC3rGajE0os/ey_5dBI_jWcJ
      
      In changing the models, I also had to change the swagger_model.py
      processor so it can handle the type discriminator and subtyping. I took
      that a big step forward, and using that information to generate an
      ari_model module, which can validate a JSON object against the Swagger
      model.
      
      The REST and WebSocket generators were changed to take advantage of the
      validators. If compiled with AST_DEVMODE enabled, JSON objects that
      don't match their corresponding models will not be sent out. For REST
      API calls, a 500 Internal Server response is sent. For WebSockets, the
      invalid JSON message is replaced with an error message.
      
      Since this took over about half of the job of the existing JSON
      generators, and the .to_json virtual function on messages took over the
      other half, I reluctantly removed the generators.
      
      The validators turned up all sorts of errors and inconsistencies in our
      data models, and the code. These were cleaned up, with checks in the
      code generator avoid some of the consistency problems in the future.
      
       * The model for a channel snapshot was trimmed down to match the
         information sent via AMI. Many of the field being sent were not
         useful in the general case.
       * The model for a bridge snapshot was updated to be more consistent
         with the other ARI models.
      
      Another impact of introducing subtyping was that the swagger-codegen
      documentation generator was insufficient (at least until it catches up
      with Swagger 1.2). I wanted it to be easier to generate docs for the API
      anyways, so I ported the wiki pages to use the Asterisk Swagger
      generator. In the process, I was able to clean up many of the model
      links, which would occasionally give inconsistent results on the wiki. I
      also added error responses to the wiki docs, making the wiki
      documentation more complete.
      
      Finally, since Stasis-HTTP will now be named Asterisk REST Interface
      (ARI), any new functions and files I created carry the ari_ prefix. I
      changed a few stasis_http references to ari where it was non-intrusive
      and made sense.
      
      (closes issue ASTERISK-21885)
      Review: https://reviewboard.asterisk.org/r/2639/
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@393529 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      c9a3d456
  31. Jun 25, 2013
  32. Jun 19, 2013
    • David M. Lee's avatar
      Fix build problem on OS X Mountain Lion (10.8) · 6e665251
      David M. Lee authored
      For about forever, our build flags for OS X have been slightly off, but
      good enough to build and run. Apparently they aren't good enough any more.
      
      Previously, we would compile with macosx-version-min unset and link with
      it set. This combination, using GCC 4.8, on Mountain Lion, would create a
      bad executable ("Illegal Instruction: 4", or something like that)
      
      This patch consistently sets macosx-version-min for both compiling and
      linking, which makes everything happy enough to build and run.
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@392279 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      6e665251
  33. May 31, 2013
  34. Apr 22, 2013
    • David M. Lee's avatar
      This patch adds a RESTful HTTP interface to Asterisk. · 1c21b857
      David M. Lee authored
      The API itself is documented using Swagger, a lightweight mechanism for
      documenting RESTful API's using JSON. This allows us to use swagger-ui
      to provide executable documentation for the API, generate client
      bindings in different languages, and generate a lot of the boilerplate
      code for implementing the RESTful bindings. The API docs live in the
      rest-api/ directory.
      
      The RESTful bindings are generated from the Swagger API docs using a set
      of Mustache templates.  The code generator is written in Python, and
      uses Pystache. Pystache has no dependencies, and be installed easily
      using pip. Code generation code lives in rest-api-templates/.
      
      The generated code reduces a lot of boilerplate when it comes to
      handling HTTP requests. It also helps us have greater consistency in the
      REST API.
      
      (closes issue ASTERISK-20891)
      Review: https://reviewboard.asterisk.org/r/2376/
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@386232 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      1c21b857
  35. Apr 15, 2013
  36. Apr 08, 2013
Loading