Difference between revisions of "Hugin Compiling FreeBSD"

From PanoTools.org Wiki
Jump to: navigation, search
(Update the port)
(Bring up to date.)
 
(16 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 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.
  
== Install with the port ==
+
=== Install the binary 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;"
 
|-valign="top"
 
! '''WARNING:'''
 
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.
 
|}
 
 
 
to track closely Hugin's releases, after each new release edit the following files in the ports collection:
 
 
 
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.
 
 
 
2. edit the '''Makefile'''.
 
* edit PORTVERSION and PORTREVISION
 
* add/update build dependencies to LIB_DEPENDS=
 
* add/update runtime dependencies to RUN_DEPENDS=
 
* add/update Cmake building arguments to CMAKE_ARGS=
 
* 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.
+
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,
 
 
== 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?
 
 
 
 
 
=== patch-src_hugin1_base_wx_RunStitchPanel.cpp ===
 
 
 
I think this one I can apply upstream as-is?
 
 
 
 
 
=== 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 clean install
</pre>
 
 
 
?
 
 
 
 
 
=== 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>
 
.if defined(WITH_AUTOPANOSIFT-C)
 
RUN_DEPENDS+= autopanog:${PORTSDIR}/graphics/autopano-sift-c
 
.endif
 
 
</pre>
 
</pre>
  
?
+
This port is currently maintained by Greg Lehey <grog (at) FreeBSD.org>.
  
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.
+
=== Install the latest development version ===
  
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.
+
The development version is no longer available in the Ports Collection. To build it, update the standard port according to the instructions in the [https://www.freebsd.org/doc/en/books/porters-handbook/ FreeBSD Porter's Handbook]
  
thank you for your efforts.
+
[[Category:Software:Hugin]]
 +
[[Category:Software:Hugin:Compiling]]

Latest revision as of 04:14, 11 November 2016

FreeBSD supports Hugin 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.

Install the binary package

With the new packages collection, simply:

$ su
# pkg install hugin

Install the latest released port

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

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

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

Install the latest development version

The development version is no longer available in the Ports Collection. To build it, update the standard port according to the instructions in the FreeBSD Porter's Handbook