| Both sides previous revision Previous revision Next revision | Previous revision |
| docs:guide-developer:packages [2023/03/03 13:48] – [Creating packages for kernel modules] use archwiki link instead of a dead one tatami | docs:guide-developer:packages [2024/05/22 20:59] (current) – fix make target for package bam |
|---|
| * ''PKG_NAME'' - The name of the package, as seen via menuconfig and ipkg. Avoid using underscores in the package name, to avoid build failures--for example, the underscore separates name from version information, and may confuse the build system in hard-to-spot places. | * ''PKG_NAME'' - The name of the package, as seen via menuconfig and ipkg. Avoid using underscores in the package name, to avoid build failures--for example, the underscore separates name from version information, and may confuse the build system in hard-to-spot places. |
| * ''PKG_VERSION'' - The upstream version number that we're downloading | * ''PKG_VERSION'' - The upstream version number that we're downloading |
| * ''PKG_RELEASE'' - The version of this package Makefile | * ''PKG_RELEASE'' - The version of this package Makefile. Should be initially set to 1, and reset to 1 whenever the ''PKG_VERSION'' is changed. Increment it when ''PKG_VERSION'' stays the same, but when there are functional changes to the installed artifacts. |
| * ''PKG_LICENSE'' - The license(s) the package is available under, [[https://spdx.org/licenses/|SPDX]] form. | * ''PKG_LICENSE'' - The license(s) the package is available under, [[https://spdx.org/licenses/|SPDX]] form. |
| * ''PKG_LICENSE_FILES''- file containing the license text | * ''PKG_LICENSE_FILES''- file containing the license text |
| * ''PKG_HASH'' - A checksum to validate the download. It can be either a MD5 or SHA256 checksum, but SHA256 should be used, see [[commit>?p=openwrt/openwrt.git;a=blob;f=scripts/download.pl;h=676c6e9e6b10b6a44ed2bbc03a7ba3c983aaf639;hb=HEAD#l66|scripts/download.pl]] | * ''PKG_HASH'' - A checksum to validate the download. It can be either a MD5 or SHA256 checksum, but SHA256 should be used, see [[commit>?p=openwrt/openwrt.git;a=blob;f=scripts/download.pl;h=676c6e9e6b10b6a44ed2bbc03a7ba3c983aaf639;hb=HEAD#l66|scripts/download.pl]] |
| * ''PKG_CAT'' - How to decompress the sources (zcat, bzcat, unzip) | * ''PKG_CAT'' - How to decompress the sources (zcat, bzcat, unzip) |
| | * ''PKG_URL''. - Upstream project homepage |
| * ''PKG_BUILD_DEPENDS'' - Packages that need to be built before this package. Use this option if you need to make sure that your package has access to includes and/or libraries of another package at build time. Specify the directory name (i.e. openssl) rather than the binary package name (i.e. libopenssl). This build variable only establishes the build time dependency. Use ''DEPENDS'' to establish the runtime dependencies. This variable uses the same syntax as ''DEPENDS'' below. | * ''PKG_BUILD_DEPENDS'' - Packages that need to be built before this package. Use this option if you need to make sure that your package has access to includes and/or libraries of another package at build time. Specify the directory name (i.e. openssl) rather than the binary package name (i.e. libopenssl). This build variable only establishes the build time dependency. Use ''DEPENDS'' to establish the runtime dependencies. This variable uses the same syntax as ''DEPENDS'' below. |
| * ''PKG_CONFIG_DEPENDS'' - specifies which config options influence the build configuration and should trigger a rerun of Build/Configure on change | * ''PKG_CONFIG_DEPENDS'' - specifies which config options influence the build configuration and should trigger a rerun of Build/Configure on change |
| * ''PKG_INSTALL_DIR'' - Where "make install" copies the compiled files | * ''PKG_INSTALL_DIR'' - Where "make install" copies the compiled files |
| * ''PKG_FIXUP'' - See below | * ''PKG_FIXUP'' - See below |
| | * ''PKG_CVE_IGNORE'' - Variable for defining CVEs that don't apply to this version of the package due to features not enabled, or affecting other platforms (e.g. Windows issues or features that are not used and so not relevant) |
| | * ''PKG_CVE_FIXED'' - Variable for defining CVEs that are patches in the current version, but aren't properly marked as fixed at cve.org in the current version |
| |
| Optional support for fetching sources from a VCS (git, bzr, svn, etc), see [[#use_source_repository|Use source repository]] below for more information: | Optional support for fetching sources from a VCS (git, bzr, svn, etc), see [[#use_source_repository|Use source repository]] below for more information: |
| </code> | </code> |
| |
| Besides the source repository ''PKG_SOURCE_URL'', you also need to specify which exact version you are building using ''PKG_SOURCE_VERSION'' (e.g. a commit hash for git, or a revision number for svn) | Besides the source repository ''PKG_SOURCE_URL'', you also need to specify which exact version you are building using ''PKG_SOURCE_VERSION'' e.g. a commit hash for git, or a revision number for svn. The ''PKG_SOURCE_VERSION'' can be a git tag and specified like ''PKG_SOURCE_VERSION:=v$(PKG_VERSION)''. |
| |
| Buildroot will first clone the source repository, and then generate a tarball from the source repository, with a name like ''dl/odhcpd-2017-08-16-94e65ee0.tar.xz''. | Buildroot will first clone the source repository, and then generate a tarball from the source repository, with a name like ''dl/odhcpd-2017-08-16-94e65ee0.tar.xz''. |
| :!: The tarballs generated from svn checkouts are not reproducible, so you should avoid defining ''PKG_MIRROR_HASH'' when building from svn! | :!: The tarballs generated from svn checkouts are not reproducible, so you should avoid defining ''PKG_MIRROR_HASH'' when building from svn! |
| |
| To generate ''PKG_MIRROR_HASH'' automatically, use the following (replace ''package/network/services/odhcpd'' by your package): | To generate ''PKG_MIRROR_HASH'' automatically, use the following (replace ''package/odhcpd'' by your package): |
| |
| <code> | <code> |
| # First add "PKG_MIRROR_HASH:=skip" to the package Makefile and/or "HASH:=skip", if required. | # First add "PKG_MIRROR_HASH:=skip" to the package Makefile and/or "HASH:=skip", if required. |
| make package/network/services/odhcpd/download V=s | make package/odhcpd/download V=s |
| make package/network/services/odhcpd/check FIXUP=1 V=s | make package/odhcpd/check FIXUP=1 V=s |
| </code> | </code> |
| |
| Very basic example of a suitable init.d script. Please note that the newer style version does not work properly with interpreted executables (i.e. scripts). That is because start-stop-daemon is used by service_stop() in a way that it makes it confuse the script name with the interpreter name. | Very basic example of a suitable init.d script. Please note that the newer style version does not work properly with interpreted executables (i.e. scripts). That is because start-stop-daemon is used by service_stop() in a way that it makes it confuse the script name with the interpreter name. |
| |
| :!: **procd** style init is used in some init.d scripts since: [[commit>?p=openwrt/openwrt.git;a=commit;h=f87409440298121ae1fbd718a17267cc180438e4|this commit]]. | :!: **procd** style init is used in some init.d scripts since [[commit>?p=openwrt/openwrt.git;a=commit;h=f87409440298121ae1fbd718a17267cc180438e4|this commit]]. |
| See [[docs:guide-developer:procd-init-scripts]] for more details on that | See [[docs:guide-developer:procd-init-scripts]] for more details on that. |
| |
| <code bash> | <code bash> |
| * [[:submitting-patches|https://dev.openwrt.org/wiki/SubmittingPatches]] | * [[:submitting-patches|https://dev.openwrt.org/wiki/SubmittingPatches]] |
| |
| See https://lists.openwrt.org/pipermail/openwrt-devel/2014-June/025810.html for the original announcement of this change | See [[https://web.archive.org/web/20170629071358/https://lists.openwrt.org/pipermail/openwrt-devel/2014-June/025810.html|the original announcement]] of this change. |