summaryrefslogtreecommitdiffstats
path: root/source/documentation/packaging.rst
diff options
authorKonstantin Ryabitsev <konstantin@linuxfoundation.org>2024-10-08 15:24:36 -0400
committerKonstantin Ryabitsev <konstantin@linuxfoundation.org>2024-10-08 15:24:36 -0400
commitf3216be1efae259f0551c744f03f7195640573e5 (patch)
tree5d97f6604a3f16ad1d5439126665f0ff12bed59c /source/documentation/packaging.rst
parent96836ca0c23f0f5eb766cfe0a39a72a3bc216f2a (diff)
downloadbackports-master.tar.gz
Final tweaks before publishingHEADmaster
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
Diffstat (limited to 'source/documentation/packaging.rst')
-rw-r--r--source/documentation/packaging.rst99
1 files changed, 99 insertions, 0 deletions
diff --git a/source/documentation/packaging.rst b/source/documentation/packaging.rst
new file mode 100644
index 0000000..2f3921e
--- /dev/null
+++ b/source/documentation/packaging.rst
@@ -0,0 +1,99 @@
+Documentation/packaging
+=======================
+
+The backports project makes release of two types of **packages** which
+provides device drivers from future versions of Linux usable on older
+Linux kernel releases.
+
+Backports package release types
+-------------------------------
+
+Both daily snapshots based on `linux-next
+<http://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git>`__,
+and stable releases based `Linux's stable releases
+<http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git>`__
+are provided. Always use the latest *stable* available release unless
+you need a feature / fix only currently available on the linux-next
+based release. A backports-3.x release means device drivers from the
+Linux v3.x release have been taken, backported and made available for
+you to use on any kernel version prior to the release version.
+
+Usage guide
+-----------
+
+Building backports follows the same build mechanism as building the
+Linux kernel::
+
+ # as a user
+ make menuconfig
+ make -j4
+ # as root
+ make install
+ # reboot and enjoy
+
+Its understood users may not know how to configure the backports
+package, just like they may not know how to configure the Linux kernel,
+so a short cut is provided with default configuration files that can be
+used to only build their drivers / subsystems of interest. You can also
+just query the regular help menu::
+
+ make help
+ make defconfig-help
+
+If you use this option just use the 'make defconf-option' in replacement
+for *make menuconfig* above. For example to compile all wifi drivers::
+
+ # as a user
+ make defconfig-wifi
+ make -j4
+ # as root
+ make install
+
+Note that there are only default configuration files written for a few
+drivers while the project actually backports a lot of device drivers,
+the reason we have default configuration files for a few drivers is
+simply because developer have provided a default config options for
+them. What we really need is a 'make localmodconfig' support but that
+will take a while given that it involves mapping older kernel configs to
+newer kernel configs (which likely would be welcomed upstream as well).
+
+Cross compiling
+---------------
+
+To cross compile::
+
+ set -a
+ CROSS_COMPILE=${CROSS_COMPILE}
+ ARCH=${TARGET_CPU}
+ KLIB_BUILD=${DEV_PATH}/${LINUX_DIR}
+ KLIB=${TARGET_ROOT_ON_HOST}
+ set +a
+ make oldconfig  # menuconfig worked here too
+ make
+ make install
+
+The 'make install' target isn't currently sane for cross-builds due to
+the bacport_firmware_install script not respecting prefixes. For now you
+can comment out that script few others like initrd updates, from being
+run out of the Makefiles.
+
+Cross compile with Freescale's LTIB
+-----------------------------------
+
+To get backports happy in LTIB, use UNSPOOF/SPOOF_PATH to switch between
+host and cross environment. Example Build section in backports.spec::
+
+  %Build
+  export PATH=$UNSPOOF_PATH
+  
+  make menuconfig prefix=%{_prefix} \
+    CROSS_COMPILE=${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX} \
+    ARCH=$LINTARCH KLIB=${TOP}/rootfs/lib/modules/%{kversion} \
+    KLIB_BUILD=${TOP}/rpm/BUILD/linux
+  
+  export PATH=$SPOOF_PATH
+  
+  make prefix=%{_prefix} \
+    CROSS_COMPILE=${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX} \
+    ARCH=$LINTARCH KLIB=${TOP}/rootfs/lib/modules/%{kversion} \
+    KLIB_BUILD=${TOP}/rpm/BUILD/linux