Difference between revisions of "Hugin Compiling FreeBSD"

From PanoTools.org Wiki
Jump to: navigation, search
m (categorized)
(Add Compiling category)
Line 96: Line 96:
  
 
[[Category:Software:Hugin]]
 
[[Category:Software:Hugin]]
 +
[[Category:Compiling:Hugin]]

Revision as of 19:12, 11 July 2011

Hugin is part of the FreeBSD ports collection. Using the ports collection (and contributing fixes to it) is the recommended way to install Hugin on FreeBSD.

Install with the port

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

Update the port

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 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.

files / patches

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.

#if defined __FreeBSD__
#define log2(x)	(log(x) / log(2))
#endif

?


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

.if defined(WITH_AUTOPANOSIFT-C)
RUN_DEPENDS+=	autopanog:${PORTSDIR}/graphics/autopano-sift-c
.endif

?

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.