diff --git a/DEBBUILD b/DEBBUILD index 5c9a643..76581c7 100644 --- a/DEBBUILD +++ b/DEBBUILD @@ -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 " 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 +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..008e9b6 --- /dev/null +++ b/LICENSE @@ -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. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..df348ef --- /dev/null +++ b/README.md @@ -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 `::`. When downloading, the `download_url` content will be named with ``. When `build` and `pacage` run, every `` 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