Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Aug 2009 18:59:40 +0100
From:      Matthew Seaman <m.seaman@infracaninophile.co.uk>
To:        Anton Shterenlikht <mexas@bristol.ac.uk>
Cc:        ports@freebsd.org
Subject:   Re: port science/paraview
Message-ID:  <4A8AEC0C.8010304@infracaninophile.co.uk>
In-Reply-To: <20090818154751.GA1930@mech-cluster241.men.bris.ac.uk>
References:  <20090818154751.GA1930@mech-cluster241.men.bris.ac.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig74B57AE527C9A7A406AE8060
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable

Anton Shterenlikht wrote:
> port science/paraview is far behind the current version.
>=20
> I do understand that nobody really takes care of it,
> so please do not see this as a request. I'm grateful
> that somebody has created this port at all!
>=20
> I'd like to help but I've never done any serious
> port work, just occasional patches.
> What is your estimate of the amount of work, and of
> skills required to bring this port up to date?
>=20
> many thanks
>=20

Hmmm... science/paraview is not too complicated as ports go.  It uses cma=
ke
which is slightly unusual, and needs a bit of post-hoc modification to fo=
rce
it to install stuff under /usr/local rather than /usr/X11R6 but that's no=
t a
big deal.

If you're capable of configuring, compiling and installing this software
package outside of ports, and you have a fairly minimal amount of familia=
rity
with make(1) and Makefiles, then you stand a good chance of being able to=

generate a set of patches to update the port, and could with a little pra=
ctice
probably go on to become the maintainer.

Remember, the Porter's Handbook is your bible and reference for what all =
those=20
USE_FOO and BAR_ARGS lines in the Makefiles actually mean.  Well, that an=
d reading
the contents of the Makefiles in /usr/ports/Mk (these typically have exte=
nsive
comments describing what all the different variables are for) plus compar=
ing
against prior art elsewhere in the ports tree.

To generate an update, I usually work through the following stages:

   0) Copy the port directory to a clean workspace somewhere

   1) Modify the PORTVERSION and PORTREVISION settings in the Makefile, p=
lus
      make any tweaks to MASTER_SITES etc. that are required until you ca=
n=20
      successfully run:

        # make makesum

      This will automatically download the distfiles and update the disti=
nfo file.
      For the initial introduction of a new upstream version, any PORTREV=
ISION line
      can be deleted, but be sure *not* to touch any PORTEPOCH lines. =20

   2) Make sure all prerequisites ({BUILD,RUN,LIB}_DEPENDS) of the port a=
re
      installed.  To avoid conflicts with other software, it's handy to w=
ork
      in a jail but you don't have to.  Installing into an alternative PR=
EFIX
      and using an alternative PKG_DBDIR and PORT_DBDIR settings is almos=
t as
      good. (ie. Prerequisites should go in the standard $LOCALBASE but t=
he port
      in question can go into a custom $PREFIX.  Usually.)
=20
   3) Attempt to build the port:

        # make

      If it doesn't work smoothly, try and diagnose what the problem is a=
nd fix
      it.  Repeat until you get a clean build.  This is very much the har=
dest
      part of updating a port, and can involve significant programming sk=
ills
      to write patches etc.

   4) Now is a good time to make any edits to pkg-message or other miscel=
laneous
      stuff.

   5) Make a record of what's installed under $PREFIX:

        # find /usr/local -print | sort > /tmp/local-files.before

   6) Attempt to install the port

        # make install

      Again, you may need to apply a few fixups here

   7) Record the contents of $PREFIX with the port installed:

        # find /usr/local -print | sort > /tmp/local-files.during

   8) Now attempt to remove the port:

        # make deinstall

       If the pkg-plist is wrong, you'll almost certainly see errors here=
=2E

   9) Record the contents of $PREFIX after removing the port:

         # find /usr/local | sort > /tmp/local-files.after

   10) Now, by comparing the differences between /tmp/local-files* it sho=
uld
       be fairly obvious what, if any, modifications are needed in pkg-pl=
ist
       to account for any differences in the files installed by the newer=
=20
       version of the port.

   11) Return /usr/local to the state it was in at stage (5) if necessary=
=20
       (ie. look at any differences between /tmp/local-files.{before,afte=
r})

   12) Repeat from stage (5) until you get a clean install and deinstall.=
 You may
       or may not need to 'make clean' and rebuild during this cycle depe=
nding on
       what you change.

   13) Build a package from your port, and test that pkg_add(1) and pkg_d=
elete(1)
       will similarly install and remove the port cleanly.  (One gotcha i=
s that
       pkgs cannot generate empty directories, so it may be necessary to =
add=20
       zero-length .placeholder files)

   14) 'make clean' in the port.  Remove any backup copies of files or ot=
her detritus.
       Run portlint(1) and fix up anything it makes a valid complaint abo=
ut.

   15) Create a diff against the original copy of the port:

         # cd ..
         # diff -Nur /usr/ports/science/paraview/ paraview/ > paraview.di=
ff

       *Read* *through* the diff file as a sanity check.  It's surprising=
 how
       frequently you'll find a stray copy of an editor backup file has s=
lipped
       through at stage (14).

   16) Create a problem report, incorporating your diff:

         # send-pr -a paraview.diff -P > paraview.pr
         # emacs paraview.pr
         # send-pr -f paraview.pr=20

       When editing the PR, it helps the committers if you can list out a=
ny
       added, deleted or renamed files from the port itself.  I like to p=
rovide
       links to ChangeLogs or similar for the benefit of anyone who does =
their
       due dilligence before updating, but that's up to you.

       If you're not the port maintainer, then set the PR as a 'change-re=
quest'
       If there is a listed maintainer, you can CC them in the PR, but th=
e ports
       automation will send them e-mail anyhow.  If this is an update to =
close a
       publicised security hole, then CC'ing secteam@freebsd.org is helpf=
ul.  (If
       it's not a /publicised/ security hole, then it's better to contact=
 the port
       maintainer or secteam@ privately rather than submitting an update =
through
       a public channel like the FreeBSD PR system).
      =20
    You should receive an acknowledgement from Gnats with a PR number in =
about 15
    minutes.  A committer will generally take the PR within a few hours a=
nd add it
    to their tinderbox queue for testing.  If they are happy and everythi=
ng works
    satisfactorily, then the update will generally be committed within ab=
out a week.

    Do this successfully enough times with unmaintained ports, and you wi=
ll likely be=20
    offered maintainership when you submit updates.  Volunteer to maintai=
n a number
    of ports and keep supplying a good stream of correct updates and you'=
re well on
    the slippery slope towards having a commit bit and an @freebsd.org  a=
ddress
    thrust upon you...

	Cheers,

	Matthew

--=20
Dr Matthew J Seaman MA, D.Phil.                   7 Priory Courtyard
                                                  Flat 3
PGP: http://www.infracaninophile.co.uk/pgpkey     Ramsgate
                                                  Kent, CT11 9PW


--------------enig74B57AE527C9A7A406AE8060
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.12 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAkqK7BIACgkQ8Mjk52CukIwBwwCfUZoPSoJSkJAEhzGPf41nnh/9
Gm0AnAowrdmgl96ImnC7ChtIAKG/I3+U
=OAWj
-----END PGP SIGNATURE-----

--------------enig74B57AE527C9A7A406AE8060--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A8AEC0C.8010304>