refactor example DEBBUILD, add LICENSE and README

This commit is contained in:
leafee98 2023-07-18 10:40:08 +08:00
parent 34537bd30b
commit 20272db3d8
3 changed files with 93 additions and 13 deletions

View file

@ -1,32 +1,57 @@
#/usr/bin/env bash
pkgname="forgejo"
pkgver=23333 # this will be override by pkgver function
pkgname="makedeb"
pkgver=0.0.1.0.g34537bd
pkgrel=1
pkgcommit=""
pkgdesc="A painless selfhost git service."
url="https://codeberg.org/forgejo/forgejo"
url="https://git.leafee98.com/leafee98/makedeb"
maintainer="Leafee98 <me@leafee98.com>"
source=(
"forgejo-1.19.0-2-linux-amd64.xz::https://codeberg.org/attachments/5f7f9d36-b85e-40db-b390-9bf39acbbbc5"
"bwifi::git+https://cgit.leafee98.com/bwifi.git/#commit=8af4243f622bcb52f2e5be3345e282fd7cbad4d0"
"frp-0.46.1.tar.gz::material/frp-0.46.1.tar.gz"
"pkg.zip::material/pkg.zip"
"t.sh::material/t.sh"
"LICENSE::https://git.leafee98.com/leafee98/makedeb/raw/branch/main/LICENSE" # from http
"makedeb-repo::git+https://git.leafee98.com/leafee98/makedeb.git#branch=main" # from git with https
"README.md::README.md" # from local file
)
# This will be run just follow extracting source
# This will be run just after extracting source, and re-assign to `pkgver`
#
# If extracting version from source is not needed, don't define this function.
function pkgver {
echo "1.19.0-2"
git describe --tags --long | sed 's/^v//;s/-/./g'
}
function build {
install -D "${srcdir}/t.sh" "${pkgdir}/usr/bin/t.sh"
echo "building"
echo "Here should do something like compile sources."
echo "But for this package we just print some messages."
}
function package {
echo "installing package, pkgdir: ${pkgdir}"
install -Dm644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/makedeb/LICENSE"
install -Dm755 "${srcdir}/makedeb-repo/makedeb" "${pkgdir}/usr/bin/makedeb"
install -Dm755 "${srcdir}/README.md" "${pkgdir}/usr/share/doc/makedeb/README.md"
}
# The function describing hook for (pre|post)(inst|rm) should
# *print* content of those hook file.
# If the any hook is not needed, don't define those function.
#function debian_preinst {
#}
function debian_postinst {
cat << EOF
#!/usr/bin/env bash
echo "successfully installed makedeb"
EOF
}
#function debian_prerm {
#}
function debian_postrm {
cat << EOF
#!/usr/bin/env bash
echo "successfully removed makedeb"
EOF
}

22
LICENSE Normal file
View file

@ -0,0 +1,22 @@
MIT License
Copyright (c) 2023 Leafee98
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

33
README.md Normal file
View file

@ -0,0 +1,33 @@
# makedeb
Script for building Debian package quickly and easily. Inspired by Archlinux's makepkg.
## Example
Check the `DEBBUILD`
## Reference
### Build process
First it download needed content from array `sources`, then use function `pkgver` to determine the package version, then run function `build` and function `package`, then run hooks `debian_(pre|post)(inst|rm)` and make the printed strings as debian's hook scripts. Finally generate .deb with files in `$pkgdir`.
### Download and extract source
Every string in array `source` should be like `<actual_file_name>::<download_url>`. When downloading, the `download_url` content will be named with `<actual_file_name>`. When `build` and `pacage` run, every `<actual_file_name>` will be copied to `$srcdir`. If the file is a compressed file, it will be decompressed, if the file is a git repo, the specific branch, commit or tag will be checkouted.
### Global variables
- `pkgname`: package's name
- `pkgver`: package's version, if need to extract version from source, use function `pkgver`
- `pkgrel`: debian package reference, it should increase by one every build
- `pkgdesc`: package's description
- `url`: packages upstream url
- `maintainer`: maintainer's contect information
### Global functions
- `pkgver`: should print the actual version. This override the variable `pkgver`
- `build`: do something like compile source
- `package`: do something like copy file from `$srcdir` to `$pkgdir`
- `debian_(pre|post)(inst|rm)`: should print content of debian hooks file