Mike Dodd | 8cfa702 | 2010-11-17 11:12:26 -0800 | [diff] [blame] | 1 | Building an RPM for OProfile |
| 2 | ================================== |
| 3 | |
| 4 | When building an RPM for OProfile, please follow the RPM packaging guidelines |
| 5 | described in: |
| 6 | http://www.rpm.org/RPM-HOWTO/build.html |
| 7 | |
| 8 | |
| 9 | New file to install as of release 0.9.3 |
| 10 | --------------------------------------- |
| 11 | |
| 12 | As of release 0.9.3, opreport is capable of generating XML output. |
| 13 | Tool developers who wish to use the xml output will need to have |
| 14 | access to the doc/opreport.xsd file, which describes the schema. |
| 15 | RPM packagers may install this file in the same package as the other |
| 16 | standard OProfile components or in a separate devel package if desired. |
| 17 | |
| 18 | |
| 19 | New files to install as of release 0.9.4 |
| 20 | --------------------------------------- |
| 21 | |
| 22 | As of release 0.9.4, OProfile includes a JIT support library called libopagent. |
| 23 | This library is needed at runtime when profiling JITed code from supported |
| 24 | virtual machines. The install location for this library is: |
| 25 | <oprof-install-dir>/<libdir>/oprofile |
| 26 | |
| 27 | And there's a new binary file to install that's used for JIT profiling called |
| 28 | opjitconv. As with the other oprofile executables, this file is installed in |
| 29 | the <oprof-install-dir>/bin directory. |
| 30 | |
| 31 | OProfile also includes support for profiling Java applications. This support |
| 32 | must be configured by way of the '--with-java=<path_to_jdk>' configure |
| 33 | option. If your JDK is older than version 1.5, only a JVMPI agent library |
| 34 | is built. If your JDK is version 1.5, both JVMPI and JVMTI agent |
| 35 | libraries are built. If your JDK is 1.6 or newer, only the JVMTI agent |
| 36 | library is built. As with libopagent described above, the install location |
| 37 | for these is '<libdir>/oprofile'. |
| 38 | |
| 39 | RPM packagers can install the <libdir>/oprofile libraries in the same package |
| 40 | as the other standard OProfile components or in a separate package if desired. |
| 41 | It is recommended to run ldconfig in %post and %postun to add/remove the |
| 42 | <libdir>/oprofile path from the standard library search paths. |
| 43 | |
| 44 | On bi-arch platforms that support more than one "bitness" of userspace software |
| 45 | (e.g., 32-bit and 64-bit programs), it is recommended that the libopagent and |
| 46 | Java agent libraries be packaged in a separate RPM. You could then build |
| 47 | OProfile twice -- once for each bitness type. You would then distribute both |
| 48 | versions of the RPMs containing the libraries, but only one RPM containing the |
| 49 | "base" OProfile (i.e., executables, scripts, etc.). |
| 50 | |
| 51 | The new JIT support also provides the ability for third parties to develop |
| 52 | JIT agents for other virtual machines. The development files provided for this |
| 53 | purpose are: |
| 54 | doc/op-jit-devel.html |
| 55 | include/opagent.h |
| 56 | |
| 57 | Again, the RPM packager may package these files in the default package |
| 58 | or in a separate devel package. |
| 59 | |
| 60 | |
| 61 | Requirement for building a binary RPM package |
| 62 | ---------------------------------------- |
| 63 | |
| 64 | OProfile requires the special user account "oprofile" to exist for purposes |
| 65 | of processing samples from JIT'ed code (e.g., Java applications). |
| 66 | |
| 67 | When defining the spec file for the OProfile RPM, you should add the automatic |
| 68 | creation of the special "oprofile" user account. Please refer to the URL |
| 69 | below for an example of how this can be done: |
| 70 | http://fedoraproject.org/wiki/Packaging/UsersAndGroups |
| 71 | |
| 72 | For example, the following commands would add the necessary user account: |
| 73 | |
| 74 | %pre |
| 75 | getent group oprofile >/dev/null || groupadd -r oprofile |
| 76 | getent passwd oprofile >/dev/null || \ |
| 77 | useradd -r -g oprofile -d /home/oprofile -s /sbin/nologin \ |
| 78 | -c "Special user account to be used by OProfile" oprofile |
| 79 | exit 0 |