[arch-projects] [devtools] [PATCH 0/2] [RFC] Add an pages
This patch series intends to be an RFC for adding man pages for every tool provided by devtools. The first man page for lddd is written in mdoc and is lacking a way to reduce duplication of common headers such as BUGS/AUTHORS. Note that the pacman bug motto was re-used, it's up for debate and the same for the bug location. Do we prefer the bugtracker of mailing lists for bug reports? Jelle van der Waa (2): Add lddd manual install man pages Makefile | 5 +++++ doc/lddd.1 | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 doc/lddd.1 -- 2.18.0
--- doc/lddd.1 | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 doc/lddd.1 diff --git a/doc/lddd.1 b/doc/lddd.1 new file mode 100644 index 0000000..74f9c5e --- /dev/null +++ b/doc/lddd.1 @@ -0,0 +1,27 @@ +.Dd August 13, 2018 +.\" Patch this in our groff's mdoc.local +.ds volume-operating-system Arch Linux +.ds default-operating-system Arch Linux +.Os Arch Linux +.Dt lddd 1 +.Sh NAME +.Nm lddd +.Nd find broken library links on your machine +.Sh SYNOPSIS +.Nm lddd +.Sh DESCRIPTION +lddd scans all elf binaries in $PATH, /lib, /usr/local/lib or specified in +/etc/ld.so.conf.d/*.conf, looks for missing symbols and suggests which packages +might need to be rebuild. The collected data is written to a temporary +directory created by mktemp. +.Sh SEE ALSO +.Xr ldd 1 +.Sh BUGS +Bugs? You must be kidding; there are no bugs in this software. But if we happen +to be wrong, send us an email with as much detail as possible to +arch-projects@archlinux.org +.Sh AUTHORS +.An Aaron Griffin <aaronmgriffin@gmail.com> +.An Pierre Schmitz <pierre@archlinux.de> +.An Lukas Fleischer <archlinux@cryptocrack.de> +.An Luke Shumaker <lukeshu@parabola.nu> -- 2.18.0
On Sat, 25 Aug 2018 13:14:35 +0200 Jelle van der Waa <jelle@vdwaa.nl> wrote:
--- doc/lddd.1 | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 doc/lddd.1
diff --git a/doc/lddd.1 b/doc/lddd.1 new file mode 100644 index 0000000..74f9c5e --- /dev/null +++ b/doc/lddd.1 @@ -0,0 +1,27 @@ +.Dd August 13, 2018 +.\" Patch this in our groff's mdoc.local +.ds volume-operating-system Arch Linux +.ds default-operating-system Arch Linux +.Os Arch Linux +.Dt lddd 1 +.Sh NAME +.Nm lddd +.Nd find broken library links on your machine +.Sh SYNOPSIS +.Nm lddd +.Sh DESCRIPTION +lddd scans all elf binaries in $PATH, /lib, /usr/local/lib or specified in +/etc/ld.so.conf.d/*.conf, looks for missing symbols and suggests which packages
I don't think that's right. lddd uses ldd, which AFAIK, only checks for linked files, not individual symbols.
+might need to be rebuild. The collected data is written to a temporary +directory created by mktemp. +.Sh SEE ALSO +.Xr ldd 1 +.Sh BUGS +Bugs? You must be kidding; there are no bugs in this software. But if we happen +to be wrong, send us an email with as much detail as possible to +arch-projects@archlinux.org +.Sh AUTHORS +.An Aaron Griffin <aaronmgriffin@gmail.com> +.An Pierre Schmitz <pierre@archlinux.de> +.An Lukas Fleischer <archlinux@cryptocrack.de> +.An Luke Shumaker <lukeshu@parabola.nu> -- 2.18.0
--- Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Makefile b/Makefile index 2d29c83..d132e1f 100644 --- a/Makefile +++ b/Makefile @@ -60,6 +60,9 @@ BASHCOMPLETION_LINKS = \ archco \ communityco +MAN1_PAGES = \ + lddd.1 + all: $(BINPROGS) bash_completion zsh_completion edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g" @@ -78,6 +81,7 @@ clean: install: install -dm0755 $(DESTDIR)$(PREFIX)/bin install -dm0755 $(DESTDIR)$(PREFIX)/share/devtools + install -dm0755 $(DESTDIR)$(PREFIX)/share/man/man1 install -m0755 ${BINPROGS} $(DESTDIR)$(PREFIX)/bin install -m0644 ${CONFIGFILES} $(DESTDIR)$(PREFIX)/share/devtools for l in ${COMMITPKG_LINKS}; do ln -sf commitpkg $(DESTDIR)$(PREFIX)/bin/$$l; done @@ -88,6 +92,7 @@ install: for l in ${BASHCOMPLETION_LINKS}; do ln -sf devtools $(DESTDIR)/usr/share/bash-completion/completions/$$l; done install -Dm0644 zsh_completion $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools ln -sf archco $(DESTDIR)$(PREFIX)/bin/communityco + for m in ${MAN1_PAGES}; do install -m644 doc/$$m $(DESTDIR)$(PREFIX)/share/man/man1/$$m; done uninstall: for f in ${BINPROGS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done -- 2.18.0
From: Luke Shumaker <lukeshu@parabola.nu> --- On Sat, 25 Aug 2018 07:14:34 -0400, Jelle van der Waa wrote:
This patch series intends to be an RFC for adding man pages for every tool provided by devtools. The first man page for lddd is written in mdoc and is lacking a way to reduce duplication of common headers such as BUGS/AUTHORS.
I've written more detailed usage-text for several of the commands. I haven't submitted it upstream to you before; because you don't have the `print`, `prose`, and `flag` localization & formatting functions that I used. However, feel free to steal some of the language I used :) checkpkg.in | 27 +++++++++++++++++++++++++-- find-libdeps.in | 28 ++++++++++++++++++++++++---- finddeps.in | 18 ++++++++++++------ lddd.in | 18 +++++++++++++++++- 4 files changed, 78 insertions(+), 13 deletions(-) diff --git a/checkpkg.in b/checkpkg.in index e0e1f83..cfec71e 100644 --- a/checkpkg.in +++ b/checkpkg.in @@ -3,7 +3,28 @@ shopt -s extglob -m4_include(lib/common.sh) +. "$(librelib messages)" + +usage() { + print 'Usage: %s [-h]' "${0##*/}" + print 'Compare a locally built a package with the one in the repositories.' + echo + prose 'This should be run from a directory containing a + PKGBUILD. It searches for a locally built package + corresponding to the PKGBUILD, and downloads the last + version of that package from the pacman repositories. + It then compares the list of .so files provided by each + version of the package. It does this for each part of + a split package.' +} + +if [[ $1 = '-h' ]]; then + usage + exit 0 +elif [[ $# -gt 0 ]]; then + usage >&2 + exit 1 +fi # Source makepkg.conf; fail if it is not found if [[ -r '/etc/makepkg.conf' ]]; then @@ -23,7 +44,9 @@ elif [[ -r "$HOME/.makepkg.conf" ]]; then fi if [[ ! -f PKGBUILD ]]; then - die 'This must be run in the directory of a built package.' + error 'This must be run in the directory of a built package.' + usage >&2 + exit 1 fi # shellcheck source=PKGBUILD.proto diff --git a/find-libdeps.in b/find-libdeps.in index 1fb1fdf..cb68237 100644 --- a/find-libdeps.in +++ b/find-libdeps.in @@ -1,7 +1,7 @@ #!/bin/bash # License: Unspecified -m4_include(lib/common.sh) +. "$(librelib messages)" set -e shopt -s extglob @@ -20,12 +20,32 @@ case $script_mode in *) die "Unknown mode %s" "$script_mode" ;; esac +usage() { + print "Usage: find-lib(deps|provides) [options] <package file|extracted package dir>" + print "Find library dependencies or provides of a package." + echo + prose 'Prints a list of library dependencies in the format:' + echo + print ' <soname>=<soversion>-<soarch>' + echo + prose "Where <soversion> is the shared library version, or + <soname> repeated if there is no version attached; and + <soarch> is the architecture of the library (either \`32\` + or \`64\`, based on the ELF Class)." + echo + print "Options:" + flag "--ignore-internal" "Ignore internal libraries; libraries + without a version attached" + flag "-h" "Show this message" +} if [[ -z $1 ]]; then - echo "${0##*/} [options] <package file|extracted package dir>" - echo "Options:" - echo " --ignore-internal ignore internal libraries" + usage >&2 exit 1 fi +if [[ $1 = '-h' ]]; then + usage + exit 0 +fi if [[ -d $1 ]]; then pushd "$1" >/dev/null diff --git a/finddeps.in b/finddeps.in index 2a085e5..5f89b55 100644 --- a/finddeps.in +++ b/finddeps.in @@ -4,18 +4,24 @@ # # License: Unspecified -m4_include(lib/common.sh) +. "$(librelib messages)" match=$1 +usage() { + print 'Usage: %s <depname>' "${0##*/}" + print 'Find packages that depend on a given depname.' + echo + prose 'Run this script from the top-level directory of your ABS tree.' +} if [[ -z $match ]]; then - echo 'Usage: finddeps <depname>' - echo '' - echo 'Find packages that depend on a given depname.' - echo 'Run this script from the top-level directory of your ABS tree.' - echo '' + usage >&2 exit 1 fi +if [[ $match = '-h' ]]; then + usage + exit 0 +fi find . -type d | while read -r d; do if [[ -f "$d/PKGBUILD" ]]; then diff --git a/lddd.in b/lddd.in index 908923b..4c6871c 100644 --- a/lddd.in +++ b/lddd.in @@ -4,7 +4,23 @@ # # License: Unspecified -m4_include(lib/common.sh) +. "$(librelib messages)" + +usage() { + print "Usage: %s [-h]" "${0##*/}" + print "Find broken library links on your machine." + echo + prose "Scans \$PATH and library directories for ELF files with + references to missing shared libraries." +} + +if [[ $1 = '-h' ]]; then + usage + exit 0 +elif [[ $# -gt 0 ]]; then + usage >&2 + exit 1 +fi ifs=$IFS IFS="${IFS}:" -- Happy hacking, ~ Luke Shumaker 2.18.0
participants (3)
-
Doug Newgard
-
Jelle van der Waa
-
Luke Shumaker