| Building an RPM for OProfile |
| ================================== |
| |
| When building an RPM for OProfile, please follow the RPM packaging guidelines |
| described in: |
| http://www.rpm.org/RPM-HOWTO/build.html |
| |
| |
| New file to install as of release 0.9.3 |
| --------------------------------------- |
| |
| As of release 0.9.3, opreport is capable of generating XML output. |
| Tool developers who wish to use the xml output will need to have |
| access to the doc/opreport.xsd file, which describes the schema. |
| RPM packagers may install this file in the same package as the other |
| standard OProfile components or in a separate devel package if desired. |
| |
| |
| New files to install as of release 0.9.4 |
| --------------------------------------- |
| |
| As of release 0.9.4, OProfile includes a JIT support library called libopagent. |
| This library is needed at runtime when profiling JITed code from supported |
| virtual machines. The install location for this library is: |
| <oprof-install-dir>/<libdir>/oprofile |
| |
| And there's a new binary file to install that's used for JIT profiling called |
| opjitconv. As with the other oprofile executables, this file is installed in |
| the <oprof-install-dir>/bin directory. |
| |
| OProfile also includes support for profiling Java applications. This support |
| must be configured by way of the '--with-java=<path_to_jdk>' configure |
| option. If your JDK is older than version 1.5, only a JVMPI agent library |
| is built. If your JDK is version 1.5, both JVMPI and JVMTI agent |
| libraries are built. If your JDK is 1.6 or newer, only the JVMTI agent |
| library is built. As with libopagent described above, the install location |
| for these is '<libdir>/oprofile'. |
| |
| RPM packagers can install the <libdir>/oprofile libraries in the same package |
| as the other standard OProfile components or in a separate package if desired. |
| It is recommended to run ldconfig in %post and %postun to add/remove the |
| <libdir>/oprofile path from the standard library search paths. |
| |
| On bi-arch platforms that support more than one "bitness" of userspace software |
| (e.g., 32-bit and 64-bit programs), it is recommended that the libopagent and |
| Java agent libraries be packaged in a separate RPM. You could then build |
| OProfile twice -- once for each bitness type. You would then distribute both |
| versions of the RPMs containing the libraries, but only one RPM containing the |
| "base" OProfile (i.e., executables, scripts, etc.). |
| |
| The new JIT support also provides the ability for third parties to develop |
| JIT agents for other virtual machines. The development files provided for this |
| purpose are: |
| doc/op-jit-devel.html |
| include/opagent.h |
| |
| Again, the RPM packager may package these files in the default package |
| or in a separate devel package. |
| |
| |
| Requirement for building a binary RPM package |
| ---------------------------------------- |
| |
| OProfile requires the special user account "oprofile" to exist for purposes |
| of processing samples from JIT'ed code (e.g., Java applications). |
| |
| When defining the spec file for the OProfile RPM, you should add the automatic |
| creation of the special "oprofile" user account. Please refer to the URL |
| below for an example of how this can be done: |
| http://fedoraproject.org/wiki/Packaging/UsersAndGroups |
| |
| For example, the following commands would add the necessary user account: |
| |
| %pre |
| getent group oprofile >/dev/null || groupadd -r oprofile |
| getent passwd oprofile >/dev/null || \ |
| useradd -r -g oprofile -d /home/oprofile -s /sbin/nologin \ |
| -c "Special user account to be used by OProfile" oprofile |
| exit 0 |