1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

GAR Wiki

GAR is the build and packaging system used by OpenCSW. GAR is based on the GARNOME project and follows a similar approach as other build systems: For each software to build it takes a high-level build-description (in form of a Makefile) and automates the process of downloading, building, and packaging the software. It spares you most of the nitty-gritty details that you used to take care of when you were building software manually like setting CFLAGS and LDFLAGS to sane values or calling ./configure with its manifold of --*dir options ... while it still leaves you the flexibility to do a lot of custom things if you want to. This is GAR's documentation hub.


When you are new to GAR it might seem hard to know where to start. A couple of suggestions for when you have set up your build environment: 1) First go through the build process with an already submitted build description. Once you have seen how a GAR build works, it will be easier to work on your own builds. 2) Find someone who already knows GAR and let him jumpstart you. Having a chat with someone will address your questions faster than any documentation. In particular, don't infinitly bang your head on issues .. ask for help. As a maintainer, ask on the maintainers list. As a user, ask on the users list. Or pop by on the IRC channel (directly or via webchat.freenode.net). That being said, once you get the hang of it, GAR will make your life a lot easier. Let's dive in ...

Learning the basics

Learning the details

Make sure to read the basics above first.

Important changes to GAR

Some bugfixes to the GAR system may break compatibility with old build recipes which rely on the "feature". These important changes are listed here together with the revision number the fix was introduced, so if a recipe is older than the revision here the Makefile may be need to be adjusted.

  • r7514: Do not pass include flags to the C/C++ compiler, but only to the preprocessor (Announcement)
  • r8433: Reorder library pathes so the most specific ones are in front of the more generic ones (especially EXTRA_LIB before /opt/csw/lib) (Announcement)
  • r9383: Add options -norunpath and -xnorunpath
  • r10012: Initial integration of git support for the makepatch target. (Announcement)
  • r11888: Variable name change GARNAME -> NAME, GARVERSION -> VERSION. (Announcement)
  • r13727: Take out -norunpath and -xnorunpath introduced in r9383 (Announcement)
  • r14023: Updated GAR defaults MERGE_SCRIPTS_isa-extra, MERGE_DIRS_isa-extra, CONFIGURE_ARGS, TEST_TARGET, NOISAEXEC, sysconfdir, localstatedir (Description and Announcement)
  • r17763: Reordering of linker search pathes to prefer EXTRA_* flags and special prefix before /opt/csw
  • r19603: Raise general build level to Solaris 10
  • r19631: Unify empty CATEGORIES to default and remove the unnecessary definitions in r19643 (Announcement)
  • r20014: Use basic pre-/post- instead of -modulated, do not call pre-/post-extract in global modulation (Announcement)


Do you think we can improve this page? Please tell us (Sourceforge login required).