aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/abuild.readme100
-rw-r--r--doc/apkg.conf.readme41
-rw-r--r--doc/defaultbuildopts87
-rw-r--r--doc/postinstall.readme3
-rw-r--r--doc/preinstall.readme3
-rw-r--r--doc/readme34
-rwxr-xr-xmake-man.sh33
-rw-r--r--man/apkg.conf.md (renamed from doc/apkg.conf.md)0
-rw-r--r--man/apkg.md (renamed from doc/apkg.md)0
-rw-r--r--man/make-man.sh32
-rw-r--r--man/man5/apkg.conf.5 (renamed from doc/man/man5/apkg.conf.5)27
-rw-r--r--man/man8/apkg.8 (renamed from doc/man/man8/apkg.8)43
-rw-r--r--man/man8/revdep.8 (renamed from doc/man/man8/revdep.8)30
-rw-r--r--man/revdep.md (renamed from doc/revdep.md)0
14 files changed, 353 insertions, 80 deletions
diff --git a/doc/abuild.readme b/doc/abuild.readme
new file mode 100644
index 0000000..f5b6bb1
--- /dev/null
+++ b/doc/abuild.readme
@@ -0,0 +1,100 @@
+# This is template file for abuild with explanations
+# you can use this template as base for your package abuild
+# all commented lines can be removed to keep it simple and clean.
+# uncomment necessary optional variables/functions as needed
+
+# 'name', 'version' and 'release' is required as it will be used in package database
+# must be the same as directory name.
+name=mypkg
+
+# should use version number from package upstream as possible
+version=1.2.3
+
+# does not follow any number from package upstream
+# must be increment number from 1
+# must reset to 1 when 'version' is changed
+# must not contain any character other than increment number from 1
+# can be use to bump package when package need rebuild without source changed
+release=1
+
+# if no source defined, empty package will be created, good for making meta packages
+# must use '$name' and '$version' variable so updating packages will be easier
+# 4 format acceptable can be used:
+# * <url> - just regular source tarball url
+# * <tarball name>::<url> - good to use when upstream source tarball name is not in proper format
+# * <url>::noextract - to skip extracting the source tarball
+# * <filename> - when its not a url, the <filename> is expected exist inside package abuild recipe directory
+#source="https://anyurl.com/$name-$version.tar.gz
+ $name-$version.tar.gz::https://anyurl.com/$version.tar.gz
+ https://anyurl.com/$name-$version.tar.gz::noextract
+ file"
+
+# placed runit service with proper name in /etc/sv
+# this is acceptable name for runit service file:
+# * run - /etc/sv/$name/run
+# * <whatevername> - /etc/sv/<whatevername>/run
+# * <whatevername>.run - /etc/sv/<whatevername>/run
+# * finish - /etc/sv/$name/finish
+# * <whatevername>.finish - /etc/sv/<whatevername>/finish
+#sv="run <whatevername>.run <whatevername>
+ finish <whatevername>.finish"
+
+# auto build system already use regular options like --prefix, --sysconfdir, --libdir and etc
+# use this to add the optional opts or to override the one in defaults (see 'defaultbuildopts' file)
+#build_opt=""
+
+# skipping auto apply patch
+#skip_patch=1
+
+# define patch opts to use other than default (-p1)
+#patch_opt="-p1"
+
+# keep static libraries (*.a) in packages
+#keep_static=1
+
+# keep libtool files (*.la) in packages
+#keep_libtool=1
+
+# keep locales in packages (/usr/share/locale and /usr/lib/locale)
+#keep_locale=1
+
+# keep documentations in packages (/usr/share/doc)
+#keep_doc=1
+
+# use this to force which build_type to use (if available)
+# by default build_type will be automatically detected
+# list available build_type (in order when autodetect)
+# * meson_build
+# * configure_build
+# * cmake_build
+# * python_build
+# * perlmodule_build
+# * makefile_build
+#build_type=""
+
+# override auto build system by using 'build()', 'prebuild()', and/or 'postbuild()' function
+# NOTE: when 'build()' is used, 'prebuild()' and 'postbuild()' will be ignored
+# theres 2 variable can be used in these function
+# * $PKG - is fakeroot location where all package files is installed before packaging
+# * $SRC - is where source is extracted
+#prebuild() {
+# # do whatever needed before compiling
+# # eg: fix whatever bug
+# sed -i 's/need to changed/to this/g' src/whateverfile
+#}
+#
+#postbuild() {
+# # do whatever needed after files installed to $PKG, before packaging occur
+# # eg: move binary to correct location
+# mkdir -p $PKG/usr/sbin
+# mv $PKG/usr/bin/binary $PKG/usr/sbin
+#}
+#
+#build() {
+# sed -i 's/need to changed/to this/g' src/whateverfile
+# ./configure --prefix=/usr
+# make
+# make DESTDIR=$PKG install
+# mkdir -p $PKG/usr/sbin
+# mv $PKG/usr/bin/binary $PKG/usr/sbin
+#}
diff --git a/doc/apkg.conf.readme b/doc/apkg.conf.readme
new file mode 100644
index 0000000..dd33863
--- /dev/null
+++ b/doc/apkg.conf.readme
@@ -0,0 +1,41 @@
+# this is configuration file for 'apkg' located at '/etc/apkg.conf'
+# this file will get sourced before reading any package abuild recipe
+#
+# its good to export some compiler flags here
+#export CFLAGS="-O3 -march=x86-64 -pipe"
+#export CXXFLAGS="$CFLAGS"
+#export JOBS=$(nproc)
+#export MAKEFLAGS=-j$JOBS
+#export NINJAJOBS=$JOBS
+
+# repo path that contains package abuild recipe
+# the order is matter, which package found first will take precedence
+#APKG_REPO="<path to repo> <path to next repo> <and so on>"
+
+# path to prebuilt packages
+# if this not use, package will built inside package build recipe directory instead
+#APKG_PACKAGE_DIR=<path to package directory>
+
+# path to source tarball
+# if this not use, source tarball will fetched into package build recipe directory instead
+APKG_SOURCE_DIR=<path to source directory>
+
+# working directory path, where source is extracted and fakeroot location before packaging
+#APKG_WORK_DIR=<path to working directory>
+
+# keep source when build failed, good to examine what causing build failed
+#APKG_KEEP_WORKDIR=1
+
+# skip user prompt when using '-I' and '-U' options (disable interactive mode, good to use in scripting)
+#APKG_NOPROMPT=1
+
+# you can define and export whatever needed variable here as long its safe and not conflicting with other important
+# build variable, example, keep_* can be used here to set globally
+#keep_static=1
+#keep_libtool=1
+#keep_locale=1
+#keep_doc=1
+
+# you can also define ccache variable here to speed up package rebuild (required 'ccache' package installed)
+#export PATH=/usr/lib/ccache:$PATH
+#export CCACHE_DIR=/var/cache/ccache
diff --git a/doc/defaultbuildopts b/doc/defaultbuildopts
new file mode 100644
index 0000000..2918236
--- /dev/null
+++ b/doc/defaultbuildopts
@@ -0,0 +1,87 @@
+# this file no needed in package build recipe
+# this file will just show what auto build system use for build options
+
+1 - meson_build:
+ meson setup \
+ -Dprefix=/usr \
+ -Dlibdir=/usr/lib \
+ -Dincludedir=/usr/include \
+ -Ddatadir=/usr/share \
+ -Dmandir=/usr/share/man \
+ -Dinfodir=/usr/share/info \
+ -Dlocaledir=/usr/share/locale \
+ -Dsysconfdir=/etc \
+ -Dlocalstatedir=/var \
+ -Dsharedstatedir=/var/lib \
+ -Dbuildtype=plain \
+ -Dauto_features=auto \
+ -Dwrap_mode=nodownload \
+ -Db_lto=true \
+ -Db_pie=true \
+ $build_opt \
+ build
+ ninja -C build
+ DESTDIR=$PKG meson install -C build
+
+2 - configure_build:
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libdir=/usr/lib \
+ --infodir=/usr/share/info \
+ --mandir=/usr/share/man \
+ $build_opt
+ make
+ make DESTDIR=$PKG install
+
+3 - cmake_build:
+ mkdir -p cmakebuild
+ cd cmakebuild
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_SYSCONFDIR=/etc \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DFETCHCONTENT_FULLY_DISCONNECTED=ON \
+ -DCMAKE_C_FLAGS_RELEASE="$CFLAGS" \
+ -DCMAKE_CXX_FLAGS_RELEASE="$CXXFLAGS" \
+ $build_opt \
+ -B build ..
+ if [ -f build.ninja ]; then
+ ninja
+ DESTDIR=$PKG ninja install
+ else
+ cmake --build build
+ DESTDIR=$PKG cmake --install build
+ fi
+
+4 - python_build:
+ python3 setup.py build
+ python3 setup.py install --prefix=/usr --root=$PKG --optimize=1 $build_opt
+
+5 - perlmodule_build:
+ perl Makefile.PL
+ make
+ make DESTDIR=$PKG install
+
+6 - makefile_build:
+ make \
+ PREFIX=/usr \
+ prefix=/usr \
+ SYSCONFDIR=/etc \
+ sysconfdir=/etc \
+ MANDIR=/usr/share/man \
+ mandir=/usr/share/man \
+ LIBDIR=/usr/lib \
+ PKGCONFIGDIR=/usr/lib/pkgconfig
+ make \
+ PREFIX=/usr \
+ prefix=/usr \
+ SYSCONFDIR=/etc \
+ sysconfdir=/etc \
+ MANDIR=/usr/share/man \
+ mandir=/usr/share/man \
+ LIBDIR=/usr/lib \
+ PKGCONFIGDIR=/usr/lib/pkgconfig \
+ DESTDIR=$PKG install
diff --git a/doc/postinstall.readme b/doc/postinstall.readme
new file mode 100644
index 0000000..d9fe86c
--- /dev/null
+++ b/doc/postinstall.readme
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+# whatever command need to after package installed into system
diff --git a/doc/preinstall.readme b/doc/preinstall.readme
new file mode 100644
index 0000000..be52b7a
--- /dev/null
+++ b/doc/preinstall.readme
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+# whatever command need to run before build/install package
diff --git a/doc/readme b/doc/readme
new file mode 100644
index 0000000..86f5970
--- /dev/null
+++ b/doc/readme
@@ -0,0 +1,34 @@
+abuild recipe guidance
+======================
+
+- please read all availabe *.readme files
+
+abuild recipe tree
+------------------
+name - directory name, must be same as 'name' variable in abuild
+ |- abuild - package recipe (required)
+ |- preinstall - pre installation script (optional)
+ |- postinstall - post installation script (optional)
+ |- depends - dependencies list, one package per line (optional)
+ |- .checksum - source's b3sum, auto generated if not exist, can be manually generated using 'apkg -g'
+ \- .files - packages file list, will be generated after packaging, can be manually generated using 'apkg -k'
+
+building package
+----------------
+
+- run 'apkg' inside package recipe directory.
+ or
+- run 'apkg <package name>' if package recipe is created inside APKG_REPO directory (you can run 'apkg -p <package name>' to
+ print <package name>'s path if its in APKG_REPO path).
+
+installing package
+------------------
+
+- run 'apkg -i' or 'apkg -i <package name>' (same case as above).
+ or
+- run 'spm -i <path to prebuilt package file>' directly (installing this way will not execute pre/postinstall script and will
+ not trigger system database updates, you recomended to run 'apkg -t' afterwards)
+
+NOTE:
+- 'apkg -t' will update font cache, mime database, desktop database, gtkimodules, glib schema, giomodules and gdkpixbuf cache.
+- this trigger will automatically detected on which packages need to run.
diff --git a/make-man.sh b/make-man.sh
deleted file mode 100755
index 4ed2336..0000000
--- a/make-man.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-# This script is derives from the original, written for Obarun Linux distribution by Eric Vidal.
-# The original is released under BSD Zero Clause licence (BSD0), and can be found at https://git.obarun.org/Obarun/66/-/blob/master/doc/make-man.sh?ref_type=heads.
-
-
-man8='apkg revdep'
-
-man5='apkg.conf'
-
-for i in 5 8;do
- if [ ! -d doc/man/man${i} ]; then
- mkdir -p -m 0755 doc/man/man"${i}" || exit 1
- fi
-done
-
-for i in ${man5}; do
- lowdown -s -Tman doc/"${i}".md -o doc/man/man5/"${i}".5 || exit 1
- var=$( sed -n -e '/^.TH/p' < doc/man/man5/"${i}".5)
- var=$(printf '%s' "$var" | tr '7' '5')
- sed -i "s!^.TH.*!${var}!" doc/man/man5/"${i}".5 || exit 1
- sed -i '4,8d' doc/man/man5/"${i}".5 || exit 1
-done
-
-for i in ${man8}; do
- lowdown -s -Tman doc/"${i}".md -o doc/man/man8/"${i}".8 || exit 1
- var=$( sed -n -e '/^.TH/p' < doc/man/man8/"${i}".8)
- var=$(printf '%s' "$var" | tr '7' '8')
- sed -i "s!^.TH.*!${var}!" doc/man/man8/"${i}".8 || exit 1
- sed -i '4,8d' doc/man/man8/"${i}".8 || exit 1
-done
-
-exit 0 \ No newline at end of file
diff --git a/doc/apkg.conf.md b/man/apkg.conf.md
index d4aa590..d4aa590 100644
--- a/doc/apkg.conf.md
+++ b/man/apkg.conf.md
diff --git a/doc/apkg.md b/man/apkg.md
index a692d1e..a692d1e 100644
--- a/doc/apkg.md
+++ b/man/apkg.md
diff --git a/man/make-man.sh b/man/make-man.sh
new file mode 100644
index 0000000..dd0a8c5
--- /dev/null
+++ b/man/make-man.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# This script is derives from the original, written for Obarun Linux distribution by Eric Vidal.
+# The original is released under BSD Zero Clause licence (BSD0), and can be found at https://git.obarun.org/Obarun/66/-/blob/master/doc/make-man.sh?ref_type=heads.
+
+
+man8='apkg revdep'
+man5='apkg.conf'
+
+for i in 5 8;do
+ if [ ! -d man${i} ]; then
+ mkdir -p -m 0755 man"${i}" || exit 1
+ fi
+done
+
+for i in ${man5}; do
+ lowdown -s -Tman "${i}".md -o man5/"${i}".5 || exit 1
+ var=$( sed -n -e '/^.TH/p' < man5/"${i}".5)
+ var=$(printf '%s' "$var" | tr '7' '5')
+ sed -i "s!^.TH.*!${var}!" man5/"${i}".5 || exit 1
+ sed -i '4,8d' man5/"${i}".5 || exit 1
+done
+
+for i in ${man8}; do
+ lowdown -s -Tman "${i}".md -o man8/"${i}".8 || exit 1
+ var=$( sed -n -e '/^.TH/p' < man8/"${i}".8)
+ var=$(printf '%s' "$var" | tr '7' '8')
+ sed -i "s!^.TH.*!${var}!" man8/"${i}".8 || exit 1
+ sed -i '4,8d' man8/"${i}".8 || exit 1
+done
+
+exit 0
diff --git a/doc/man/man5/apkg.conf.5 b/man/man5/apkg.conf.5
index 8047562..e4bb96d 100644
--- a/doc/man/man5/apkg.conf.5
+++ b/man/man5/apkg.conf.5
@@ -1,12 +1,9 @@
.\" -*- mode: troff; coding: utf-8 -*-
.TH "" "5" ""
-.SH
-.LP
-\fBapkg.conf\fR is the configuration file for the \fBapkg\fR package manager for the alice linux distribution.
+.SH NAME
It resides by default under \f(CR/etc\fR in an alice linux installation.
The contents are sourced by the \fBapkg\fR program and are in the posix shell \f(CRkey=\(dqvalue\(dq\fR format.
-.SH
-CONFIGURATION KEYS
+.SH CONFIGURATION KEYS
.IP "\(bu" 3
\f(CRAPKG_NOPROMPT\fR If set, it enables non-interactive use by disabling user confirmation prompt.
.if n \
@@ -71,13 +68,19 @@ APKG_PACKAGE_DIR=/var/cache/pkg
APKG_SOURCE_DIR=/var/cache/src
APKG_WORK_DIR=/var/cache/work
.EE
-.SH
-AUTHORS
+.SH AUTHORS
.LP
-emmett1 \fIemmett1.2miligrams@protonmail.com\fR Author of the program and creator of alice linux.
+emmett1 \c
+.MT emmett1.2miligrams@protonmail.com
+.ME
+Author of the program and creator of alice linux.
.PP
-mobinmob \fImobinmob@disroot.org\fR Author of the man page.
-.SH
-REPORTING BUGS
+mobinmob \c
+.MT mobinmob@disroot.org
+.ME
+Author of the man page.
+.SH REPORTING BUGS
.LP
-\fBapkg\fR is in a working stage but also under heavy development. Please report and bugs/issues in the project issue tracker: \fIhttps://codeberg.org/emmett1/autils/issues\fR
+\fBapkg\fR is in a working stage but also under heavy development. Please report and bugs/issues in the project issue tracker: \c
+.UR https://codeberg.org/emmett1/autils/issues
+.UE
diff --git a/doc/man/man8/apkg.8 b/man/man8/apkg.8
index 5b46f82..2727207 100644
--- a/doc/man/man8/apkg.8
+++ b/man/man8/apkg.8
@@ -1,16 +1,12 @@
.\" -*- mode: troff; coding: utf-8 -*-
.TH "" "8" ""
-.SH
-.LP
-\fBapkg\fR [-i] [-I] [-d] [-D] [-j] [-u] [-r] [-t] [-U ] [-f] [-o] [-p] [-s] [-g] [-h] [\fIpkg(s)\fR]
-.SH
-DESCRIPTION
+.SH NAME
+.SH DESCRIPTION
.LP
\fBapkg\fR is the package build tool and package installer, along with \fBspm\fR for the alice linux distribution.
It is written in posix shell with the goal to be simple and effective. It can consume package building templates in the abuild format
and automate the building and installing of packages.
-.SH
-OPTIONS
+.SH OPTIONS
.LP
Arguments for apkg are as follows:
.IP "\(bu" 3
@@ -99,8 +95,7 @@ Arguments for apkg are as follows:
.sp -0.25v
.IP "\(bu" 3
\fB-g\fR \fI\fR Update or generate checksum(s) for the package source files.
-.SH
-ENVIRONMENT VARIABLES
+.SH ENVIRONMENT VARIABLES
.IP "\(bu" 3
\f(CRAPKG_ROOT\fR Overrides default root location (/), where sw is installed
.if n \
@@ -147,8 +142,7 @@ ENVIRONMENT VARIABLES
\f(CRAPKG_LOG\fR If set, it enables the creation of a log for the program output.
.LP
\fBNote:\fR Usually, APKG\fIREPO, APKG\fRPACKAGE\fIDIR, APKG\fRSOURCE\fIDIR and APKG\fRWORK_DIR are declared in the apkg.conf configuration file. For more information, please see apkg.conf(5).
-.SH
-FILES
+.SH FILES
.IP "\(bu" 3
\fBapkg.conf(5)\fR is the default configuration file, it resides by default under /etc.
.if n \
@@ -157,9 +151,10 @@ FILES
.sp -0.25v
.IP "\(bu" 3
\fBabuild\fR is the name of the package templates that apkg uses, along with relevant files in order to
-build and installed packages. For example, one can look to the alice linux repos, under \fIhttps://codeberg.org/emmett1/alicelinux/src/branch/main/repos\fR
-.SH
-EXAMPLES
+build and installed packages. For example, one can look to the alice linux repos, under \c
+.UR https://codeberg.org/emmett1/alicelinux/src/branch/main/repos
+.UE
+.SH EXAMPLES
.LP
\f(CRapkg -i linux\fR - Install the \fIlinux\fR package
.PP
@@ -168,13 +163,19 @@ if the package is already installed: \f(CR[...] Package 'jupp' already installed
.PP
\f(CRapkg -s icon\fR - Search for packages names that contain \(lqicon\(rq, it will produce a list with one
package per line.
-.SH
-AUTHORS
+.SH AUTHORS
.LP
-emmett1 \fIemmett1.2miligrams@protonmail.com\fR Author of the program and creator of alice linux.
+emmett1 \c
+.MT emmett1.2miligrams@protonmail.com
+.ME
+Author of the program and creator of alice linux.
.PP
-mobinmob \fImobinmob@disroot.org\fR Author of the man page.
-.SH
-REPORTING BUGS
+mobinmob \c
+.MT mobinmob@disroot.org
+.ME
+Author of the man page.
+.SH REPORTING BUGS
.LP
-\fBapkg\fR is in a working stage but also under heavy development. Please report and bugs/issues in the project issue tracker: \fIhttps://codeberg.org/emmett1/autils/issues\fR
+\fBapkg\fR is in a working stage but also under heavy development. Please report and bugs/issues in the project issue tracker: \c
+.UR https://codeberg.org/emmett1/autils/issues
+.UE
diff --git a/doc/man/man8/revdep.8 b/man/man8/revdep.8
index b8dc1f1..52d32fd 100644
--- a/doc/man/man8/revdep.8
+++ b/man/man8/revdep.8
@@ -1,12 +1,9 @@
.\" -*- mode: troff; coding: utf-8 -*-
.TH "" "8" ""
-.SH
-.LP
-\fBrevdep\fR is a utility inspired by the gentoo program revdep-rebuild. It is written in posix shell and
+.SH NAME
it can discover programs that need to be rebuilt after library upgrades or are missing libraries.
It should probably run after any big upgrade, especially those that feature lib version bumps.
-.SH
-OPTIONS
+.SH OPTIONS
.IP "\(bu" 3
\fB-h\fR Show program help.
.if n \
@@ -15,18 +12,23 @@ OPTIONS
.sp -0.25v
.IP "\(bu" 3
\fB-v\fR Verbose output of the operation.
-.SH
-NOTE
+.SH NOTE
.LP
\fBrevdep\fR does not automatically rebuild broken packages or their dependencies. You need to
use apkg for these operations.
-.SH
-REPORTING BUGS
+.SH REPORTING BUGS
.LP
-\fBapkg\fR is in a working stage but also under heavy development. Please report and bugs/issues in the project issue tracker: \fIhttps://codeberg.org/emmett1/autils/issues\fR
-.SH
-AUTHORS
+\fBapkg\fR is in a working stage but also under heavy development. Please report and bugs/issues in the project issue tracker: \c
+.UR https://codeberg.org/emmett1/autils/issues
+.UE
+.SH AUTHORS
.LP
-emmett1 \fIemmett1.2miligrams@protonmail.com\fR Author of the program and creator of alice linux.
+emmett1 \c
+.MT emmett1.2miligrams@protonmail.com
+.ME
+Author of the program and creator of alice linux.
.PP
-mobinmob \fImobinmob@disroot.org\fR Author of the man page.
+mobinmob \c
+.MT mobinmob@disroot.org
+.ME
+Author of the man page.
diff --git a/doc/revdep.md b/man/revdep.md
index 6f23ee3..6f23ee3 100644
--- a/doc/revdep.md
+++ b/man/revdep.md