> I understand that backporting adds a lot of work that I don't have the
> skills to volunteer for (although I'm willing to learn with some
> mentorship).

It would probably take less time for me to do it myself, but if you are
really willing to learn how to do it, I would much prefer to take the
time to walk you through it, both so that you know how to do so for the
future, and because I feel that there is an unfortunate disconnect
between Trisquel development and the Trisquel community, and would like
for more community members to feel comfortable contributing.  There are
so few contributors to Trisquel, that even minor contributions make a
large difference.

What follows might seem like a lot of information, but none of it
requires any programming skills, and I'm happy to provide as much time
and guidance as you need.  I can do so through this thread, or if you
would prefer more interactive help we can do so over IRC.  I understand
that you cannot make the Friday meetings, but we can arrange another
time during which our waking hours overlap.  My time zone is PST.



First you'll need to set up the sbuild workflow to build and test the
backported package.  See the contributing guide to learn how.[1]  If any
steps are unclear, please say so.  This is the first barrier to entry
for getting involved in Trisquel development, so any feedback on how to
make it more accessible would be very valuable.

There is already a package helper for ring, so you'll be modifying
helpers/make-ring[2] with your preferred text editor.

(Note that although Ring has been renamed to Jami, the source package is
still called "ring".[3]  In case you're unaware of the distinction
between source and binary debian packages, a binary (deb) package is
what users actually install, and a source package is used to build
binary packages.  The name of a binary package might be different from
the name of it's source package, and a source package might provide
multiple binary packages.  For example, the "ring" source package builds
four binary packages: jami, jami-daemon, ring, and ring daemon.  If you
are ever unsure which source package provides a binary package, run "apt
showsrc $PACKAGE", where $PACKAGE is the name of the binary package.)

Here's a breakdown of this package helper:

* The file name determines which source package gets built.  Since the
name of the ring source package has not changed, you don't need to
change the filename.  If you ever write a new package helper from
scratch, the file name should be "make-$SOURCEPACKAGE".

* You should update the license header.  Immediately below the line
containing Ruben's name and email address, add another line containing
your own.

* The commented lines between the license header and "VERSION" are
listing build dependencies of ring.  This is helpful to keep track of
when backporting, because some times the target version of Trisquel does
not meet the dependencies of the newer version of the package you are
backporting, and so you need to backport one or more dependencies as
well.

* "VERSION=1" means that this is the first Trisquel revision of the
package.  It makes it so that the version string of the package will
have +8.0trisquel1 appended.  When you create a new revision, you should
increase the revision number by 1.

* "EXTERNAL=" determines which repository to grab the original source
package.  If this line is absent, then the target Trisquel version's
upstream (xenial in the case of flidas) will be used, so this line is
only needed for backporting or importing from another repository.  The
format of this line is the same as that in /etc/apt/sources.list.  As
you can see, ring *should* be backported from Ubuntu disco already.

* "REPOKEY=" is the gpg key of the external repository.  This line is
only needed when "EXTERNAL=" is used.

* ". ./config" runs a script which downloads and extracts the source
package.

* Everything in between ". ./config" and "changelog" modifies the source
code.  In this case, the only change to the upstream code is done by the
"sed" line.  I don't think you need to understand what it does at this
point, so I'll gloss over it for now to avoid overwhelming you with too
much information.

* "changelog" summarizes Trisquel's changes to the package.  This line
reveals that ring was originally backported from cosmic, and should
probably be updated to say "Disco".

* "compile" builds a new source package from the modified source code.

So what do you need to do?

(1) Make a branch for your change, as per the contributing guide.

(2) Add your copyright info below Ruben's.

(3) Bump the version number from 1 to 2.  (I'm actually not 100% sure
that this is necessary for a backport, since the backported version
should have a higher version number anyway, but let's do it to be safe.)

(4) It would be nice to be able to use Jami's apt repository for Ubuntu
16.04, which should always have the latest version without us needed to
keep updating the helper every time there is a new Ubuntu release
Unfortunately, their repository only provides binary packages (debs),
and not source packages (dsc, tar.gz),[5] which are what the package
helper needs.  Instead, just change "disco" to "eoan" in the "EXTERNAL"
line and change "Cosmic" to "Eoan" in the "changelog" line.

(5) Run "bash make-ring" and see if you get any errors.  If you get
errors, I let me know any I will help you figure out what needs to be
done.  The most likely error is an unmet dependency.  If you get no
errors, proceed.

(6) Use the source package you just generated to compile binary packages
using sbuild, as per the contributing guide.  Again, if you get errors
let me know.  If not, proceed.

(7) Test the jami and jami-daemon binary packages and to make sure that
there are no problems.

(8) If everything looks good, push your branch to Gitlab an open a merge
request.



[1]
https://devel.trisquel.info/trisquel/package-helpers/blob/flidas/CONTRIBUTING.md

[2]
https://devel.trisquel.info/trisquel/package-helpers/blob/flidas/helpers/make-gutenprint

[3] https://packages.ubuntu.com/source/eoan/ring

[4] https://packages.ubuntu.com/source/cosmic/ring

[5] https://dl.jami.net/ring-nightly/ubuntu_16.04/pool/main/r/ring/

Attachment: signature.asc
Description: PGP signature

Reply via email to