Line 1: |
Line 1: |
− | [[Category:HowTo]]
| |
| | | |
− | This article provides a basic introduction to packaging software for distribution to other [[IRIX]] systems through the [[Nekoware]] software archive. The guidelines presented here are exactly that: ''guidelines.'' Please ask in the forums at [http://forums.nekochan.net Nekochan] if you encounter any problems following this guide or need help building software from source. | + | This article provides a basic introduction to packaging software for distribution to other [[IRIX]] systems through the [[Nekoware]] software archive. The guidelines presented here are exactly that: ''guidelines.'' |
| | | |
| ==Packages== | | ==Packages== |
Line 20: |
Line 19: |
| | | |
| ===Other Tools=== | | ===Other Tools=== |
− | Other tools may be required to build a particular piece of software that are not present in the [[IRIX]] environment. Such tools as [[GNU]] make and autoconf are commonly used to build Open Source software, but are not distributed with [[IRIX]]. If your software requires any of these tools, be sure to install the latest version from [[Nekoware]] and document the dependency on these tools during the packaging process. | + | Other tools may be required to build a particular piece of software that are not present in the [[IRIX]] environment. Such tools as GNU make and autoconf are commonly used to build Open Source software, but are not distributed with [[IRIX]]. If your software requires any of these tools, be sure to install the latest version from [[Nekoware]] and document the dependency on these tools during the packaging process. |
| | | |
| ==Build Environment== | | ==Build Environment== |
Line 41: |
Line 40: |
| unset LD_LIBRARY64_PATH | | unset LD_LIBRARY64_PATH |
| | | |
− | All [[Nekoware]] is installed relative to /usr/nekoware and should be built and linked against the libraries there. Also, most Open Source software prefers [[GNU]] make to the standard [[IRIX]] make. | + | All [[Nekoware]] is installed relative to /usr/nekoware and should be built and linked against the libraries there. Also, most Open Source software prefers GNU make to the standard [[IRIX]] make. |
| | | |
− | Furthermore, there are some [[MIPS Pro]] options that should be set: | + | Furthermore, there are some [[MIPSpro]] options that should be set: |
| | | |
− | Defining <tt>CC</tt> and <tt>CXX</tt> specifies the [[MIPS Pro]] compiler suite. The <tt>CFLAGS</tt> option indicates building for MIPS IV, that being any [[MIPS]] processor R5000 or newer (see above). | + | Defining <tt>CC</tt> and <tt>CXX</tt> specifies the [[MIPSpro]] compiler suite. The <tt>CFLAGS</tt> option indicates building for MIPS IV, that being any [[MIPS]] processor R5000 or newer (see above). |
| | | |
− | Also present are additional optimizations being done for the R10000 platform (more specifically the [[Origin200]] [[IP27]]), which is a common processor among the [[O2]], [[Octane]], and [[Origin]] platforms. This build will work on R5000, but will see additional optimization on R10000 or better. If the software is optimization-friendly, e.g. mplayer or blender - it is possible to provide different builds, optimized for specific processors and have inst or swmgr automatically select the best build during installation. | + | Also present are additional optimizations being done for the R10000 platform (more specifically the [[SGI Origin 200]] [[IP27]]), which is a common processor among the [[SGI O2]], [[SGI Octane]], and [[SGI Origin]] platforms. This build will work on R5000, but will see additional optimization on R10000 or better. If the software is optimization-friendly, e.g. mplayer or blender - it is possible to provide different builds, optimized for specific processors and have inst or swmgr automatically select the best build during installation. |
| | | |
| Alternatively, the <tt>-TARG</tt> option could be disgarded entirely to build without any platform-specific optimizations whatsoever. Many [[Nekoware]] packages use only <tt>-03 -mips4</tt>. | | Alternatively, the <tt>-TARG</tt> option could be disgarded entirely to build without any platform-specific optimizations whatsoever. Many [[Nekoware]] packages use only <tt>-03 -mips4</tt>. |
| | | |
− | Note: A great deal of open source software expects the compiler suite to halt processing if an "#error" preprocessor directive is encountered. GCC does this, while [[MIPS Pro]] does not by default. To get this behavior with [[MIPS Pro]] you can add "-diag_error 1035" to the CFLAGS definition above. | + | Note: A great deal of open source software expects the compiler suite to halt processing if an "#error" preprocessor directive is encountered. GCC does this, while [[MIPSpro]] does not by default. To get this behavior with [[MIPSpro]] you can add "-diag_error 1035" to the CFLAGS definition above. |
| | | |
| ==Creating a Sandbox== | | ==Creating a Sandbox== |
Line 122: |
Line 121: |
| * The software's name, version and description. | | * The software's name, version and description. |
| * Information about the build machine | | * Information about the build machine |
− | * The version of the [[MIPS Pro]] suite and the [[IRIX]] build environment | + | * The version of the [[MIPSpro]] suite and the [[IRIX]] build environment |
| * The environment variables you set - see before | | * The environment variables you set - see before |
| * Extra build notes: if building the software required more than the patch, what else needs to be done? | | * Extra build notes: if building the software required more than the patch, what else needs to be done? |
Line 222: |
Line 221: |
| ==Quickstarting== | | ==Quickstarting== |
| | | |
− | Note that the myth that any files should be marked with ''norqs'' is false. ''gendist'' automatically marks all [[ELF]] files with ''needrqs'', unless the file has been tagged with ''norqs''. Any other files, such as text files, graphics etc. will not trigger an ''rqsall'' run after installation, nor will they even be read by ''rqs''. | + | Note that the myth that any files should be marked with ''norqs'' is false. ''gendist'' automatically marks all ELF files with ''needrqs'', unless the file has been tagged with ''norqs''. Any other files, such as text files, graphics etc. will not trigger an ''rqsall'' run after installation, nor will they even be read by ''rqs''. |
| | | |
| During most package installations using [http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/a_man/cat1/inst.z inst(1M)] or [http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/a_man/cat1/SoftwareManager.z swmgr(1M)], certain files need to be "Re-quickstarted" using [http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/u_man/cat1/rqsall.z rqsall(1)]. When creating a new package, certain files may be marked as not needing this process using the ''norqs'' option. | | During most package installations using [http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/a_man/cat1/inst.z inst(1M)] or [http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/a_man/cat1/SoftwareManager.z swmgr(1M)], certain files need to be "Re-quickstarted" using [http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/u_man/cat1/rqsall.z rqsall(1)]. When creating a new package, certain files may be marked as not needing this process using the ''norqs'' option. |
Line 259: |
Line 258: |
| ==Postprocessing== | | ==Postprocessing== |
| | | |
− | Certain installed files may require some kind of postprocessing to integrate or register them with e.g. a service or database that is part of another package. The steps necessary will either be documented in the installation instructions or silently performed as part of ''make install''. In the latter case, you will have to carefully inspect the output and determine if any special action needs to be taken. Examples of files that require postprocessing are Icons or texinfo pages. While the tools to install icons are likely already installed on the system, the ''install-info'' tool would warrant an additional prerequisite in the spec file for the subsystem containing the file. When you have determined the commands required, add an appropriate exitop to the idb file. For a texinfo file, the exitop may look as follows: | + | Certain installed files may require some kind of post-processing to integrate or register them with e.g. a service or database that is part of another package. The steps necessary will either be documented in the installation instructions or silently performed as part of ''make install''. In the latter case, you will have to carefully inspect the output and determine if any special action needs to be taken. Examples of files that require post-processing are Icons or texinfo pages. While the tools to install icons are likely already installed on the system, the ''install-info'' tool would warrant an additional prerequisite in the spec file for the subsystem containing the file. When you have determined the commands required, add an appropriate exitop to the idb file. For a texinfo file, the exitop may look as follows: |
| | | |
| f 0644 root sys usr/nekoware/info/foo.info usr/nekoware/info/foo.info neko_foo.man.info exitop('if test -x $rbase/usr/nekoware/bin/install-info; then chroot $rbase /sbin/sh -c "/usr/nekoware/bin/install-info --info-dir=/usr/nekoware/info /usr/nekoware/info/foo.info;" ; fi') | | f 0644 root sys usr/nekoware/info/foo.info usr/nekoware/info/foo.info neko_foo.man.info exitop('if test -x $rbase/usr/nekoware/bin/install-info; then chroot $rbase /sbin/sh -c "/usr/nekoware/bin/install-info --info-dir=/usr/nekoware/info /usr/nekoware/info/foo.info;" ; fi') |
Line 269: |
Line 268: |
| == Standardization of nekoware == | | == Standardization of nekoware == |
| | | |
− | Per the discussion in [http://forums.nekochan.net/viewtopic.php?f=15&t=16727314 this thread] the package release notes should be installed by default. Also please put man pages in /usr/nekoware/man rather than /usr/nekoware/share/man, etc. You may have to override some default locations (e.g. "--mandir=$PREFIX/man" instead of "--mandir=$PREFIX/share/man").
| + | The package release notes should be installed by default. Also please put man pages in /usr/nekoware/man rather than /usr/nekoware/share/man, etc. You may have to override some default locations (e.g. "--mandir=$PREFIX/man" instead of "--mandir=$PREFIX/share/man"). |
| | | |
| == Quality standards == | | == Quality standards == |
Line 285: |
Line 284: |
| | | |
| == Support == | | == Support == |
− |
| |
− | Relay chat on channel ''#devel'' on ''irc.nekohan.net'' is the best place to ask questions about packaging and developing/porting on [[IRIX]].
| |
| | | |
| See also [[Installing xchat]] on how to set up relay chat on [[IRIX]]. | | See also [[Installing xchat]] on how to set up relay chat on [[IRIX]]. |