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.
- For the impatient:
svn checkout https://svn.code.sf.net/p/gar/code/gar/csw/mgar
- GAR Repository Browser (Trac, mod_dav_svn)
- Which packages are in GAR (GAR Status, GAR Package Browser)
- Sometimes it is good to seek inspiration from other packaging projects.
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
- GAR Setup Setting up the build enviroment
- Packaging Tutorial Getting to know GAR with annotated build descriptions
- Creating Patches Easily How to easily create patches using GAR
- Working with the GAR repository Dealing with the GAR repository (checking out/in, adding things, update to a new gar version)
- GAR Variable Reference GAR Makefile variables explained
- GAR Build Targets Reference GAR Makefile build targets explained
- GAR Coding Style
- Build System FAQ
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)
- r8335: Renamed REQUIRED_PKGS to RUNTIME_DEP_PKGS and PREREQUISITE_PKGS to BUILD_DEP_PKGS and NO_ISAEXEC to NOISAEXEC (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).