RPM is easily the most comprehensive packaging system for Linux. The breadth of functionality and features in RPM continues to amaze me at times. Lately I have been working on getting some packages ported from our existing Redhat ES 3 infrastructure to Suse. As a quick side note; we are not happy with Suse lately but at least they do not intentionally break KDE and ignore their volunteer community. While RPM could, in theory, be used as a general package infrastructure for all RPM based system; the reality is something else entirely. Packages from Redhat have required significant changes for me to get them working on Suse (the opposite is entirely true as well.)
A couple tools that have made porting easier have been perl.req and perl.prov. Located in the /usr/lib/rpm on Suse 9, these two scripts take a list of files and return (through stdout) all required/provided perl packages for those files. Packages are only listed once and are presented in alphabetical order.
The GROUPS file for handling software categories in RPM is located in the /usr/share/doc/packages/rpm/ directory; while the RPM macros file (which is surprisingly similar to Redhat’s) is located in the normal installation directory of /usr/lib/rpm/macros. Here is a link to the January, 2005 edition of Suse Package Conventions. I have downloaded a version in pdf form that can probably be found in my documents web page (see the VAULT side panel.)
A couple of Perl specific macros that only exist in Suse (and make building RPM packages much easier) are %perl_process_packlist, which does a bunch of cleanup work to the perl modules being built, and %perl_make_install, which handles different prefix installs depending on which version of Suse is being used. %perl_make_install is especially nice if you are trying to build a RPM for older and newer versions of suse in the same build environment.
RPM also provides similar macros (and requires/provides scripts) for Python. See the macros files for more details. Finally, the bible for all things rpm is Maximum RPM from rpm.org. The default macros like setup, prep, and patch are all defined there and are identical between distributions.