Difference between revisions of "Hugin Compiling FreeBSD"

From PanoTools.org Wiki
Jump to navigation Jump to search
(Remove instructions for the old style packages)
(15 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Hugin is part of the FreeBSD [http://www.freebsd.org/cgi/cvsweb.cgi/ports/graphics/hugin/ ports collection]. Using the ports collection (and contributing fixes to it) is the recommended way to install Hugin on FreeBSD.
+
FreeBSD supports Hugin with two ports in the [http://www.freebsd.org/cgi/cvsweb.cgi/ports/graphics/hugin/ ports collection]. The FreeBSD project is currently in a transition from building ports locally to distributing binary packages.  This page describes both approaches.  Note that the binary package approach is changing, and this description could become out of date.
  
== Install with the port ==
+
== Build locally ==
 +
 
 +
The details of building FreeBSD ports are described [http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports.html here].  Briefly, once you ensure that your ports tree is up to date,
 +
 
 +
=== Install the package ===
 +
With the new packages collection, simply:
  
 
<pre>
 
<pre>
# su
+
$ su
# cd /usr/ports/graphics/hugin
+
# pkg install hugin
# make
 
# make install
 
 
</pre>
 
</pre>
  
== Update the port ==
+
=== Install the latest released port ===
  
{| style="margin: 1em auto 1em 1em;background:#FFFF99;color:#FF0000;text-align:left;border: solid #FF3300;"
+
<pre>
|-valign="top"
+
$ su
! '''WARNING:'''
+
# cd /usr/ports/graphics/hugin
Below is newbie's work in progress. Following these instructions may corrupt your FreeBSD system or worse. Don't do that until the experts confirm that the newbie has done things rights.
+
# make clean install
|}
+
</pre>
  
to track closely Hugin's releases, after each new release edit the following files in the ports collection:
+
This port is currently maintained by Vasil Dimov <vd (at) FreeBSD.org>.
  
1. edit '''[http://www.freebsd.org/cgi/cvsweb.cgi/ports/graphics/hugin/distinfo?rev=1.8;content-type=text%2Fplain distinfo]''' to point to the right tarball. You will need to edit the name in parenthesis, to calculate and edit the md5 and sha256 hashes, to edit the filesize.
+
=== Install the latest development version ===
  
2. edit the '''Makefile'''.
+
<pre>
* edit PORTVERSION and PORTREVISION
+
$ su
* add/update build dependencies to LIB_DEPENDS=
+
# cd /usr/ports/graphics/hugin-devel
* add/update runtime dependencies to RUN_DEPENDS=
+
# make clean install
* add/update Cmake building arguments to CMAKE_ARGS=
+
</pre>
* if you're not sure about something that need to be done, ask the experts.
 
 
 
3. edit the '''pkg-plist''' list of installed files. While it can't be done automatically, the trick is to 'make PREFIX=/tmp/foobar install' and then check the files under /tmp/foobar (assuming it was non-existent before)
 
 
 
4. probably not necessary: edit the '''pkg-descr''' description of Hugin.
 
 
 
make a diff and submit it to the FreeBSD experts.
 
 
 
== files / patches ==
 
 
 
{| style="margin: 1em auto 1em 1em;background:#FFFF99;color:#FF0000;text-align:left;border: solid #FF3300;"
 
|-valign="top"
 
! work in progress - thoughts about simplifying / streamlining the patching to make life easier to the FreeBSD port maintainer.
 
|}
 
 
 
The patches are listed at http://www.freebsd.org/cgi/cvsweb.cgi/ports/graphics/hugin/files/
 
 
 
=== CMake build ===
 
* patch-CMakeLists.txt
 
* patch-doc_CMakeLists.txt
 
 
 
I think it makes sense for the variable mandir to be set in the general CMake build.
 
 
 
if I put an IF(CMAKE_SYSTEM_NAME=="FreeBSD") condition and make the changes inside the Hugin repository, it should work, right?
 
  
 +
This port is currently maintained by Greg Lehey <grog (at) FreeBSD.org>.
  
=== patch-src_hugin1_base_wx_RunStitchPanel.cpp ===
+
=== Multiple versions ===
  
I think this one I can apply upstream as-is?
+
It is not possible to install both the released and the development versions of Hugin on the same machine.  If you want to experiment, first make a backup of the installed version, remove it, and install the other version.  If you want to go back, remove the new version and restore the old version.
  
 
+
For example, to try a new development version, you would do:
=== patch-src_hugin1_hugin_TextureManager.cpp ===
 
 
 
Do I understand right that log2(x) is not defined in FreeBSD? and I fi put it inside a conditional expression, I could apply it upstream and it would coexist with the rest, e.g.
 
  
 
<pre>
 
<pre>
#if defined __FreeBSD__
+
$ su
#define log2(x) (log(x) / log(2))
+
# cd /usr/ports/graphics/hugin
#endif
+
# make backup
 +
# make deinstall
 +
# cd /usr/ports/graphics/hugin-devel
 +
# make clean install
 
</pre>
 
</pre>
  
?
+
If you then decide to go back to the old version, you can do:
 
 
 
 
=== patch-src_hugin1_hugin_config_defaults.h ===
 
 
 
this one looks outdated to me? Autopano-SIFT-C is now in the ports collection:
 
 
 
http://www.freebsd.org/cgi/cvsweb.cgi/ports/graphics/autopano-sift-c/
 
 
the "best practice" in the Hugin project is now to give users a choice of different CP generations. Panomatic is already in the Makefile of the Hugin port, and we now have also match-n-shift and a few other variations and more is expected in the future - each with its own specific settings.
 
 
 
how would be the best way to approach this? should I submit a patch for the ports makefile with
 
  
 
<pre>
 
<pre>
.if defined(WITH_AUTOPANOSIFT-C)
+
# make backup
RUN_DEPENDS+= autopanog:${PORTSDIR}/graphics/autopano-sift-c
+
# make deinstall
.endif
+
# cd /usr/ports/graphics/hugin
 +
# pkg_add hugin-2012.0.0.tbz
 
</pre>
 
</pre>
  
?
 
 
and what would be the optimal way to set different defaults for the different choices inside the above conditional expression? multiple patch-src_hugin1_hugin_config_defaults.h ? I don't think so but I'm not sure.
 
 
I've added Bruno Postle to this mail. My goal is to streamline the process of getting the latest Hugin and related tools into FreeBSD. We'll have more frequent releases in the foreseeable future and the more we can simplify and automate, the better.
 
  
thank you for your efforts.
+
[[Category:Software:Hugin]]
 +
[[Category:Software:Hugin:Compiling]]

Revision as of 07:42, 3 October 2014

FreeBSD supports Hugin with two ports in the ports collection. The FreeBSD project is currently in a transition from building ports locally to distributing binary packages. This page describes both approaches. Note that the binary package approach is changing, and this description could become out of date.

Build locally

The details of building FreeBSD ports are described here. Briefly, once you ensure that your ports tree is up to date,

Install the package

With the new packages collection, simply:

$ su
# pkg install hugin

Install the latest released port

$ su
# cd /usr/ports/graphics/hugin
# make clean install

This port is currently maintained by Vasil Dimov <vd (at) FreeBSD.org>.

Install the latest development version

$ su
# cd /usr/ports/graphics/hugin-devel
# make clean install

This port is currently maintained by Greg Lehey <grog (at) FreeBSD.org>.

Multiple versions

It is not possible to install both the released and the development versions of Hugin on the same machine. If you want to experiment, first make a backup of the installed version, remove it, and install the other version. If you want to go back, remove the new version and restore the old version.

For example, to try a new development version, you would do:

$ su
# cd /usr/ports/graphics/hugin
# make backup
# make deinstall
# cd /usr/ports/graphics/hugin-devel
# make clean install

If you then decide to go back to the old version, you can do:

# make backup
# make deinstall
# cd /usr/ports/graphics/hugin
# pkg_add hugin-2012.0.0.tbz