parent
b879a9f1ef
commit
818d47029a
Binary file not shown.
Binary file not shown.
@ -0,0 +1,47 @@
|
|||||||
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
PYTHON_COMPAT=( python3_{8..10} )
|
||||||
|
inherit bash-completion-r1 distutils-r1
|
||||||
|
|
||||||
|
DESCRIPTION="Universal Command Line Environment for AWS"
|
||||||
|
HOMEPAGE="https://pypi.org/project/awscli/"
|
||||||
|
#SRC_URI="mirror://pypi/${P:0:1}/${PN}/${P}.tar.gz"
|
||||||
|
SRC_URI="https://github.com/aws/aws-cli/archive/${PV}.tar.gz -> ${P}.tar.gz"
|
||||||
|
S="${WORKDIR}/aws-cli-${PV}"
|
||||||
|
|
||||||
|
LICENSE="Apache-2.0"
|
||||||
|
SLOT="0"
|
||||||
|
KEYWORDS="~amd64 ~arm64 ~x86"
|
||||||
|
|
||||||
|
# botocore is x.(y+1).z
|
||||||
|
BOTOCORE_PV="$(ver_cut 1).$(( $(ver_cut 2) + 1)).$(ver_cut 3-)"
|
||||||
|
RDEPEND="
|
||||||
|
>=dev-python/botocore-${BOTOCORE_PV}[${PYTHON_USEDEP}]
|
||||||
|
dev-python/colorama[${PYTHON_USEDEP}]
|
||||||
|
dev-python/docutils[${PYTHON_USEDEP}]
|
||||||
|
dev-python/rsa[${PYTHON_USEDEP}]
|
||||||
|
>=dev-python/s3transfer-0.4.0[${PYTHON_USEDEP}]
|
||||||
|
dev-python/pyyaml[${PYTHON_USEDEP}]
|
||||||
|
"
|
||||||
|
|
||||||
|
distutils_enable_tests --install pytest
|
||||||
|
|
||||||
|
python_test() {
|
||||||
|
distutils_install_for_testing
|
||||||
|
# integration tests require AWS credentials and Internet access
|
||||||
|
epytest tests/{functional,unit}
|
||||||
|
}
|
||||||
|
|
||||||
|
python_install_all() {
|
||||||
|
newbashcomp bin/aws_bash_completer aws
|
||||||
|
|
||||||
|
insinto /usr/share/zsh/site-functions
|
||||||
|
newins bin/aws_zsh_completer.sh _aws
|
||||||
|
|
||||||
|
distutils-r1_python_install_all
|
||||||
|
|
||||||
|
rm "${ED}"/usr/bin/{aws.cmd,aws_bash_completer,aws_zsh_completer.sh} || die
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +1,2 @@
|
|||||||
DIST inform-6.33.1-b2.tar.gz 1822648 BLAKE2B e2ea59aa310b2f0122d1b834d98b0b827b945a8031a3e61c70bf502f7a746f43b81035cc22805ab351abf6f9df9ba898ea6ea83da863ef9aa313840ed974d725 SHA512 12cc10b7dae4118600a4d19d0aa44c3a7c93dfc8aa17bd56df7b9237f21df0ae99db6840eefaa5b11ff346369c6f6f2f128167b3479c8f540c29e3e36666c368
|
DIST inform-6.33.1-b2.tar.gz 1822648 BLAKE2B e2ea59aa310b2f0122d1b834d98b0b827b945a8031a3e61c70bf502f7a746f43b81035cc22805ab351abf6f9df9ba898ea6ea83da863ef9aa313840ed974d725 SHA512 12cc10b7dae4118600a4d19d0aa44c3a7c93dfc8aa17bd56df7b9237f21df0ae99db6840eefaa5b11ff346369c6f6f2f128167b3479c8f540c29e3e36666c368
|
||||||
|
DIST inform-6.35-r4.tar.gz 2307089 BLAKE2B 9864324fe29fe920e226a239f92f327678ed796e5f5a27b3814f62b1158673b2c14d6771abd7af6f9743bb0949c4c6de75a6b591337b0e99196f8ab4d9f0c9f7 SHA512 c30c7067786845e0c77783f7a03a151ae1238978f648f6036fe9535a33662c76abc11db21bab00fe60c4742cd4da46e4674081711b9b3852520bfb14c1b068a6
|
||||||
|
@ -1,25 +1,31 @@
|
|||||||
# Copyright 1999-2015 Gentoo Foundation
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
EAPI=5
|
EAPI=8
|
||||||
MY_P=${P/_p/-b}
|
|
||||||
DESCRIPTION="design system for interactive fiction"
|
MY_P="${P/_p/-b}"
|
||||||
HOMEPAGE="http://www.inform-fiction.org/"
|
|
||||||
SRC_URI="http://mirror.ifarchive.org/if-archive/infocom/compilers/inform6/source/${MY_P}.tar.gz"
|
DESCRIPTION="Design system for interactive fiction"
|
||||||
|
HOMEPAGE="https://www.inform-fiction.org/"
|
||||||
|
SRC_URI="mirror://gentoo/${MY_P}.tar.gz"
|
||||||
|
S="${WORKDIR}/${MY_P}"
|
||||||
|
|
||||||
LICENSE="Artistic-2 Inform"
|
LICENSE="Artistic-2 Inform"
|
||||||
SLOT="0"
|
SLOT="0"
|
||||||
KEYWORDS="amd64 ~ppc ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos"
|
KEYWORDS="amd64 ~ppc ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos"
|
||||||
IUSE="emacs"
|
IUSE="emacs"
|
||||||
PDEPEND="emacs? ( app-emacs/inform-mode )"
|
|
||||||
|
|
||||||
S=${WORKDIR}/${MY_P}
|
PDEPEND="emacs? ( app-emacs/inform-mode )"
|
||||||
|
|
||||||
src_install() {
|
src_install() {
|
||||||
default
|
default
|
||||||
|
|
||||||
dodoc VERSION
|
dodoc VERSION
|
||||||
|
|
||||||
docinto tutorial
|
docinto tutorial
|
||||||
dodoc tutor/README tutor/*.inf
|
dodoc tutor/README tutor/*.inf
|
||||||
mv "${ED}"/usr/share/${PN}/manual "${ED}"/usr/share/doc/${PF}/html
|
|
||||||
rmdir "${ED}"/usr/share/inform/{include,module}
|
mv "${ED}"/usr/share/{${PN}/manual,doc/${PF}/html} || die
|
||||||
|
rmdir "${ED}"/usr/share/inform/{include,module} || die
|
||||||
|
rm "${ED}"/usr/share/inform/6.33b2/include/SmartCantGo.h || die #723062
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
inherit toolchain-funcs
|
||||||
|
|
||||||
|
MY_P="${P/_p/-r}"
|
||||||
|
|
||||||
|
DESCRIPTION="Design system for interactive fiction"
|
||||||
|
HOMEPAGE="https://www.inform-fiction.org/"
|
||||||
|
SRC_URI="https://ifarchive.org/if-archive/infocom/compilers/inform6/source/${MY_P}.tar.gz"
|
||||||
|
S="${WORKDIR}/${MY_P}"
|
||||||
|
|
||||||
|
LICENSE="Artistic-2 Inform"
|
||||||
|
SLOT="0"
|
||||||
|
KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
|
||||||
|
IUSE="emacs tools"
|
||||||
|
# non-interactive tests use ruby, seem broken, and return true even on failure
|
||||||
|
RESTRICT="test"
|
||||||
|
|
||||||
|
RDEPEND="
|
||||||
|
tools? (
|
||||||
|
dev-lang/perl
|
||||||
|
dev-perl/DateTime
|
||||||
|
)"
|
||||||
|
PDEPEND="emacs? ( app-emacs/inform-mode )"
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
tc-export CC
|
||||||
|
|
||||||
|
emake PREFIX="${EPREFIX}"/usr OPTS="${CFLAGS} ${CPPFLAGS}"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
local emakeargs=(
|
||||||
|
PREFIX="${ED}"/usr
|
||||||
|
REAL_PREFIX="${EPREFIX}"/usr
|
||||||
|
MANDIR="${ED}"/usr/share/man/man1
|
||||||
|
PUNYDOCS="${ED}"/usr/share/doc/${PF}/punyinform
|
||||||
|
PUNYTESTS="${T}" # don't install tests
|
||||||
|
)
|
||||||
|
|
||||||
|
emake -j1 "${emakeargs[@]}" install
|
||||||
|
|
||||||
|
dodoc AUTHORS NEWS README.md VERSION docs/README*
|
||||||
|
|
||||||
|
use tools || rm "${ED}"/usr/bin/*blorb* || die
|
||||||
|
|
||||||
|
find "${ED}"/usr/share/doc \( -name Makefile -o -name 'custom.*' \) -delete || die
|
||||||
|
}
|
@ -1,44 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
||||||
<pkgmetadata>
|
<pkgmetadata>
|
||||||
<maintainer type="project">
|
<maintainer type="project">
|
||||||
<email>games@gentoo.org</email>
|
<email>games@gentoo.org</email>
|
||||||
<name>Gentoo Games Project</name>
|
<name>Gentoo Games Project</name>
|
||||||
</maintainer>
|
</maintainer>
|
||||||
<longdescription>
|
<use>
|
||||||
A Design System for Interactive Fiction
|
<flag name="tools">Install blorbtools for manipulating Blorb files</flag>
|
||||||
|
</use>
|
||||||
Just as film might be called a form of literature which needs technology to be
|
<upstream>
|
||||||
read (a cinema projector or a television set) and to be written (a camera),
|
<remote-id type="gitlab">DavidGriffith/inform6unix</remote-id>
|
||||||
interactive fiction is read with the aid of a computer. On this analogy, Inform
|
</upstream>
|
||||||
is a piece of software enabling any modern computer to be used as the camera, or
|
|
||||||
the film studio, to create works of interactive fiction. To read the resulting
|
|
||||||
works, you and your audience need only a simpler piece of software called an
|
|
||||||
interpreter.
|
|
||||||
|
|
||||||
In this genre of fiction, the computer describes a world and the player types
|
|
||||||
instructions like touch the mirror for the protagonist character to follow; the
|
|
||||||
computer responds by describing the result, and so on until a story is told.
|
|
||||||
|
|
||||||
Interactive fiction emerged from the old-style "adventure game" (c.1975) and
|
|
||||||
tends to be a playful genre, which must sometimes be teased out as though it were
|
|
||||||
a cryptic crossword puzzle. But this doesn't prevent it from being an artistic
|
|
||||||
medium, which has attracted (for instance) the former U.S. Poet Laureate, Robert
|
|
||||||
Pinsky, and the novelists Thomas M. Disch and Michael Crichton. An interactive
|
|
||||||
fiction is not a child's puzzle-book, with a maze on one page and a rebus on the
|
|
||||||
next, but nor is it a novel. Neither pure interaction nor pure fiction, it lies
|
|
||||||
in a strange and still largely unexplored land in between.
|
|
||||||
|
|
||||||
Since its invention (by Graham Nelson in 1993), Inform has been used to design
|
|
||||||
some hundreds of works of interactive fiction, in eight languages, reviewed in
|
|
||||||
periodicals ranging in specialisation from XYZZYnews to The New York Times. It
|
|
||||||
accounts for around ten thousand postings per year to Internet newsgroups.
|
|
||||||
Commercially, Inform has been used as a multimedia games prototyping tool.
|
|
||||||
Academically, it has turned up in syllabuses and seminars from computer science
|
|
||||||
to theoretical architecture, and appears in books such as Cybertext: Perspectives
|
|
||||||
on Ergodic Literature (E. J. Aarseth, Johns Hopkins Press, 1997). Having started
|
|
||||||
as a revival of the then-disused Infocom adventure game format, the Z-Machine,
|
|
||||||
Inform came full circle when it produced Infocom's only text game of the 1990s:
|
|
||||||
Zork: The Undiscovered Underground, by Mike Berlyn and Marc Blank.
|
|
||||||
</longdescription>
|
|
||||||
</pkgmetadata>
|
</pkgmetadata>
|
||||||
|
@ -0,0 +1,187 @@
|
|||||||
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=7
|
||||||
|
|
||||||
|
inherit bash-completion-r1 prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal
|
||||||
|
|
||||||
|
MY_P="rust-${PV}"
|
||||||
|
|
||||||
|
DESCRIPTION="Systems programming language from Mozilla"
|
||||||
|
HOMEPAGE="https://www.rust-lang.org/"
|
||||||
|
SRC_URI="$(rust_all_arch_uris ${MY_P})"
|
||||||
|
|
||||||
|
LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
|
||||||
|
SLOT="stable"
|
||||||
|
KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
|
||||||
|
IUSE="clippy cpu_flags_x86_sse2 doc prefix rls rustfmt"
|
||||||
|
|
||||||
|
DEPEND=""
|
||||||
|
RDEPEND=">=app-eselect/eselect-rust-20190311"
|
||||||
|
BDEPEND="
|
||||||
|
prefix? ( dev-util/patchelf )
|
||||||
|
verify-sig? ( app-crypt/openpgp-keys-rust )
|
||||||
|
"
|
||||||
|
|
||||||
|
REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )"
|
||||||
|
|
||||||
|
QA_PREBUILT="
|
||||||
|
opt/${P}/bin/.*
|
||||||
|
opt/${P}/lib/.*.so
|
||||||
|
opt/${P}/libexec/.*
|
||||||
|
opt/${P}/lib/rustlib/.*/bin/.*
|
||||||
|
opt/${P}/lib/rustlib/.*/lib/.*
|
||||||
|
"
|
||||||
|
|
||||||
|
VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
|
||||||
|
|
||||||
|
pkg_pretend() {
|
||||||
|
if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then
|
||||||
|
die "${CHOST} is not supported by upstream Rust. You must use a hard float version."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_unpack() {
|
||||||
|
verify-sig_src_unpack
|
||||||
|
mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die
|
||||||
|
}
|
||||||
|
|
||||||
|
patchelf_for_bin() {
|
||||||
|
local filetype=$(file -b ${1})
|
||||||
|
if [[ ${filetype} == *ELF*interpreter* ]]; then
|
||||||
|
einfo "${1}'s interpreter changed"
|
||||||
|
patchelf ${1} --set-interpreter ${2} || die
|
||||||
|
elif [[ ${filetype} == *script* ]]; then
|
||||||
|
hprefixify ${1}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
multilib_src_install() {
|
||||||
|
if multilib_is_native_abi; then
|
||||||
|
|
||||||
|
# start native abi install
|
||||||
|
pushd "${S}" >/dev/null || die
|
||||||
|
local analysis std
|
||||||
|
analysis="$(grep 'analysis' ./components)"
|
||||||
|
std="$(grep 'std' ./components)"
|
||||||
|
local components="rustc,cargo,${std}"
|
||||||
|
use doc && components="${components},rust-docs"
|
||||||
|
use clippy && components="${components},clippy-preview"
|
||||||
|
use rls && components="${components},rls-preview,${analysis}"
|
||||||
|
use rustfmt && components="${components},rustfmt-preview"
|
||||||
|
./install.sh \
|
||||||
|
--components="${components}" \
|
||||||
|
--disable-verify \
|
||||||
|
--prefix="${ED}/opt/${P}" \
|
||||||
|
--mandir="${ED}/opt/${P}/man" \
|
||||||
|
--disable-ldconfig \
|
||||||
|
|| die
|
||||||
|
|
||||||
|
if use prefix; then
|
||||||
|
local interpreter=$(patchelf --print-interpreter ${EPREFIX}/bin/bash)
|
||||||
|
ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin"
|
||||||
|
find "${ED}/opt/${P}/bin" -type f -print0 | \
|
||||||
|
while IFS= read -r -d '' filename; do
|
||||||
|
patchelf_for_bin ${filename} ${interpreter} \; || die
|
||||||
|
done
|
||||||
|
eend $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
local symlinks=(
|
||||||
|
cargo
|
||||||
|
rustc
|
||||||
|
rustdoc
|
||||||
|
rust-gdb
|
||||||
|
rust-gdbgui
|
||||||
|
rust-lldb
|
||||||
|
)
|
||||||
|
|
||||||
|
use clippy && symlinks+=( clippy-driver cargo-clippy )
|
||||||
|
use rls && symlinks+=( rls )
|
||||||
|
use rustfmt && symlinks+=( rustfmt cargo-fmt )
|
||||||
|
|
||||||
|
einfo "installing eselect-rust symlinks and paths"
|
||||||
|
local i
|
||||||
|
for i in "${symlinks[@]}"; do
|
||||||
|
# we need realpath on /usr/bin/* symlink return version-appended binary path.
|
||||||
|
# so /usr/bin/rustc should point to /opt/rust-bin-<ver>/bin/rustc-<ver>
|
||||||
|
local ver_i="${i}-bin-${PV}"
|
||||||
|
ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}"
|
||||||
|
dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# symlinks to switch components to active rust in eselect
|
||||||
|
dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}"
|
||||||
|
dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}"
|
||||||
|
dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}"
|
||||||
|
dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}"
|
||||||
|
|
||||||
|
# musl logic can be improved a bit, but fine as is for now
|
||||||
|
cat <<-_EOF_ > "${T}/50${P}"
|
||||||
|
LDPATH="${EPREFIX}/usr/lib/rust/lib"
|
||||||
|
MANPATH="${EPREFIX}/usr/lib/rust/man"
|
||||||
|
$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
|
||||||
|
$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
|
||||||
|
_EOF_
|
||||||
|
doenvd "${T}/50${P}"
|
||||||
|
|
||||||
|
# note: eselect-rust adds EROOT to all paths below
|
||||||
|
cat <<-_EOF_ > "${T}/provider-${P}"
|
||||||
|
/usr/bin/cargo
|
||||||
|
/usr/bin/rustdoc
|
||||||
|
/usr/bin/rust-gdb
|
||||||
|
/usr/bin/rust-gdbgui
|
||||||
|
/usr/bin/rust-lldb
|
||||||
|
/usr/lib/rustlib
|
||||||
|
/usr/lib/rust/lib
|
||||||
|
/usr/lib/rust/man
|
||||||
|
/usr/share/doc/rust
|
||||||
|
_EOF_
|
||||||
|
|
||||||
|
if use clippy; then
|
||||||
|
echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
|
||||||
|
echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
|
||||||
|
fi
|
||||||
|
if use rls; then
|
||||||
|
echo /usr/bin/rls >> "${T}/provider-${P}"
|
||||||
|
fi
|
||||||
|
if use rustfmt; then
|
||||||
|
echo /usr/bin/rustfmt >> "${T}/provider-${P}"
|
||||||
|
echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
insinto /etc/env.d/rust
|
||||||
|
doins "${T}/provider-${P}"
|
||||||
|
popd >/dev/null || die
|
||||||
|
#end native abi install
|
||||||
|
|
||||||
|
else
|
||||||
|
local rust_target
|
||||||
|
rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))"
|
||||||
|
dodir "/opt/${P}/lib/rustlib"
|
||||||
|
cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\
|
||||||
|
"${ED}/opt/${P}/lib/rustlib" || die
|
||||||
|
fi
|
||||||
|
|
||||||
|
# BUG: installs x86_64 binary on other arches
|
||||||
|
rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
eselect rust update
|
||||||
|
|
||||||
|
elog "Rust installs a helper script for calling GDB now,"
|
||||||
|
elog "for your convenience it is installed under /usr/bin/rust-gdb-bin-${PV}."
|
||||||
|
|
||||||
|
if has_version app-editors/emacs; then
|
||||||
|
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||||
|
elog "install app-vim/rust-vim to get vim support for rust."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postrm() {
|
||||||
|
eselect rust cleanup
|
||||||
|
}
|
@ -0,0 +1,683 @@
|
|||||||
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=7
|
||||||
|
|
||||||
|
PYTHON_COMPAT=( python3_{7..10} )
|
||||||
|
|
||||||
|
inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
|
||||||
|
multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
|
||||||
|
|
||||||
|
if [[ ${PV} = *beta* ]]; then
|
||||||
|
betaver=${PV//*beta}
|
||||||
|
BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
|
||||||
|
MY_P="rustc-beta"
|
||||||
|
SLOT="beta/${PV}"
|
||||||
|
SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
|
||||||
|
else
|
||||||
|
ABI_VER="$(ver_cut 1-2)"
|
||||||
|
SLOT="stable/${ABI_VER}"
|
||||||
|
MY_P="rustc-${PV}"
|
||||||
|
SRC="${MY_P}-src.tar.xz"
|
||||||
|
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
|
||||||
|
fi
|
||||||
|
|
||||||
|
RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
|
||||||
|
|
||||||
|
DESCRIPTION="Systems programming language from Mozilla"
|
||||||
|
HOMEPAGE="https://www.rust-lang.org/"
|
||||||
|
|
||||||
|
SRC_URI="
|
||||||
|
https://static.rust-lang.org/dist/${SRC}
|
||||||
|
verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
|
||||||
|
!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
|
||||||
|
"
|
||||||
|
|
||||||
|
# keep in sync with llvm ebuild of the same version as bundled one.
|
||||||
|
ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
|
||||||
|
NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore )
|
||||||
|
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
|
||||||
|
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
|
||||||
|
|
||||||
|
LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
|
||||||
|
|
||||||
|
IUSE="clippy cpu_flags_x86_sse2 debug doc miri nightly parallel-compiler rls rustfmt system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||||
|
|
||||||
|
# Please keep the LLVM dependency block separate. Since LLVM is slotted,
|
||||||
|
# we need to *really* make sure we're not pulling more than one slot
|
||||||
|
# simultaneously.
|
||||||
|
|
||||||
|
# How to use it:
|
||||||
|
# List all the working slots in LLVM_VALID_SLOTS, newest first.
|
||||||
|
LLVM_VALID_SLOTS=( 13 )
|
||||||
|
LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
|
||||||
|
|
||||||
|
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
|
||||||
|
# (-) usedep needed because we may build with older llvm without that target
|
||||||
|
LLVM_DEPEND="|| ( "
|
||||||
|
for _s in ${LLVM_VALID_SLOTS[@]}; do
|
||||||
|
LLVM_DEPEND+=" ( "
|
||||||
|
for _x in ${ALL_LLVM_TARGETS[@]}; do
|
||||||
|
LLVM_DEPEND+="
|
||||||
|
${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
|
||||||
|
done
|
||||||
|
LLVM_DEPEND+=" )"
|
||||||
|
done
|
||||||
|
unset _s _x
|
||||||
|
LLVM_DEPEND+=" )
|
||||||
|
<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
|
||||||
|
wasm? ( sys-devel/lld )
|
||||||
|
"
|
||||||
|
|
||||||
|
# to bootstrap we need at least exactly previous version, or same.
|
||||||
|
# most of the time previous versions fail to bootstrap with newer
|
||||||
|
# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
|
||||||
|
# but it fails to bootstrap with 1.48.x
|
||||||
|
# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.txt
|
||||||
|
RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
|
||||||
|
RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
|
||||||
|
BOOTSTRAP_DEPEND="||
|
||||||
|
(
|
||||||
|
=dev-lang/rust-"${RUST_DEP_PREV}"
|
||||||
|
=dev-lang/rust-bin-"${RUST_DEP_PREV}"
|
||||||
|
=dev-lang/rust-"${RUST_DEP_CURR}"
|
||||||
|
=dev-lang/rust-bin-"${RUST_DEP_CURR}"
|
||||||
|
)
|
||||||
|
"
|
||||||
|
|
||||||
|
BDEPEND="${PYTHON_DEPS}
|
||||||
|
app-eselect/eselect-rust
|
||||||
|
|| (
|
||||||
|
>=sys-devel/gcc-4.7
|
||||||
|
>=sys-devel/clang-3.5
|
||||||
|
)
|
||||||
|
system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
|
||||||
|
!system-llvm? (
|
||||||
|
>=dev-util/cmake-3.13.4
|
||||||
|
dev-util/ninja
|
||||||
|
)
|
||||||
|
test? ( sys-devel/gdb )
|
||||||
|
verify-sig? ( app-crypt/openpgp-keys-rust )
|
||||||
|
"
|
||||||
|
|
||||||
|
DEPEND="
|
||||||
|
>=app-arch/xz-utils-5.2
|
||||||
|
net-misc/curl:=[http2,ssl]
|
||||||
|
sys-libs/zlib:=
|
||||||
|
dev-libs/openssl:0=
|
||||||
|
elibc_musl? ( sys-libs/libunwind:= )
|
||||||
|
system-llvm? ( ${LLVM_DEPEND} )
|
||||||
|
"
|
||||||
|
|
||||||
|
# we need to block older versions due to layout changes.
|
||||||
|
RDEPEND="${DEPEND}
|
||||||
|
app-eselect/eselect-rust
|
||||||
|
!<dev-lang/rust-1.47.0-r1
|
||||||
|
!<dev-lang/rust-bin-1.47.0-r1
|
||||||
|
"
|
||||||
|
|
||||||
|
REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
|
||||||
|
miri? ( nightly )
|
||||||
|
parallel-compiler? ( nightly )
|
||||||
|
test? ( ${ALL_LLVM_TARGETS[*]} )
|
||||||
|
wasm? ( llvm_targets_WebAssembly )
|
||||||
|
x86? ( cpu_flags_x86_sse2 )
|
||||||
|
"
|
||||||
|
|
||||||
|
# we don't use cmake.eclass, but can get a warnings
|
||||||
|
CMAKE_WARN_UNUSED_CLI=no
|
||||||
|
|
||||||
|
QA_FLAGS_IGNORED="
|
||||||
|
usr/lib/${PN}/${PV}/bin/.*
|
||||||
|
usr/lib/${PN}/${PV}/libexec/.*
|
||||||
|
usr/lib/${PN}/${PV}/lib/lib.*.so
|
||||||
|
usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
|
||||||
|
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
|
||||||
|
"
|
||||||
|
|
||||||
|
QA_SONAME="
|
||||||
|
usr/lib/${PN}/${PV}/lib/lib.*.so.*
|
||||||
|
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
|
||||||
|
"
|
||||||
|
|
||||||
|
# An rmeta file is custom binary format that contains the metadata for the crate.
|
||||||
|
# rmeta files do not support linking, since they do not contain compiled object files.
|
||||||
|
# so we can safely silence the warning for this QA check.
|
||||||
|
QA_WX_LOAD="usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/.*rmeta"
|
||||||
|
QA_EXECSTACK="${QA_WX_LOAD}"
|
||||||
|
|
||||||
|
# causes double bootstrap
|
||||||
|
RESTRICT="test"
|
||||||
|
|
||||||
|
VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
|
||||||
|
|
||||||
|
PATCHES=(
|
||||||
|
"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
|
||||||
|
"${FILESDIR}"/1.49.0-gentoo-musl-target-specs.patch
|
||||||
|
)
|
||||||
|
|
||||||
|
S="${WORKDIR}/${MY_P}-src"
|
||||||
|
|
||||||
|
toml_usex() {
|
||||||
|
usex "${1}" true false
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap_rust_version_check() {
|
||||||
|
# never call from pkg_pretend. eselect-rust may be not installed yet.
|
||||||
|
[[ ${MERGE_TYPE} == binary ]] && return
|
||||||
|
local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
|
||||||
|
local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
|
||||||
|
local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
|
||||||
|
rustc_version=${rustc_version[0]#rust-bin-}
|
||||||
|
rustc_version=${rustc_version#rust-}
|
||||||
|
|
||||||
|
[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
|
||||||
|
|
||||||
|
if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
|
||||||
|
eerror "Rust >=${rustc_wanted} is required"
|
||||||
|
eerror "please run 'eselect rust' and set correct rust version"
|
||||||
|
die "selected rust version is too old"
|
||||||
|
elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
|
||||||
|
eerror "Rust <${rustc_toonew} is required"
|
||||||
|
eerror "please run 'eselect rust' and set correct rust version"
|
||||||
|
die "selected rust version is too new"
|
||||||
|
else
|
||||||
|
einfo "Using rust ${rustc_version} to build"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pre_build_checks() {
|
||||||
|
local M=4096
|
||||||
|
# multiply requirements by 1.5 if we are doing x86-multilib
|
||||||
|
if use amd64; then
|
||||||
|
M=$(( $(usex abi_x86_32 15 10) * ${M} / 10 ))
|
||||||
|
fi
|
||||||
|
M=$(( $(usex clippy 128 0) + ${M} ))
|
||||||
|
M=$(( $(usex miri 128 0) + ${M} ))
|
||||||
|
M=$(( $(usex rls 512 0) + ${M} ))
|
||||||
|
M=$(( $(usex rustfmt 256 0) + ${M} ))
|
||||||
|
# add 2G if we compile llvm and 256M per llvm_target
|
||||||
|
if ! use system-llvm; then
|
||||||
|
M=$(( 2048 + ${M} ))
|
||||||
|
local ltarget
|
||||||
|
for ltarget in ${ALL_LLVM_TARGETS[@]}; do
|
||||||
|
M=$(( $(usex ${ltarget} 256 0) + ${M} ))
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
M=$(( $(usex wasm 256 0) + ${M} ))
|
||||||
|
M=$(( $(usex debug 2 1) * ${M} ))
|
||||||
|
eshopts_push -s extglob
|
||||||
|
if is-flagq '-g?(gdb)?([1-9])'; then
|
||||||
|
M=$(( 15 * ${M} / 10 ))
|
||||||
|
fi
|
||||||
|
eshopts_pop
|
||||||
|
M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
|
||||||
|
M=$(( $(usex doc 256 0) + ${M} ))
|
||||||
|
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
|
||||||
|
}
|
||||||
|
|
||||||
|
llvm_check_deps() {
|
||||||
|
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_pretend() {
|
||||||
|
pre_build_checks
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_setup() {
|
||||||
|
pre_build_checks
|
||||||
|
python-any-r1_pkg_setup
|
||||||
|
|
||||||
|
export LIBGIT2_NO_PKG_CONFIG=1 #749381
|
||||||
|
|
||||||
|
use system-bootstrap && bootstrap_rust_version_check
|
||||||
|
|
||||||
|
if use system-llvm; then
|
||||||
|
llvm_pkg_setup
|
||||||
|
|
||||||
|
local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||||
|
export LLVM_LINK_SHARED=1
|
||||||
|
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
if ! use system-bootstrap; then
|
||||||
|
local rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||||
|
local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
|
||||||
|
|
||||||
|
"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
|
||||||
|
--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
|
||||||
|
fi
|
||||||
|
|
||||||
|
default
|
||||||
|
}
|
||||||
|
|
||||||
|
src_configure() {
|
||||||
|
local rust_target="" rust_targets="" arch_cflags
|
||||||
|
|
||||||
|
# Collect rust target names to compile standard libs for all ABIs.
|
||||||
|
for v in $(multilib_get_enabled_abi_pairs); do
|
||||||
|
rust_targets="${rust_targets},\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
|
||||||
|
done
|
||||||
|
if use wasm; then
|
||||||
|
rust_targets="${rust_targets},\"wasm32-unknown-unknown\""
|
||||||
|
if use system-llvm; then
|
||||||
|
# un-hardcode rust-lld linker for this target
|
||||||
|
# https://bugs.gentoo.org/715348
|
||||||
|
sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
rust_targets="${rust_targets#,}"
|
||||||
|
|
||||||
|
local tools="\"cargo\","
|
||||||
|
if use clippy; then
|
||||||
|
tools="\"clippy\",$tools"
|
||||||
|
fi
|
||||||
|
if use miri; then
|
||||||
|
tools="\"miri\",$tools"
|
||||||
|
fi
|
||||||
|
if use rls; then
|
||||||
|
tools="\"rls\",\"analysis\",\"src\",$tools"
|
||||||
|
fi
|
||||||
|
if use rustfmt; then
|
||||||
|
tools="\"rustfmt\",$tools"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local rust_stage0_root
|
||||||
|
if use system-bootstrap; then
|
||||||
|
local printsysroot
|
||||||
|
printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
|
||||||
|
rust_stage0_root="${printsysroot}"
|
||||||
|
else
|
||||||
|
rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||||
|
fi
|
||||||
|
# in case of prefix it will be already prefixed, as --print sysroot returns full path
|
||||||
|
[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
|
||||||
|
|
||||||
|
rust_target="$(rust_abi)"
|
||||||
|
|
||||||
|
cat <<- _EOF_ > "${S}"/config.toml
|
||||||
|
changelog-seen = 2
|
||||||
|
[llvm]
|
||||||
|
download-ci-llvm = false
|
||||||
|
optimize = $(toml_usex !debug)
|
||||||
|
release-debuginfo = $(toml_usex debug)
|
||||||
|
assertions = $(toml_usex debug)
|
||||||
|
ninja = true
|
||||||
|
targets = "${LLVM_TARGETS// /;}"
|
||||||
|
experimental-targets = ""
|
||||||
|
link-shared = $(toml_usex system-llvm)
|
||||||
|
[build]
|
||||||
|
build-stage = 2
|
||||||
|
test-stage = 2
|
||||||
|
doc-stage = 2
|
||||||
|
build = "${rust_target}"
|
||||||
|
host = ["${rust_target}"]
|
||||||
|
target = [${rust_targets}]
|
||||||
|
cargo = "${rust_stage0_root}/bin/cargo"
|
||||||
|
rustc = "${rust_stage0_root}/bin/rustc"
|
||||||
|
rustfmt = "${rust_stage0_root}/bin/rustfmt"
|
||||||
|
docs = $(toml_usex doc)
|
||||||
|
compiler-docs = false
|
||||||
|
submodules = false
|
||||||
|
python = "${EPYTHON}"
|
||||||
|
locked-deps = true
|
||||||
|
vendor = true
|
||||||
|
extended = true
|
||||||
|
tools = [${tools}]
|
||||||
|
verbose = 2
|
||||||
|
sanitizers = false
|
||||||
|
profiler = false
|
||||||
|
cargo-native-static = false
|
||||||
|
[install]
|
||||||
|
prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
|
||||||
|
sysconfdir = "etc"
|
||||||
|
docdir = "share/doc/rust"
|
||||||
|
bindir = "bin"
|
||||||
|
libdir = "lib"
|
||||||
|
mandir = "share/man"
|
||||||
|
[rust]
|
||||||
|
# https://github.com/rust-lang/rust/issues/54872
|
||||||
|
codegen-units-std = 1
|
||||||
|
optimize = true
|
||||||
|
debug = $(toml_usex debug)
|
||||||
|
debug-assertions = $(toml_usex debug)
|
||||||
|
debug-assertions-std = $(toml_usex debug)
|
||||||
|
debuginfo-level = $(usex debug 2 0)
|
||||||
|
debuginfo-level-rustc = $(usex debug 2 0)
|
||||||
|
debuginfo-level-std = $(usex debug 2 0)
|
||||||
|
debuginfo-level-tools = $(usex debug 2 0)
|
||||||
|
debuginfo-level-tests = 0
|
||||||
|
backtrace = true
|
||||||
|
incremental = false
|
||||||
|
default-linker = "$(tc-getCC)"
|
||||||
|
parallel-compiler = $(toml_usex parallel-compiler)
|
||||||
|
channel = "$(usex nightly nightly stable)"
|
||||||
|
description = "gentoo"
|
||||||
|
rpath = false
|
||||||
|
verbose-tests = true
|
||||||
|
optimize-tests = $(toml_usex !debug)
|
||||||
|
codegen-tests = true
|
||||||
|
dist-src = false
|
||||||
|
remap-debuginfo = true
|
||||||
|
lld = $(usex system-llvm false $(toml_usex wasm))
|
||||||
|
# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
|
||||||
|
# https://github.com/rust-lang/rust/issues/74976
|
||||||
|
# https://github.com/rust-lang/rust/issues/76526
|
||||||
|
deny-warnings = $(usex wasm $(usex doc false true) true)
|
||||||
|
backtrace-on-ice = true
|
||||||
|
jemalloc = false
|
||||||
|
[dist]
|
||||||
|
src-tarball = false
|
||||||
|
compression-formats = ["gz"]
|
||||||
|
_EOF_
|
||||||
|
|
||||||
|
for v in $(multilib_get_enabled_abi_pairs); do
|
||||||
|
rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
|
||||||
|
arch_cflags="$(get_abi_CFLAGS ${v##*.})"
|
||||||
|
|
||||||
|
cat <<- _EOF_ >> "${S}"/config.env
|
||||||
|
CFLAGS_${rust_target}=${arch_cflags}
|
||||||
|
_EOF_
|
||||||
|
|
||||||
|
cat <<- _EOF_ >> "${S}"/config.toml
|
||||||
|
[target.${rust_target}]
|
||||||
|
cc = "$(tc-getBUILD_CC)"
|
||||||
|
cxx = "$(tc-getBUILD_CXX)"
|
||||||
|
linker = "$(tc-getCC)"
|
||||||
|
ar = "$(tc-getAR)"
|
||||||
|
_EOF_
|
||||||
|
# librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
|
||||||
|
if use elibc_musl; then
|
||||||
|
cat <<- _EOF_ >> "${S}"/config.toml
|
||||||
|
crt-static = false
|
||||||
|
_EOF_
|
||||||
|
fi
|
||||||
|
if use system-llvm; then
|
||||||
|
cat <<- _EOF_ >> "${S}"/config.toml
|
||||||
|
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||||
|
_EOF_
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if use wasm; then
|
||||||
|
cat <<- _EOF_ >> "${S}"/config.toml
|
||||||
|
[target.wasm32-unknown-unknown]
|
||||||
|
linker = "$(usex system-llvm lld rust-lld)"
|
||||||
|
_EOF_
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
|
||||||
|
# experimental cross support
|
||||||
|
# discussion: https://bugs.gentoo.org/679878
|
||||||
|
# TODO: c*flags, clang, system-llvm, cargo.eclass target support
|
||||||
|
# it would be much better if we could split out stdlib
|
||||||
|
# complilation to separate ebuild and abuse CATEGORY to
|
||||||
|
# just install to /usr/lib/rustlib/<target>
|
||||||
|
|
||||||
|
# extra targets defined as a bash array
|
||||||
|
# spec format: <LLVM target>:<rust-target>:<CTARGET>
|
||||||
|
# best place would be /etc/portage/env/dev-lang/rust
|
||||||
|
# Example:
|
||||||
|
# RUST_CROSS_TARGETS=(
|
||||||
|
# "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
|
||||||
|
# )
|
||||||
|
# no extra hand holding is done, no target transformations, all
|
||||||
|
# values are passed as-is with just basic checks, so it's up to user to supply correct values
|
||||||
|
# valid rust targets can be obtained with
|
||||||
|
# rustc --print target-list
|
||||||
|
# matching cross toolchain has to be installed
|
||||||
|
# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
|
||||||
|
# only gcc toolchains installed with crossdev are checked for now.
|
||||||
|
|
||||||
|
# BUG: we can't pass host flags to cross compiler, so just filter for now
|
||||||
|
# BUG: this should be more fine-grained.
|
||||||
|
filter-flags '-mcpu=*' '-march=*' '-mtune=*'
|
||||||
|
|
||||||
|
local cross_target_spec
|
||||||
|
for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
|
||||||
|
# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
|
||||||
|
local cross_llvm_target="${cross_target_spec%%:*}"
|
||||||
|
# extracts toolchain triples, <rust-target>:<CTARGET>
|
||||||
|
local cross_triples="${cross_target_spec#*:}"
|
||||||
|
# extracts first element after before : separator
|
||||||
|
local cross_rust_target="${cross_triples%%:*}"
|
||||||
|
# extracts last element after : separator
|
||||||
|
local cross_toolchain="${cross_triples##*:}"
|
||||||
|
use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
|
||||||
|
command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
|
||||||
|
|
||||||
|
cat <<- _EOF_ >> "${S}"/config.toml
|
||||||
|
[target.${cross_rust_target}]
|
||||||
|
cc = "${cross_toolchain}-gcc"
|
||||||
|
cxx = "${cross_toolchain}-g++"
|
||||||
|
linker = "${cross_toolchain}-gcc"
|
||||||
|
ar = "${cross_toolchain}-ar"
|
||||||
|
_EOF_
|
||||||
|
if use system-llvm; then
|
||||||
|
cat <<- _EOF_ >> "${S}"/config.toml
|
||||||
|
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||||
|
_EOF_
|
||||||
|
fi
|
||||||
|
if [[ "${cross_toolchain}" == *-musl* ]]; then
|
||||||
|
cat <<- _EOF_ >> "${S}"/config.toml
|
||||||
|
musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
|
||||||
|
_EOF_
|
||||||
|
fi
|
||||||
|
|
||||||
|
# append cross target to "normal" target list
|
||||||
|
# example 'target = ["powerpc64le-unknown-linux-gnu"]'
|
||||||
|
# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
|
||||||
|
|
||||||
|
rust_targets="${rust_targets},\"${cross_rust_target}\""
|
||||||
|
sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
|
||||||
|
|
||||||
|
ewarn
|
||||||
|
ewarn "Enabled ${cross_rust_target} rust target"
|
||||||
|
ewarn "Using ${cross_toolchain} cross toolchain"
|
||||||
|
ewarn
|
||||||
|
if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
|
||||||
|
ewarn "'sys-devel/binutils[multitarget]' is not installed"
|
||||||
|
ewarn "'strip' will be unable to strip cross libraries"
|
||||||
|
ewarn "cross targets will be installed with full debug information"
|
||||||
|
ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
|
||||||
|
ewarn
|
||||||
|
ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
|
||||||
|
ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
|
||||||
|
ewarn
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi # I_KNOW_WHAT_I_AM_DOING_CROSS
|
||||||
|
|
||||||
|
einfo "Rust configured with the following flags:"
|
||||||
|
echo
|
||||||
|
echo RUSTFLAGS="${RUSTFLAGS:-}"
|
||||||
|
echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
|
||||||
|
echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
|
||||||
|
env | grep "CARGO_TARGET_.*_RUSTFLAGS="
|
||||||
|
cat "${S}"/config.env || die
|
||||||
|
echo
|
||||||
|
einfo "config.toml contents:"
|
||||||
|
cat "${S}"/config.toml || die
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
# we need \n IFS to have config.env with spaces loaded properly. #734018
|
||||||
|
(
|
||||||
|
IFS=$'\n'
|
||||||
|
env $(cat "${S}"/config.env) RUST_BACKTRACE=1\
|
||||||
|
"${EPYTHON}" ./x.py build -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
src_test() {
|
||||||
|
# https://rustc-dev-guide.rust-lang.org/tests/intro.html
|
||||||
|
|
||||||
|
# those are basic and codegen tests.
|
||||||
|
local tests=(
|
||||||
|
codegen
|
||||||
|
codegen-units
|
||||||
|
compile-fail
|
||||||
|
incremental
|
||||||
|
mir-opt
|
||||||
|
pretty
|
||||||
|
run-make
|
||||||
|
)
|
||||||
|
|
||||||
|
# fails if llvm is not built with ALL targets.
|
||||||
|
# and known to fail with system llvm sometimes.
|
||||||
|
use system-llvm || tests+=( assembly )
|
||||||
|
|
||||||
|
# fragile/expensive/less important tests
|
||||||
|
# or tests that require extra builds
|
||||||
|
# TODO: instead of skipping, just make some nonfatal.
|
||||||
|
if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
|
||||||
|
tests+=(
|
||||||
|
rustdoc
|
||||||
|
rustdoc-js
|
||||||
|
rustdoc-js-std
|
||||||
|
rustdoc-ui
|
||||||
|
run-make-fulldeps
|
||||||
|
ui
|
||||||
|
ui-fulldeps
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
local i failed=()
|
||||||
|
einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
|
||||||
|
for i in "${tests[@]}"; do
|
||||||
|
local t="src/test/${i}"
|
||||||
|
einfo "rust_src_test: running ${t}"
|
||||||
|
if ! (
|
||||||
|
IFS=$'\n'
|
||||||
|
env $(cat "${S}"/config.env) RUST_BACKTRACE=1 \
|
||||||
|
"${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
|
||||||
|
-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
|
||||||
|
)
|
||||||
|
then
|
||||||
|
failed+=( "${t}" )
|
||||||
|
eerror "rust_src_test: ${t} failed"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ${#failed[@]} -ne 0 ]]; then
|
||||||
|
eerror "rust_src_test: failure summary: ${failed[@]}"
|
||||||
|
die "aborting due to test failures"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
(
|
||||||
|
IFS=$'\n'
|
||||||
|
env $(cat "${S}"/config.env) DESTDIR="${D}" \
|
||||||
|
"${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
|
||||||
|
)
|
||||||
|
|
||||||
|
# bug #689562, #689160
|
||||||
|
rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
|
||||||
|
rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
|
||||||
|
newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
|
||||||
|
|
||||||
|
local symlinks=(
|
||||||
|
cargo
|
||||||
|
rustc
|
||||||
|
rustdoc
|
||||||
|
rust-gdb
|
||||||
|
rust-gdbgui
|
||||||
|
rust-lldb
|
||||||
|
)
|
||||||
|
|
||||||
|
use clippy && symlinks+=( clippy-driver cargo-clippy )
|
||||||
|
use miri && symlinks+=( miri cargo-miri )
|
||||||
|
use rls && symlinks+=( rls )
|
||||||
|
use rustfmt && symlinks+=( rustfmt cargo-fmt )
|
||||||
|
|
||||||
|
einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
|
||||||
|
local i
|
||||||
|
for i in "${symlinks[@]}"; do
|
||||||
|
# we need realpath on /usr/bin/* symlink return version-appended binary path.
|
||||||
|
# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
|
||||||
|
# need to fix eselect-rust to remove this hack.
|
||||||
|
local ver_i="${i}-${PV}"
|
||||||
|
if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
|
||||||
|
einfo "Installing ${i} symlink"
|
||||||
|
ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
|
||||||
|
else
|
||||||
|
ewarn "${i} symlink requested, but source file not found"
|
||||||
|
ewarn "please report this"
|
||||||
|
fi
|
||||||
|
dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# symlinks to switch components to active rust in eselect
|
||||||
|
dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
|
||||||
|
dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||||
|
dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
|
||||||
|
dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
|
||||||
|
dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
|
||||||
|
|
||||||
|
newenvd - "50${P}" <<-_EOF_
|
||||||
|
LDPATH="${EPREFIX}/usr/lib/rust/lib"
|
||||||
|
MANPATH="${EPREFIX}/usr/lib/rust/man"
|
||||||
|
$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
|
||||||
|
$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
|
||||||
|
_EOF_
|
||||||
|
|
||||||
|
rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
|
||||||
|
rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
|
||||||
|
|
||||||
|
# note: eselect-rust adds EROOT to all paths below
|
||||||
|
cat <<-_EOF_ > "${T}/provider-${P}"
|
||||||
|
/usr/bin/cargo
|
||||||
|
/usr/bin/rustdoc
|
||||||
|
/usr/bin/rust-gdb
|
||||||
|
/usr/bin/rust-gdbgui
|
||||||
|
/usr/bin/rust-lldb
|
||||||
|
/usr/lib/rustlib
|
||||||
|
/usr/lib/rust/lib
|
||||||
|
/usr/lib/rust/libexec
|
||||||
|
/usr/lib/rust/man
|
||||||
|
/usr/share/doc/rust
|
||||||
|
_EOF_
|
||||||
|
|
||||||
|
if use clippy; then
|
||||||
|
echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
|
||||||
|
echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
|
||||||
|
fi
|
||||||
|
if use miri; then
|
||||||
|
echo /usr/bin/miri >> "${T}/provider-${P}"
|
||||||
|
echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
|
||||||
|
fi
|
||||||
|
if use rls; then
|
||||||
|
echo /usr/bin/rls >> "${T}/provider-${P}"
|
||||||
|
fi
|
||||||
|
if use rustfmt; then
|
||||||
|
echo /usr/bin/rustfmt >> "${T}/provider-${P}"
|
||||||
|
echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
insinto /etc/env.d/rust
|
||||||
|
doins "${T}/provider-${P}"
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
eselect rust update
|
||||||
|
|
||||||
|
if has_version sys-devel/gdb || has_version dev-util/lldb; then
|
||||||
|
elog "Rust installs a helper script for calling GDB and LLDB,"
|
||||||
|
elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if has_version app-editors/emacs; then
|
||||||
|
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||||
|
elog "install app-vim/rust-vim to get vim support for rust."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postrm() {
|
||||||
|
eselect rust cleanup
|
||||||
|
}
|
Binary file not shown.
@ -1,42 +0,0 @@
|
|||||||
# Copyright 1999-2021 Gentoo Authors
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=7
|
|
||||||
|
|
||||||
inherit autotools
|
|
||||||
|
|
||||||
DESCRIPTION="Useful set of performance and usability-oriented extensions to C"
|
|
||||||
HOMEPAGE="https://github.com/atheme/libmowgli-2"
|
|
||||||
SRC_URI="https://github.com/atheme/libmowgli-2/archive/v${PV}.tar.gz -> ${P}.tar.gz"
|
|
||||||
|
|
||||||
LICENSE="BSD-2"
|
|
||||||
SLOT="2"
|
|
||||||
KEYWORDS="~alpha amd64 arm ~hppa ~ia64 ~mips ppc ppc64 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos"
|
|
||||||
IUSE="ssl"
|
|
||||||
|
|
||||||
RDEPEND="ssl? (
|
|
||||||
dev-libs/openssl:0=
|
|
||||||
)
|
|
||||||
!~dev-libs/libmowgli-2.1.0" # Bug 629644
|
|
||||||
DEPEND="${RDEPEND}"
|
|
||||||
|
|
||||||
DOCS=( AUTHORS README doc/BOOST doc/design-concepts.txt )
|
|
||||||
PATCHES=(
|
|
||||||
"${FILESDIR}"/${P}-cacheline-Ensure-sysconf-var-is-defined-before-use.patch
|
|
||||||
"${FILESDIR}"/${P}-use-host-tools-for-ar-and-ranlib.patch
|
|
||||||
)
|
|
||||||
|
|
||||||
S="${WORKDIR}/${PN}-2-${PV}"
|
|
||||||
|
|
||||||
src_prepare() {
|
|
||||||
default
|
|
||||||
|
|
||||||
# $(MAKE) invocation will handle passing down flags.
|
|
||||||
sed -i -e 's/${MFLAGS}//' buildsys.mk.in || die
|
|
||||||
|
|
||||||
AT_M4DIR="m4" eautoreconf
|
|
||||||
}
|
|
||||||
|
|
||||||
src_configure() {
|
|
||||||
econf $(use_with ssl openssl)
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
--- /home/graaff/Desktop/Makefile 2009-11-06 01:57:50.000000000 +0100
|
|
||||||
+++ Makefile 2013-07-18 10:57:32.482149252 +0200
|
|
||||||
@@ -1,9 +1,13 @@
|
|
||||||
include mkinc.mak
|
|
||||||
-CFLAGS=-Iinclude
|
|
||||||
-all: libstemmer.o stemwords
|
|
||||||
-libstemmer.o: $(snowball_sources:.c=.o)
|
|
||||||
- $(AR) -cru $@ $^
|
|
||||||
-stemwords: examples/stemwords.o libstemmer.o
|
|
||||||
- $(CC) -o $@ $^
|
|
||||||
+CFLAGS+=-Iinclude -fPIC
|
|
||||||
+all: libstemmer.so libstemmer.a stemwords
|
|
||||||
+libstemmer.so: $(snowball_sources:.c=.o)
|
|
||||||
+ $(CC) $(CFLAGS) -shared $(LDFLAGS) -Wl,-soname,$@.0d -o $@.0d.0.0 $^
|
|
||||||
+ ln -s $@.0d.0.0 $@.0d
|
|
||||||
+ ln -s $@.0d.0.0 $@
|
|
||||||
+libstemmer.a: $(snowball_sources:.c=.o)
|
|
||||||
+ $(AR) -crs $@ $^
|
|
||||||
+stemwords: examples/stemwords.o libstemmer.so
|
|
||||||
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
|
|
||||||
clean:
|
|
||||||
- rm -f stemwords *.o src_c/*.o runtime/*.o libstemmer/*.o
|
|
||||||
+ rm -f stemwords libstemmer.so* libstemmer.a *.o src_c/*.o runtime/*.o libstemmer/*.o
|
|
Binary file not shown.
@ -1,26 +0,0 @@
|
|||||||
From ef8efc5b80c9395c01f23e5acd28bb3ee7810b54 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kent Fredric <kentnl@gentoo.org>
|
|
||||||
Date: Sun, 8 Oct 2017 13:08:20 +1300
|
|
||||||
Subject: Fix useless localization of scalar assignment
|
|
||||||
|
|
||||||
Bug: https://rt.cpan.org/Ticket/Display.html?id=73873
|
|
||||||
---
|
|
||||||
lib/DBI/Format.pm | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/DBI/Format.pm b/lib/DBI/Format.pm
|
|
||||||
index 49cd7dd..bc985f9 100755
|
|
||||||
--- a/lib/DBI/Format.pm
|
|
||||||
+++ b/lib/DBI/Format.pm
|
|
||||||
@@ -374,7 +374,7 @@ sub header {
|
|
||||||
|
|
||||||
sub row {
|
|
||||||
my($self, $rowref) = @_;
|
|
||||||
- local( $^W = 0 );
|
|
||||||
+ local ($^W) = 0;
|
|
||||||
my @row = @$rowref;
|
|
||||||
my $fh = $self->{'fh'};
|
|
||||||
print $fh (join($self->{sep}, @row), "\n");
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
From 9fb29d16514530245965b932040bb4fc37ffa9bf Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kent Fredric <kentnl@gentoo.org>
|
|
||||||
Date: Sun, 8 Oct 2017 13:11:29 +1300
|
|
||||||
Subject: Fix no_chrdir warning
|
|
||||||
|
|
||||||
Bug: https://rt.cpan.org/Ticket/Display.html?id=123215
|
|
||||||
---
|
|
||||||
lib/DBI/Shell/FindSqlFile.pm | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/DBI/Shell/FindSqlFile.pm b/lib/DBI/Shell/FindSqlFile.pm
|
|
||||||
index e604290..2b56ccc 100644
|
|
||||||
--- a/lib/DBI/Shell/FindSqlFile.pm
|
|
||||||
+++ b/lib/DBI/Shell/FindSqlFile.pm
|
|
||||||
@@ -62,7 +62,7 @@ sub look_for_file {
|
|
||||||
File::Find::find(
|
|
||||||
{
|
|
||||||
wanted => \&wanted
|
|
||||||
- , no_chrdir => 1
|
|
||||||
+ , no_chdir => 1
|
|
||||||
, bydepth => 0
|
|
||||||
},
|
|
||||||
@search_path);
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
From 792cf15cb387e58cec1ef3c6d538689d02ab44c3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kent Fredric <kentnl@gentoo.org>
|
|
||||||
Date: Sun, 8 Oct 2017 12:46:17 +1300
|
|
||||||
Subject: Fix '.' removal from @INC in Perl 5.26
|
|
||||||
|
|
||||||
Configuration files were always assumed to be explicit paths given
|
|
||||||
by outsiders, not random entries in @INC
|
|
||||||
|
|
||||||
Bug: https://bugs.gentoo.org/615592
|
|
||||||
Bug: https://rt.cpan.org/Ticket/Display.html?id=121136
|
|
||||||
---
|
|
||||||
lib/DBI/Shell.pm | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/DBI/Shell.pm b/lib/DBI/Shell.pm
|
|
||||||
index 03dd958..7869f0f 100755
|
|
||||||
--- a/lib/DBI/Shell.pm
|
|
||||||
+++ b/lib/DBI/Shell.pm
|
|
||||||
@@ -133,6 +133,7 @@ use Text::Abbrev ();
|
|
||||||
use Term::ReadLine;
|
|
||||||
use Getopt::Long 2.17; # upgrade from CPAN if needed: http://www.perl.com/CPAN
|
|
||||||
use IO::File;
|
|
||||||
+use File::Spec ();
|
|
||||||
|
|
||||||
use DBI 1.00 qw(:sql_types :utils);
|
|
||||||
use DBI::Format;
|
|
||||||
@@ -544,7 +545,8 @@ sub configuration {
|
|
||||||
$sh->{config_file} = $ENV{DBISH_CONFIG} || "$homedir/.dbish_config";
|
|
||||||
my $config;
|
|
||||||
if ($sh->{config_file} && -f $sh->{config_file}) {
|
|
||||||
- $config = require $sh->{config_file};
|
|
||||||
+ my $full = File::Spec->rel2abs( $sh->{config_file} );
|
|
||||||
+ $config = require $full;
|
|
||||||
# allow for custom configuration options.
|
|
||||||
if (exists $config->{'options'} ) {
|
|
||||||
$sh->install_options( $config->{'options'} );
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
|||||||
From f44b8ba9d8cf954c76a967cbfb5d4182f109f8cf Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kent Fredric <kentnl@gentoo.org>
|
|
||||||
Date: Sun, 8 Oct 2017 13:30:36 +1300
|
|
||||||
Subject: Silence warnings about reduntant sprintf args
|
|
||||||
|
|
||||||
Bug: https://rt.cpan.org/Ticket/Display.html?id=123216
|
|
||||||
---
|
|
||||||
lib/DBI/Format/SQLMinus.pm | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/lib/DBI/Format/SQLMinus.pm b/lib/DBI/Format/SQLMinus.pm
|
|
||||||
index c3a9ba2..7b240c9 100755
|
|
||||||
--- a/lib/DBI/Format/SQLMinus.pm
|
|
||||||
+++ b/lib/DBI/Format/SQLMinus.pm
|
|
||||||
@@ -155,6 +155,7 @@ sub header {
|
|
||||||
|
|
||||||
if ( exists $cf->{format} and defined $cf->{format} ) {
|
|
||||||
$format_names = $cf->{format};
|
|
||||||
+ no warnings 'redundant';
|
|
||||||
$width = length sprintf( $format_names, " " );
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
|||||||
From e38c5bfa847361ab251ce533fdd6e8993afbd2f3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kent Fredric <kentnl@gentoo.org>
|
|
||||||
Date: Sat, 19 Sep 2020 22:13:21 +1200
|
|
||||||
Subject: t/basic.t: Don't become broken when MAKEOPTS includes V=1
|
|
||||||
|
|
||||||
Some people set MAKEOPTS to include V=1, in order to coax autotools
|
|
||||||
based makefiles into being more verbose.
|
|
||||||
|
|
||||||
But when that ENV var is used to direct perl ebuilds for Dzil things,
|
|
||||||
well, it unintentionally uses "1" as the *next version*, and so breaks
|
|
||||||
all code that isn't expecting that to happen.
|
|
||||||
|
|
||||||
Given its not the job of tests to tell people their system is weird, it
|
|
||||||
just makes the scope "normal" ( that is, defaulting V to be unset
|
|
||||||
internally )
|
|
||||||
|
|
||||||
Bug: https://bugs.gentoo.org/737308
|
|
||||||
Bug: https://github.com/yanick/Dist-Zilla-Plugin-NextVersion-Semantic/pull/6
|
|
||||||
---
|
|
||||||
t/basic.t | 4 ++++
|
|
||||||
1 file changed, 4 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/t/basic.t b/t/basic.t
|
|
||||||
index 22d04fe..b2942c8 100644
|
|
||||||
--- a/t/basic.t
|
|
||||||
+++ b/t/basic.t
|
|
||||||
@@ -6,6 +6,10 @@ use Test::Exception;
|
|
||||||
|
|
||||||
use Test::DZil;
|
|
||||||
|
|
||||||
+# V=1 is common in MAKEOPTS for gnu autotools
|
|
||||||
+# to set "verbose mode"
|
|
||||||
+delete $ENV{V} if exists $ENV{V};
|
|
||||||
+
|
|
||||||
my $changes = make_changes(<<'END_CHANGES');
|
|
||||||
- got included in an awesome test suite
|
|
||||||
END_CHANGES
|
|
||||||
--
|
|
||||||
2.28.0
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
|||||||
From 2c89bb54f233776fb8760a264286f9e0932f62c6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kent Fredric <kentnl@gentoo.org>
|
|
||||||
Date: Sat, 21 Oct 2017 13:15:43 +1300
|
|
||||||
Subject: Fix tests on 5.26 without '.' in @INC
|
|
||||||
|
|
||||||
Bug: https://rt.cpan.org/Ticket/Display.html?id=120848
|
|
||||||
Bug: https://bugs.gentoo.org/615842
|
|
||||||
Bug: https://github.com/tsee/extutils-cppguess/pull/15
|
|
||||||
---
|
|
||||||
t/010_module_build.t | 3 ++-
|
|
||||||
t/011_makemaker.t | 3 ++-
|
|
||||||
t/lib/TestUtils.pm | 3 ++-
|
|
||||||
3 files changed, 6 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/t/010_module_build.t b/t/010_module_build.t
|
|
||||||
index 93b5f44..ef004d3 100644
|
|
||||||
--- a/t/010_module_build.t
|
|
||||||
+++ b/t/010_module_build.t
|
|
||||||
@@ -2,7 +2,8 @@
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Test::More tests => 1;
|
|
||||||
-use t::lib::TestUtils;
|
|
||||||
+use lib 't/lib';
|
|
||||||
+use TestUtils;
|
|
||||||
|
|
||||||
my $separator = ( '=' x 40 . "\n" );
|
|
||||||
|
|
||||||
diff --git a/t/011_makemaker.t b/t/011_makemaker.t
|
|
||||||
index 237636a..5986395 100644
|
|
||||||
--- a/t/011_makemaker.t
|
|
||||||
+++ b/t/011_makemaker.t
|
|
||||||
@@ -2,7 +2,8 @@
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Test::More tests => 1;
|
|
||||||
-use t::lib::TestUtils;
|
|
||||||
+use lib 't/lib';
|
|
||||||
+use TestUtils;
|
|
||||||
|
|
||||||
my $separator = ( '=' x 40 . "\n" );
|
|
||||||
|
|
||||||
diff --git a/t/lib/TestUtils.pm b/t/lib/TestUtils.pm
|
|
||||||
index c71572b..b3480c4 100644
|
|
||||||
--- a/t/lib/TestUtils.pm
|
|
||||||
+++ b/t/lib/TestUtils.pm
|
|
||||||
@@ -1,4 +1,5 @@
|
|
||||||
-package t::lib::TestUtils;
|
|
||||||
+package # hide
|
|
||||||
+ TestUtils;
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
|
|
||||||
--
|
|
||||||
2.14.2
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
From 08deb6590eecd9d92a38edf1b22d615175e1d8d3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kent Fredric <kentfredric@gmail.com>
|
|
||||||
Date: Mon, 26 Jun 2017 19:43:14 +1200
|
|
||||||
Subject: [PATCH] Fix for '.' removal from Perl 5.26 @INC
|
|
||||||
|
|
||||||
---
|
|
||||||
File-NFSLock.spec.PL | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/File-NFSLock.spec.PL b/File-NFSLock.spec.PL
|
|
||||||
index fdf9fdf..f5586c1 100644
|
|
||||||
--- a/File-NFSLock.spec.PL
|
|
||||||
+++ b/File-NFSLock.spec.PL
|
|
||||||
@@ -18,7 +18,7 @@ sub WriteMakefile {
|
|
||||||
} elsif (my $version_from = $props{VERSION_FROM}) {
|
|
||||||
$@ = "";
|
|
||||||
$version = eval qq{
|
|
||||||
- do "$version_from";
|
|
||||||
+ do "./$version_from";
|
|
||||||
\$$name\::VERSION || die "$version_from: Missing VERSION";
|
|
||||||
};
|
|
||||||
die $@ if $@;
|
|
||||||
@@ -29,7 +29,7 @@ sub WriteMakefile {
|
|
||||||
die "Makefile.PL: Could not determine version!";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-do "Makefile.PL";
|
|
||||||
+do "./Makefile.PL";
|
|
||||||
if ($name) {
|
|
||||||
$name =~ s/::/-/g;
|
|
||||||
} else {
|
|
||||||
--
|
|
||||||
2.13.1
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 13 Sep 2016 07:26:00 +0200
|
|
||||||
Subject: fix spelling error ("settting" should be "setting")
|
|
||||||
|
|
||||||
---
|
|
||||||
README | 2 +-
|
|
||||||
lib/GnuPG/Interface.pm | 2 +-
|
|
||||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/README b/README
|
|
||||||
index fcb982a..f457577 100644
|
|
||||||
--- a/README
|
|
||||||
+++ b/README
|
|
||||||
@@ -6,7 +6,7 @@ SYNOPSIS
|
|
||||||
use IO::Handle;
|
|
||||||
use GnuPG::Interface;
|
|
||||||
|
|
||||||
- # settting up the situation
|
|
||||||
+ # setting up the situation
|
|
||||||
my $gnupg = GnuPG::Interface->new();
|
|
||||||
$gnupg->options->hash_init( armor => 1,
|
|
||||||
homedir => '/home/foobar' );
|
|
||||||
diff --git a/lib/GnuPG/Interface.pm b/lib/GnuPG/Interface.pm
|
|
||||||
index f952f3e..83a4b1a 100644
|
|
||||||
--- a/lib/GnuPG/Interface.pm
|
|
||||||
+++ b/lib/GnuPG/Interface.pm
|
|
||||||
@@ -834,7 +834,7 @@ GnuPG::Interface - Perl interface to GnuPG
|
|
||||||
use IO::Handle;
|
|
||||||
use GnuPG::Interface;
|
|
||||||
|
|
||||||
- # settting up the situation
|
|
||||||
+ # setting up the situation
|
|
||||||
my $gnupg = GnuPG::Interface->new();
|
|
||||||
$gnupg->options->hash_init( armor => 1,
|
|
||||||
homedir => '/home/foobar' );
|
|
@ -1,151 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 13 Sep 2016 10:38:12 -0400
|
|
||||||
Subject: Generalize the test suite
|
|
||||||
|
|
||||||
The test suite currently assumes it knows something about the internal
|
|
||||||
state of GnuPG's homedir.
|
|
||||||
|
|
||||||
It's safer and less brittle to rely explicitly on the public interface
|
|
||||||
that GnuPG has committed to, such as --import-keys and --list-keys,
|
|
||||||
rather than assuming that certain files are in certain places in the
|
|
||||||
GnuPG homedir.
|
|
||||||
|
|
||||||
It's also better to create a fresh homedir and allow GnuPG to populate
|
|
||||||
it during the test suite, cleaning it up at the end, rather than hope
|
|
||||||
that GnuPG will leave a pre-existing homedir untouched.
|
|
||||||
|
|
||||||
With this change, many more of the tests pass when /usr/bin/gpg is
|
|
||||||
provided by GnuPG 2.1.
|
|
||||||
---
|
|
||||||
t/000_setup.t | 28 ++++++++++++++++++++++++++++
|
|
||||||
t/MyTestSpecific.pm | 2 +-
|
|
||||||
t/zzz_cleanup.t | 17 +++++++++++++++++
|
|
||||||
test/fake-pinentry.pl | 28 ++++++++++++++++++++++++++++
|
|
||||||
test/{options => gpg.conf} | 0
|
|
||||||
test/secret-keys/1.0.test | 4 ++--
|
|
||||||
6 files changed, 76 insertions(+), 3 deletions(-)
|
|
||||||
create mode 100644 t/000_setup.t
|
|
||||||
create mode 100644 t/zzz_cleanup.t
|
|
||||||
create mode 100755 test/fake-pinentry.pl
|
|
||||||
rename test/{options => gpg.conf} (100%)
|
|
||||||
|
|
||||||
diff --git a/t/000_setup.t b/t/000_setup.t
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..7f7f7b0
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/t/000_setup.t
|
|
||||||
@@ -0,0 +1,28 @@
|
|
||||||
+#!/usr/bin/perl -w
|
|
||||||
+
|
|
||||||
+use strict;
|
|
||||||
+use English qw( -no_match_vars );
|
|
||||||
+
|
|
||||||
+use lib './t';
|
|
||||||
+use MyTest;
|
|
||||||
+use MyTestSpecific;
|
|
||||||
+use Cwd;
|
|
||||||
+use File::Path qw (make_path);
|
|
||||||
+use File::Copy;
|
|
||||||
+
|
|
||||||
+TEST
|
|
||||||
+{
|
|
||||||
+ make_path('test/gnupghome', { mode => 0700 });
|
|
||||||
+ my $agentconf = IO::File->new( "> test/gnupghome/gpg-agent.conf" );
|
|
||||||
+ $agentconf->write("pinentry-program " . getcwd() . "/test/fake-pinentry.pl\n");
|
|
||||||
+ $agentconf->close();
|
|
||||||
+ copy('test/gpg.conf', 'test/gnupghome/gpg.conf');
|
|
||||||
+ reset_handles();
|
|
||||||
+
|
|
||||||
+ my $pid = $gnupg->import_keys(command_args => [ 'test/pubring.gpg', 'test/secring.gpg' ],
|
|
||||||
+ options => [ 'batch'],
|
|
||||||
+ handles => $handles);
|
|
||||||
+ waitpid $pid, 0;
|
|
||||||
+
|
|
||||||
+ return $CHILD_ERROR == 0;
|
|
||||||
+};
|
|
||||||
diff --git a/t/MyTestSpecific.pm b/t/MyTestSpecific.pm
|
|
||||||
index 053b749..1af98ae 100644
|
|
||||||
--- a/t/MyTestSpecific.pm
|
|
||||||
+++ b/t/MyTestSpecific.pm
|
|
||||||
@@ -40,7 +40,7 @@ use vars qw( @ISA @EXPORT
|
|
||||||
|
|
||||||
$gnupg = GnuPG::Interface->new( passphrase => 'test' );
|
|
||||||
|
|
||||||
-$gnupg->options->hash_init( homedir => 'test',
|
|
||||||
+$gnupg->options->hash_init( homedir => 'test/gnupghome',
|
|
||||||
armor => 1,
|
|
||||||
meta_interactive => 0,
|
|
||||||
meta_signing_key_id => '0xF950DA9C',
|
|
||||||
diff --git a/t/zzz_cleanup.t b/t/zzz_cleanup.t
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..5c03a72
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/t/zzz_cleanup.t
|
|
||||||
@@ -0,0 +1,17 @@
|
|
||||||
+#!/usr/bin/perl -w
|
|
||||||
+
|
|
||||||
+use strict;
|
|
||||||
+use English qw( -no_match_vars );
|
|
||||||
+
|
|
||||||
+use lib './t';
|
|
||||||
+use MyTest;
|
|
||||||
+use MyTestSpecific;
|
|
||||||
+use File::Path qw (remove_tree);
|
|
||||||
+
|
|
||||||
+# this is actually no test, just cleanup.
|
|
||||||
+TEST
|
|
||||||
+{
|
|
||||||
+ my $err = [];
|
|
||||||
+ remove_tree('test/gnupghome', {error => \$err});
|
|
||||||
+ return ! @$err;
|
|
||||||
+};
|
|
||||||
diff --git a/test/fake-pinentry.pl b/test/fake-pinentry.pl
|
|
||||||
new file mode 100755
|
|
||||||
index 0000000..12d3611
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/test/fake-pinentry.pl
|
|
||||||
@@ -0,0 +1,28 @@
|
|
||||||
+#!/usr/bin/perl -w
|
|
||||||
+# Use this for your test suites when a perl interpreter is available.
|
|
||||||
+#
|
|
||||||
+# The encrypted keys in your test suite that you expect to work must
|
|
||||||
+# be locked with a passphrase of "test"
|
|
||||||
+#
|
|
||||||
+# Author: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
+#
|
|
||||||
+# License: This trivial work is hereby explicitly placed into the
|
|
||||||
+# public domain. Anyone may reuse it, modify it, redistribute it for
|
|
||||||
+# any purpose.
|
|
||||||
+
|
|
||||||
+use strict;
|
|
||||||
+use warnings;
|
|
||||||
+
|
|
||||||
+# turn off buffering
|
|
||||||
+$| = 1;
|
|
||||||
+
|
|
||||||
+print "OK This is only for test suites, and should never be used in production\n";
|
|
||||||
+while (<STDIN>) {
|
|
||||||
+ chomp;
|
|
||||||
+ next if (/^$/);
|
|
||||||
+ next if (/^#/);
|
|
||||||
+ print ("D test\n") if (/^getpin/i);
|
|
||||||
+ print "OK\n";
|
|
||||||
+ exit if (/^bye/i);
|
|
||||||
+}
|
|
||||||
+1;
|
|
||||||
diff --git a/test/options b/test/gpg.conf
|
|
||||||
similarity index 100%
|
|
||||||
rename from test/options
|
|
||||||
rename to test/gpg.conf
|
|
||||||
diff --git a/test/secret-keys/1.0.test b/test/secret-keys/1.0.test
|
|
||||||
index 5999484..129d472 100644
|
|
||||||
--- a/test/secret-keys/1.0.test
|
|
||||||
+++ b/test/secret-keys/1.0.test
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
-test/secring.gpg
|
|
||||||
-----------------
|
|
||||||
+test/gnupghome/secring.gpg
|
|
||||||
+--------------------------
|
|
||||||
sec 1024D/F950DA9C 2000-02-06
|
|
||||||
uid GnuPG test key (for testing purposes only)
|
|
||||||
uid Foo Bar (1)
|
|
@ -1,37 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 13 Sep 2016 11:35:31 -0400
|
|
||||||
Subject: subkey validity of an key when we have established no trust anchors
|
|
||||||
|
|
||||||
This apparently isn't tested by deep comparisons, though, so it was
|
|
||||||
never caught.
|
|
||||||
---
|
|
||||||
t/get_public_keys.t | 2 +-
|
|
||||||
t/get_secret_keys.t | 2 +-
|
|
||||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/t/get_public_keys.t b/t/get_public_keys.t
|
|
||||||
index 53db021..73e320b 100644
|
|
||||||
--- a/t/get_public_keys.t
|
|
||||||
+++ b/t/get_public_keys.t
|
|
||||||
@@ -175,7 +175,7 @@ TEST
|
|
||||||
];
|
|
||||||
|
|
||||||
my $subkey = GnuPG::SubKey->new
|
|
||||||
- ( validity => 'u',
|
|
||||||
+ ( validity => '-',
|
|
||||||
length => 768,
|
|
||||||
algo_num => 16,
|
|
||||||
hex_id => 'ADB99D9C2E854A6B',
|
|
||||||
diff --git a/t/get_secret_keys.t b/t/get_secret_keys.t
|
|
||||||
index 3a1d99f..7bba083 100644
|
|
||||||
--- a/t/get_secret_keys.t
|
|
||||||
+++ b/t/get_secret_keys.t
|
|
||||||
@@ -48,7 +48,7 @@ TEST
|
|
||||||
|
|
||||||
|
|
||||||
my $subkey = GnuPG::SubKey->new
|
|
||||||
- ( validity => 'u',
|
|
||||||
+ ( validity => '-',
|
|
||||||
length => 768,
|
|
||||||
algo_num => 16,
|
|
||||||
hex_id => 'ADB99D9C2E854A6B',
|
|
@ -1,35 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 13 Sep 2016 11:39:04 -0400
|
|
||||||
Subject: ensure that test covers all signatures
|
|
||||||
|
|
||||||
The earlier test wasn't reporting on one of the known self-sigs for
|
|
||||||
the test key for some reason.
|
|
||||||
|
|
||||||
This change ensures that all known signatures are present.
|
|
||||||
---
|
|
||||||
t/get_public_keys.t | 12 +++++++++++-
|
|
||||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/t/get_public_keys.t b/t/get_public_keys.t
|
|
||||||
index 73e320b..9e96f7d 100644
|
|
||||||
--- a/t/get_public_keys.t
|
|
||||||
+++ b/t/get_public_keys.t
|
|
||||||
@@ -83,7 +83,17 @@ TEST
|
|
||||||
date_string => '2000-02-06',
|
|
||||||
hex_id => '53AE596EF950DA9C',
|
|
||||||
sig_class => 0x13,
|
|
||||||
- validity => '!'));
|
|
||||||
+ validity => '!'),
|
|
||||||
+ GnuPG::Signature->new(
|
|
||||||
+ date => 1177086329,
|
|
||||||
+ algo_num => 17,
|
|
||||||
+ is_exportable => 1,
|
|
||||||
+ user_id_string => 'GnuPG test key (for testing purposes only)',
|
|
||||||
+ date_string => '2007-04-20',
|
|
||||||
+ hex_id => '53AE596EF950DA9C',
|
|
||||||
+ sig_class => 0x13,
|
|
||||||
+ validity => '!'),
|
|
||||||
+ );
|
|
||||||
|
|
||||||
my $uid1 = GnuPG::UserId->new( as_string => 'Foo Bar (1)',
|
|
||||||
validity => '-');
|
|
@ -1,39 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 13 Sep 2016 14:31:38 -0400
|
|
||||||
Subject: add $gpg_is_modern to test suite
|
|
||||||
|
|
||||||
MyTestSpecific.pm now produces a new variable indicating whether it
|
|
||||||
the version of GnuPG we run against is from the "Modern" line of GnuPG
|
|
||||||
development (2.1 or later). This will be useful when comparing output
|
|
||||||
that we can't expect from earlier versions.
|
|
||||||
---
|
|
||||||
t/MyTestSpecific.pm | 7 +++++--
|
|
||||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/t/MyTestSpecific.pm b/t/MyTestSpecific.pm
|
|
||||||
index 1af98ae..a309698 100644
|
|
||||||
--- a/t/MyTestSpecific.pm
|
|
||||||
+++ b/t/MyTestSpecific.pm
|
|
||||||
@@ -29,17 +29,20 @@ use GnuPG::Handles;
|
|
||||||
use vars qw( @ISA @EXPORT
|
|
||||||
$stdin $stdout $stderr
|
|
||||||
$gpg_program $handles $gnupg
|
|
||||||
- %texts
|
|
||||||
+ %texts $gpg_is_modern
|
|
||||||
);
|
|
||||||
|
|
||||||
@ISA = qw( Exporter );
|
|
||||||
@EXPORT = qw( stdin stdout stderr
|
|
||||||
gnupg_program handles reset_handles
|
|
||||||
- texts file_match
|
|
||||||
+ texts file_match gpg_is_modern
|
|
||||||
);
|
|
||||||
|
|
||||||
$gnupg = GnuPG::Interface->new( passphrase => 'test' );
|
|
||||||
|
|
||||||
+my @version = split('\.', $gnupg->version());
|
|
||||||
+$gpg_is_modern = ($version[0] > 2 || ($version[0] == 2 && $version[1] >= 1));
|
|
||||||
+
|
|
||||||
$gnupg->options->hash_init( homedir => 'test/gnupghome',
|
|
||||||
armor => 1,
|
|
||||||
meta_interactive => 0,
|
|
@ -1,120 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 13 Sep 2016 14:12:40 -0400
|
|
||||||
Subject: Modern GnuPG (2.1) reports more detail about secret keys
|
|
||||||
|
|
||||||
the GnuPG "modern" suite (version 2.1 or later) reports more detail
|
|
||||||
about secret keys than previous versions did. In particular, it
|
|
||||||
reports stored ownertrust, public key data, and designated revokers
|
|
||||||
for secret keys. Older versions only reported those attributes for
|
|
||||||
public keys.
|
|
||||||
|
|
||||||
This patch adjusts the test suite to ensure that our handmade key
|
|
||||||
matches the produced key when /usr/bin/gpg is supplied by the modern
|
|
||||||
suite.
|
|
||||||
---
|
|
||||||
t/get_secret_keys.t | 66 +++++++++++++++++++++++++++++++++++++++++++----------
|
|
||||||
1 file changed, 54 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/t/get_secret_keys.t b/t/get_secret_keys.t
|
|
||||||
index 7bba083..c798cce 100644
|
|
||||||
--- a/t/get_secret_keys.t
|
|
||||||
+++ b/t/get_secret_keys.t
|
|
||||||
@@ -23,16 +23,34 @@ TEST
|
|
||||||
return 0 unless @returned_keys == 1;
|
|
||||||
|
|
||||||
$given_key = shift @returned_keys;
|
|
||||||
-
|
|
||||||
- $handmade_key = GnuPG::PrimaryKey->new
|
|
||||||
- ( length => 1024,
|
|
||||||
+ my $pubkey_data = [
|
|
||||||
+ Math::BigInt->from_hex('0x'.
|
|
||||||
+ '88FCAAA5BCDCD52084D46143F44ED1715A339794641158DE03AA2092AFD3174E3DCA2CB7DF2DDC6FEDF7C3620F5A8BDAD06713E6153F8748DD76CB97305F30CBA8F8801DB47FAC11EED725F55672CB9BDAD629178A677CBB089B3E8AE0D9A9AD7741697A35F2868C62D25670994A92D810480173DC24263EEA0F103A43C0B64B'),
|
|
||||||
+ Math::BigInt->from_hex('0x'.
|
|
||||||
+ '8F2A3842C70FF17660CBB78C78FC93F534AB9A17'),
|
|
||||||
+ Math::BigInt->from_hex('0x'.
|
|
||||||
+ '83E348C2AA65F56DE84E8FDCE6DA7B0991B1C75EC8CA446FA85869A43350907BFF36BE512385E8E7E095578BB2138C04E318495873218286DE2B8C86F36EA670135434967AC798EBA28581F709F0C6B696EB512D3E561E381A06E4B5239BCC655015F9A926C74E4B859B26EAD604F208A556511A76A40EDCD9C38E6BD82CCCB4'),
|
|
||||||
+ Math::BigInt->from_hex('0x'.
|
|
||||||
+ '80DE04C85E30C9D62C13F90CFF927A84A5A59D0900B3533D4D6193FEF8C5DAEF9FF8A7D5F76B244FBC17644F50D524E0B19CD3A4B5FC2D78DAECA3FE58FA1C1A64E6C7B96C4EE618173543163A72EF954DFD593E84342699096E9CA76578AC1DE3D893BCCD0BF470CEF625FAF816A0F503EF75C18C6173E35C8675AF919E5704')
|
|
||||||
+ ];
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ my $args = {
|
|
||||||
+ length => 1024,
|
|
||||||
algo_num => 17,
|
|
||||||
hex_id => '53AE596EF950DA9C',
|
|
||||||
creation_date => 949813093,
|
|
||||||
creation_date_string => '2000-02-06',
|
|
||||||
- owner_trust => '', # secret keys do not report ownertrust?
|
|
||||||
+ owner_trust => '-',
|
|
||||||
usage_flags => 'scaESCA',
|
|
||||||
- );
|
|
||||||
+ pubkey_data => $pubkey_data,
|
|
||||||
+ };
|
|
||||||
+ if (!$gpg_is_modern) {
|
|
||||||
+ # older versions don't report ownertrust or pubkey_data for secret keys:
|
|
||||||
+ delete $args->{pubkey_data};
|
|
||||||
+ $args->{owner_trust} = '';
|
|
||||||
+ }
|
|
||||||
+ $handmade_key = GnuPG::PrimaryKey->new($args);
|
|
||||||
|
|
||||||
$handmade_key->fingerprint
|
|
||||||
( GnuPG::Fingerprint->new( as_hex_string =>
|
|
||||||
@@ -42,20 +60,42 @@ TEST
|
|
||||||
|
|
||||||
$handmade_key->push_user_ids(
|
|
||||||
GnuPG::UserId->new( as_string => 'GnuPG test key (for testing purposes only)',
|
|
||||||
- validity => ''), # secret keys do not report uid validity?
|
|
||||||
+ validity => $args->{owner_trust}),
|
|
||||||
GnuPG::UserId->new( as_string => 'Foo Bar (1)',
|
|
||||||
- validity => '')); # secret keys do not report uid validity?
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- my $subkey = GnuPG::SubKey->new
|
|
||||||
- ( validity => '-',
|
|
||||||
+ validity => $args->{owner_trust}));
|
|
||||||
+
|
|
||||||
+ my $revoker = GnuPG::Revoker->new
|
|
||||||
+ ( algo_num => 17,
|
|
||||||
+ class => 0x80,
|
|
||||||
+ fingerprint => GnuPG::Fingerprint->new( as_hex_string =>
|
|
||||||
+ '4F863BBBA8166F0A340F600356FFD10A260C4FA3'),
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+ my $subkey_pub_data = [
|
|
||||||
+ Math::BigInt->from_hex('0x'.
|
|
||||||
+ '8831982DADC4C5D05CBB01D9EAF612131DDC9C24CEA7246557679423FB0BA42F74D10D8E7F5564F6A4FB8837F8DC4A46571C19B122E6DF4B443D15197A6A22688863D0685FADB6E402316DAA9B560D1F915475364580A67E6DF0A727778A5CF3'),
|
|
||||||
+ Math::BigInt->from_hex('0x'.
|
|
||||||
+ '6'),
|
|
||||||
+ Math::BigInt->from_hex('0x'.
|
|
||||||
+ '2F3850FF130C6AC9AA0962720E86539626FAA9B67B33A74DFC0DE843FF3E90E43E2F379EE0182D914FA539CCCF5C83A20DB3A7C45E365B8A2A092E799A3DFF4AD8274EB977BAAF5B1AFB2ACB8D6F92454F01682F555565E73E56793C46EF7C3E')
|
|
||||||
+ ];
|
|
||||||
+
|
|
||||||
+ my $sub_args = {
|
|
||||||
+ validity => '-',
|
|
||||||
length => 768,
|
|
||||||
algo_num => 16,
|
|
||||||
hex_id => 'ADB99D9C2E854A6B',
|
|
||||||
creation_date => 949813119,
|
|
||||||
creation_date_string => '2000-02-06',
|
|
||||||
usage_flags => 'e',
|
|
||||||
- );
|
|
||||||
+ pubkey_data => $subkey_pub_data,
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ if (!$gpg_is_modern) {
|
|
||||||
+ # older versions do not report pubkey data for secret keys
|
|
||||||
+ delete $sub_args->{pubkey_data};
|
|
||||||
+ }
|
|
||||||
+ my $subkey = GnuPG::SubKey->new($sub_args);
|
|
||||||
|
|
||||||
$subkey->fingerprint
|
|
||||||
( GnuPG::Fingerprint->new( as_hex_string =>
|
|
||||||
@@ -64,6 +104,8 @@ TEST
|
|
||||||
);
|
|
||||||
|
|
||||||
$handmade_key->push_subkeys( $subkey );
|
|
||||||
+ # older versions do not report designated revokers for secret keys
|
|
||||||
+ $handmade_key->push_revokers( $revoker ) if ($gpg_is_modern);
|
|
||||||
|
|
||||||
$handmade_key->compare( $given_key );
|
|
||||||
};
|
|
@ -1,95 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 13 Sep 2016 14:46:13 -0400
|
|
||||||
Subject: test suite: match plaintext output across versions of GnuPG
|
|
||||||
|
|
||||||
The human-readable version of --list-keys is *not* expected to be
|
|
||||||
static over time or as the user's environment changes (e.g. LANG or
|
|
||||||
LC_MESSAGES), so expecting it to be machine-parseable is probably a
|
|
||||||
mistake.
|
|
||||||
|
|
||||||
That said, some users might want to pull textual information about
|
|
||||||
specific keys to display directly to the user, so it's not a terrible
|
|
||||||
idea to have it in the test suite.
|
|
||||||
|
|
||||||
Modern GnuPG (2.1 or later) changes the default structure of the
|
|
||||||
human-readable output in a few significant ways:
|
|
||||||
|
|
||||||
* it writes the path to the keyring as an absolute path, even if
|
|
||||||
$GNUPGHOME is set to a non-absolute path.
|
|
||||||
|
|
||||||
* it shows the calculated user id validity by default (see
|
|
||||||
show-uid-validity in gpg's --list-options). (note that this is a
|
|
||||||
translated string, so that "unknown" (in the default C locale)
|
|
||||||
becomes "inconnue" when LANG or LC_MESSAGES is set to fr_CH.UTF-8,
|
|
||||||
for example.
|
|
||||||
|
|
||||||
* it writes the key algorithm names differently (e.g. rsa2048 instead
|
|
||||||
of 2048R)
|
|
||||||
|
|
||||||
* it does not display the key ID at all by default
|
|
||||||
|
|
||||||
* it displays the full fingerprint in compact form by default
|
|
||||||
|
|
||||||
This changeset fixes the test suite so that it can do a rough
|
|
||||||
verification of the human-readable text output by list_secret_keys in
|
|
||||||
the C locale in modern versions of GnuPG, while leaving it working for
|
|
||||||
older GnuPG suites.
|
|
||||||
---
|
|
||||||
t/list_secret_keys.t | 15 +++++++++++++--
|
|
||||||
test/secret-keys/1.modern.test | 8 ++++++++
|
|
||||||
2 files changed, 21 insertions(+), 2 deletions(-)
|
|
||||||
create mode 100644 test/secret-keys/1.modern.test
|
|
||||||
|
|
||||||
diff --git a/t/list_secret_keys.t b/t/list_secret_keys.t
|
|
||||||
index 1fe9b7e..51e3651 100644
|
|
||||||
--- a/t/list_secret_keys.t
|
|
||||||
+++ b/t/list_secret_keys.t
|
|
||||||
@@ -16,13 +16,22 @@ TEST
|
|
||||||
{
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
+ $ENV{LC_MESSAGES} = 'C';
|
|
||||||
my $pid = $gnupg->list_secret_keys( handles => $handles );
|
|
||||||
close $stdin;
|
|
||||||
|
|
||||||
$outfile = 'test/secret-keys/1.out';
|
|
||||||
my $out = IO::File->new( "> $outfile" )
|
|
||||||
or die "cannot open $outfile for writing: $ERRNO";
|
|
||||||
- $out->print( <$stdout> );
|
|
||||||
+ while (<$stdout>) {
|
|
||||||
+ if ($gpg_is_modern && /^\/.*\/test\/gnupghome\/pubring.kbx$/) {
|
|
||||||
+ $out->print("test/gnupghome/pubring.kbx\n");
|
|
||||||
+ } elsif ($gpg_is_modern && /^--*$/) {
|
|
||||||
+ $out->print("--------------------------\n");
|
|
||||||
+ } else {
|
|
||||||
+ $out->print( $_ );
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
close $stdout;
|
|
||||||
$out->close();
|
|
||||||
waitpid $pid, 0;
|
|
||||||
@@ -33,7 +42,9 @@ TEST
|
|
||||||
|
|
||||||
TEST
|
|
||||||
{
|
|
||||||
- my @files_to_test = ( 'test/secret-keys/1.0.test' );
|
|
||||||
+ my $suffix = '0';
|
|
||||||
+ $suffix = 'modern' if ($gpg_is_modern);
|
|
||||||
+ my @files_to_test = ( 'test/secret-keys/1.'.$suffix.'.test' );
|
|
||||||
|
|
||||||
return file_match( $outfile, @files_to_test );
|
|
||||||
};
|
|
||||||
diff --git a/test/secret-keys/1.modern.test b/test/secret-keys/1.modern.test
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..3e46407
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/test/secret-keys/1.modern.test
|
|
||||||
@@ -0,0 +1,8 @@
|
|
||||||
+test/gnupghome/pubring.kbx
|
|
||||||
+--------------------------
|
|
||||||
+sec dsa1024 2000-02-06 [SCA]
|
|
||||||
+ 93AFC4B1B0288A104996B44253AE596EF950DA9C
|
|
||||||
+uid [ unknown] GnuPG test key (for testing purposes only)
|
|
||||||
+uid [ unknown] Foo Bar (1)
|
|
||||||
+ssb elg768 2000-02-06 [E]
|
|
||||||
+
|
|
@ -1,29 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 13 Sep 2016 15:22:27 -0400
|
|
||||||
Subject: fix test_default_key_passphrase when passphrase comes from agent
|
|
||||||
|
|
||||||
In the modern GnuPG suite, where the passphrase is always managed by
|
|
||||||
the agent, gpg itself doesn't emit the GOOD_PASSPHRASE status.
|
|
||||||
Instead, if signing is successful it emits plain old SIG_CREATED.
|
|
||||||
|
|
||||||
There are probably even better ways to test whether a given key is
|
|
||||||
unlocked in this case, but this is a straightforward baseline fix that
|
|
||||||
should get this part of the test suite to pass with all available
|
|
||||||
versions of GnuPG.
|
|
||||||
---
|
|
||||||
lib/GnuPG/Interface.pm | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/GnuPG/Interface.pm b/lib/GnuPG/Interface.pm
|
|
||||||
index 83a4b1a..1f1e6d5 100644
|
|
||||||
--- a/lib/GnuPG/Interface.pm
|
|
||||||
+++ b/lib/GnuPG/Interface.pm
|
|
||||||
@@ -808,7 +808,7 @@ sub test_default_key_passphrase() {
|
|
||||||
|
|
||||||
# all we realy want to check is the status fh
|
|
||||||
while (<$status>) {
|
|
||||||
- if (/^\[GNUPG:\]\s*GOOD_PASSPHRASE/) {
|
|
||||||
+ if (/^\[GNUPG:\]\s*(GOOD_PASSPHRASE|SIG_CREATED)/) {
|
|
||||||
waitpid $pid, 0;
|
|
||||||
return 1;
|
|
||||||
}
|
|
@ -1,112 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 11 Oct 2016 19:52:13 -0400
|
|
||||||
Subject: clean up trailing whitespace
|
|
||||||
|
|
||||||
---
|
|
||||||
lib/GnuPG/Fingerprint.pm | 2 +-
|
|
||||||
lib/GnuPG/Handles.pm | 2 +-
|
|
||||||
lib/GnuPG/Interface.pm | 16 ++++++++--------
|
|
||||||
3 files changed, 10 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/GnuPG/Fingerprint.pm b/lib/GnuPG/Fingerprint.pm
|
|
||||||
index fcb1028..81c38a7 100644
|
|
||||||
--- a/lib/GnuPG/Fingerprint.pm
|
|
||||||
+++ b/lib/GnuPG/Fingerprint.pm
|
|
||||||
@@ -20,7 +20,7 @@ with qw(GnuPG::HashInit);
|
|
||||||
|
|
||||||
has as_hex_string => (
|
|
||||||
isa => 'Any',
|
|
||||||
- is => 'rw',
|
|
||||||
+ is => 'rw',
|
|
||||||
);
|
|
||||||
|
|
||||||
sub compare {
|
|
||||||
diff --git a/lib/GnuPG/Handles.pm b/lib/GnuPG/Handles.pm
|
|
||||||
index b30ca57..3eee0e3 100644
|
|
||||||
--- a/lib/GnuPG/Handles.pm
|
|
||||||
+++ b/lib/GnuPG/Handles.pm
|
|
||||||
@@ -73,7 +73,7 @@ GnuPG::Handles - GnuPG handles bundle
|
|
||||||
= ( IO::Handle->new(), IO::Handle->new(), IO::Handle->new(),
|
|
||||||
IO::Handle->new(), IO::Handle->new(), IO::Handle->new(),
|
|
||||||
);
|
|
||||||
-
|
|
||||||
+
|
|
||||||
my $handles = GnuPG::Handles->new
|
|
||||||
( stdin => $stdin,
|
|
||||||
stdout => $stdout,
|
|
||||||
diff --git a/lib/GnuPG/Interface.pm b/lib/GnuPG/Interface.pm
|
|
||||||
index 1f1e6d5..19e8070 100644
|
|
||||||
--- a/lib/GnuPG/Interface.pm
|
|
||||||
+++ b/lib/GnuPG/Interface.pm
|
|
||||||
@@ -833,7 +833,7 @@ GnuPG::Interface - Perl interface to GnuPG
|
|
||||||
# A simple example
|
|
||||||
use IO::Handle;
|
|
||||||
use GnuPG::Interface;
|
|
||||||
-
|
|
||||||
+
|
|
||||||
# setting up the situation
|
|
||||||
my $gnupg = GnuPG::Interface->new();
|
|
||||||
$gnupg->options->hash_init( armor => 1,
|
|
||||||
@@ -852,7 +852,7 @@ GnuPG::Interface - Perl interface to GnuPG
|
|
||||||
# Now we'll go about encrypting with the options already set
|
|
||||||
my @plaintext = ( 'foobar' );
|
|
||||||
my $pid = $gnupg->encrypt( handles => $handles );
|
|
||||||
-
|
|
||||||
+
|
|
||||||
# Now we write to the input of GnuPG
|
|
||||||
print $input @plaintext;
|
|
||||||
close $input;
|
|
||||||
@@ -1144,7 +1144,7 @@ The following setup can be done before any of the following examples:
|
|
||||||
|
|
||||||
my $handles = GnuPG::Handles->new( stdin => $input,
|
|
||||||
stdout => $output );
|
|
||||||
-
|
|
||||||
+
|
|
||||||
# this sets up the communication
|
|
||||||
# Note that the recipients were specified earlier
|
|
||||||
# in the 'options' data member of the $gnupg object.
|
|
||||||
@@ -1220,7 +1220,7 @@ The following setup can be done before any of the following examples:
|
|
||||||
# a file written to disk
|
|
||||||
# Make sure you "use IO::File" if you use this module!
|
|
||||||
my $cipher_file = IO::File->new( 'encrypted.gpg' );
|
|
||||||
-
|
|
||||||
+
|
|
||||||
# this sets up the communication
|
|
||||||
my $pid = $gnupg->decrypt( handles => $handles );
|
|
||||||
|
|
||||||
@@ -1252,7 +1252,7 @@ The following setup can be done before any of the following examples:
|
|
||||||
# This time we'll just let GnuPG print to our own output
|
|
||||||
# and read from our input, because no input is needed!
|
|
||||||
my $handles = GnuPG::Handles->new();
|
|
||||||
-
|
|
||||||
+
|
|
||||||
my @ids = ( 'ftobin', '0xABCD1234' );
|
|
||||||
|
|
||||||
# this time we need to specify something for
|
|
||||||
@@ -1260,7 +1260,7 @@ The following setup can be done before any of the following examples:
|
|
||||||
# search ids as arguments
|
|
||||||
my $pid = $gnupg->list_public_keys( handles => $handles,
|
|
||||||
command_args => [ @ids ] );
|
|
||||||
-
|
|
||||||
+
|
|
||||||
waitpid $pid, 0;
|
|
||||||
|
|
||||||
=head2 Creating GnuPG::PublicKey Objects
|
|
||||||
@@ -1280,7 +1280,7 @@ The following setup can be done before any of the following examples:
|
|
||||||
command_args => [ qw( test/key.1.asc ) ],
|
|
||||||
handles => $handles,
|
|
||||||
);
|
|
||||||
-
|
|
||||||
+
|
|
||||||
my @out = <$handles->stdout()>;
|
|
||||||
waitpid $pid, 0;
|
|
||||||
|
|
||||||
@@ -1357,7 +1357,7 @@ under the same terms as Perl itself.
|
|
||||||
|
|
||||||
=head1 AUTHOR
|
|
||||||
|
|
||||||
-GnuPg::Interface is currently maintained by Jesse Vincent <jesse@cpan.org>.
|
|
||||||
+GnuPg::Interface is currently maintained by Jesse Vincent <jesse@cpan.org>.
|
|
||||||
|
|
||||||
Frank J. Tobin, ftobin@cpan.org was the original author of the package.
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 11 Oct 2016 19:52:58 -0400
|
|
||||||
Subject: fix capitalization of GnuPG
|
|
||||||
|
|
||||||
---
|
|
||||||
README | 2 +-
|
|
||||||
lib/GnuPG/Interface.pm | 2 +-
|
|
||||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/README b/README
|
|
||||||
index f457577..aa7c984 100644
|
|
||||||
--- a/README
|
|
||||||
+++ b/README
|
|
||||||
@@ -427,7 +427,7 @@ LICENSE
|
|
||||||
under the same terms as Perl itself.
|
|
||||||
|
|
||||||
AUTHOR
|
|
||||||
- GnuPg::Interface is currently maintained by Jesse Vincent
|
|
||||||
+ GnuPG::Interface is currently maintained by Jesse Vincent
|
|
||||||
<jesse@cpan.org>.
|
|
||||||
|
|
||||||
Frank J. Tobin, ftobin@cpan.org was the original author of the package.
|
|
||||||
diff --git a/lib/GnuPG/Interface.pm b/lib/GnuPG/Interface.pm
|
|
||||||
index 19e8070..cf7138f 100644
|
|
||||||
--- a/lib/GnuPG/Interface.pm
|
|
||||||
+++ b/lib/GnuPG/Interface.pm
|
|
||||||
@@ -1357,7 +1357,7 @@ under the same terms as Perl itself.
|
|
||||||
|
|
||||||
=head1 AUTHOR
|
|
||||||
|
|
||||||
-GnuPg::Interface is currently maintained by Jesse Vincent <jesse@cpan.org>.
|
|
||||||
+GnuPG::Interface is currently maintained by Jesse Vincent <jesse@cpan.org>.
|
|
||||||
|
|
||||||
Frank J. Tobin, ftobin@cpan.org was the original author of the package.
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 11 Oct 2016 19:57:10 -0400
|
|
||||||
Subject: ommand_args should be command_args
|
|
||||||
|
|
||||||
---
|
|
||||||
t/list_public_keys.t | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/t/list_public_keys.t b/t/list_public_keys.t
|
|
||||||
index 7e563c1..a36a78b 100644
|
|
||||||
--- a/t/list_public_keys.t
|
|
||||||
+++ b/t/list_public_keys.t
|
|
||||||
@@ -38,7 +38,7 @@ TEST
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
my $pid = $gnupg->list_public_keys( handles => $handles,
|
|
||||||
- ommand_args => '0xF950DA9C'
|
|
||||||
+ command_args => '0xF950DA9C'
|
|
||||||
);
|
|
||||||
close $stdin;
|
|
||||||
|
|
@ -1,265 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 11 Oct 2016 20:05:16 -0400
|
|
||||||
Subject: use fingerprints as inputs during tests to demonstrate explicit usage
|
|
||||||
|
|
||||||
---
|
|
||||||
README | 6 +++---
|
|
||||||
lib/GnuPG/Interface.pm | 6 +++---
|
|
||||||
lib/GnuPG/Options.pm | 2 +-
|
|
||||||
t/MyTestSpecific.pm | 2 +-
|
|
||||||
t/encrypt.t | 6 +++---
|
|
||||||
t/export_keys.t | 4 ++--
|
|
||||||
t/get_public_keys.t | 2 +-
|
|
||||||
t/get_secret_keys.t | 2 +-
|
|
||||||
t/list_public_keys.t | 4 ++--
|
|
||||||
t/list_secret_keys.t | 4 ++--
|
|
||||||
t/list_sigs.t | 4 ++--
|
|
||||||
t/sign_and_encrypt.t | 2 +-
|
|
||||||
12 files changed, 22 insertions(+), 22 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/README b/README
|
|
||||||
index aa7c984..ed94ede 100644
|
|
||||||
--- a/README
|
|
||||||
+++ b/README
|
|
||||||
@@ -228,7 +228,7 @@ EXAMPLES
|
|
||||||
|
|
||||||
$gnupg->options->hash_init( armor => 1,
|
|
||||||
recipients => [ 'ftobin@uiuc.edu',
|
|
||||||
- '0xABCD1234' ],
|
|
||||||
+ '0xABCD1234ABCD1234ABCD1234ABCD1234ABCD1234' ],
|
|
||||||
meta_interactive => 0 ,
|
|
||||||
);
|
|
||||||
|
|
||||||
@@ -347,7 +347,7 @@ EXAMPLES
|
|
||||||
# and read from our input, because no input is needed!
|
|
||||||
my $handles = GnuPG::Handles->new();
|
|
||||||
|
|
||||||
- my @ids = ( 'ftobin', '0xABCD1234' );
|
|
||||||
+ my @ids = ( 'ftobin', '0xABCD1234ABCD1234ABCD1234ABCD1234ABCD1234' );
|
|
||||||
|
|
||||||
# this time we need to specify something for
|
|
||||||
# command_args because --list-public-keys takes
|
|
||||||
@@ -358,7 +358,7 @@ EXAMPLES
|
|
||||||
waitpid $pid, 0;
|
|
||||||
|
|
||||||
Creating GnuPG::PublicKey Objects
|
|
||||||
- my @ids = [ 'ftobin', '0xABCD1234' ];
|
|
||||||
+ my @ids = [ 'ftobin', '0xABCD1234ABCD1234ABCD1234ABCD1234ABCD1234' ];
|
|
||||||
|
|
||||||
my @keys = $gnupg->get_public_keys( @ids );
|
|
||||||
|
|
||||||
diff --git a/lib/GnuPG/Interface.pm b/lib/GnuPG/Interface.pm
|
|
||||||
index cf7138f..6eaef7d 100644
|
|
||||||
--- a/lib/GnuPG/Interface.pm
|
|
||||||
+++ b/lib/GnuPG/Interface.pm
|
|
||||||
@@ -1130,7 +1130,7 @@ The following setup can be done before any of the following examples:
|
|
||||||
|
|
||||||
$gnupg->options->hash_init( armor => 1,
|
|
||||||
recipients => [ 'ftobin@uiuc.edu',
|
|
||||||
- '0xABCD1234' ],
|
|
||||||
+ '0xABCD1234ABCD1234ABCD1234ABCD1234ABCD1234' ],
|
|
||||||
meta_interactive => 0 ,
|
|
||||||
);
|
|
||||||
|
|
||||||
@@ -1253,7 +1253,7 @@ The following setup can be done before any of the following examples:
|
|
||||||
# and read from our input, because no input is needed!
|
|
||||||
my $handles = GnuPG::Handles->new();
|
|
||||||
|
|
||||||
- my @ids = ( 'ftobin', '0xABCD1234' );
|
|
||||||
+ my @ids = ( 'ftobin', '0xABCD1234ABCD1234ABCD1234ABCD1234ABCD1234' );
|
|
||||||
|
|
||||||
# this time we need to specify something for
|
|
||||||
# command_args because --list-public-keys takes
|
|
||||||
@@ -1265,7 +1265,7 @@ The following setup can be done before any of the following examples:
|
|
||||||
|
|
||||||
=head2 Creating GnuPG::PublicKey Objects
|
|
||||||
|
|
||||||
- my @ids = [ 'ftobin', '0xABCD1234' ];
|
|
||||||
+ my @ids = [ 'ftobin', '0xABCD1234ABCD1234ABCD1234ABCD1234ABCD1234' ];
|
|
||||||
|
|
||||||
my @keys = $gnupg->get_public_keys( @ids );
|
|
||||||
|
|
||||||
diff --git a/lib/GnuPG/Options.pm b/lib/GnuPG/Options.pm
|
|
||||||
index 86261a0..7788662 100644
|
|
||||||
--- a/lib/GnuPG/Options.pm
|
|
||||||
+++ b/lib/GnuPG/Options.pm
|
|
||||||
@@ -198,7 +198,7 @@ GnuPG::Options - GnuPG options embodiment
|
|
||||||
|
|
||||||
# assuming $gnupg is a GnuPG::Interface object
|
|
||||||
$gnupg->options->armor( 1 );
|
|
||||||
- $gnupg->options->push_recipients( 'ftobin', '0xABCD1234' );
|
|
||||||
+ $gnupg->options->push_recipients( 'ftobin', '0xABCD1234ABCD1234ABCD1234ABCD1234ABCD1234' );
|
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
|
||||||
|
|
||||||
diff --git a/t/MyTestSpecific.pm b/t/MyTestSpecific.pm
|
|
||||||
index a309698..c8764cc 100644
|
|
||||||
--- a/t/MyTestSpecific.pm
|
|
||||||
+++ b/t/MyTestSpecific.pm
|
|
||||||
@@ -46,7 +46,7 @@ $gpg_is_modern = ($version[0] > 2 || ($version[0] == 2 && $version[1] >= 1));
|
|
||||||
$gnupg->options->hash_init( homedir => 'test/gnupghome',
|
|
||||||
armor => 1,
|
|
||||||
meta_interactive => 0,
|
|
||||||
- meta_signing_key_id => '0xF950DA9C',
|
|
||||||
+ meta_signing_key_id => '0x93AFC4B1B0288A104996B44253AE596EF950DA9C',
|
|
||||||
always_trust => 1,
|
|
||||||
);
|
|
||||||
|
|
||||||
diff --git a/t/encrypt.t b/t/encrypt.t
|
|
||||||
index 3183ac4..e6bdc08 100644
|
|
||||||
--- a/t/encrypt.t
|
|
||||||
+++ b/t/encrypt.t
|
|
||||||
@@ -27,7 +27,7 @@ TEST
|
|
||||||
|
|
||||||
$gnupg->options->clear_recipients();
|
|
||||||
$gnupg->options->clear_meta_recipients_keys();
|
|
||||||
- $gnupg->options->push_recipients( '0x2E854A6B' );
|
|
||||||
+ $gnupg->options->push_recipients( '0x7466B7E98C4CCB64C2CE738BADB99D9C2E854A6B' );
|
|
||||||
|
|
||||||
my $pid = $gnupg->encrypt( handles => $handles );
|
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ TEST
|
|
||||||
{
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
- my @keys = $gnupg->get_public_keys( '0xF950DA9C' );
|
|
||||||
+ my @keys = $gnupg->get_public_keys( '0x93AFC4B1B0288A104996B44253AE596EF950DA9C' );
|
|
||||||
$gnupg->options->clear_recipients();
|
|
||||||
$gnupg->options->clear_meta_recipients_keys();
|
|
||||||
$gnupg->options->push_meta_recipients_keys( @keys );
|
|
||||||
@@ -64,7 +64,7 @@ TEST
|
|
||||||
|
|
||||||
$gnupg->options->clear_recipients();
|
|
||||||
$gnupg->options->clear_meta_recipients_keys();
|
|
||||||
- $gnupg->options->push_recipients( '0x2E854A6B' );
|
|
||||||
+ $gnupg->options->push_recipients( '0x7466B7E98C4CCB64C2CE738BADB99D9C2E854A6B' );
|
|
||||||
|
|
||||||
$handles->stdin( $texts{plain}->fh() );
|
|
||||||
$handles->options( 'stdin' )->{direct} = 1;
|
|
||||||
diff --git a/t/export_keys.t b/t/export_keys.t
|
|
||||||
index cf5c82b..5add064 100644
|
|
||||||
--- a/t/export_keys.t
|
|
||||||
+++ b/t/export_keys.t
|
|
||||||
@@ -15,7 +15,7 @@ TEST
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
my $pid = $gnupg->export_keys( handles => $handles,
|
|
||||||
- command_args => '0xF950DA9C' );
|
|
||||||
+ command_args => '0x93AFC4B1B0288A104996B44253AE596EF950DA9C' );
|
|
||||||
close $stdin;
|
|
||||||
waitpid $pid, 0;
|
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ TEST
|
|
||||||
$handles->options( 'stdout' )->{direct} = 1;
|
|
||||||
|
|
||||||
my $pid = $gnupg->export_keys( handles => $handles,
|
|
||||||
- command_args => '0xF950DA9C' );
|
|
||||||
+ command_args => '0x93AFC4B1B0288A104996B44253AE596EF950DA9C' );
|
|
||||||
waitpid $pid, 0;
|
|
||||||
return $CHILD_ERROR == 0;
|
|
||||||
};
|
|
||||||
diff --git a/t/get_public_keys.t b/t/get_public_keys.t
|
|
||||||
index 9e96f7d..7893625 100644
|
|
||||||
--- a/t/get_public_keys.t
|
|
||||||
+++ b/t/get_public_keys.t
|
|
||||||
@@ -19,7 +19,7 @@ TEST
|
|
||||||
{
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
- my @returned_keys = $gnupg->get_public_keys_with_sigs( '0xF950DA9C' );
|
|
||||||
+ my @returned_keys = $gnupg->get_public_keys_with_sigs( '0x93AFC4B1B0288A104996B44253AE596EF950DA9C' );
|
|
||||||
|
|
||||||
return 0 unless @returned_keys == 1;
|
|
||||||
|
|
||||||
diff --git a/t/get_secret_keys.t b/t/get_secret_keys.t
|
|
||||||
index c798cce..a7f1348 100644
|
|
||||||
--- a/t/get_secret_keys.t
|
|
||||||
+++ b/t/get_secret_keys.t
|
|
||||||
@@ -18,7 +18,7 @@ TEST
|
|
||||||
{
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
- my @returned_keys = $gnupg->get_secret_keys( '0xF950DA9C' );
|
|
||||||
+ my @returned_keys = $gnupg->get_secret_keys( '0x93AFC4B1B0288A104996B44253AE596EF950DA9C' );
|
|
||||||
|
|
||||||
return 0 unless @returned_keys == 1;
|
|
||||||
|
|
||||||
diff --git a/t/list_public_keys.t b/t/list_public_keys.t
|
|
||||||
index a36a78b..622b092 100644
|
|
||||||
--- a/t/list_public_keys.t
|
|
||||||
+++ b/t/list_public_keys.t
|
|
||||||
@@ -38,7 +38,7 @@ TEST
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
my $pid = $gnupg->list_public_keys( handles => $handles,
|
|
||||||
- command_args => '0xF950DA9C'
|
|
||||||
+ command_args => '0x93AFC4B1B0288A104996B44253AE596EF950DA9C'
|
|
||||||
);
|
|
||||||
close $stdin;
|
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ TEST
|
|
||||||
$handles->options( 'stdout' )->{direct} = 1;
|
|
||||||
|
|
||||||
my $pid = $gnupg->list_public_keys( handles => $handles,
|
|
||||||
- command_args => '0xF950DA9C',
|
|
||||||
+ command_args => '0x93AFC4B1B0288A104996B44253AE596EF950DA9C',
|
|
||||||
);
|
|
||||||
|
|
||||||
waitpid $pid, 0;
|
|
||||||
diff --git a/t/list_secret_keys.t b/t/list_secret_keys.t
|
|
||||||
index 51e3651..7040c38 100644
|
|
||||||
--- a/t/list_secret_keys.t
|
|
||||||
+++ b/t/list_secret_keys.t
|
|
||||||
@@ -55,7 +55,7 @@ TEST
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
my $pid = $gnupg->list_secret_keys( handles => $handles,
|
|
||||||
- command_args => '0xF950DA9C' );
|
|
||||||
+ command_args => '0x93AFC4B1B0288A104996B44253AE596EF950DA9C' );
|
|
||||||
close $stdin;
|
|
||||||
|
|
||||||
$outfile = 'test/secret-keys/2.out';
|
|
||||||
@@ -80,7 +80,7 @@ TEST
|
|
||||||
$handles->options( 'stdout' )->{direct} = 1;
|
|
||||||
|
|
||||||
my $pid = $gnupg->list_secret_keys( handles => $handles,
|
|
||||||
- command_args => '0xF950DA9C' );
|
|
||||||
+ command_args => '0x93AFC4B1B0288A104996B44253AE596EF950DA9C' );
|
|
||||||
|
|
||||||
waitpid $pid, 0;
|
|
||||||
|
|
||||||
diff --git a/t/list_sigs.t b/t/list_sigs.t
|
|
||||||
index 16cfa6a..1301fb2 100644
|
|
||||||
--- a/t/list_sigs.t
|
|
||||||
+++ b/t/list_sigs.t
|
|
||||||
@@ -36,7 +36,7 @@ TEST
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
my $pid = $gnupg->list_sigs( handles => $handles,
|
|
||||||
- command_args => '0xF950DA9C',
|
|
||||||
+ command_args => '0x93AFC4B1B0288A104996B44253AE596EF950DA9C',
|
|
||||||
);
|
|
||||||
close $stdin;
|
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ TEST
|
|
||||||
$handles->options( 'stdout' )->{direct} = 1;
|
|
||||||
|
|
||||||
my $pid = $gnupg->list_sigs( handles => $handles,
|
|
||||||
- command_args => '0xF950DA9C',
|
|
||||||
+ command_args => '0x93AFC4B1B0288A104996B44253AE596EF950DA9C',
|
|
||||||
);
|
|
||||||
|
|
||||||
waitpid $pid, 0;
|
|
||||||
diff --git a/t/sign_and_encrypt.t b/t/sign_and_encrypt.t
|
|
||||||
index 5dc1c08..df0fc75 100644
|
|
||||||
--- a/t/sign_and_encrypt.t
|
|
||||||
+++ b/t/sign_and_encrypt.t
|
|
||||||
@@ -14,7 +14,7 @@ TEST
|
|
||||||
{
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
- $gnupg->options->push_recipients( '0x2E854A6B' );
|
|
||||||
+ $gnupg->options->push_recipients( '0x7466B7E98C4CCB64C2CE738BADB99D9C2E854A6B' );
|
|
||||||
my $pid = $gnupg->sign_and_encrypt( handles => $handles );
|
|
||||||
|
|
||||||
print $stdin @{ $texts{plain}->data() };
|
|
@ -1,33 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 11 Oct 2016 20:17:49 -0400
|
|
||||||
Subject: move key files to generic names
|
|
||||||
|
|
||||||
---
|
|
||||||
t/000_setup.t | 2 +-
|
|
||||||
test/{pubring.gpg => public_keys.pgp} | Bin
|
|
||||||
test/{secring.gpg => secret_keys.pgp} | Bin
|
|
||||||
3 files changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
rename test/{pubring.gpg => public_keys.pgp} (100%)
|
|
||||||
rename test/{secring.gpg => secret_keys.pgp} (100%)
|
|
||||||
|
|
||||||
diff --git a/t/000_setup.t b/t/000_setup.t
|
|
||||||
index 7f7f7b0..a8e3042 100644
|
|
||||||
--- a/t/000_setup.t
|
|
||||||
+++ b/t/000_setup.t
|
|
||||||
@@ -19,7 +19,7 @@ TEST
|
|
||||||
copy('test/gpg.conf', 'test/gnupghome/gpg.conf');
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
- my $pid = $gnupg->import_keys(command_args => [ 'test/pubring.gpg', 'test/secring.gpg' ],
|
|
||||||
+ my $pid = $gnupg->import_keys(command_args => [ 'test/public_keys.pgp', 'test/secret_keys.pgp' ],
|
|
||||||
options => [ 'batch'],
|
|
||||||
handles => $handles);
|
|
||||||
waitpid $pid, 0;
|
|
||||||
diff --git a/test/pubring.gpg b/test/public_keys.pgp
|
|
||||||
similarity index 100%
|
|
||||||
rename from test/pubring.gpg
|
|
||||||
rename to test/public_keys.pgp
|
|
||||||
diff --git a/test/secring.gpg b/test/secret_keys.pgp
|
|
||||||
similarity index 100%
|
|
||||||
rename from test/secring.gpg
|
|
||||||
rename to test/secret_keys.pgp
|
|
@ -1,53 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 11 Oct 2016 20:25:48 -0400
|
|
||||||
Subject: fix spelling: s/convience/convenience/
|
|
||||||
|
|
||||||
---
|
|
||||||
README | 4 ++--
|
|
||||||
lib/GnuPG/Interface.pm | 4 ++--
|
|
||||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/README b/README
|
|
||||||
index ed94ede..a05ef9b 100644
|
|
||||||
--- a/README
|
|
||||||
+++ b/README
|
|
||||||
@@ -143,7 +143,7 @@ OBJECT METHODS
|
|
||||||
does not come into play. If the passphrase data member handle of the
|
|
||||||
handles object is not defined, but the the passphrase data member
|
|
||||||
handle of GnuPG::Interface object is, GnuPG::Interface will handle
|
|
||||||
- passing this information into GnuPG for the user as a convience.
|
|
||||||
+ passing this information into GnuPG for the user as a convenience.
|
|
||||||
Note that this will result in GnuPG::Interface storing the
|
|
||||||
passphrase in memory, instead of having it simply 'pass-through' to
|
|
||||||
GnuPG via a handle.
|
|
||||||
@@ -271,7 +271,7 @@ EXAMPLES
|
|
||||||
);
|
|
||||||
|
|
||||||
# indicate our pasphrase through the
|
|
||||||
- # convience method
|
|
||||||
+ # convenience method
|
|
||||||
$gnupg->passphrase( $passphrase );
|
|
||||||
|
|
||||||
# this sets up the communication
|
|
||||||
diff --git a/lib/GnuPG/Interface.pm b/lib/GnuPG/Interface.pm
|
|
||||||
index 6eaef7d..29205f0 100644
|
|
||||||
--- a/lib/GnuPG/Interface.pm
|
|
||||||
+++ b/lib/GnuPG/Interface.pm
|
|
||||||
@@ -1008,7 +1008,7 @@ and so this information is not generated and does not come into play.
|
|
||||||
If the B<passphrase> data member handle of the B<handles> object
|
|
||||||
is not defined, but the the B<passphrase> data member handle of GnuPG::Interface
|
|
||||||
object is, GnuPG::Interface will handle passing this information into GnuPG
|
|
||||||
-for the user as a convience. Note that this will result in
|
|
||||||
+for the user as a convenience. Note that this will result in
|
|
||||||
GnuPG::Interface storing the passphrase in memory, instead of having
|
|
||||||
it simply 'pass-through' to GnuPG via a handle.
|
|
||||||
|
|
||||||
@@ -1175,7 +1175,7 @@ The following setup can be done before any of the following examples:
|
|
||||||
);
|
|
||||||
|
|
||||||
# indicate our pasphrase through the
|
|
||||||
- # convience method
|
|
||||||
+ # convenience method
|
|
||||||
$gnupg->passphrase( $passphrase );
|
|
||||||
|
|
||||||
# this sets up the communication
|
|
@ -1,117 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 11 Oct 2016 20:59:43 -0400
|
|
||||||
Subject: added new secret key with different passphrase
|
|
||||||
|
|
||||||
Adding a new secret key with a different passphrase should allow us to
|
|
||||||
differentiate between passing the passphrase explicitly and relying on
|
|
||||||
the agent + pinentry.
|
|
||||||
---
|
|
||||||
t/000_setup.t | 2 +-
|
|
||||||
test/new_secret.pgp | 58 ++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
test/secret-keys/1.0.test | 4 +++
|
|
||||||
test/secret-keys/1.modern.test | 5 ++++
|
|
||||||
4 files changed, 68 insertions(+), 1 deletion(-)
|
|
||||||
create mode 100644 test/new_secret.pgp
|
|
||||||
|
|
||||||
diff --git a/t/000_setup.t b/t/000_setup.t
|
|
||||||
index a8e3042..b183241 100644
|
|
||||||
--- a/t/000_setup.t
|
|
||||||
+++ b/t/000_setup.t
|
|
||||||
@@ -19,7 +19,7 @@ TEST
|
|
||||||
copy('test/gpg.conf', 'test/gnupghome/gpg.conf');
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
- my $pid = $gnupg->import_keys(command_args => [ 'test/public_keys.pgp', 'test/secret_keys.pgp' ],
|
|
||||||
+ my $pid = $gnupg->import_keys(command_args => [ 'test/public_keys.pgp', 'test/secret_keys.pgp', 'test/new_secret.pgp' ],
|
|
||||||
options => [ 'batch'],
|
|
||||||
handles => $handles);
|
|
||||||
waitpid $pid, 0;
|
|
||||||
diff --git a/test/new_secret.pgp b/test/new_secret.pgp
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..5feb72c
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/test/new_secret.pgp
|
|
||||||
@@ -0,0 +1,58 @@
|
|
||||||
+-----BEGIN PGP PRIVATE KEY BLOCK-----
|
|
||||||
+
|
|
||||||
+lQPGBFf9iNIBCACZGF36JFTAggUJK85gweUquqh0kvVQICUtyiHXFXBBPzCK+RWL
|
|
||||||
+oc5yeOfILHH7FfOztwPH1oJ7SWQtOgpuoiMHPtF7ne+MYevMf9jTYb/xCT0yZID5
|
|
||||||
+/ieoHwUQQPiowxGewOww23RLQ1Cf46nqGBUD+fsWwT2Eq6ojLp/H72h+2lQ1ZCWd
|
|
||||||
+Q/9MSQQgDo5tWptokFGmLBKCS59pYMBaLbKSj7lFa/ekPm9zhcdmmLrLHCS9rIUP
|
|
||||||
+VKlWAg02MVmMB4fYm9nbtuwYHWvbDFYzpVr2WNlRZlPy0Y46ahxFbFwhtmOJAgT1
|
|
||||||
+tgaQtDXo3kXRXngYZstDfe61Hqmc44j1vJ4VABEBAAH+BwMCnvb4v9vnhhzmdZdJ
|
|
||||||
+EzK3ikXYQp3PcOMDlRE5qtBmXhOJXH2tdEmXjegjWGA501eeoks0VnpBba2m4B36
|
|
||||||
+Z37fjpOEi4QOuTn6emVwijJZgmmTAC7JHNzAW+IsiRvk/2907UZCwa/1UQpC0bik
|
|
||||||
+pHTZx+yKp33vGbkbCkKgHFQoHcS9D1by0WOkaLSlcE9CUCKb5LCe2Q1KDwZGrg60
|
|
||||||
+4WUvg9eM2eatixAyOJEoRONlXDcQnUhSnG5+TUPNhVVWIaM/tPAgYmBG5oCSJ/N0
|
|
||||||
+ls8cXoOVup/itBHo2Bfn+nyh0OAWdgdVmB0rPYUCLJV0FiQx5tB59OHmA3Naokj5
|
|
||||||
+rvumyklCg314NnkEXrbPq7kKbX0X8UPoXdzAmalb4++OhgzEwd3NkWxvFSxKkQAt
|
|
||||||
+XAU5i9XNHJXLwATAMlEaXMBmfcpjyIx4WpBUSmYMTjh0Nu5ee+kGvMY9fUxOKbet
|
|
||||||
+IS9agFSMwVNRsX91+pKtBCQc7Je5tIrLhC8Hbvotn0GA8iFgu6LBqkrUO9Rh30Xs
|
|
||||||
+vzz3oXm7WgHbL30m9h+rJ2dmPZOwmW/0zRUec/7alizx0T4sLx7T0qUPUxeEjkeU
|
|
||||||
+JWtqfrcXEc3xIR9r5S2xqsUSKx6h1UhHMeMtQaDBgeH/Syq7a2gnkNoY84xxojGj
|
|
||||||
+lGkis5PF3xFpYqvjY0thyPFNxQguRlqktN8gNB+V1dShbCpNI9bDzv4pzvogEiM0
|
|
||||||
+EM/xvJSCkARCe6nqOugWV8j5f3+9tuyREqcidHq+PR+USoNYdUWQO14kPY6e62wO
|
|
||||||
+lC5B4G7TDQtigCfOyEOiPXYC/qnC8sPVR2u5bCYm2YJT7L+rYRLSN+628qz7BwH3
|
|
||||||
+9XtpnRtBFWpjI5qjn4uMM42e3k5UVB/r4GyrLXhEuO8D81TVzRQhjiqLweguk73h
|
|
||||||
+VDjEd0yachHbtCxHbnVQRzo6SW50ZXJmYWNlIFRlc3Qga2V5IDx0ZXN0QGV4YW1w
|
|
||||||
+bGUub3JnPokBNwQTAQgAIQUCV/2I0gIbAwULCQgHAgYVCAkKCwIEFgIDAQIeAQIX
|
|
||||||
+gAAKCRAbkTzptnR93EZkB/9groVsVMBJtGP1GSFMg2Q9loyijXT2P6hCbUTS4YMz
|
|
||||||
+O4jQPB8UQ39XIhyWo7hVGsXeA777+7VTto7q0CG9Ph7FTGKK8W2AnzTUKNdXAC6h
|
|
||||||
+qIc+ymvlm71GxhkKFR0vDbFg6CLJ/MX/x1Bd0TKh4RZtgOqX6A7Pzw/AI7f2YJcJ
|
|
||||||
+BKPT+/q/F/Wp1r+mxZ5pxUvYm643GVzdnbtuoqgBLng/3n1zjIz+oIz6RGBjzHni
|
|
||||||
+3TUTKe//ewn1lIdTxPdUZA9G4vTE5dCnM4MHTxQSXA+aUexuONswQhiANtfVCW8c
|
|
||||||
+sf9MQpkQ/Vqv9hfeYwH4pJ8IPK1No9F0a0fvnq2JaX4gnQPGBFf9iNIBCADEQ6HK
|
|
||||||
+s5tWN2Ph/3A6D0A2nSc6m1Mh/AXhdptka0aPhhVgspCmQ1lJP/Kdf6AnlCi6u1G7
|
|
||||||
+QXvGX8OtbKNosLi91nIqvNwckUOvXrLcAk/epkmidopOuHUZhE+1UaLKs7UssBOe
|
|
||||||
+TQTtADdl2786E3qbtaNrjDTvbNesU1DEZjNoBWfKYHZYv2wCF170Lwzp7NJhAueO
|
|
||||||
+bTwfUO8EusST6d1NYB0zFxbBi60/hJHCfcAuaSn00jFQ+kj8m7jXCgcyB+1+25d2
|
|
||||||
+gpPbs19S4pi9f7eQflhglm0wB13C6yl+YgwVZQxU/fU70jgSYhkXNPx5bEN3WGkg
|
|
||||||
+4hnP53hrsI4p3se1ABEBAAH+BwMCAppvwSTp9Y/mu317D14a9k6m/zC2LrzPx6dl
|
|
||||||
+P3GtDJUCs1CVH/wXsUxLY4hAgS188xPhNLuIWuXwQ7qX7E8kanxgPqeK7NTAPKxH
|
|
||||||
+CEqJPevFRBtftHq3zqZZF9CHXulDO3KkWxIHANMclq+zcUotrc4GXIxeYjewXv9p
|
|
||||||
+tzKEjlt27Q00VvwRM7JVxBlC3xJvKXf6zyRoUt2/Clq+CFkb2s+dAzCI52o7tlB9
|
|
||||||
+El84sTIlJr0+b6+GcwrKonS8HcGUECfYmSiIiNmxlkJ/4OabDlDYlzvmCYv2pMjc
|
|
||||||
+Bif70Dowb8TBD/iTFLPY2lkhqBFi3Bcqc51MVecaQk3rRbVyOqhvGaRE084/LmkN
|
|
||||||
+gkE6vQKRSbzRmYwyKC/QUKOW5qbl5Jf3lrjVeM5tEnvJeRCfZEokKjIZul4nX4dK
|
|
||||||
+zxH+l+sCUA+RnEeGB2y1yhnPkP4dYHEb8iMLINqXQd18FpBFSs9yv9tFWJhdblUK
|
|
||||||
+SiS8DXmuoZI2Mk8yMZ0j0bi8mu9eh52dqYgBGD7TgjP5vpYU/zbtpNgMP0Zvne1X
|
|
||||||
+gig6NKK1+3VAZaiOvYUUHZERJGp/eggTtF66cD/0EHJjoZ/0pAciEvWYUyXWVBdj
|
|
||||||
+eVWBZE/RVOwrTMBVtrxQsPJ3sfeGlLt21IZYKathTZ/dn5PSlU+i4f9VyC/hHd8S
|
|
||||||
+xouQU3nB//ihbrR65YH5E53e8+jPaRtFvLbcqmY8YftV0y/5BZwduZoxcOtxD3A0
|
|
||||||
+J/2GVpUhs3WngCksdUAEbrEXzKKSOC7b4KDw2sTIT5xHra4CBK5L5N85ny8tG7A6
|
|
||||||
+wmTt+6PHo51gx/W/0jiMB3rEiGoTZ86uWLaGv5SgqLP49euCIEXNKK9srFK3o7QE
|
|
||||||
+04upH9zOXR8ytvPOLy/K5zT6YH2eyNs19sWfjAfP/bxhnrDYajsZ2WKZiQEfBBgB
|
|
||||||
+CAAJBQJX/YjSAhsMAAoJEBuRPOm2dH3c+6kH+wWoEqTlPdPLZcTN8I5a6HHD0Ul8
|
|
||||||
+7xt3OtiRFoMD2M+zgLvImaj8AULap4w/0G+J+7PCUER8JhcePSzLbizfpTczbDP2
|
|
||||||
+E1LhEM8IBE6GT8yL8VB9AL1xW+hXIi5sWW/f900deOhoh7ikrP7KxT0c8zQjaaqV
|
|
||||||
+n6bio93CvZ3yBqMO20apwWDyiSoBpXVjLrW00BdL8i9Rsf6v5UwIIy9o7pfjK5zo
|
|
||||||
+mAZM2dKzlp9z4q5P6yE4aXI0bHz+XvG7hdpkHmjG5A+EQCnN2qoDNIA4QiRhH8TQ
|
|
||||||
+aTaj4AlCiCAV2hEelPYve5QKccAsfC//qr+FMF+0bhZa05X2afxLYtku0Ms=
|
|
||||||
+=ftgB
|
|
||||||
+-----END PGP PRIVATE KEY BLOCK-----
|
|
||||||
diff --git a/test/secret-keys/1.0.test b/test/secret-keys/1.0.test
|
|
||||||
index 129d472..f8239a9 100644
|
|
||||||
--- a/test/secret-keys/1.0.test
|
|
||||||
+++ b/test/secret-keys/1.0.test
|
|
||||||
@@ -5,3 +5,7 @@ uid GnuPG test key (for testing purposes only)
|
|
||||||
uid Foo Bar (1)
|
|
||||||
ssb 768g/2E854A6B 2000-02-06
|
|
||||||
|
|
||||||
+sec 2048R/B6747DDC 2016-10-12
|
|
||||||
+uid GnuPG::Interface Test key <test@example.org>
|
|
||||||
+ssb 2048R/AE441D0F 2016-10-12
|
|
||||||
+
|
|
||||||
diff --git a/test/secret-keys/1.modern.test b/test/secret-keys/1.modern.test
|
|
||||||
index 3e46407..42b27a1 100644
|
|
||||||
--- a/test/secret-keys/1.modern.test
|
|
||||||
+++ b/test/secret-keys/1.modern.test
|
|
||||||
@@ -6,3 +6,8 @@ uid [ unknown] GnuPG test key (for testing purposes only)
|
|
||||||
uid [ unknown] Foo Bar (1)
|
|
||||||
ssb elg768 2000-02-06 [E]
|
|
||||||
|
|
||||||
+sec rsa2048 2016-10-12 [SC]
|
|
||||||
+ 278F850AA702911F1318F0A61B913CE9B6747DDC
|
|
||||||
+uid [ unknown] GnuPG::Interface Test key <test@example.org>
|
|
||||||
+ssb rsa2048 2016-10-12 [E]
|
|
||||||
+
|
|
@ -1,302 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Tue, 11 Oct 2016 21:29:22 -0400
|
|
||||||
Subject: Test use of gpg without explicit passphrase (agent+pinentry)
|
|
||||||
|
|
||||||
The modern GnuPG suite encourages the use of gpg-agent to control
|
|
||||||
access to secret key material. In this use case, we avoid setting an
|
|
||||||
explicit passphrase in code, and rely on either a correctly-configured
|
|
||||||
and primed gpg-agent or a dedicated pinentry program to supply the
|
|
||||||
passphrase.
|
|
||||||
|
|
||||||
This additional test verifies that the passphrase can be handled by
|
|
||||||
the agent. Note that the passphrase for this additional test key is
|
|
||||||
*not* the default passphrase, so this test should fail in the event
|
|
||||||
that gpg can't use the agent and the pinentry for this task.
|
|
||||||
|
|
||||||
Unfortunately, this all assumes that we're using GnuPG "Modern". I've
|
|
||||||
noted concerns about writing forward- and backward-compatible bindings
|
|
||||||
for GnuPG here:
|
|
||||||
https://lists.gnupg.org/pipermail/gnupg-devel/2016-October/031800.html
|
|
||||||
---
|
|
||||||
README | 41 +++++++++++++++++++++++++++--------------
|
|
||||||
lib/GnuPG/Interface.pm | 26 +++++++++++++++++++++++++-
|
|
||||||
t/MyTestSpecific.pm | 10 ++++++++--
|
|
||||||
t/decrypt.t | 27 +++++++++++++++++++++++++++
|
|
||||||
test/encrypted.2.gpg | 12 ++++++++++++
|
|
||||||
test/fake-pinentry.pl | 2 +-
|
|
||||||
test/plain.2.txt | 1 +
|
|
||||||
7 files changed, 101 insertions(+), 18 deletions(-)
|
|
||||||
create mode 100644 test/encrypted.2.gpg
|
|
||||||
create mode 100644 test/plain.2.txt
|
|
||||||
|
|
||||||
diff --git a/README b/README
|
|
||||||
index a05ef9b..be06ef3 100644
|
|
||||||
--- a/README
|
|
||||||
+++ b/README
|
|
||||||
@@ -5,7 +5,7 @@ SYNOPSIS
|
|
||||||
# A simple example
|
|
||||||
use IO::Handle;
|
|
||||||
use GnuPG::Interface;
|
|
||||||
-
|
|
||||||
+
|
|
||||||
# setting up the situation
|
|
||||||
my $gnupg = GnuPG::Interface->new();
|
|
||||||
$gnupg->options->hash_init( armor => 1,
|
|
||||||
@@ -24,7 +24,7 @@ SYNOPSIS
|
|
||||||
# Now we'll go about encrypting with the options already set
|
|
||||||
my @plaintext = ( 'foobar' );
|
|
||||||
my $pid = $gnupg->encrypt( handles => $handles );
|
|
||||||
-
|
|
||||||
+
|
|
||||||
# Now we write to the input of GnuPG
|
|
||||||
print $input @plaintext;
|
|
||||||
close $input;
|
|
||||||
@@ -140,13 +140,26 @@ OBJECT METHODS
|
|
||||||
standard error, standard output, or standard error. If the status or
|
|
||||||
logger handle is not defined, this channel of communication is never
|
|
||||||
established with GnuPG, and so this information is not generated and
|
|
||||||
- does not come into play. If the passphrase data member handle of the
|
|
||||||
- handles object is not defined, but the the passphrase data member
|
|
||||||
- handle of GnuPG::Interface object is, GnuPG::Interface will handle
|
|
||||||
- passing this information into GnuPG for the user as a convenience.
|
|
||||||
- Note that this will result in GnuPG::Interface storing the
|
|
||||||
- passphrase in memory, instead of having it simply 'pass-through' to
|
|
||||||
- GnuPG via a handle.
|
|
||||||
+ does not come into play.
|
|
||||||
+
|
|
||||||
+ If the passphrase data member handle of the handles object is not
|
|
||||||
+ defined, but the the passphrase data member handle of
|
|
||||||
+ GnuPG::Interface object is, GnuPG::Interface will handle passing
|
|
||||||
+ this information into GnuPG for the user as a convenience. Note that
|
|
||||||
+ this will result in GnuPG::Interface storing the passphrase in
|
|
||||||
+ memory, instead of having it simply 'pass-through' to GnuPG via a
|
|
||||||
+ handle.
|
|
||||||
+
|
|
||||||
+ If neither the passphrase data member of the GnuPG::Interface nor
|
|
||||||
+ the passphrase data member of the handles object is defined, then
|
|
||||||
+ GnuPG::Interface assumes that access and control over the secret key
|
|
||||||
+ will be handled by the running gpg-agent process. This represents
|
|
||||||
+ the simplest mode of operation with the GnuPG "modern" suite
|
|
||||||
+ (version 2.1 and later). It is also the preferred mode for tools
|
|
||||||
+ intended to be user-facing, since the user will be prompted directly
|
|
||||||
+ by gpg-agent for use of the secret key material. Note that for
|
|
||||||
+ programmatic use, this mode requires the gpg-agent and pinentry to
|
|
||||||
+ already be correctly configured.
|
|
||||||
|
|
||||||
Other Methods
|
|
||||||
get_public_keys( @search_strings )
|
|
||||||
@@ -241,7 +254,7 @@ EXAMPLES
|
|
||||||
|
|
||||||
my $handles = GnuPG::Handles->new( stdin => $input,
|
|
||||||
stdout => $output );
|
|
||||||
-
|
|
||||||
+
|
|
||||||
# this sets up the communication
|
|
||||||
# Note that the recipients were specified earlier
|
|
||||||
# in the 'options' data member of the $gnupg object.
|
|
||||||
@@ -315,7 +328,7 @@ EXAMPLES
|
|
||||||
# a file written to disk
|
|
||||||
# Make sure you "use IO::File" if you use this module!
|
|
||||||
my $cipher_file = IO::File->new( 'encrypted.gpg' );
|
|
||||||
-
|
|
||||||
+
|
|
||||||
# this sets up the communication
|
|
||||||
my $pid = $gnupg->decrypt( handles => $handles );
|
|
||||||
|
|
||||||
@@ -346,7 +359,7 @@ EXAMPLES
|
|
||||||
# This time we'll just let GnuPG print to our own output
|
|
||||||
# and read from our input, because no input is needed!
|
|
||||||
my $handles = GnuPG::Handles->new();
|
|
||||||
-
|
|
||||||
+
|
|
||||||
my @ids = ( 'ftobin', '0xABCD1234ABCD1234ABCD1234ABCD1234ABCD1234' );
|
|
||||||
|
|
||||||
# this time we need to specify something for
|
|
||||||
@@ -354,7 +367,7 @@ EXAMPLES
|
|
||||||
# search ids as arguments
|
|
||||||
my $pid = $gnupg->list_public_keys( handles => $handles,
|
|
||||||
command_args => [ @ids ] );
|
|
||||||
-
|
|
||||||
+
|
|
||||||
waitpid $pid, 0;
|
|
||||||
|
|
||||||
Creating GnuPG::PublicKey Objects
|
|
||||||
@@ -372,7 +385,7 @@ EXAMPLES
|
|
||||||
command_args => [ qw( test/key.1.asc ) ],
|
|
||||||
handles => $handles,
|
|
||||||
);
|
|
||||||
-
|
|
||||||
+
|
|
||||||
my @out = <$handles->stdout()>;
|
|
||||||
waitpid $pid, 0;
|
|
||||||
|
|
||||||
diff --git a/lib/GnuPG/Interface.pm b/lib/GnuPG/Interface.pm
|
|
||||||
index 29205f0..5d8b0ec 100644
|
|
||||||
--- a/lib/GnuPG/Interface.pm
|
|
||||||
+++ b/lib/GnuPG/Interface.pm
|
|
||||||
@@ -106,6 +106,14 @@ sub fork_attach_exec( $% ) {
|
|
||||||
my ( $self, %args ) = @_;
|
|
||||||
|
|
||||||
my $handles = $args{handles} or croak 'no GnuPG::Handles passed';
|
|
||||||
+ my $use_loopback_pinentry = 0;
|
|
||||||
+
|
|
||||||
+ # WARNING: this assumes that we're using the "modern" GnuPG suite
|
|
||||||
+ # -- version 2.1.x or later. It's not clear to me how we can
|
|
||||||
+ # safely and efficiently avoid this assumption (see
|
|
||||||
+ # https://lists.gnupg.org/pipermail/gnupg-devel/2016-October/031800.html)
|
|
||||||
+ $use_loopback_pinentry = 1
|
|
||||||
+ if ($handles->passphrase());
|
|
||||||
|
|
||||||
# deprecation support
|
|
||||||
$args{commands} ||= $args{gnupg_commands};
|
|
||||||
@@ -293,8 +301,12 @@ sub fork_attach_exec( $% ) {
|
|
||||||
$self->options->$option($fileno);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ my @args = $self->options->get_args();
|
|
||||||
+ push @args, '--pinentry-mode', 'loopback'
|
|
||||||
+ if $use_loopback_pinentry;
|
|
||||||
+
|
|
||||||
my @command = (
|
|
||||||
- $self->call(), $self->options->get_args(),
|
|
||||||
+ $self->call(), @args,
|
|
||||||
@commands, @command_args
|
|
||||||
);
|
|
||||||
|
|
||||||
@@ -1005,6 +1017,7 @@ and standard error will be tied to the running program's standard error,
|
|
||||||
standard output, or standard error. If the B<status> or B<logger> handle
|
|
||||||
is not defined, this channel of communication is never established with GnuPG,
|
|
||||||
and so this information is not generated and does not come into play.
|
|
||||||
+
|
|
||||||
If the B<passphrase> data member handle of the B<handles> object
|
|
||||||
is not defined, but the the B<passphrase> data member handle of GnuPG::Interface
|
|
||||||
object is, GnuPG::Interface will handle passing this information into GnuPG
|
|
||||||
@@ -1012,6 +1025,17 @@ for the user as a convenience. Note that this will result in
|
|
||||||
GnuPG::Interface storing the passphrase in memory, instead of having
|
|
||||||
it simply 'pass-through' to GnuPG via a handle.
|
|
||||||
|
|
||||||
+If neither the B<passphrase> data member of the GnuPG::Interface nor
|
|
||||||
+the B<passphrase> data member of the B<handles> object is defined,
|
|
||||||
+then GnuPG::Interface assumes that access and control over the secret
|
|
||||||
+key will be handled by the running gpg-agent process. This represents
|
|
||||||
+the simplest mode of operation with the GnuPG "modern" suite (version
|
|
||||||
+2.1 and later). It is also the preferred mode for tools intended to
|
|
||||||
+be user-facing, since the user will be prompted directly by gpg-agent
|
|
||||||
+for use of the secret key material. Note that for programmatic use,
|
|
||||||
+this mode requires the gpg-agent and pinentry to already be correctly
|
|
||||||
+configured.
|
|
||||||
+
|
|
||||||
=back
|
|
||||||
|
|
||||||
=head2 Other Methods
|
|
||||||
diff --git a/t/MyTestSpecific.pm b/t/MyTestSpecific.pm
|
|
||||||
index c8764cc..e513c25 100644
|
|
||||||
--- a/t/MyTestSpecific.pm
|
|
||||||
+++ b/t/MyTestSpecific.pm
|
|
||||||
@@ -55,9 +55,15 @@ struct( Text => { fn => "\$", fh => "\$", data => "\$" } );
|
|
||||||
$texts{plain} = Text->new();
|
|
||||||
$texts{plain}->fn( 'test/plain.1.txt' );
|
|
||||||
|
|
||||||
+$texts{alt_plain} = Text->new();
|
|
||||||
+$texts{alt_plain}->fn( 'test/plain.2.txt' );
|
|
||||||
+
|
|
||||||
$texts{encrypted} = Text->new();
|
|
||||||
$texts{encrypted}->fn( 'test/encrypted.1.gpg' );
|
|
||||||
|
|
||||||
+$texts{alt_encrypted} = Text->new();
|
|
||||||
+$texts{alt_encrypted}->fn( 'test/encrypted.2.gpg' );
|
|
||||||
+
|
|
||||||
$texts{signed} = Text->new();
|
|
||||||
$texts{signed}->fn( 'test/signed.1.asc' );
|
|
||||||
|
|
||||||
@@ -68,7 +74,7 @@ $texts{temp} = Text->new();
|
|
||||||
$texts{temp}->fn( 'test/temp' );
|
|
||||||
|
|
||||||
|
|
||||||
-foreach my $name ( qw( plain encrypted signed key ) )
|
|
||||||
+foreach my $name ( qw( plain alt_plain encrypted alt_encrypted signed key ) )
|
|
||||||
{
|
|
||||||
my $entry = $texts{$name};
|
|
||||||
my $filename = $entry->fn();
|
|
||||||
@@ -90,7 +96,7 @@ sub reset_handles
|
|
||||||
stderr => $stderr
|
|
||||||
);
|
|
||||||
|
|
||||||
- foreach my $name ( qw( plain encrypted signed key ) )
|
|
||||||
+ foreach my $name ( qw( plain alt_plain encrypted alt_encrypted signed key ) )
|
|
||||||
{
|
|
||||||
my $entry = $texts{$name};
|
|
||||||
my $filename = $entry->fn();
|
|
||||||
diff --git a/t/decrypt.t b/t/decrypt.t
|
|
||||||
index b2639ed..ee41448 100644
|
|
||||||
--- a/t/decrypt.t
|
|
||||||
+++ b/t/decrypt.t
|
|
||||||
@@ -58,3 +58,30 @@ TEST
|
|
||||||
{
|
|
||||||
return compare( $texts{plain}->fn(), $texts{temp}->fn() ) == 0;
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+# test without default_passphrase (that is, by using the agent)
|
|
||||||
+TEST
|
|
||||||
+{
|
|
||||||
+ reset_handles();
|
|
||||||
+
|
|
||||||
+ $handles->stdin( $texts{alt_encrypted}->fh() );
|
|
||||||
+ $handles->options( 'stdin' )->{direct} = 1;
|
|
||||||
+
|
|
||||||
+ $handles->stdout( $texts{temp}->fh() );
|
|
||||||
+ $handles->options( 'stdout' )->{direct} = 1;
|
|
||||||
+
|
|
||||||
+ $gnupg->clear_passphrase();
|
|
||||||
+
|
|
||||||
+ my $pid = $gnupg->decrypt( handles => $handles );
|
|
||||||
+
|
|
||||||
+ waitpid $pid, 0;
|
|
||||||
+
|
|
||||||
+ return $CHILD_ERROR == 0;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+TEST
|
|
||||||
+{
|
|
||||||
+ return compare( $texts{alt_plain}->fn(), $texts{temp}->fn() ) == 0;
|
|
||||||
+};
|
|
||||||
diff --git a/test/encrypted.2.gpg b/test/encrypted.2.gpg
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..105cbb3
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/test/encrypted.2.gpg
|
|
||||||
@@ -0,0 +1,12 @@
|
|
||||||
+-----BEGIN PGP MESSAGE-----
|
|
||||||
+
|
|
||||||
+hQEMAw3NS2KuRB0PAQgAuCMQO6blPRIJZib+kDa51gac+BYPl8caXYTLqIHtiz2/
|
|
||||||
+YRVqePJON4lNAqT6qUksIzQHtejFO6tb1SLqgX9Ti+fKAMLrQw9VGOYaJFoRrTJs
|
|
||||||
++X33S4GHVVikRTu0dydAsekbfPSc2nRmTFUlSEV3psgAmg9xy8KA6cZroK9Xfcuh
|
|
||||||
+xW7KLE0hLP+2NZ7zNmJMdu6LDGzvlQsnm1UeElXK8XdMGf8kA3R+GgeeOnR/oEQc
|
|
||||||
+Uep77k/fLc+UV4fp9Dk1OBeg3Ko/irSaefk4mU7F4HmS8jIERHRvXBTiur1Zx8Nx
|
|
||||||
+9U3fcQuc+P9+JC89iS4PJPF1Hr0MlezAghZYJrhOrtJIAe5Uaft5KMGRfy0VQnAs
|
|
||||||
+MHqGnGtzzVWK6GK83ibgG4tTfPEHHIgNFsJf3rM4cWklUmCS9TeeDJJZfhnRA6+/
|
|
||||||
+X82e6OI7QNbO
|
|
||||||
+=DlGE
|
|
||||||
+-----END PGP MESSAGE-----
|
|
||||||
diff --git a/test/fake-pinentry.pl b/test/fake-pinentry.pl
|
|
||||||
index 12d3611..40b8b08 100755
|
|
||||||
--- a/test/fake-pinentry.pl
|
|
||||||
+++ b/test/fake-pinentry.pl
|
|
||||||
@@ -21,7 +21,7 @@ while (<STDIN>) {
|
|
||||||
chomp;
|
|
||||||
next if (/^$/);
|
|
||||||
next if (/^#/);
|
|
||||||
- print ("D test\n") if (/^getpin/i);
|
|
||||||
+ print ("D supercalifragilisticexpialidocious\n") if (/^getpin/i);
|
|
||||||
print "OK\n";
|
|
||||||
exit if (/^bye/i);
|
|
||||||
}
|
|
||||||
diff --git a/test/plain.2.txt b/test/plain.2.txt
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..da5a1d5
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/test/plain.2.txt
|
|
||||||
@@ -0,0 +1 @@
|
|
||||||
+test message
|
|
@ -1,42 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Thu, 25 May 2017 16:07:45 -0400
|
|
||||||
Subject: Kill any GnuPG agent before and after the test suite.
|
|
||||||
|
|
||||||
This helps to ensure that the test suite daemon is started fresh at
|
|
||||||
every test suite run. And it also avoids leaving a daemon running
|
|
||||||
after the test suite, assuming the test suite manages to reach the
|
|
||||||
end.
|
|
||||||
|
|
||||||
This is considered a reasonable practice by upstream.
|
|
||||||
---
|
|
||||||
t/000_setup.t | 3 +++
|
|
||||||
t/zzz_cleanup.t | 2 ++
|
|
||||||
2 files changed, 5 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/t/000_setup.t b/t/000_setup.t
|
|
||||||
index b183241..4dc4329 100644
|
|
||||||
--- a/t/000_setup.t
|
|
||||||
+++ b/t/000_setup.t
|
|
||||||
@@ -17,6 +17,9 @@ TEST
|
|
||||||
$agentconf->write("pinentry-program " . getcwd() . "/test/fake-pinentry.pl\n");
|
|
||||||
$agentconf->close();
|
|
||||||
copy('test/gpg.conf', 'test/gnupghome/gpg.conf');
|
|
||||||
+ # reset the state of any long-lived gpg-agent, ignoring errors:
|
|
||||||
+ system('gpgconf', '--homedir=test/gnupghome', '--quiet', '--kill', 'gpg-agent');
|
|
||||||
+
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
my $pid = $gnupg->import_keys(command_args => [ 'test/public_keys.pgp', 'test/secret_keys.pgp', 'test/new_secret.pgp' ],
|
|
||||||
diff --git a/t/zzz_cleanup.t b/t/zzz_cleanup.t
|
|
||||||
index 5c03a72..eea3a48 100644
|
|
||||||
--- a/t/zzz_cleanup.t
|
|
||||||
+++ b/t/zzz_cleanup.t
|
|
||||||
@@ -12,6 +12,8 @@ use File::Path qw (remove_tree);
|
|
||||||
TEST
|
|
||||||
{
|
|
||||||
my $err = [];
|
|
||||||
+ # kill off any long-lived gpg-agent, ignoring errors:
|
|
||||||
+ system('gpgconf', '--homedir=test/gnupghome', '--quiet', '--kill', 'gpg-agent');
|
|
||||||
remove_tree('test/gnupghome', {error => \$err});
|
|
||||||
return ! @$err;
|
|
||||||
};
|
|
@ -1,110 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Fri, 26 May 2017 09:51:40 -0400
|
|
||||||
Subject: Use a short temporary homedir during the test suite
|
|
||||||
|
|
||||||
This avoids problems with the length of the path to the homedir as
|
|
||||||
compared to the size limits of sockaddr_un.sun_path, particularly on
|
|
||||||
systems where /run/user/$(id -u) is not present or available (such as
|
|
||||||
many minimalist build environments).
|
|
||||||
---
|
|
||||||
t/000_setup.t | 9 +++++----
|
|
||||||
t/MyTestSpecific.pm | 18 +++++++++++++++++-
|
|
||||||
t/list_secret_keys.t | 3 ++-
|
|
||||||
t/zzz_cleanup.t | 6 ++++--
|
|
||||||
4 files changed, 28 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/t/000_setup.t b/t/000_setup.t
|
|
||||||
index 4dc4329..82d7005 100644
|
|
||||||
--- a/t/000_setup.t
|
|
||||||
+++ b/t/000_setup.t
|
|
||||||
@@ -12,13 +12,14 @@ use File::Copy;
|
|
||||||
|
|
||||||
TEST
|
|
||||||
{
|
|
||||||
- make_path('test/gnupghome', { mode => 0700 });
|
|
||||||
- my $agentconf = IO::File->new( "> test/gnupghome/gpg-agent.conf" );
|
|
||||||
+ my $homedir = $gnupg->options->homedir();
|
|
||||||
+ make_path($homedir, { mode => 0700 });
|
|
||||||
+ my $agentconf = IO::File->new( "> " . $homedir . "/gpg-agent.conf" );
|
|
||||||
$agentconf->write("pinentry-program " . getcwd() . "/test/fake-pinentry.pl\n");
|
|
||||||
$agentconf->close();
|
|
||||||
- copy('test/gpg.conf', 'test/gnupghome/gpg.conf');
|
|
||||||
+ copy('test/gpg.conf', $homedir . '/gpg.conf');
|
|
||||||
# reset the state of any long-lived gpg-agent, ignoring errors:
|
|
||||||
- system('gpgconf', '--homedir=test/gnupghome', '--quiet', '--kill', 'gpg-agent');
|
|
||||||
+ system('gpgconf', '--homedir', $homedir, '--quiet', '--kill', 'gpg-agent');
|
|
||||||
|
|
||||||
reset_handles();
|
|
||||||
|
|
||||||
diff --git a/t/MyTestSpecific.pm b/t/MyTestSpecific.pm
|
|
||||||
index e513c25..809d55c 100644
|
|
||||||
--- a/t/MyTestSpecific.pm
|
|
||||||
+++ b/t/MyTestSpecific.pm
|
|
||||||
@@ -22,6 +22,7 @@ use IO::Seekable;
|
|
||||||
use File::Compare;
|
|
||||||
use Exporter;
|
|
||||||
use Class::Struct;
|
|
||||||
+use File::Temp qw (tempdir);
|
|
||||||
|
|
||||||
use GnuPG::Interface;
|
|
||||||
use GnuPG::Handles;
|
|
||||||
@@ -40,10 +41,25 @@ use vars qw( @ISA @EXPORT
|
|
||||||
|
|
||||||
$gnupg = GnuPG::Interface->new( passphrase => 'test' );
|
|
||||||
|
|
||||||
+
|
|
||||||
+my $homedir;
|
|
||||||
+if (-f "test/gnupghome") {
|
|
||||||
+ my $record = IO::File->new( "< test/gnupghome" );
|
|
||||||
+ $homedir = <$record>;
|
|
||||||
+ $record->close();
|
|
||||||
+} else {
|
|
||||||
+ $homedir = tempdir( DIR => '/tmp');
|
|
||||||
+ my $record = IO::File->new( "> test/gnupghome" );
|
|
||||||
+ $record->write($homedir);
|
|
||||||
+ $record->close();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
my @version = split('\.', $gnupg->version());
|
|
||||||
$gpg_is_modern = ($version[0] > 2 || ($version[0] == 2 && $version[1] >= 1));
|
|
||||||
|
|
||||||
-$gnupg->options->hash_init( homedir => 'test/gnupghome',
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+$gnupg->options->hash_init( homedir => $homedir,
|
|
||||||
armor => 1,
|
|
||||||
meta_interactive => 0,
|
|
||||||
meta_signing_key_id => '0x93AFC4B1B0288A104996B44253AE596EF950DA9C',
|
|
||||||
diff --git a/t/list_secret_keys.t b/t/list_secret_keys.t
|
|
||||||
index 7040c38..d1e3f30 100644
|
|
||||||
--- a/t/list_secret_keys.t
|
|
||||||
+++ b/t/list_secret_keys.t
|
|
||||||
@@ -23,8 +23,9 @@ TEST
|
|
||||||
$outfile = 'test/secret-keys/1.out';
|
|
||||||
my $out = IO::File->new( "> $outfile" )
|
|
||||||
or die "cannot open $outfile for writing: $ERRNO";
|
|
||||||
+ my $modern_pubring_line = $gnupg->options->homedir() . "/pubring.kbx\n";
|
|
||||||
while (<$stdout>) {
|
|
||||||
- if ($gpg_is_modern && /^\/.*\/test\/gnupghome\/pubring.kbx$/) {
|
|
||||||
+ if ($gpg_is_modern && ($_ eq $modern_pubring_line)) {
|
|
||||||
$out->print("test/gnupghome/pubring.kbx\n");
|
|
||||||
} elsif ($gpg_is_modern && /^--*$/) {
|
|
||||||
$out->print("--------------------------\n");
|
|
||||||
diff --git a/t/zzz_cleanup.t b/t/zzz_cleanup.t
|
|
||||||
index eea3a48..c3ec16f 100644
|
|
||||||
--- a/t/zzz_cleanup.t
|
|
||||||
+++ b/t/zzz_cleanup.t
|
|
||||||
@@ -11,9 +11,11 @@ use File::Path qw (remove_tree);
|
|
||||||
# this is actually no test, just cleanup.
|
|
||||||
TEST
|
|
||||||
{
|
|
||||||
+ my $homedir = $gnupg->options->homedir();
|
|
||||||
my $err = [];
|
|
||||||
# kill off any long-lived gpg-agent, ignoring errors:
|
|
||||||
- system('gpgconf', '--homedir=test/gnupghome', '--quiet', '--kill', 'gpg-agent');
|
|
||||||
- remove_tree('test/gnupghome', {error => \$err});
|
|
||||||
+ system('gpgconf', '--homedir', $homedir, '--quiet', '--kill', 'gpg-agent');
|
|
||||||
+ remove_tree($homedir, {error => \$err});
|
|
||||||
+ unlink('test/gnupghome');
|
|
||||||
return ! @$err;
|
|
||||||
};
|
|
@ -1,51 +0,0 @@
|
|||||||
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
||||||
Date: Fri, 26 May 2017 18:15:24 -0400
|
|
||||||
Subject: Make things work with gpg1 (assuming plain 'gpg' is modern)
|
|
||||||
|
|
||||||
* avoid sending --pinentry-mode=loopback if gpg is invoked as gpg1
|
|
||||||
* fix up t/list_secret_keys to account for the varied output
|
|
||||||
* t/decrypt.t still fails two agent-only tests, but presumably folks
|
|
||||||
who use gpg1 are not expecting to use the agent.
|
|
||||||
---
|
|
||||||
lib/GnuPG/Interface.pm | 5 ++++-
|
|
||||||
t/list_secret_keys.t | 9 +++++----
|
|
||||||
2 files changed, 9 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/GnuPG/Interface.pm b/lib/GnuPG/Interface.pm
|
|
||||||
index 5d8b0ec..f80ead5 100644
|
|
||||||
--- a/lib/GnuPG/Interface.pm
|
|
||||||
+++ b/lib/GnuPG/Interface.pm
|
|
||||||
@@ -112,8 +112,11 @@ sub fork_attach_exec( $% ) {
|
|
||||||
# -- version 2.1.x or later. It's not clear to me how we can
|
|
||||||
# safely and efficiently avoid this assumption (see
|
|
||||||
# https://lists.gnupg.org/pipermail/gnupg-devel/2016-October/031800.html)
|
|
||||||
+ #
|
|
||||||
+ # as a (brittle and incomplete) cleanup, we will avoid trying to
|
|
||||||
+ # send pinentry-loopback if the program is invoked as "gpg1"
|
|
||||||
$use_loopback_pinentry = 1
|
|
||||||
- if ($handles->passphrase());
|
|
||||||
+ if ($handles->passphrase() && ! ($self->call =~ m/gpg1$/));
|
|
||||||
|
|
||||||
# deprecation support
|
|
||||||
$args{commands} ||= $args{gnupg_commands};
|
|
||||||
diff --git a/t/list_secret_keys.t b/t/list_secret_keys.t
|
|
||||||
index d1e3f30..8e3c911 100644
|
|
||||||
--- a/t/list_secret_keys.t
|
|
||||||
+++ b/t/list_secret_keys.t
|
|
||||||
@@ -23,11 +23,12 @@ TEST
|
|
||||||
$outfile = 'test/secret-keys/1.out';
|
|
||||||
my $out = IO::File->new( "> $outfile" )
|
|
||||||
or die "cannot open $outfile for writing: $ERRNO";
|
|
||||||
- my $modern_pubring_line = $gnupg->options->homedir() . "/pubring.kbx\n";
|
|
||||||
+ my $seckey_file = $gpg_is_modern ? 'pubring.kbx' : 'secring.gpg';
|
|
||||||
+ my $pubring_line = $gnupg->options->homedir() . '/' . $seckey_file . "\n";
|
|
||||||
while (<$stdout>) {
|
|
||||||
- if ($gpg_is_modern && ($_ eq $modern_pubring_line)) {
|
|
||||||
- $out->print("test/gnupghome/pubring.kbx\n");
|
|
||||||
- } elsif ($gpg_is_modern && /^--*$/) {
|
|
||||||
+ if ($_ eq $pubring_line) {
|
|
||||||
+ $out->print('test/gnupghome/'.$seckey_file."\n");
|
|
||||||
+ } elsif (/^--*$/) {
|
|
||||||
$out->print("--------------------------\n");
|
|
||||||
} else {
|
|
||||||
$out->print( $_ );
|
|
@ -1,54 +0,0 @@
|
|||||||
From 7c85ac40660861e7507c43d043323c3f1b83921b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Niko Tyni <ntyni@debian.org>
|
|
||||||
Date: Wed, 20 Jun 2018 21:57:50 +0300
|
|
||||||
Subject: [PATCH] Fix test suite for GnuPG >= 2.2.6 compatibility
|
|
||||||
|
|
||||||
GnuPG 2.2.6 (commit 1a5d95e7319e7e6f) started marking signatures
|
|
||||||
with an expired key with '?', as seen with for instance
|
|
||||||
|
|
||||||
GNUPGHOME=./test/gnupghome/ gpg --list-sigs 0xF950DA9C
|
|
||||||
|
|
||||||
Adapt the test suite accordingly.
|
|
||||||
|
|
||||||
See https://dev.gnupg.org/rG1a5d95e7319e7e6f0dd11064a26cbbc371b05214
|
|
||||||
|
|
||||||
Bug-Debian: https://bugs.debian.org/900051
|
|
||||||
---
|
|
||||||
t/get_public_keys.t | 8 ++++++--
|
|
||||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/t/get_public_keys.t b/t/get_public_keys.t
|
|
||||||
index 7893625..ede080a 100644
|
|
||||||
--- a/t/get_public_keys.t
|
|
||||||
+++ b/t/get_public_keys.t
|
|
||||||
@@ -13,8 +13,12 @@ use MyTestSpecific;
|
|
||||||
use GnuPG::PrimaryKey;
|
|
||||||
use GnuPG::SubKey;
|
|
||||||
|
|
||||||
+use version;
|
|
||||||
+
|
|
||||||
my ( $given_key, $handmade_key );
|
|
||||||
|
|
||||||
+my $gnupg_version = version->parse($gnupg->version);
|
|
||||||
+
|
|
||||||
TEST
|
|
||||||
{
|
|
||||||
reset_handles();
|
|
||||||
@@ -74,7 +78,7 @@ TEST
|
|
||||||
date_string => '2000-03-16',
|
|
||||||
hex_id => '56FFD10A260C4FA3',
|
|
||||||
sig_class => 0x10,
|
|
||||||
- validity => '!'),
|
|
||||||
+ validity => $gnupg_version < version->parse('2.2.6') ? '!' : '?'),
|
|
||||||
GnuPG::Signature->new(
|
|
||||||
date => 949813093,
|
|
||||||
algo_num => 17,
|
|
||||||
@@ -115,7 +119,7 @@ TEST
|
|
||||||
date_string => '2000-03-16',
|
|
||||||
hex_id => '56FFD10A260C4FA3',
|
|
||||||
sig_class => 0x10,
|
|
||||||
- validity => '!'),
|
|
||||||
+ validity => $gnupg_version < version->parse('2.2.6') ? '!' : '?'),
|
|
||||||
GnuPG::Signature->new(
|
|
||||||
date => 953179891,
|
|
||||||
algo_num => 17,
|
|
@ -1,64 +0,0 @@
|
|||||||
From b356e7fda15e39e037da1888a24000a96fc85c90 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Niko Tyni <ntyni@debian.org>
|
|
||||||
Date: Sun, 24 Jun 2018 16:19:25 +0300
|
|
||||||
Subject: [PATCH] Fix test suite for GnuPG >= 2.2.8 compatibility
|
|
||||||
|
|
||||||
GnuPG 2.2.8 onwards issues a hard failure when decrypting
|
|
||||||
messages not using the MDC mode.
|
|
||||||
|
|
||||||
Bug-Debian: https://bugs.debian.org/900051
|
|
||||||
---
|
|
||||||
t/decrypt.t | 19 +++++++++++++++++--
|
|
||||||
1 file changed, 17 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/t/decrypt.t b/t/decrypt.t
|
|
||||||
index ee41448..2d6740c 100644
|
|
||||||
--- a/t/decrypt.t
|
|
||||||
+++ b/t/decrypt.t
|
|
||||||
@@ -6,6 +6,7 @@
|
|
||||||
use strict;
|
|
||||||
use English qw( -no_match_vars );
|
|
||||||
use File::Compare;
|
|
||||||
+use version;
|
|
||||||
|
|
||||||
use lib './t';
|
|
||||||
use MyTest;
|
|
||||||
@@ -13,6 +14,8 @@ use MyTestSpecific;
|
|
||||||
|
|
||||||
my $compare;
|
|
||||||
|
|
||||||
+my $gnupg_version = version->parse($gnupg->version);
|
|
||||||
+
|
|
||||||
TEST
|
|
||||||
{
|
|
||||||
reset_handles();
|
|
||||||
@@ -26,7 +29,13 @@ TEST
|
|
||||||
close $stdout;
|
|
||||||
waitpid $pid, 0;
|
|
||||||
|
|
||||||
- return $CHILD_ERROR == 0;;
|
|
||||||
+ if ($gnupg_version < version->parse('2.2.8')) {
|
|
||||||
+ return $CHILD_ERROR == 0;;
|
|
||||||
+ } else {
|
|
||||||
+ local $/ = undef;
|
|
||||||
+ my $errstr = <$stderr>;
|
|
||||||
+ return (($CHILD_ERROR >> 8 == 2) and ($errstr =~ /ignore-mdc-error/));
|
|
||||||
+ }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
@@ -50,7 +59,13 @@ TEST
|
|
||||||
|
|
||||||
waitpid $pid, 0;
|
|
||||||
|
|
||||||
- return $CHILD_ERROR == 0;
|
|
||||||
+ if ($gnupg_version < version->parse('2.2.8')) {
|
|
||||||
+ return $CHILD_ERROR == 0;
|
|
||||||
+ } else {
|
|
||||||
+ local $/ = undef;
|
|
||||||
+ my $errstr = <$stderr>;
|
|
||||||
+ return (($CHILD_ERROR >> 8 == 2) and ($errstr =~ /ignore-mdc-error/));
|
|
||||||
+ }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
|||||||
From a67324b5622088422b0b0c1a403c594312452d16 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kent Fredric <kentfredric@gmail.com>
|
|
||||||
Date: Sun, 4 Jun 2017 07:35:25 +1200
|
|
||||||
Subject: [PATCH 1/3] t/001_require.t: Force a relative path load for require
|
|
||||||
test
|
|
||||||
|
|
||||||
require_ok("Foo") is implemented in terms of require "Foo"
|
|
||||||
|
|
||||||
This means:
|
|
||||||
|
|
||||||
require "Foo.pm"
|
|
||||||
|
|
||||||
Only loads "Foo.pm" from "." if:
|
|
||||||
|
|
||||||
- '.' is in @INC ( Not true by default in Perl >5.25.11 )
|
|
||||||
- Foo.pm is not installed in Perl5lib ( dangerous assumption )
|
|
||||||
|
|
||||||
This forces require to side-step @INC traversal by using an explicit
|
|
||||||
prefix of "./", which is special-cased in require.
|
|
||||||
|
|
||||||
This fixes RT#120674
|
|
||||||
|
|
||||||
Bug: https://rt.cpan.org/Ticket/Display.html?id=120674
|
|
||||||
---
|
|
||||||
t/001_require.t | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/t/001_require.t b/t/001_require.t
|
|
||||||
index fe0d205..d70b2d2 100755
|
|
||||||
--- a/t/001_require.t
|
|
||||||
+++ b/t/001_require.t
|
|
||||||
@@ -24,7 +24,7 @@ use File::Spec;
|
|
||||||
use Test::More qw(no_plan);
|
|
||||||
|
|
||||||
# Set up @INC at runtime with an absolute path.
|
|
||||||
-my $lib_path = File::Spec->catdir(dirname($0), "..", "lib");
|
|
||||||
+my $lib_path = File::Spec->rel2abs(File::Spec->catdir(dirname($0), "..", "lib"));
|
|
||||||
push(@INC, $lib_path);
|
|
||||||
|
|
||||||
require_ok 'Google::Ads::AdWords::Client';
|
|
||||||
@@ -38,6 +38,6 @@ sub test_require {
|
|
||||||
local $SIG{__WARN__} = sub {
|
|
||||||
warn @_ unless $_[0] =~ /redefine/;
|
|
||||||
};
|
|
||||||
- require_ok($file_name);
|
|
||||||
+ require_ok("./$file_name");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.12.2
|
|
||||||
|
|
||||||
From 76f5a421585b8c85b7e39b91adb0b257d1d83665 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kent Fredric <kentfredric@gmail.com>
|
|
||||||
Date: Sun, 4 Jun 2017 07:40:01 +1200
|
|
||||||
Subject: [PATCH 2/3] t/020_GenerateOfflineCredentials.t: Force relative path
|
|
||||||
for script
|
|
||||||
|
|
||||||
require "some/path.pl" previously fell into worknig due to '.' being
|
|
||||||
in @INC, as this still invokes @INC traversal
|
|
||||||
|
|
||||||
This change simply forces a "./" so that Perl uses direct access via
|
|
||||||
a special-cased path instead of relying on @INC traversal, which becomes
|
|
||||||
unsafe to depend on since Perl 5.25.11
|
|
||||||
---
|
|
||||||
t/020_GenerateOfflineCredentials.t | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/t/020_GenerateOfflineCredentials.t b/t/020_GenerateOfflineCredentials.t
|
|
||||||
index 0dcde9d..dfa8b50 100755
|
|
||||||
--- a/t/020_GenerateOfflineCredentials.t
|
|
||||||
+++ b/t/020_GenerateOfflineCredentials.t
|
|
||||||
@@ -51,7 +51,7 @@ my $stdout;
|
|
||||||
open(STDOUT, ">", \$stdout);
|
|
||||||
|
|
||||||
# Calling the offline credentials code
|
|
||||||
-require qw(examples/oauth/generate_offline_credentials.pl);
|
|
||||||
+require qw(./examples/oauth/generate_offline_credentials.pl);
|
|
||||||
ok(generate_offline_credentials($client));
|
|
||||||
|
|
||||||
# Checking the auth mock was correctly called
|
|
||||||
--
|
|
||||||
2.12.2
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
From a7e92591ac0415fbb7119e4ad7572f910e4fdb8f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kent Fredric <kentfredric@gmail.com>
|
|
||||||
Date: Sun, 4 Jun 2017 07:43:59 +1200
|
|
||||||
Subject: [PATCH 3/3] Fix unescaped "{" error in tests t/022* and t/024*
|
|
||||||
|
|
||||||
Perl 5.26 makes use of literal unescaped { in a regex illegal,
|
|
||||||
and this leads to test failures.
|
|
||||||
|
|
||||||
This change simply quotes the offending characters to make tests pass.
|
|
||||||
|
|
||||||
This closes RT#118509
|
|
||||||
|
|
||||||
Bug: https://rt.cpan.org/Ticket/Display.html?id=118509
|
|
||||||
---
|
|
||||||
t/022_ReportUtils.t | 2 +-
|
|
||||||
t/024_BatchJobHandler.t | 2 +-
|
|
||||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/t/022_ReportUtils.t b/t/022_ReportUtils.t
|
|
||||||
index 4f5f326..d0e2000 100755
|
|
||||||
--- a/t/022_ReportUtils.t
|
|
||||||
+++ b/t/022_ReportUtils.t
|
|
||||||
@@ -57,7 +57,7 @@ my $report_as_string = $report_handler->get_as_string();
|
|
||||||
ok(!$report_as_string, "report as string");
|
|
||||||
ok($report_as_string->isa("Google::Ads::Common::ReportDownloadError"),
|
|
||||||
"check report handler->report_as_string return type");
|
|
||||||
-ok($report_as_string =~ /ReportDownloadError\s{[^}]+}/,
|
|
||||||
+ok($report_as_string =~ /ReportDownloadError\s\{[^}]+}/,
|
|
||||||
"check ReportDownloadError STRINGIFY");
|
|
||||||
|
|
||||||
my ($fh, $filename) = tempfile();
|
|
||||||
diff --git a/t/024_BatchJobHandler.t b/t/024_BatchJobHandler.t
|
|
||||||
index 15983ae..4b86703 100755
|
|
||||||
--- a/t/024_BatchJobHandler.t
|
|
||||||
+++ b/t/024_BatchJobHandler.t
|
|
||||||
@@ -133,6 +133,6 @@ my $batch_job_handler_error =
|
|
||||||
description => "test"
|
|
||||||
});
|
|
||||||
ok(!$batch_job_handler_error, "BOOLIFY on error false");
|
|
||||||
-ok($batch_job_handler_error =~ /BatchJobHandlerError\s{[^}]+}/,
|
|
||||||
+ok($batch_job_handler_error =~ /BatchJobHandlerError\s\{[^}]+}/,
|
|
||||||
"check BatchJobHandlerError STRINGIFY");
|
|
||||||
|
|
||||||
--
|
|
||||||
2.12.2
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
|||||||
From 88bc49e7a21da0131b10546aa07ebdf98d18a37e Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Torsten=20Sch=C3=B6nfeld?= <kaffeetisch@gmx.de>
|
|
||||||
Date: Sun, 6 Jan 2019 15:18:02 +0100
|
|
||||||
Subject: [PATCH] Load GdkPixdata introspection data if gdk-pixbuf >= 2.38.0
|
|
||||||
|
|
||||||
In gdk-pixbuf 2.38.0, the GdkPixdata introspection data was split out into its
|
|
||||||
own file.
|
|
||||||
|
|
||||||
Based on a patch by gregor herrmann <gregoa@debian.org>.
|
|
||||||
|
|
||||||
https://rt.cpan.org/Ticket/Display.html?id=127071
|
|
||||||
---
|
|
||||||
lib/Gtk3.pm | 14 ++++++++++++++
|
|
||||||
perl-Gtk3.doap => perl-gtk3.doap | 0
|
|
||||||
2 files changed, 14 insertions(+)
|
|
||||||
rename perl-Gtk3.doap => perl-gtk3.doap (100%)
|
|
||||||
|
|
||||||
diff --git a/lib/Gtk3.pm b/lib/Gtk3.pm
|
|
||||||
index 6a65487..f90af7e 100644
|
|
||||||
--- a/lib/Gtk3.pm
|
|
||||||
+++ b/lib/Gtk3.pm
|
|
||||||
@@ -60,6 +60,7 @@ and Perl packages:
|
|
||||||
Gtk-3.0 | Gtk3
|
|
||||||
Gdk-3.0 | Gtk3::Gdk
|
|
||||||
GdkPixbuf-2.0 | Gtk3::Gdk
|
|
||||||
+ GdkPixdata-2.0| Gtk3::Gdk
|
|
||||||
Pango-1.0 | Pango
|
|
||||||
|
|
||||||
=cut
|
|
||||||
@@ -84,6 +85,10 @@ my $_GDK_PIXBUF_BASENAME = 'GdkPixbuf';
|
|
||||||
my $_GDK_PIXBUF_VERSION = '2.0';
|
|
||||||
my $_GDK_PIXBUF_PACKAGE = 'Gtk3::Gdk';
|
|
||||||
|
|
||||||
+my $_GDK_PIXDATA_BASENAME = 'GdkPixdata';
|
|
||||||
+my $_GDK_PIXDATA_VERSION = '2.0';
|
|
||||||
+my $_GDK_PIXDATA_PACKAGE = 'Gtk3::Gdk';
|
|
||||||
+
|
|
||||||
my $_PANGO_BASENAME = 'Pango';
|
|
||||||
my $_PANGO_VERSION = '1.0';
|
|
||||||
my $_PANGO_PACKAGE = 'Pango';
|
|
||||||
@@ -471,6 +476,15 @@ sub import {
|
|
||||||
package => $_GDK_PIXBUF_PACKAGE,
|
|
||||||
flatten_array_ref_return_for => \@_GDK_PIXBUF_FLATTEN_ARRAY_REF_RETURN_FOR);
|
|
||||||
|
|
||||||
+ # In gdk-pixbuf 2.38.0, the GdkPixdata introspection information was split
|
|
||||||
+ # out into its own file.
|
|
||||||
+ if (Gtk3::Gdk::Pixbuf::CHECK_VERSION (2, 38, 0)) {
|
|
||||||
+ Glib::Object::Introspection->setup (
|
|
||||||
+ basename => $_GDK_PIXDATA_BASENAME,
|
|
||||||
+ version => $_GDK_PIXDATA_VERSION,
|
|
||||||
+ package => $_GDK_PIXDATA_PACKAGE);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
Glib::Object::Introspection->setup (
|
|
||||||
basename => $_PANGO_BASENAME,
|
|
||||||
version => $_PANGO_VERSION,
|
|
||||||
diff --git a/perl-Gtk3.doap b/perl-gtk3.doap
|
|
||||||
similarity index 100%
|
|
||||||
rename from perl-Gtk3.doap
|
|
||||||
rename to perl-gtk3.doap
|
|
||||||
--
|
|
||||||
2.18.1
|
|
||||||
|
|
@ -1,16 +1,12 @@
|
|||||||
# Copyright 1999-2014 Gentoo Foundation
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
EAPI=5
|
EAPI=8
|
||||||
|
|
||||||
MODULE_AUTHOR=AJPEACOCK
|
DIST_AUTHOR=AJPEACOCK
|
||||||
inherit perl-module
|
inherit perl-module
|
||||||
|
|
||||||
DESCRIPTION="produces HTML tables"
|
DESCRIPTION="produces HTML tables"
|
||||||
|
|
||||||
LICENSE="|| ( Artistic GPL-2 )"
|
|
||||||
SLOT="0"
|
SLOT="0"
|
||||||
KEYWORDS="amd64 ~ia64 ~ppc ~ppc64 sparc x86"
|
KEYWORDS="amd64 ~ia64 ~ppc ~ppc64 sparc x86"
|
||||||
IUSE=""
|
|
||||||
|
|
||||||
SRC_TEST="do"
|
|
@ -1,20 +0,0 @@
|
|||||||
# Copyright 1999-2014 Gentoo Foundation
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=5
|
|
||||||
|
|
||||||
MODULE_AUTHOR=SDRABBLE
|
|
||||||
MODULE_VERSION=0.13
|
|
||||||
inherit perl-module
|
|
||||||
|
|
||||||
DESCRIPTION="Parse the content of tables in HTML"
|
|
||||||
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="~amd64 x86"
|
|
||||||
IUSE=""
|
|
||||||
|
|
||||||
RDEPEND="dev-perl/HTML-Parser"
|
|
||||||
DEPEND="${RDEPEND}"
|
|
||||||
|
|
||||||
SRC_TEST=do
|
|
||||||
PATCHES=( "${FILESDIR}"/0.13-test.patch )
|
|
@ -0,0 +1,21 @@
|
|||||||
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
DIST_AUTHOR=WYANT
|
||||||
|
DIST_VERSION=0.305
|
||||||
|
inherit perl-module
|
||||||
|
|
||||||
|
DESCRIPTION="Do interesting things with the contents of tables"
|
||||||
|
|
||||||
|
SLOT="0"
|
||||||
|
KEYWORDS="~amd64 ~x86"
|
||||||
|
|
||||||
|
RDEPEND="
|
||||||
|
virtual/perl-Carp
|
||||||
|
dev-perl/HTML-Parser
|
||||||
|
"
|
||||||
|
BDEPEND="${RDEPEND}
|
||||||
|
virtual/perl-ExtUtils-MakeMaker
|
||||||
|
"
|
@ -1,2 +1,2 @@
|
|||||||
DIST HTML-TableContentParser-0.13.tar.gz 4664 BLAKE2B 062dc7ac6a78ec75f7d306649710ef470c6b6f750f651cc976d9f44fa40fbf247a89e0847ed8a991cecd929f3ea328bbee69c2cb29627f6d4fb0e23d3a3ab5c5 SHA512 0707a0059a7d885052615ee7badecc8915d5f8c67fd8683a226e23a0690f1872519475c32f51f299333c3208c20ea15380624fd0ebd1dc0b11457febfb3db585
|
|
||||||
DIST HTML-TableContentParser-0.304.tar.gz 18437 BLAKE2B 404ba11f9174cd3db019ede6078fca246722ff9ce1d2108cd689cfa3f79aebb178853143faa45022e5785daae5e79d1f21ad519099508c5554828d54da84e369 SHA512 f5b8aee24f777a7e8d6b4a88ac6b88927b6ec51a6b14ff2f48a33248702349f2f3a446bda3679b7c510cf6c9390b6a635721c696be3b49165dc9ca89116b2202
|
DIST HTML-TableContentParser-0.304.tar.gz 18437 BLAKE2B 404ba11f9174cd3db019ede6078fca246722ff9ce1d2108cd689cfa3f79aebb178853143faa45022e5785daae5e79d1f21ad519099508c5554828d54da84e369 SHA512 f5b8aee24f777a7e8d6b4a88ac6b88927b6ec51a6b14ff2f48a33248702349f2f3a446bda3679b7c510cf6c9390b6a635721c696be3b49165dc9ca89116b2202
|
||||||
|
DIST HTML-TableContentParser-0.305.tar.gz 18931 BLAKE2B 616bfbb1809af1f0434fe3fb61082e635ba2cb62c1d14c47d059eb2c2dada80fa74ba577f85e9961036bf68f179ccc036410e2f3d67f497babbd3fe713bb6f2b SHA512 beee3b16e61b32e39bd7fdacbf993f18c1b11b6e0ba9704584243a629d72abed0012ee14518cd8c2490cb08a4c1323ee9b49ac2a764f37fa26c632a1d0ec2450
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
# Copyright 1999-2020 Gentoo Authors
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=6
|
|
||||||
|
|
||||||
DIST_AUTHOR=DJERIUS
|
|
||||||
DIST_VERSION=0.42
|
|
||||||
inherit perl-module
|
|
||||||
|
|
||||||
DESCRIPTION="Extract data from an HTML table"
|
|
||||||
|
|
||||||
LICENSE="GPL-3+"
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="amd64 ~arm64 x86"
|
|
||||||
IUSE="test"
|
|
||||||
RESTRICT="!test? ( test )"
|
|
||||||
|
|
||||||
RDEPEND="
|
|
||||||
>=dev-perl/HTML-Parser-3.260.0
|
|
||||||
"
|
|
||||||
DEPEND="${RDEPEND}
|
|
||||||
>=virtual/perl-ExtUtils-MakeMaker-6.590.0
|
|
||||||
virtual/perl-CPAN-Meta
|
|
||||||
test? (
|
|
||||||
>=virtual/perl-Test-Simple-0.320.0
|
|
||||||
)
|
|
||||||
"
|
|
@ -1,2 +1 @@
|
|||||||
DIST HTML-TableParser-0.42.tar.gz 73638 BLAKE2B d422069322eada6e72a6742b32418b3c99dda824ebe98c10211b0cf0c4bf7133c6c7fe990148969c8e18cb01c2f2792ebc13ebfc04f8b5032ab48c4febfa6992 SHA512 dddde421a186ebd354c06201fdaa1379378b83acfc86fb0ed9a7959a993dd403c6d40d9aa36e143d1236c9d21ec56c851d82867783e4954f0eeba75ea8400d3d
|
|
||||||
DIST HTML-TableParser-0.43.tar.gz 66079 BLAKE2B 5309e8b09fdff9b85b8612e4122a5732b2b85bf8e9382ba8656605d0b7faf4bc88e267226e3c7c4565637e370fa9a8526354d38e4296fa7d359004614275a91c SHA512 1f4fa5d5d91c830b6b0e53f6353af4a6016c08aeb572a9ab9d22f21d694b62cace6e745f6af3f96160b885ac2cd788331f0beb0a8777964fb80ff561c227dbf8
|
DIST HTML-TableParser-0.43.tar.gz 66079 BLAKE2B 5309e8b09fdff9b85b8612e4122a5732b2b85bf8e9382ba8656605d0b7faf4bc88e267226e3c7c4565637e370fa9a8526354d38e4296fa7d359004614275a91c SHA512 1f4fa5d5d91c830b6b0e53f6353af4a6016c08aeb572a9ab9d22f21d694b62cace6e745f6af3f96160b885ac2cd788331f0beb0a8777964fb80ff561c227dbf8
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
# Copyright 1999-2014 Gentoo Foundation
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=5
|
|
||||||
|
|
||||||
MODULE_AUTHOR=SAMTREGAR
|
|
||||||
MODULE_VERSION=0.07
|
|
||||||
inherit perl-module
|
|
||||||
|
|
||||||
DESCRIPTION="HTML::Template extension adding expression support"
|
|
||||||
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="amd64 x86"
|
|
||||||
IUSE=""
|
|
||||||
|
|
||||||
RDEPEND=">=dev-perl/HTML-Template-2.8
|
|
||||||
dev-perl/Parse-RecDescent"
|
|
||||||
DEPEND="${RDEPEND}"
|
|
||||||
|
|
||||||
SRC_TEST="do"
|
|
@ -0,0 +1,20 @@
|
|||||||
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
DIST_AUTHOR=SAMTREGAR
|
||||||
|
DIST_VERSION=0.07
|
||||||
|
inherit perl-module
|
||||||
|
|
||||||
|
DESCRIPTION="HTML::Template extension adding expression support"
|
||||||
|
|
||||||
|
SLOT="0"
|
||||||
|
KEYWORDS="amd64 x86"
|
||||||
|
|
||||||
|
RDEPEND="
|
||||||
|
>=dev-perl/HTML-Template-2.800.0
|
||||||
|
dev-perl/Parse-RecDescent
|
||||||
|
"
|
||||||
|
BDEPEND="${RDEPEND}
|
||||||
|
"
|
@ -1,32 +1,33 @@
|
|||||||
# Copyright 1999-2019 Gentoo Authors
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
EAPI=6
|
EAPI=8
|
||||||
|
|
||||||
DIST_AUTHOR=OALDERS
|
DIST_AUTHOR=OALDERS
|
||||||
DIST_VERSION=3.14
|
DIST_VERSION=3.35
|
||||||
inherit perl-module
|
inherit perl-module
|
||||||
|
|
||||||
DESCRIPTION="Determine Web browser, version, and platform from an HTTP user agent string"
|
DESCRIPTION="Determine Web browser, version, and platform from an HTTP user agent string"
|
||||||
|
|
||||||
SLOT="0"
|
SLOT="0"
|
||||||
KEYWORDS="amd64 ~hppa ~mips ppc x86"
|
KEYWORDS="~amd64 ~hppa ~mips ~ppc ~x86"
|
||||||
IUSE="test"
|
|
||||||
RESTRICT="!test? ( test )"
|
|
||||||
|
|
||||||
RDEPEND=""
|
RDEPEND=""
|
||||||
DEPEND="
|
BDEPEND="${RDEPEND}
|
||||||
>=dev-perl/Module-Build-0.280.0
|
|
||||||
virtual/perl-ExtUtils-MakeMaker
|
virtual/perl-ExtUtils-MakeMaker
|
||||||
test? (
|
test? (
|
||||||
virtual/perl-JSON-PP
|
virtual/perl-File-Spec
|
||||||
|
dev-perl/Hash-Merge
|
||||||
|
>=virtual/perl-JSON-PP-4.40.0
|
||||||
|
>=virtual/perl-Scalar-List-Utils-1.490.0
|
||||||
dev-perl/Path-Tiny
|
dev-perl/Path-Tiny
|
||||||
dev-perl/Test-FailWarnings
|
dev-perl/Test-Differences
|
||||||
virtual/perl-Test-Simple
|
>=virtual/perl-Test-Simple-0.960.0
|
||||||
dev-perl/Test-Most
|
|
||||||
dev-perl/Test-NoWarnings
|
dev-perl/Test-NoWarnings
|
||||||
|
dev-perl/Test-Warnings
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
|
|
||||||
src_test() {
|
src_test() {
|
||||||
perl_rm_files t/release-*.t
|
perl_rm_files t/release-*.t
|
||||||
perl-module_src_test
|
perl-module_src_test
|
@ -1,2 +1,2 @@
|
|||||||
DIST HTTP-BrowserDetect-3.14.tar.gz 95445 BLAKE2B 08a90c6e1154f7a7e1c55af2c056e67ba906d187f3ac8b4e82f1039446462ea9a60f1f875e5f26a2229275436c0deb5acbf090f893aef51f7971ae8e0e547c62 SHA512 cf05af60dbda462df81a9d38d5738826b820534c5fde52f41a290f6d3253783154a2e460042117be32e86dd95f7f1e0e6055b4ca549cb7972cd3c156200c09df
|
|
||||||
DIST HTTP-BrowserDetect-3.31.tar.gz 121365 BLAKE2B 454f702905b269cf579bf6d192542cb8e4d63430b7107c78b505db65973c759f79f78053cc45e14b8f7c152f4c53fd18b728f04c0a5d8e86393b1c2bcc4c6b9f SHA512 9ea830b244be7b5d0707118f27a212c520a2117679fab75192881c04d244cc50ae71ee6de2d2be7c456c2a0d5f2bfd0c9bf473893a86ba5b13db89a7d4943e8b
|
DIST HTTP-BrowserDetect-3.31.tar.gz 121365 BLAKE2B 454f702905b269cf579bf6d192542cb8e4d63430b7107c78b505db65973c759f79f78053cc45e14b8f7c152f4c53fd18b728f04c0a5d8e86393b1c2bcc4c6b9f SHA512 9ea830b244be7b5d0707118f27a212c520a2117679fab75192881c04d244cc50ae71ee6de2d2be7c456c2a0d5f2bfd0c9bf473893a86ba5b13db89a7d4943e8b
|
||||||
|
DIST HTTP-BrowserDetect-3.35.tar.gz 122366 BLAKE2B 997962c232419cdbf3ca8a1675e50cbb18190e6f5013156a2da9de47ab939dec81c086a300cca62bd6854a5e9f439ec79a20c5f7fb35ef66f26d57cf68fea928 SHA512 adf2239bffcafc9ae250307173cc3900fca55a4b8860aaefab93090853e5a307902d15cdee459d28c444c4c096f511d1e3f65df51e2f77cee045cbe4a5fc9963
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
DIST HTTP-CookieJar-0.008.tar.gz 28754 BLAKE2B 7e0b55506cb6c48fa8eb608224e7848c150addf64a39fa8c6abca5396152695b835cc872efff862e6045ca246bb2a9fb2a23830711d8c5d349de1a340546e4c1 SHA512 6e85c22084ba2959b385f4cd706b2b937fcdb68f219ee03ccdd69dd2a01ff34b72bf7f442e414e3da43199fc43624b781af0c7599f856dc580a5d0a7742c6aff
|
|
||||||
DIST HTTP-CookieJar-0.010.tar.gz 27883 BLAKE2B 3f0bf8fcff066955d1350a420a02fb8388238addc9877fee36e6073d04d4382cb34889b0fc851c13da10c020647be64248399fd35309c0346f6995178b651c19 SHA512 5e7d6222b9128441c506f1554de327af9695cb07bb6db9a772386752a6815b7e8ff1d02185429f9cd25a11085860867d42f6e209175c68cbeb9daa6547d83eac
|
DIST HTTP-CookieJar-0.010.tar.gz 27883 BLAKE2B 3f0bf8fcff066955d1350a420a02fb8388238addc9877fee36e6073d04d4382cb34889b0fc851c13da10c020647be64248399fd35309c0346f6995178b651c19 SHA512 5e7d6222b9128441c506f1554de327af9695cb07bb6db9a772386752a6815b7e8ff1d02185429f9cd25a11085860867d42f6e209175c68cbeb9daa6547d83eac
|
||||||
|
DIST HTTP-CookieJar-0.012.tar.gz 28223 BLAKE2B 67284519bf19271896625ec577121171d6bb559a7c011f2a8f1e92be537077d1ec5bbd5f4ad043e44c754d5b2a3f2b617e37a87bfef3026533fd442fd9275613 SHA512 3b4b0cd2228d53dfa9c1a75cf108f9b2a328c3bf054f0c7d8308bc0a71375340684b165ab05cb7868cdbeb232e4ceb4b465177a43c7573863e9274f8aa4034af
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
# Copyright 1999-2021 Gentoo Authors
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=6
|
|
||||||
|
|
||||||
DIST_AUTHOR=OALDERS
|
|
||||||
DIST_VERSION=6.04
|
|
||||||
inherit perl-module
|
|
||||||
|
|
||||||
DESCRIPTION="Storage of cookies"
|
|
||||||
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
|
|
||||||
IUSE="test"
|
|
||||||
RESTRICT="!test? ( test )"
|
|
||||||
|
|
||||||
RDEPEND="
|
|
||||||
!<dev-perl/libwww-perl-6
|
|
||||||
virtual/perl-Carp
|
|
||||||
>=dev-perl/HTTP-Date-6.0.0
|
|
||||||
virtual/perl-Time-Local
|
|
||||||
>=dev-perl/HTTP-Message-6.0.0
|
|
||||||
"
|
|
||||||
DEPEND="${RDEPEND}
|
|
||||||
virtual/perl-ExtUtils-MakeMaker
|
|
||||||
test? (
|
|
||||||
virtual/perl-Test
|
|
||||||
virtual/perl-Test-Simple
|
|
||||||
dev-perl/URI
|
|
||||||
)
|
|
||||||
"
|
|
@ -1,2 +1 @@
|
|||||||
DIST HTTP-Cookies-6.04.tar.gz 39502 BLAKE2B a6a5de4a992ee246dd0e04594fe47ce635248d7fb004acdd4eb926a84c27a7b69f0b8d5a522460287f1786f3d3f9d8bfd23c933ab7650e8cfaffaf392eecb94e SHA512 e8b24b96e6630f1238e828edfbf7074fb9186a391fd1d129fb65a82748a4cf7d71669fa658c31957560a6faac3e638c8dc7aa3182acaa6fd14f0d56f3968f5e4
|
|
||||||
DIST HTTP-Cookies-6.10.tar.gz 42448 BLAKE2B ce261bde7071f34811827099322a0c7282c4f2287ce4baca258d8237dc82ffa5502acbe9ca2a4b76ebe6d8bd0c1facdad5448f1f377390e46c2f4564550bf57e SHA512 c24a986e524ebf5d8b13b4580c3ee6aed018e79c203fd62208bfe970744482832fe9c41bb3195a596af1e11058053ed7615a09a26fbcef4433e270f0f5d38658
|
DIST HTTP-Cookies-6.10.tar.gz 42448 BLAKE2B ce261bde7071f34811827099322a0c7282c4f2287ce4baca258d8237dc82ffa5502acbe9ca2a4b76ebe6d8bd0c1facdad5448f1f377390e46c2f4564550bf57e SHA512 c24a986e524ebf5d8b13b4580c3ee6aed018e79c203fd62208bfe970744482832fe9c41bb3195a596af1e11058053ed7615a09a26fbcef4433e270f0f5d38658
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
# Copyright 1999-2015 Gentoo Foundation
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=5
|
|
||||||
|
|
||||||
MODULE_AUTHOR=COSIMO
|
|
||||||
MODULE_VERSION=0.48
|
|
||||||
inherit perl-module
|
|
||||||
|
|
||||||
DESCRIPTION="A WebDAV client library for Perl5"
|
|
||||||
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="amd64 ~ppc x86"
|
|
||||||
IUSE=""
|
|
||||||
|
|
||||||
RDEPEND="
|
|
||||||
dev-perl/libwww-perl
|
|
||||||
dev-perl/URI
|
|
||||||
dev-perl/XML-DOM
|
|
||||||
"
|
|
||||||
DEPEND="${RDEPEND}"
|
|
||||||
|
|
||||||
SRC_TEST="do"
|
|
@ -1,2 +1 @@
|
|||||||
DIST HTTP-DAV-0.48.tar.gz 105090 BLAKE2B e0a88e186ae26d3240783aeed91b3da786b1ad21e31f9293c361147c540bd513cfd1f570b9dabc77301c5310ca65128c1574cc342bd5512fcf7e6340c97eabf2 SHA512 2edf92791660b1996eb22b9ea68bd4e417c497afeebb56cb0a2ecf0cf72ea54b6fb8efd4d69dae1dcb946517f917593932a8040bd0ef5cfc83f7fdfd1fe3ccf8
|
|
||||||
DIST HTTP-DAV-0.49.tar.gz 107841 BLAKE2B 202a37766a949441417e6e88de02dcb238f811408f16cc86ebb5187f0cd0c8b780e322b3704dbc115225232c1d815cbe9d5fdb8ac7755e222c7eac5357ea0a81 SHA512 01a097f47d95090fd0fd08a44b440d0ed4f2f04e0bedc41f8e2abedf1879e7cfcae6cf5cf7a415ac89dc610cf0cacf4f75078586bbf6a818f8c6dd36ccb451f6
|
DIST HTTP-DAV-0.49.tar.gz 107841 BLAKE2B 202a37766a949441417e6e88de02dcb238f811408f16cc86ebb5187f0cd0c8b780e322b3704dbc115225232c1d815cbe9d5fdb8ac7755e222c7eac5357ea0a81 SHA512 01a097f47d95090fd0fd08a44b440d0ed4f2f04e0bedc41f8e2abedf1879e7cfcae6cf5cf7a415ac89dc610cf0cacf4f75078586bbf6a818f8c6dd36ccb451f6
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
# Copyright 1999-2021 Gentoo Authors
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=6
|
|
||||||
|
|
||||||
DIST_AUTHOR=OALDERS
|
|
||||||
DIST_VERSION=6.06
|
|
||||||
inherit perl-module
|
|
||||||
|
|
||||||
DESCRIPTION="Base class for simple HTTP servers"
|
|
||||||
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
|
|
||||||
IUSE="test"
|
|
||||||
RESTRICT="!test? ( test )"
|
|
||||||
|
|
||||||
RDEPEND="
|
|
||||||
!<dev-perl/libwww-perl-6
|
|
||||||
virtual/perl-Carp
|
|
||||||
>=dev-perl/HTTP-Date-6.0.0
|
|
||||||
>=dev-perl/HTTP-Message-6.0.0
|
|
||||||
virtual/perl-IO-Socket-IP
|
|
||||||
>=dev-perl/LWP-MediaTypes-6.0.0
|
|
||||||
virtual/perl-Socket
|
|
||||||
"
|
|
||||||
DEPEND="${RDEPEND}
|
|
||||||
virtual/perl-ExtUtils-MakeMaker
|
|
||||||
>=dev-perl/Module-Build-Tiny-0.34.0
|
|
||||||
test? (
|
|
||||||
virtual/perl-File-Spec
|
|
||||||
virtual/perl-Module-Metadata
|
|
||||||
virtual/perl-Test-Simple
|
|
||||||
dev-perl/Test-Needs
|
|
||||||
dev-perl/URI
|
|
||||||
)
|
|
||||||
"
|
|
@ -1,2 +1 @@
|
|||||||
DIST HTTP-Daemon-6.06.tar.gz 45576 BLAKE2B 3f5a5eaf8fd89422cad916cbe384ac45989147510d171d9496937e732fe83c8c5a5514d03c468415358a575326aa86fc78d8a135b8c7602560923511268fca67 SHA512 8e6dcf4451aaa6bd5f38508a087e5bb9b7f5105e8e243d09bdd3f4be3d7009222b3d9f8e494f049b48f0caebf36f239b8bbc7b8edc805f7d32b1bbeb38431732
|
|
||||||
DIST HTTP-Daemon-6.12.tar.gz 47117 BLAKE2B 54b494ff3976af427c899b2db6f7b4dad27fbf441e4b821c5185537f6661e5e10cd6a52f2faf07ef5843dbbfe86b8c8c86abe478663553d16e9b1b4a19dd791d SHA512 83a8b868162dfa1be66d4267e99af1111d28122c793e89d905243c175617c22ceb66f88b6ea54c29e7b131c26668776ab24cf671c4cc6c1c8810505e0f072596
|
DIST HTTP-Daemon-6.12.tar.gz 47117 BLAKE2B 54b494ff3976af427c899b2db6f7b4dad27fbf441e4b821c5185537f6661e5e10cd6a52f2faf07ef5843dbbfe86b8c8c86abe478663553d16e9b1b4a19dd791d SHA512 83a8b868162dfa1be66d4267e99af1111d28122c793e89d905243c175617c22ceb66f88b6ea54c29e7b131c26668776ab24cf671c4cc6c1c8810505e0f072596
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
# Copyright 1999-2021 Gentoo Authors
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=5
|
|
||||||
|
|
||||||
MODULE_AUTHOR=GAAS
|
|
||||||
MODULE_VERSION=6.02
|
|
||||||
inherit perl-module
|
|
||||||
|
|
||||||
DESCRIPTION="Date conversion for HTTP date formats"
|
|
||||||
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
|
|
||||||
IUSE=""
|
|
||||||
|
|
||||||
RDEPEND="
|
|
||||||
!<dev-perl/libwww-perl-6
|
|
||||||
virtual/perl-Time-Local
|
|
||||||
"
|
|
||||||
DEPEND="${RDEPEND}"
|
|
||||||
|
|
||||||
SRC_TEST=do
|
|
@ -1,2 +1 @@
|
|||||||
DIST HTTP-Date-6.02.tar.gz 7319 BLAKE2B c56c349c612d88b90324ec2379beadcd0238e448f83fb2bed7f758dc4fb3d234d4f4cf203c86f3260692ae7db1e1deaf22152c6d7fa9d34a2c835425d0d06d32 SHA512 056d2ff01482922a644757f04cb924d60fa15b86873fdea02e65c78c8af2bbf3f184495852b579eb4fc86bc44f8a5a52f785ab800cc554431ed3e2767e858232
|
|
||||||
DIST HTTP-Date-6.05.tar.gz 29673 BLAKE2B 680af1a4ea45160c15a5d086275b5157a091c7816bf5def67c413690c97756946e24d436c50d664e2f8809cd4ac8054e24466d2ef4127b4b09bc681d6b19a404 SHA512 08a427a860161cd0d7a34a4fa3eb6bf6439c2504478a308ff560de0e6620c20df46f004cfcb719e3d19e35fdb650728d6983ffce1423f4d9da06f91d85c7b927
|
DIST HTTP-Date-6.05.tar.gz 29673 BLAKE2B 680af1a4ea45160c15a5d086275b5157a091c7816bf5def67c413690c97756946e24d436c50d664e2f8809cd4ac8054e24466d2ef4127b4b09bc681d6b19a404 SHA512 08a427a860161cd0d7a34a4fa3eb6bf6439c2504478a308ff560de0e6620c20df46f004cfcb719e3d19e35fdb650728d6983ffce1423f4d9da06f91d85c7b927
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
# Copyright 1999-2020 Gentoo Authors
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=6
|
|
||||||
|
|
||||||
DIST_AUTHOR=KAZEBURO
|
|
||||||
DIST_VERSION=0.20
|
|
||||||
DIST_EXAMPLES=( "eg/*" )
|
|
||||||
inherit perl-module
|
|
||||||
|
|
||||||
DESCRIPTION="PSGI compliant HTTP Entity Parser"
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="~alpha amd64 ~ia64 ppc ppc64 sparc x86"
|
|
||||||
IUSE="test +xs"
|
|
||||||
RESTRICT="!test? ( test )"
|
|
||||||
|
|
||||||
RDEPEND="
|
|
||||||
virtual/perl-Encode
|
|
||||||
virtual/perl-File-Temp
|
|
||||||
dev-perl/HTTP-MultiPartParser
|
|
||||||
dev-perl/Hash-MultiValue
|
|
||||||
>=dev-perl/JSON-MaybeXS-1.3.7
|
|
||||||
virtual/perl-Module-Load
|
|
||||||
dev-perl/Stream-Buffered
|
|
||||||
>=dev-perl/WWW-Form-UrlEncoded-0.230.0
|
|
||||||
xs? ( >=dev-perl/WWW-Form-UrlEncoded-XS-0.230.0 )
|
|
||||||
"
|
|
||||||
DEPEND="${RDEPEND}
|
|
||||||
>=dev-perl/Module-Build-Tiny-0.35.0
|
|
||||||
test? (
|
|
||||||
virtual/perl-File-Spec
|
|
||||||
>=dev-perl/HTTP-Message-6
|
|
||||||
>=virtual/perl-Test-Simple-0.980.0
|
|
||||||
)
|
|
||||||
"
|
|
@ -1,2 +1 @@
|
|||||||
DIST HTTP-Entity-Parser-0.20.tar.gz 23662 BLAKE2B d003bf695e32084b524a9e56327b5485ef2d8d4f608d55c776b960372165e2139cddd8a8db609c59f40ef84c979eb42c3af010fc36f3bd52945a6a88417396fc SHA512 c80d9058b8682c51a0fe3669249cc219142e674959237d8ae6bd435afafc16c92a38328329e9b09a25af8a79fec5bf01050145d3c63dd81b15ad9d75946fdfc6
|
|
||||||
DIST HTTP-Entity-Parser-0.25.tar.gz 24307 BLAKE2B 6c8e7d6dfef9c023ea9e6270d12c0790711a03bfe783ae7be0550b83859d03ad94515981f3b87887d2174ca45b1d3cbbee427064f1377f28e0a7d09c2942de2c SHA512 760bff3ddd818ecb8eeeaee86c2d2bd895820b4011c306135b2d6eb3c2519322b3bd4e20098c9458c2fec7dd944384dcd33bfdd5b2d368a28270ac14e8dab54b
|
DIST HTTP-Entity-Parser-0.25.tar.gz 24307 BLAKE2B 6c8e7d6dfef9c023ea9e6270d12c0790711a03bfe783ae7be0550b83859d03ad94515981f3b87887d2174ca45b1d3cbbee427064f1377f28e0a7d09c2942de2c SHA512 760bff3ddd818ecb8eeeaee86c2d2bd895820b4011c306135b2d6eb3c2519322b3bd4e20098c9458c2fec7dd944384dcd33bfdd5b2d368a28270ac14e8dab54b
|
||||||
|
Binary file not shown.
@ -1,2 +1 @@
|
|||||||
DIST WebService-MusicBrainz-1.0.4.tar.gz 9937 BLAKE2B f57dc8edf4649bd1ee69d105cb6a1e885f695065f319e2537e1aa24a44560d19b2a947b98c2ad4fde0a965b93b3b3a9a562e6f6f6139d5694599e246735556d0 SHA512 91442fe4696a4f9ac1434cc9dc8d3a16d2e3a8ccd3434f5e4ac642ffba0d56db6583175283c0a1a75365cdc65dbb4516bfa6182be568de16767fba3676f2368b
|
|
||||||
DIST WebService-MusicBrainz-1.0.5.tar.gz 10029 BLAKE2B 52e9e09f4b0c68fb26391cbfca2ba092fece7ebd1ead2b09a243718da1876209a4c12e723fdaf5ea8a3c796ec65b10481aeddba6297ef40812f61fca935f743e SHA512 b1dfa497b460fb56702905518d3f2de0f5af0f4003be9ce983954673b0abc8a67215a77079a2989fca2c0228409788ff3f767302659003f544e6bbd56ab6df24
|
DIST WebService-MusicBrainz-1.0.5.tar.gz 10029 BLAKE2B 52e9e09f4b0c68fb26391cbfca2ba092fece7ebd1ead2b09a243718da1876209a4c12e723fdaf5ea8a3c796ec65b10481aeddba6297ef40812f61fca935f743e SHA512 b1dfa497b460fb56702905518d3f2de0f5af0f4003be9ce983954673b0abc8a67215a77079a2989fca2c0228409788ff3f767302659003f544e6bbd56ab6df24
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
# Copyright 1999-2021 Gentoo Authors
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=6
|
|
||||||
|
|
||||||
DIST_AUTHOR=BFAIST
|
|
||||||
DIST_VERSION=1.0.4
|
|
||||||
inherit perl-module
|
|
||||||
|
|
||||||
DESCRIPTION="Web service API to MusicBrainz database"
|
|
||||||
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="amd64 ppc ppc64 ~riscv x86"
|
|
||||||
IUSE=""
|
|
||||||
PATCHES=( "${FILESDIR}/1.0.2-no-network-testing.patch" )
|
|
||||||
RDEPEND="
|
|
||||||
>=dev-perl/Mojolicious-7.130.0
|
|
||||||
"
|
|
||||||
DEPEND="${RDEPEND}
|
|
||||||
>=dev-perl/Module-Build-0.420.0
|
|
||||||
"
|
|
Binary file not shown.
@ -1,2 +1,3 @@
|
|||||||
DIST async-timeout-3.0.1.tar.gz 9724 BLAKE2B f18ae75969b7048469fe22949f25ea25da3fdbf08b98a16b5d5ffe823060a75e6de9ed764727e08d4344c79426e9c89013d49522f20ed62e6fbe912b5c7a8787 SHA512 fd30842671a79edfd52c7350e7fb2120533a6d97b44975f7b071ce2cbde43443bd5bbe1f2ad0ad3ab2156e1987b9e58e0c149b0ecfea8674eb0cb78eee79c986
|
DIST async-timeout-3.0.1.tar.gz 9724 BLAKE2B f18ae75969b7048469fe22949f25ea25da3fdbf08b98a16b5d5ffe823060a75e6de9ed764727e08d4344c79426e9c89013d49522f20ed62e6fbe912b5c7a8787 SHA512 fd30842671a79edfd52c7350e7fb2120533a6d97b44975f7b071ce2cbde43443bd5bbe1f2ad0ad3ab2156e1987b9e58e0c149b0ecfea8674eb0cb78eee79c986
|
||||||
|
DIST async-timeout-4.0.0.tar.gz 8258 BLAKE2B 7a3edee9491aba11e59ef6bf7c07b9e3f00e97bf42e69adac92a23d89715e2c90dbf9e431c146c20e44b05ed47905cfd5afa41fd04df63315d9f347a6b8f70f1 SHA512 92716106b42ad3746c9873649b44d414da08f75cd507a0dc45d764270bcbd6f483c149e5cebe1a4c36f5cd02397c21b67b92a0475117d9dea17c580e422cf4da
|
||||||
DIST async-timeout-4.0.0a3.tar.gz 11386 BLAKE2B 8918878c4edd64c70d831ddd05e3235c3c7cc116a99755205b7624df52cacfb61bf4e80083c85d93e420fbf18e7da16ee3ebc796c5a4890e2801885b670a494a SHA512 04775ea30ffba90a4b604ef040df24a6a2711fd3e2c3b45d1ab87ae3487f216458f44bbfb2c85498bef286acca90af43d8b3b95cf22244027c0a48494ef84e7a
|
DIST async-timeout-4.0.0a3.tar.gz 11386 BLAKE2B 8918878c4edd64c70d831ddd05e3235c3c7cc116a99755205b7624df52cacfb61bf4e80083c85d93e420fbf18e7da16ee3ebc796c5a4890e2801885b670a494a SHA512 04775ea30ffba90a4b604ef040df24a6a2711fd3e2c3b45d1ab87ae3487f216458f44bbfb2c85498bef286acca90af43d8b3b95cf22244027c0a48494ef84e7a
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
PYTHON_COMPAT=( python3_{8..10} pypy3 )
|
||||||
|
inherit distutils-r1
|
||||||
|
|
||||||
|
MY_P=${PN/_/-}-${PV}
|
||||||
|
DESCRIPTION="Timeout context manager for asyncio programs"
|
||||||
|
HOMEPAGE="https://github.com/aio-libs/async-timeout"
|
||||||
|
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
|
||||||
|
S=${WORKDIR}/${MY_P}
|
||||||
|
|
||||||
|
LICENSE="Apache-2.0"
|
||||||
|
SLOT="0"
|
||||||
|
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
|
||||||
|
|
||||||
|
BDEPEND="
|
||||||
|
dev-python/setuptools_scm[${PYTHON_USEDEP}]
|
||||||
|
test? (
|
||||||
|
dev-python/pytest-aiohttp[${PYTHON_USEDEP}]
|
||||||
|
dev-python/pytest-asyncio[${PYTHON_USEDEP}]
|
||||||
|
)"
|
||||||
|
|
||||||
|
distutils_enable_tests pytest
|
||||||
|
|
||||||
|
python_prepare_all() {
|
||||||
|
# remove pointless dep on pytest-cov
|
||||||
|
sed -i -e '/addopts/d' setup.cfg || die
|
||||||
|
distutils-r1_python_prepare_all
|
||||||
|
}
|
||||||
|
|
||||||
|
python_test() {
|
||||||
|
epytest -p no:aiohttp
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue