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