mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-20 11:48:30 -06:00
AM_CFLAGS is passed both to the compiler (.c -> .o) and to the linker, so it should only have flags that are appropriate for both steps. AM_CPPFLAGS is passed only to the compiler, so flags that are only appropriate for that step (-I and -D flags, for example), should be in _CPPFLAGS instead of _CFLAGS. Every gnucash-2.2.3 Makefile.am that passes -I flags gets it wrong, placing them in _CFLAGS. It's not a functional bug (the linker ignores -I flags), but a ton of superfluous flags makes the build output pretty verbose and hard to debug when things do go wrong. To make matters more confusing as a developer, the FOO_CFLAGS variable set by PKG_CHECK_MODULES(FOO) is actually for _CPPFLAGS in the Makefile.am ('pkg-config --cflags' returns the -I flags). A related -I bug (one that *is* functionally broken) is that sometimes a local (build dir) -I flag is passed after a global (installed dependent library) one. If my system happens to have a header installed from some unrelated thing, compiler will find *that* one instead of the expected one in the source directory. Should always pass all local -I before any global ones. Patch by andi5 plus one manual addition in src/gnome-utils/Makefile.am git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@17655 57a11ea4-9604-0410-9ed3-97b8803252fd |
||
---|---|---|
.. | ||
win32 | ||
gnucash-2.1.x.ebuild | ||
gnucash.spec.in | ||
Makefile.am | ||
README.RPM |
This directory contains spec files for building an RPM WATCH OUT: These spec file(s) might be heavily out of date and/or absolutely NOT SUITED to your distribution! They are particularly matched for the Fedora Core 4 distribution, but DO NOT USE THEM if you don't have exactly that distribution! Your own distribution probably has its own source RPM of gnucash, and this source RPM includes a spec file that is much better suited to your distribution. I repeat: DO NOT USE THIS SPEC file unless you either have Fedora Core 4 or you really know how you can modify it to suit your distribution. For German-speaking users, there are German build instructions for RPMs on http://linuxwiki.de/GnuCash/RpmInstallieren . ------------------------------ Original file content: Short instructions: > I've never built an rpm; given a spec file, how do I do this? > I understand the theory, just not clear on what to type up. You'll need to be root in many distributions. (It is possible to avoid this requirement, but I haven't done the work to the RPM.) However, in some distributions (e.g. SuSE) these instructions will work even as a normal user. cd /usr/src/redhat/SOURCES tar -zxvf xacc-1.x.tar.gz cp xacc-1.x/rpm/xacc.spec ../SPECS cp xacc-1.x/rpm/xacc.wmconfig . cd /usr/src/redhat/SPECS rpm -ba xacc.spec wait a bit, and a new binary rpm will be in /usr/src/redhat/RPMS/<arch> and a new src.rpm will be in /usr/src/redhat/SRPMS. ================================ JPL version: 1) Obtain a GnuCash distribution (source code .tar.gz file), either by downloading from an ftp site somewhere, or building from CVS using "make dist". The file should have the nomenclature gnucash-X.Y.Z.tar.gz where X.Y.Z are the release numbers. 2) Copy and uncompress/tar the distribution in your /usr/src/redhat/SOURCES directory. You will need to do this as the root user. Note, use your distribution-specific path here, only redhat uses "/usr/src/redhat". cd /usr/src/redhat/SOURCES cp /SOMEPATH/gnucash-X.Y.Z.tar.gz tar xvzf gnucash-X.Y.Z.tar.gz 3) Copy the rpm spec file to /usr/src/redhat/SPEC. cp gnucash-X.Y.Z/rpm/gnucash.spec /usr/src/redhat/SPECS/. 4) Edit the spec file, you probably will only need to modify the following 3 lines, depending on what features you want to include in the rpm: %define _with_postgres 0 (use postgres backend?) %define _with_ofx 0 (use openofx package?) %define _with_hbci 0 (use hbci package?) 5) Build the binary and source RPMs cd /usr/src/redhat/SPECS rpmbuild -ba gnucash.spec (note: older versions of rpm use "rpm -ba FILE.spec" to build) 6) Wait a bit, and a new binary rpm will be in /usr/src/redhat/RPMS/<arch> and a new src.rpm will be in /usr/src/redhat/SRPMS.