======KMP Macros====== =====Contents===== * [[https://www.linuxfoundation.org/#Purpose|1 Purpose]] * [[https://www.linuxfoundation.org/#Process|2 Process]] * [[https://www.linuxfoundation.org/#Current_Issues|3 Current Issues]] * [[https://www.linuxfoundation.org/#Proposed_standard_KMP_Macros|4 Proposed standard KMP Macros]] * [[https://www.linuxfoundation.org/#kernel_module_package_buildreqs|4.1 kernel_module_package_buildreqs]] * [[https://www.linuxfoundation.org/#kernel_source.28.29_-_already_works_on_SUSE_and_Red_Hat|4.2 kernel_source() - already works on SUSE and Red Hat]] * [[https://www.linuxfoundation.org/#_kermoddir|4.3 _kermoddir]] * [[https://www.linuxfoundation.org/#kernel_module_package|4.4 kernel_module_package]] **Purpose** This page will eventually provide an "API Reference" for the macros used to build KMPs with the standard spec file on [[https://www.linuxfoundation.org/en/Sample_KMP_spec_file|https://www.linux-foundation.org/en/Sample_KMP_spec_file]] . **Process** - Work through the "Current Issues below. - Fill in the "KMP Macros - API Reference" section below. **Current Issues** - Can we agree to just call the main macro %kernel_module_package? -  %kernel_module_package macro needs to include an option to the macro that specifies the pciid that gets installed in a standard location when the KMP is installed. - We need an option that specifies the firmware file that gets installed in a standard location when the KMP is installed. - We need an option that specifies that the modules in the KMP get added to the initrd when installed. - Can we pull the explicit %package KMP stuff (in the SUSE spec file) into %suse_kernel_module_subpackage? Or can we just remove it from the spec file? (Removing it would eliminate the ability for SUSE subpackages to have a different summary and description from the main package.) - Can we invent %make_build and %make_install macros that take flavor as an argument? That will hide the details of the make command behind the macros. - Can we invent an %install_mod macro to handle INSTALL_MOD_PATH and INSTALL_MOD_DIR? **Proposed Standard KMP Macros**==== kernel_module_package_buildreqs ==== Should evaluate to: Everything needed for "BuildRequires". SUSE needs to change kernel_module_package_buildreq to kernel_module_package_buildreqs and update "build" so that it can handle this macro. **kernel_source() - Already Works on SUSE and Red Hat** Should evaluate to: Directory containing top-level kernel Makefile (used in "make -C %{kernel_source $flavor} modules M=$PWD/obj/$flavor") **_kermoddir** Should evaluate to: Directory for installed modules. I.e., SUSE would evaluate to "updates", Red Hat would evaluate to "updates/%name". Suggested macro for SUSE to add to /usr/lib/rpm/macros:  %_kermoddir(n:) %{expand:%(echo "updates")} Suggested macro for Red Hat to add to /usr/lib/rpm/redhat/macros:  %_kermoddir(n:) %{expand:%( \ EXTRADIR=%{-n*} \ echo "updates/$EXTRADIR")} **kernel_module_package** TBD