Signed-off-by: Liu Shaofei liushaofei5@huawei.com --- doc/how-to-create-a-PKGBUILD.md | 81 +++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 doc/how-to-create-a-PKGBUILD.md
diff --git a/doc/how-to-create-a-PKGBUILD.md b/doc/how-to-create-a-PKGBUILD.md new file mode 100644 index 0000000..2230b5f --- /dev/null +++ b/doc/how-to-create-a-PKGBUILD.md @@ -0,0 +1,81 @@ +# ������������PKGBUILD + +## PKGBUILD������������ + + PKGBUILD���������shell���������makepkg������PKGBUILD������������������������������������������������������������������������������ + +## PKGBUILD��������������� + + PKGBUILD��������������������������������������� + + 1������������������ + + - pkgname: ���������������������������������������; + - pkgver: ��������������������������������������������� + - pkgrel: ��������������������������������������������� + - arch: ������������������������������������������������������ + - depends: ��������������������������������������������������������������� + - makedepends: ��������������������������������������������������������� + - source: ���������������������������������������MD5��������������������������������������������������������������� + + 2������������������ + + - package������ + package��������������������������������������������������������������������������������������������������� + - prepare������ + ���������������prepare������������������������������������������������������������ + - build������ + ���������������build������������������������/������������������ + - check������ + ���������������check������������������������������������������������ + + ���������srcdir ��� pkgdir + + - srcdir: ������������������������������������������������������������srcdir��������������������� + - pkgdir: ������������������������������������package������������������ + +## ������������PKGBUILD��� + + 1������������PKGBUILD������������������������PKGBUILD������������ + + `touch PKGBUILD` + + 2������������vim������PKGBUILD���������PKGBUILD��������������� + + ������������������������PKGBUILD��������� + + pkgname=zstd + pkgver=1.4.4 + pkgrel=2 + arch=('i686' 'x86_64' 'aarch64') + url='https://github.com/facebook/zstd' + license=('custom:BSD3' 'GPL2') + depends=('xz' 'zlib' 'lz4') + makedepends=('git') + source=('git://github.com/facebook/zstd.git#branch=dev') + md5sums=('SKIP') + + pkgver() { + cd "$srcdir/$pkgname" + git describe --long --tags | sed 's/([^-]*-g)/r\1/;s/-/./g;s/^v//g' + } + + build() { + cd "$srcdir/$pkgname" + make + make -C contrib/pzstd + } + + package() { + cd "$srcdir/$pkgname" + make PREFIX="/usr" DESTDIR="$pkgdir/" install + install -D -m755 contrib/pzstd/pzstd "$pkgdir/usr/bin/pzstd" + install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + } + +## ������ + + https://www.archlinux.org/pacman/PKGBUILD.5.html + https://git.archlinux.org/pacman.git/plain/proto/PKGBUILD.proto + +
On Thu, Nov 26, 2020 at 05:27:48PM +0800, Liu Shaofei wrote:
Signed-off-by: Liu Shaofei liushaofei5@huawei.com
doc/how-to-create-a-PKGBUILD.md | 81 +++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 doc/how-to-create-a-PKGBUILD.md
please ignore it.
diff --git a/doc/how-to-create-a-PKGBUILD.md b/doc/how-to-create-a-PKGBUILD.md new file mode 100644 index 0000000..2230b5f --- /dev/null +++ b/doc/how-to-create-a-PKGBUILD.md @@ -0,0 +1,81 @@ +# 如何编写PKGBUILD
+## PKGBUILD是什么?
- PKGBUILD是一个shell脚本,makepkg通过PKGBUILD中包含的指令,生成包含二进制文件和安装指令的软件包。
+## PKGBUILD包含什么?
- PKGBUILD包含两部分内容:变量和函数
- 1)、定义变量
- pkgname: 必须定义,表示软件包的名称;
- pkgver: 必须定义,表示软件包的版本号;
- pkgrel: 必须定义,表示软件包的发布号;
- arch: 必须定义,表示软件包使用的架构序列;
- depends: 可选字段,软件测试运行时需要的依赖包名称;
- makedepends: 可选字段,构建软件包时需要的文件列表;
- source: 可选字段,指定每个源文件的MD5哈希值,用于构建过程中验证源文件的完整性。
- 2)、定义函数
- package函数
package函数必须定义,此函数用于将文件安装到将成为构建包的根目录的目录中;
- prepare函数
定义可选的prepare函数,在其中执行用于准备构建源码的操作;
- build函数
定义可选的build函数,用于编译和/或构建源码;
- check函数
定义可选的check函数,用于运行程序包的测试套件。
- 注意:srcdir 和 pkgdir
- srcdir: 提取或复制源文件的目录,所有打包功能都在srcdir目录内部运行;
- pkgdir: 构建软件包的根目录,仅在package函数中使用。
+## 如何编写PKGBUILD?
- 1)、创建PKGBUILD,文件名必须以“PKGBUILD”命名。
- `touch PKGBUILD`
- 2)、使用vim打开PKGBUILD,编写PKGBUILD文件内容。
- 如下我们给出一个PKGBUILD例子:
- pkgname=zstd
- pkgver=1.4.4
- pkgrel=2
- arch=('i686' 'x86_64' 'aarch64')
- url='https://github.com/facebook/zstd'
- license=('custom:BSD3' 'GPL2')
- depends=('xz' 'zlib' 'lz4')
- makedepends=('git')
- source=('git://github.com/facebook/zstd.git#branch=dev')
- md5sums=('SKIP')
- pkgver() {
cd "$srcdir/$pkgname"
git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//g'
- }
- build() {
cd "$srcdir/$pkgname"
make
make -C contrib/pzstd
- }
- package() {
cd "$srcdir/$pkgname"
make PREFIX="/usr" DESTDIR="$pkgdir/" install
install -D -m755 contrib/pzstd/pzstd "$pkgdir/usr/bin/pzstd"
install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
- }
+## 参考
- https://www.archlinux.org/pacman/PKGBUILD.5.html
- https://git.archlinux.org/pacman.git/plain/proto/PKGBUILD.proto
-- 2.23.0