Skip to content
This repository has been archived by the owner on Jul 30, 2022. It is now read-only.
David M. Lee edited this page Feb 28, 2014 · 9 revisions

This repository contains a fork of PJSIP, for use with Asterisk. This fork should be temporary, with all changes pushed upstream for inclusion.

PJSIP 2.2

The PJSIP 2.2 release contains all of the patches necessary for building and running Asterisk. The master branch of this fork is currently identical to PJSIP 2.2. Please download PJSIP from the PJSIP download site.

This page, and this fork, remain for historical reference.

PJSIP Fork

If you have any problems with the packaging or other changes made in this fork, or would like to submit a patch to this fork, please file an issue in the Asterisk issue tracker.

Instructions for building PJSIP for Asterisk can be found on the Asterisk wiki.

The primary goal of this fork is to create a package-able build of PJSIP that's acceptable to the distributions. Since we don't want to maintain the fork forever, we need to be able to clearly identify different patches, and their purposes.

The upstream branch will contain the pristine sources from PJSIP. Since the PJSIP source contains empty directories, a .keep file should be added to the directory in order to track it in git.

The patch/* branches contain our patches to PJSIP. Each patch branch

The master branch is then simply the upstream branch with all of the patch/* branches merged.

Creating a new patch/ branch

# Create the branch
$ git checkout -b patch/my-super-cool-patch upstream
# Make your changes; commit; repeat
# Push the branch
$ git push --set-upstream origin patch/my-super-cool-patch
# Merge to master
$ git checkout master
$ git pull origin patch/my-super-cool-patch
# Fix merge conflicts, if any
# Push master
$ git push origin master

Updating a patch

Aside from the checkout command, this is identical to how you create a new patch branch.

# Checkout the branch
$ git checkout patch/my-super-cool-patch
# Make your changes; commit; repeat
# Push the branch
$ git push origin patch/my-super-cool-patch
# Merge to master
$ git checkout master
$ git pull origin patch/my-super-cool-patch
# Fix merge conflicts, if any
# Push master
$ git push origin master

Updating PJSIP

To import an updated version of PJSIP:

  1. Import new sources into upstream
$ git checkout upstream
$ git pull
$ rm -rf *
$ tar --strip-components 1 -xjf pjproject-2.0.1.tar.bz2
$ find . -name .git -prune -o -type d -empty -exec touch {}/.keep \; # keep empty dirs
$ git add -A
$ git commit -m "Import pjproject-2.0.1"
$ git tag -a pjproject-2.0.1 -m "tag upstream pjproject-2.0.1"
$ git push
$ git push --tags
  1. Rebase patch/* branches for new upstream
$ git checkout patch/foo
$ git pull
$ git rebase upstream
# fix conflicts
$ git push --force
  1. Merge patch/* into master
$ git checkout master
# You may want to pull and tag, in order to not lose what's on master
$ git reset --hard upstream
$ git pull --no-ff origin patch/foo # do for each patch/* branch
# when all patches are merged and conflicts resolved
$ git push --force
Clone this wiki locally