diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | .travis.yml | 28 | ||||
-rw-r--r-- | Makefile | 24 | ||||
-rw-r--r-- | arch-nspawn.in | 3 | ||||
-rw-r--r-- | archbuild.in | 10 | ||||
-rw-r--r-- | doc/asciidoc.conf | 37 | ||||
-rw-r--r-- | doc/checkpkg.1.asciidoc | 27 | ||||
-rw-r--r-- | doc/find-libprovides.1.asciidoc | 24 | ||||
-rw-r--r-- | doc/footer.asciidoc | 28 | ||||
-rw-r--r-- | doc/lddd.1.asciidoc | 25 | ||||
-rw-r--r-- | find-libdeps.in | 2 | ||||
-rw-r--r-- | makepkg-i486.conf | 9 | ||||
-rw-r--r-- | mkarchroot.in | 2 |
13 files changed, 212 insertions, 8 deletions
@@ -16,3 +16,4 @@ zsh_completion find-libdeps crossrepomove arch-nspawn +doc/*.1 diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..8fced6c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,28 @@ +language: shell +sudo: required + +services: +- docker + +arch: + packages: + - openssh + - subversion + - rsync + - arch-install-scripts + - git + - bzr + - mercurial + - diffutils + - asciidoc + - shellcheck + script: + - sudo pacman -Syu --noconfirm --needed "${CONFIG_PACKAGES[@]}" + - make PREFIX=/usr + - make PREFIX=/usr DESTDIR="$(mktemp -d)" install + - make check || true + - SHELLCHECK_OPTS="-S error" make check + +script: 'curl -s https://raw.githubusercontent.com/mikkeloscar/arch-travis/master/arch-travis.sh | bash' + +# vim: ft=yaml ts=2 sw=2 et: @@ -1,6 +1,7 @@ V=$(shell git describe --exact-match) PREFIX = /usr/local +MANDIR = $(PREFIX)/share/man BINPROGS = \ checkpkg \ @@ -28,6 +29,7 @@ CONFIGFILES = \ pacman-testing.conf \ pacman-staging-32.conf \ pacman-staging.conf \ + pacman-staging-with-build-support-32.conf \ pacman-multilib.conf \ pacman-multilib-testing.conf \ pacman-multilib-staging.conf \ @@ -79,7 +81,14 @@ BASHCOMPLETION_LINKS = \ archco \ communityco -all: $(BINPROGS) bash_completion zsh_completion + +MANS = \ + doc/lddd.1 \ + doc/checkpkg.1 + + +all: $(BINPROGS) bash_completion zsh_completion man +man: $(MANS) edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g" @@ -91,8 +100,13 @@ edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g" @chmod +x "$@" @bash -O extglob -n "$@" +$(MANS): doc/asciidoc.conf doc/footer.asciidoc + +doc/%: doc/%.asciidoc + a2x --no-xmllint --asciidoc-opts="-f doc/asciidoc.conf" -d manpage -f manpage -D doc $< + clean: - rm -f $(BINPROGS) bash_completion zsh_completion + rm -f $(BINPROGS) bash_completion zsh_completion $(MANS) install: install -dm0755 $(DESTDIR)$(PREFIX)/bin @@ -107,6 +121,9 @@ 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 manfile in $(MANS); do \ + install -Dm644 $$manfile -t $(DESTDIR)$(MANDIR)/man$${manfile##*.}; \ + done; uninstall: for f in ${BINPROGS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done @@ -118,6 +135,9 @@ uninstall: rm $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools rm -f $(DESTDIR)$(PREFIX)/bin/communityco rm -f $(DESTDIR)$(PREFIX)/bin/find-libprovides + for manfile in $(MANS); do \ + rm -f $(DESTDIR)$(MANDIR)/man$${manfile##*.}/$${manfile#doc/}; \ + done; dist: git archive --format=tar --prefix=devtools32-$(V)/ $(V) | gzip -9 > devtools32-$(V).tar.gz diff --git a/arch-nspawn.in b/arch-nspawn.in index 79cff1a..7132885 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -103,7 +103,8 @@ build_mount_args() { } copy_hostconf () { - cp -a /etc/pacman.d/gnupg "$working_dir/etc/pacman.d" + gpg --homedir "$working_dir"/etc/pacman.d/gnupg/ --no-permission-warning --quiet --batch --import --import-options import-local-sigs "$(pacman-conf GpgDir)"/pubring.gpg >/dev/null 2>&1 + pacman-key --gpgdir "$working_dir"/etc/pacman.d/gnupg/ --import-trustdb "$(pacman-conf GpgDir)" >/dev/null 2>&1 echo "Server = $host_mirror" | \ tee "$working_dir/etc/pacman.d/mirrorlist" > \ "$working_dir/etc/pacman.d/mirrorlist32" diff --git a/archbuild.in b/archbuild.in index 3dda51d..7ce0804 100644 --- a/archbuild.in +++ b/archbuild.in @@ -45,7 +45,15 @@ while getopts 'hcr:' arg; do esac done -check_root SOURCE_DATE_EPOCH +check_root SOURCE_DATE_EPOCH,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER,GNUPGHOME + +if [ "${arch}" = "x86_64" ]; then + cache_dir='' +else + mkdir -p '/var/cache/archbuild32' + cache_dir='-c/var/cache/archbuild32' + makechrootpkg_args+=('-d/var/cache/archbuild32:/var/cache/pacman/pkg') +fi if [ "${arch}" = "x86_64" ]; then cache_dir='' diff --git a/doc/asciidoc.conf b/doc/asciidoc.conf new file mode 100644 index 0000000..c675a20 --- /dev/null +++ b/doc/asciidoc.conf @@ -0,0 +1,37 @@ +## linkman: macro +# Inspired by/borrowed from the GIT source tree at Documentation/asciidoc.conf +# +# Usage: linkman:command[manpage-section] +# +# Note, {0} is the manpage section, while {target} is the command. +# +# Show man link as: <command>(<section>); if section is defined, else just show +# the command. + +[macros] +(?su)[\\]?(?P<name>linkman):(?P<target>\S*?)\[(?P<attrlist>.*?)\]= + +[attributes] +asterisk=* +plus=+ +caret=^ +startsb=[ +endsb=] +backslash=\ +tilde=~ +apostrophe=' +backtick=` +litdd=-- + +ifdef::backend-docbook[] +[linkman-inlinemacro] +{0%{target}} +{0#<citerefentry>} +{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>} +{0#</citerefentry>} +endif::backend-docbook[] + +ifdef::backend-xhtml11[] +[linkman-inlinemacro] +<a href="{target}.{0}.html">{target}{0?({0})}</a> +endif::backend-xhtml11[] diff --git a/doc/checkpkg.1.asciidoc b/doc/checkpkg.1.asciidoc new file mode 100644 index 0000000..96ec645 --- /dev/null +++ b/doc/checkpkg.1.asciidoc @@ -0,0 +1,27 @@ +checkpkg(1) +=========== + +Name +---- +checkpkg - Compare the current build package with the repository version + +Synopsis +-------- +checkpkg + +Description +----------- + +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 and +outputs if there are soname differences for the new package. A directory is +also created using mktemp with files containing a file list for both packages +and a library list for both packages. + +See Also +-------- + +linkman:find-libprovides[1] + +include::footer.asciidoc[] diff --git a/doc/find-libprovides.1.asciidoc b/doc/find-libprovides.1.asciidoc new file mode 100644 index 0000000..c6d527d --- /dev/null +++ b/doc/find-libprovides.1.asciidoc @@ -0,0 +1,24 @@ +find-libdeps(1) +=============== + +Name +---- +find-libdeps - Find soname dependencies for a package + +Synopsis +-------- +find-libdeps [options] [package] + +Description +----------- + +Finds soname dependencies of a package and prints out a list in the following +format '<soname>=<soversion>-<soarch>'. + +Options +------- + +*--ignore-internal*:: + Ignore internal libraries + +include::footer.asciidoc[] diff --git a/doc/footer.asciidoc b/doc/footer.asciidoc new file mode 100644 index 0000000..a092447 --- /dev/null +++ b/doc/footer.asciidoc @@ -0,0 +1,28 @@ + +Bugs +---- +Bugs can be reported on the bug tracker 'https://bugs.archlinux.org' in the Arch +Linux category and title prefixed with [devtools] or via +mailto:arch-projects@archlinux.org[]. + + +Authors +------- + +Maintainers: + +* Aaron Griffin <aaronmgriffin@gmail.com> +* Allan McRae <allan@archlinux.org> +* Bartłomiej Piotrowski <bpiotrowski@archlinux.org> +* Dan McGee <dan@archlinux.org> +* Dave Reisner <dreisner@archlinux.org> +* Evangelos Foutras <evangelos@foutrelis.com> +* Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> +* Levente Polyak <anthraxx@archlinux.org> +* Pierre Schmitz <pierre@archlinux.de> +* Sébastien Luttringer <seblu@seblu.net> +* Sven-Hendrik Haase <svenstaro@gmail.com> +* Thomas Bächler <thomas@archlinux.org> + +For additional contributors, use `git shortlog -s` on the devtools.git +repository. diff --git a/doc/lddd.1.asciidoc b/doc/lddd.1.asciidoc new file mode 100644 index 0000000..3a015d2 --- /dev/null +++ b/doc/lddd.1.asciidoc @@ -0,0 +1,25 @@ +lddd(1) +======= + +Name +---- +lddd - Find broken library links on your system + +Synopsis +-------- +lddd + +Description +----------- + +Scans '$PATH', '/lib', '/usr/lib', '/usr/local/lib' and +'/etc/ld.so.conf.d/*.conf' directories for ELF files with references to missing +shared libraries, and suggests which packages might need to be rebuilt. The +collected data is written to a temporary directory created by mktemp. + +See Also +-------- + +linkman:ldd[1] + +include::footer.asciidoc[] diff --git a/find-libdeps.in b/find-libdeps.in index 921e7af..7a3e6f5 100644 --- a/find-libdeps.in +++ b/find-libdeps.in @@ -46,7 +46,7 @@ process_sofile() { # extract the major version: 1 soversion="${sofile##*\.so\.}" if [[ "$soversion" = "$sofile" ]] && ((IGNORE_INTERNAL)); then - continue + return fi if ! in_array "${soname}=${soversion}-${soarch}" "${soobjects[@]}"; then # libfoo.so=1-64 diff --git a/makepkg-i486.conf b/makepkg-i486.conf index 9407ec5..acc8683 100644 --- a/makepkg-i486.conf +++ b/makepkg-i486.conf @@ -1,3 +1,6 @@ +#!/hint/bash +# shellcheck disable=2034 + # # /etc/makepkg.conf # @@ -37,9 +40,9 @@ CHOST="i486-pc-linux-gnu" # -march (or -mcpu) builds exclusively for an architecture # -mtune optimizes for an architecture, but builds for whole processor family CPPFLAGS="-D_FORTIFY_SOURCE=2" -CFLAGS="-march=i486 -mtune=generic -O2 -pipe -fstack-protector-strong" -CXXFLAGS="-march=i486 -mtune=generic -O2 -pipe -fstack-protector-strong" -LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro" +CFLAGS="-march=i486 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" +CXXFLAGS="-march=i486 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" +LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" #-- Make Flags: change this for DistCC/SMP systems #MAKEFLAGS="-j2" #-- Debugging flags diff --git a/mkarchroot.in b/mkarchroot.in index a916f2a..df995a8 100644 --- a/mkarchroot.in +++ b/mkarchroot.in @@ -93,6 +93,8 @@ echo "$CHROOT_VERSION" > "$working_dir/.arch-chroot" systemd-machine-id-setup --root="$working_dir" +pacman-key --gpgdir "$working_dir"/etc/pacman.d/gnupg --init + exec arch-nspawn \ ${nosetarch:+-s} \ ${pac_conf:+-C "$pac_conf"} \ |