parent
40f7d8e95b
commit
50e99b64d4
Binary file not shown.
Binary file not shown.
@ -0,0 +1,58 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
|
||||
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}]
|
||||
"
|
||||
BDEPEND="
|
||||
test? (
|
||||
dev-python/mock[${PYTHON_USEDEP}]
|
||||
)
|
||||
"
|
||||
|
||||
distutils_enable_tests --install nose
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/awscli-1.19.47-py39.patch
|
||||
)
|
||||
|
||||
python_test() {
|
||||
distutils_install_for_testing
|
||||
# integration tests require AWS credentials and Internet access
|
||||
nosetests -v tests/{functional,unit} ||
|
||||
die "Tests failed for ${EPYTHON}"
|
||||
}
|
||||
|
||||
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
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
# 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 nose
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/awscli-1.19.47-py39.patch
|
||||
)
|
||||
|
||||
python_test() {
|
||||
distutils_install_for_testing
|
||||
# integration tests require AWS credentials and Internet access
|
||||
nosetests -v tests/{functional,unit} ||
|
||||
die "Tests failed for ${EPYTHON}"
|
||||
}
|
||||
|
||||
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
|
||||
}
|
@ -1 +1 @@
|
||||
DIST exo-1.43.0.tar.gz 5504583 BLAKE2B ffd2d25e6eea77a99390aac9f725728b3f1515e9ed73b4181e794b60b7641b44fe29abc81da3231fa8e4932da81eb6ce30808ce6a56ae5c4a26a1e10372cb64a SHA512 08e5e38609eb21addc56966e672e9b84acb6b36b6bdb0eb977d8fecbf2bca9af19a46a5e6efd50cb92322da248767aa3af3b8f04b9d893fc704d6c08feb8f6d2
|
||||
DIST exo-1.44.0.tar.gz 5507722 BLAKE2B b42424a1327f0cb28b78f721f465b156eed6a223937e7d08f0f16a3829b497dd1c6a9d450d6d4d4cbf1db033729d91fa1566fa9c7871a07f32556cd2a153bfcd SHA512 8baaea5c727cdcf1b8b4272820d6f2b2740320e688c16b5efc7c9e51ce38c7951fd8252bf41d736ca0c3f7da605d751f56b79544af75f8d0ef0f671e867b6d59
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1 +1,2 @@
|
||||
DIST john-1.9.0-jumbo-1.tar.xz 33638768 BLAKE2B 2fd6813e234308408d42581705ee8b25f9217a3dfb43f05483156f7bb67d0ce0d6de9c3ce8c2e4a17bb99bb377119dae2897bc08c800e7bc80bc6cf245400df6 SHA512 c5cb5dc739ee4c666f8479cdf10511fddc391b590c59f90c060d3ccd8449b794ac7b831a6d1f7553883892499e709a66578cfa4d62caef9b7e0a831eb827e808
|
||||
DIST johntheripper-jumbo-1.9.0_p20210920.tar.gz 47758128 BLAKE2B e85255dc218c43e6358f76eac1e79af01d437a7a1fcddd608a390734fdc4070cbf949b8abc080b82decf4a1f5e32d2baa6d2a09d385a31913d8e988c8732e85e SHA512 5121434ad275921fe6288c51fd9dfd36ed3162387e70e8089bbc266d4a17ea461b72ce26b2004acfb62d95a9ee2d570ef3b3f00c1d031abd8cff2f20c3ab480a
|
||||
|
@ -0,0 +1,24 @@
|
||||
https://patch-diff.githubusercontent.com/raw/openwall/john/pull/4822.patch
|
||||
|
||||
From dd9501341808fe19b9c5cd4f8f04edfc5f377077 Mon Sep 17 00:00:00 2001
|
||||
From: Sam James <sam@gentoo.org>
|
||||
Date: Wed, 22 Sep 2021 19:34:38 +0100
|
||||
Subject: [PATCH] configure.ac: avoid bashism in pkg-config check
|
||||
|
||||
== is a Bashism and configure scripts need to work
|
||||
with a POSIX shell, so let's change to = (like in
|
||||
the other condition).
|
||||
|
||||
Signed-off-by: Sam James <sam@gentoo.org>
|
||||
--- a/src/configure.ac
|
||||
+++ b/src/configure.ac
|
||||
@@ -347,7 +347,7 @@ AS_IF([test -z "$STRIP"], [AC_CHECK_TOOL([STRIP], [strip])])
|
||||
dnl Check if we have this at all
|
||||
PKG_PROG_PKG_CONFIG
|
||||
AC_MSG_CHECKING([if pkg-config will be used])
|
||||
-if test "x$PKG_CONFIG" = x || test "x$enable_pkg_config" == xno ; then
|
||||
+if test "x$PKG_CONFIG" = x || test "x$enable_pkg_config" = xno ; then
|
||||
JTR_MSG_RESULT_FAILIF_FORCED([xno], [x$enable_pkg_config], [pkg-config is NOT available])
|
||||
PKG_CONFIG=no
|
||||
else
|
||||
|
@ -0,0 +1,143 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
inherit autotools flag-o-matic toolchain-funcs pax-utils
|
||||
|
||||
DESCRIPTION="Fast password cracker"
|
||||
HOMEPAGE="http://www.openwall.com/john/"
|
||||
|
||||
MY_PN="JohnTheRipper"
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="https://github.com/magnumripper/${MY_PN}.git"
|
||||
inherit git-r3
|
||||
else
|
||||
JUMBO="jumbo-1.1"
|
||||
MY_PV="${PV}-${JUMBO}"
|
||||
MY_P="john-${MY_PV}"
|
||||
HASH_COMMIT="43c7f8850736d4ec68bf0a022ae9fb34c274a01d"
|
||||
|
||||
SRC_URI="https://github.com/openwall/john/archive/${HASH_COMMIT}.tar.gz -> ${P}.tar.gz"
|
||||
S="${WORKDIR}/john-${HASH_COMMIT}"
|
||||
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
|
||||
fi
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
IUSE="custom-cflags kerberos mpi opencl openmp pcap"
|
||||
|
||||
DEPEND=">=dev-libs/openssl-1.0.1:=
|
||||
virtual/libcrypt:=
|
||||
mpi? ( virtual/mpi )
|
||||
opencl? ( virtual/opencl )
|
||||
kerberos? ( virtual/krb5 )
|
||||
pcap? ( net-libs/libpcap )
|
||||
dev-libs/gmp:=
|
||||
sys-libs/zlib
|
||||
app-arch/bzip2"
|
||||
RDEPEND="${DEPEND}
|
||||
!app-crypt/johntheripper"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${PN}-1.9.0-fix-bashism.patch
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
if use openmp && [[ ${MERGE_TYPE} != binary ]]; then
|
||||
tc-has-openmp || die "Please switch to an OpenMP compatible compiler"
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
cd src || die
|
||||
eautoreconf
|
||||
|
||||
sed -i 's#$prefix/share/john#/etc/john#' configure || die
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
cd src || die
|
||||
|
||||
use custom-cflags || strip-flags
|
||||
|
||||
econf \
|
||||
--enable-pkg-config \
|
||||
--disable-native-march \
|
||||
--disable-native-tests \
|
||||
--disable-rexgen \
|
||||
--with-openssl \
|
||||
--with-systemwide \
|
||||
$(use_enable mpi) \
|
||||
$(use_enable opencl) \
|
||||
$(use_enable openmp) \
|
||||
$(use_enable pcap)
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
emake -C src
|
||||
}
|
||||
|
||||
src_test() {
|
||||
pax-mark -mr run/john
|
||||
#if use opencl; then
|
||||
#gpu tests fail in portage, so run cpu only tests
|
||||
# ./run/john --device=cpu --test=0 --verbosity=2 || die
|
||||
#else
|
||||
#weak tests
|
||||
# ./run/john --test=0 --verbosity=2 || die
|
||||
#strong tests
|
||||
#./run/john --test=1 --verbosity=2 || die
|
||||
#fi
|
||||
ewarn "When built systemwide, john can't run tests without reading files in /etc."
|
||||
ewarn "Don't bother opening a bug for this unless you include a patch to fix it"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
# Executables
|
||||
dosbin run/john
|
||||
newsbin run/mailer john-mailer
|
||||
|
||||
pax-mark -mr "${ED}/usr/sbin/john"
|
||||
|
||||
# grep '$(LN)' Makefile.in | head -n-3 | tail -n+2 | cut -d' ' -f3 | cut -d/ -f3
|
||||
local s
|
||||
for s in \
|
||||
unshadow unafs undrop unique ssh2john putty2john pfx2john keepass2john keyring2john \
|
||||
zip2john gpg2john rar2john racf2john keychain2john kwallet2john pwsafe2john dmg2john \
|
||||
hccap2john base64conv truecrypt_volume2john keystore2john
|
||||
do
|
||||
dosym john /usr/sbin/${s}
|
||||
done
|
||||
|
||||
# Scripts
|
||||
exeinto /usr/share/john
|
||||
doexe run/*.pl
|
||||
doexe run/*.py
|
||||
cd run || die
|
||||
|
||||
local s
|
||||
for s in *.pl *.py; do
|
||||
dosym ../share/john/${s} /usr/bin/${s}
|
||||
done
|
||||
cd .. || die
|
||||
|
||||
if use opencl; then
|
||||
insinto /etc/john
|
||||
doins -r run/opencl
|
||||
fi
|
||||
|
||||
# Config files
|
||||
insinto /etc/john
|
||||
doins run/*.chr run/password.lst
|
||||
doins run/*.conf
|
||||
doins -r run/rules run/ztex
|
||||
|
||||
# dDocumentation
|
||||
rm -f doc/README || die
|
||||
dodoc -r README.md doc/*
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +1,2 @@
|
||||
DIST qemu-6.0.0.tar.xz 107333232 BLAKE2B 7746329d3e13782b7c346ce4052cc517cfc65cd9b2d514d199e4d5b8570ca79566ec04b0c114db2e97c84e68eb551e0d4cdce1b14b91a88fe08d2a5f682c1418 SHA512 ee3ff00aebec4d8891d2ff6dabe4e667e510b2a4fe3f6190aa34673a91ea32dcd2db2e9bf94c2f1bf05aa79788f17cfbbedc6027c0988ea08a92587b79ee05e4
|
||||
DIST qemu-6.1.0.tar.xz 111258808 BLAKE2B 412eecf6d39debd6089b26d3b22e5d25c6c8c30d2eaf31b17c25cc2b3a1b10794a30218dfb151c78801aa295255aa974b297f1fe05b93f14334f203c2af5ccee SHA512 3378ae21c75b77ee6a759827f1fcf7b2a50a0fef07e3b0e89117108022a8d8655fa977e4d65596f4f24f7c735c6594d44b0c6f69732ea4465e88a7406b1d5d3c
|
||||
|
@ -0,0 +1,26 @@
|
||||
Forward-ported from original patch for 5.2.0.
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index da2501489f..4660ee3ee5 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -516,6 +516,7 @@ ld="${LD-${cross_prefix}ld}"
|
||||
ranlib="${RANLIB-${cross_prefix}ranlib}"
|
||||
nm="${NM-${cross_prefix}nm}"
|
||||
strip="${STRIP-${cross_prefix}strip}"
|
||||
+strings="${STRINGS-${cross_prefix}strings}"
|
||||
windres="${WINDRES-${cross_prefix}windres}"
|
||||
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
|
||||
query_pkg_config() {
|
||||
@@ -2380,9 +2381,9 @@ int main(int argc, char *argv[])
|
||||
EOF
|
||||
|
||||
if compile_prog ; then
|
||||
- if strings -a $TMPE | grep -q BiGeNdIaN ; then
|
||||
+ if $strings -a $TMPE | grep -q BiGeNdIaN ; then
|
||||
bigendian="yes"
|
||||
- elif strings -a $TMPE | grep -q LiTtLeEnDiAn ; then
|
||||
+ elif $strings -a $TMPE | grep -q LiTtLeEnDiAn ; then
|
||||
bigendian="no"
|
||||
else
|
||||
echo big/little test failed
|
@ -0,0 +1,909 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
|
||||
PYTHON_COMPAT=( python3_{7,8,9,10} )
|
||||
PYTHON_REQ_USE="ncurses,readline"
|
||||
|
||||
FIRMWARE_ABI_VERSION="6.1.0"
|
||||
|
||||
inherit linux-info toolchain-funcs python-r1 udev fcaps readme.gentoo-r1 \
|
||||
pax-utils xdg-utils
|
||||
|
||||
if [[ ${PV} = *9999* ]]; then
|
||||
EGIT_REPO_URI="https://git.qemu.org/git/qemu.git"
|
||||
EGIT_SUBMODULES=(
|
||||
meson
|
||||
tests/fp/berkeley-softfloat-3
|
||||
tests/fp/berkeley-testfloat-3
|
||||
ui/keycodemapdb
|
||||
)
|
||||
inherit git-r3
|
||||
SRC_URI=""
|
||||
else
|
||||
SRC_URI="https://download.qemu.org/${P}.tar.xz"
|
||||
KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86"
|
||||
fi
|
||||
|
||||
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
|
||||
HOMEPAGE="http://www.qemu.org http://www.linux-kvm.org"
|
||||
|
||||
LICENSE="GPL-2 LGPL-2 BSD-2"
|
||||
SLOT="0"
|
||||
|
||||
IUSE="accessibility +aio alsa bzip2 capstone +caps +curl debug +doc
|
||||
+fdt fuse glusterfs gnutls gtk infiniband iscsi io-uring
|
||||
jack jemalloc +jpeg kernel_linux
|
||||
kernel_FreeBSD lzo multipath
|
||||
ncurses nfs nls numa opengl +oss +pin-upstream-blobs
|
||||
plugins +png pulseaudio python rbd sasl +seccomp sdl sdl-image selinux
|
||||
+slirp
|
||||
smartcard snappy spice ssh static static-user systemtap test udev usb
|
||||
usbredir vde +vhost-net vhost-user-fs virgl virtfs +vnc vte xattr xen
|
||||
xfs zstd"
|
||||
|
||||
COMMON_TARGETS="
|
||||
aarch64
|
||||
alpha
|
||||
arm
|
||||
cris
|
||||
hppa
|
||||
i386
|
||||
m68k
|
||||
microblaze
|
||||
microblazeel
|
||||
mips
|
||||
mips64
|
||||
mips64el
|
||||
mipsel
|
||||
nios2
|
||||
or1k
|
||||
ppc
|
||||
ppc64
|
||||
riscv32
|
||||
riscv64
|
||||
s390x
|
||||
sh4
|
||||
sh4eb
|
||||
sparc
|
||||
sparc64
|
||||
x86_64
|
||||
xtensa
|
||||
xtensaeb
|
||||
"
|
||||
IUSE_SOFTMMU_TARGETS="
|
||||
${COMMON_TARGETS}
|
||||
avr
|
||||
rx
|
||||
tricore
|
||||
"
|
||||
IUSE_USER_TARGETS="
|
||||
${COMMON_TARGETS}
|
||||
aarch64_be
|
||||
armeb
|
||||
hexagon
|
||||
mipsn32
|
||||
mipsn32el
|
||||
ppc64abi32
|
||||
ppc64le
|
||||
sparc32plus
|
||||
"
|
||||
|
||||
use_softmmu_targets=$(printf ' qemu_softmmu_targets_%s' ${IUSE_SOFTMMU_TARGETS})
|
||||
use_user_targets=$(printf ' qemu_user_targets_%s' ${IUSE_USER_TARGETS})
|
||||
IUSE+=" ${use_softmmu_targets} ${use_user_targets}"
|
||||
|
||||
RESTRICT="!test? ( test )"
|
||||
# Allow no targets to be built so that people can get a tools-only build.
|
||||
# Block USE flag configurations known to not work.
|
||||
REQUIRED_USE="${PYTHON_REQUIRED_USE}
|
||||
qemu_softmmu_targets_arm? ( fdt )
|
||||
qemu_softmmu_targets_microblaze? ( fdt )
|
||||
qemu_softmmu_targets_mips64el? ( fdt )
|
||||
qemu_softmmu_targets_ppc64? ( fdt )
|
||||
qemu_softmmu_targets_ppc? ( fdt )
|
||||
qemu_softmmu_targets_riscv32? ( fdt )
|
||||
qemu_softmmu_targets_riscv64? ( fdt )
|
||||
sdl-image? ( sdl )
|
||||
static? ( static-user !alsa !gtk !jack !opengl !pulseaudio !plugins !rbd !snappy !udev )
|
||||
static-user? ( !plugins )
|
||||
vhost-user-fs? ( caps seccomp )
|
||||
virgl? ( opengl )
|
||||
virtfs? ( caps xattr )
|
||||
vte? ( gtk )
|
||||
multipath? ( udev )
|
||||
plugins? ( !static !static-user )
|
||||
"
|
||||
|
||||
# Dependencies required for qemu tools (qemu-nbd, qemu-img, qemu-io, ...)
|
||||
# and user/softmmu targets (qemu-*, qemu-system-*).
|
||||
#
|
||||
# Yep, you need both libcap and libcap-ng since virtfs only uses libcap.
|
||||
#
|
||||
# The attr lib isn't always linked in (although the USE flag is always
|
||||
# respected). This is because qemu supports using the C library's API
|
||||
# when available rather than always using the external library.
|
||||
ALL_DEPEND="
|
||||
>=dev-libs/glib-2.0[static-libs(+)]
|
||||
sys-libs/zlib[static-libs(+)]
|
||||
python? ( ${PYTHON_DEPS} )
|
||||
systemtap? ( dev-util/systemtap )
|
||||
xattr? ( sys-apps/attr[static-libs(+)] )"
|
||||
|
||||
# Dependencies required for qemu tools (qemu-nbd, qemu-img, qemu-io, ...)
|
||||
# softmmu targets (qemu-system-*).
|
||||
SOFTMMU_TOOLS_DEPEND="
|
||||
dev-libs/libxml2[static-libs(+)]
|
||||
>=x11-libs/pixman-0.28.0[static-libs(+)]
|
||||
accessibility? (
|
||||
app-accessibility/brltty[api]
|
||||
app-accessibility/brltty[static-libs(+)]
|
||||
)
|
||||
aio? ( dev-libs/libaio[static-libs(+)] )
|
||||
alsa? ( >=media-libs/alsa-lib-1.0.13 )
|
||||
bzip2? ( app-arch/bzip2[static-libs(+)] )
|
||||
capstone? ( dev-libs/capstone:= )
|
||||
caps? ( sys-libs/libcap-ng[static-libs(+)] )
|
||||
curl? ( >=net-misc/curl-7.15.4[static-libs(+)] )
|
||||
fdt? ( >=sys-apps/dtc-1.5.0[static-libs(+)] )
|
||||
fuse? ( >=sys-fs/fuse-3.1:3[static-libs(+)] )
|
||||
glusterfs? ( >=sys-cluster/glusterfs-3.4.0[static-libs(+)] )
|
||||
gnutls? (
|
||||
dev-libs/nettle:=[static-libs(+)]
|
||||
>=net-libs/gnutls-3.0:=[static-libs(+)]
|
||||
)
|
||||
gtk? (
|
||||
x11-libs/gtk+:3
|
||||
vte? ( x11-libs/vte:2.91 )
|
||||
)
|
||||
infiniband? (
|
||||
sys-fabric/libibumad:=[static-libs(+)]
|
||||
sys-fabric/libibverbs:=[static-libs(+)]
|
||||
sys-fabric/librdmacm:=[static-libs(+)]
|
||||
)
|
||||
iscsi? ( net-libs/libiscsi )
|
||||
io-uring? ( sys-libs/liburing:=[static-libs(+)] )
|
||||
jack? ( virtual/jack )
|
||||
jemalloc? ( dev-libs/jemalloc )
|
||||
jpeg? ( virtual/jpeg:0=[static-libs(+)] )
|
||||
lzo? ( dev-libs/lzo:2[static-libs(+)] )
|
||||
multipath? ( sys-fs/multipath-tools )
|
||||
ncurses? (
|
||||
sys-libs/ncurses:=[unicode(+)]
|
||||
sys-libs/ncurses:=[static-libs(+)]
|
||||
)
|
||||
nfs? ( >=net-fs/libnfs-1.9.3:=[static-libs(+)] )
|
||||
numa? ( sys-process/numactl[static-libs(+)] )
|
||||
opengl? (
|
||||
virtual/opengl
|
||||
media-libs/libepoxy[static-libs(+)]
|
||||
media-libs/mesa[static-libs(+)]
|
||||
media-libs/mesa[egl,gbm]
|
||||
)
|
||||
png? ( media-libs/libpng:0=[static-libs(+)] )
|
||||
pulseaudio? ( media-sound/pulseaudio )
|
||||
rbd? ( sys-cluster/ceph )
|
||||
sasl? ( dev-libs/cyrus-sasl[static-libs(+)] )
|
||||
sdl? (
|
||||
media-libs/libsdl2[video]
|
||||
media-libs/libsdl2[static-libs(+)]
|
||||
)
|
||||
sdl-image? ( media-libs/sdl2-image[static-libs(+)] )
|
||||
seccomp? ( >=sys-libs/libseccomp-2.1.0[static-libs(+)] )
|
||||
slirp? ( net-libs/libslirp[static-libs(+)] )
|
||||
smartcard? ( >=app-emulation/libcacard-2.5.0[static-libs(+)] )
|
||||
snappy? ( app-arch/snappy:= )
|
||||
spice? (
|
||||
>=app-emulation/spice-protocol-0.12.3
|
||||
>=app-emulation/spice-0.12.0[static-libs(+)]
|
||||
)
|
||||
ssh? ( >=net-libs/libssh-0.8.6[static-libs(+)] )
|
||||
udev? ( virtual/libudev:= )
|
||||
usb? ( >=virtual/libusb-1-r2[static-libs(+)] )
|
||||
usbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] )
|
||||
vde? ( net-misc/vde[static-libs(+)] )
|
||||
virgl? ( media-libs/virglrenderer[static-libs(+)] )
|
||||
virtfs? ( sys-libs/libcap )
|
||||
xen? ( app-emulation/xen-tools:= )
|
||||
xfs? ( sys-fs/xfsprogs[static-libs(+)] )
|
||||
zstd? ( >=app-arch/zstd-1.4.0[static-libs(+)] )
|
||||
"
|
||||
|
||||
EDK2_OVMF_VERSION="202105"
|
||||
SEABIOS_VERSION="1.14.0"
|
||||
|
||||
X86_FIRMWARE_DEPEND="
|
||||
pin-upstream-blobs? (
|
||||
~sys-firmware/edk2-ovmf-${EDK2_OVMF_VERSION}[binary]
|
||||
~sys-firmware/ipxe-1.21.1[binary,qemu]
|
||||
~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios]
|
||||
~sys-firmware/sgabios-0.1_pre10[binary]
|
||||
)
|
||||
!pin-upstream-blobs? (
|
||||
>=sys-firmware/edk2-ovmf-${EDK2_OVMF_VERSION}
|
||||
sys-firmware/ipxe[qemu]
|
||||
>=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios]
|
||||
sys-firmware/sgabios
|
||||
)"
|
||||
PPC_FIRMWARE_DEPEND="
|
||||
pin-upstream-blobs? (
|
||||
~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios]
|
||||
)
|
||||
!pin-upstream-blobs? (
|
||||
>=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios]
|
||||
)
|
||||
"
|
||||
|
||||
BDEPEND="
|
||||
$(python_gen_impl_dep)
|
||||
dev-lang/perl
|
||||
sys-apps/texinfo
|
||||
virtual/pkgconfig
|
||||
doc? (
|
||||
dev-python/sphinx
|
||||
dev-python/sphinx_rtd_theme
|
||||
)
|
||||
gtk? ( nls? ( sys-devel/gettext ) )
|
||||
test? (
|
||||
dev-libs/glib[utils]
|
||||
sys-devel/bc
|
||||
)
|
||||
"
|
||||
CDEPEND="
|
||||
!static? (
|
||||
${ALL_DEPEND//\[static-libs(+)]}
|
||||
${SOFTMMU_TOOLS_DEPEND//\[static-libs(+)]}
|
||||
)
|
||||
qemu_softmmu_targets_i386? ( ${X86_FIRMWARE_DEPEND} )
|
||||
qemu_softmmu_targets_x86_64? ( ${X86_FIRMWARE_DEPEND} )
|
||||
qemu_softmmu_targets_ppc? ( ${PPC_FIRMWARE_DEPEND} )
|
||||
qemu_softmmu_targets_ppc64? ( ${PPC_FIRMWARE_DEPEND} )
|
||||
"
|
||||
DEPEND="${CDEPEND}
|
||||
kernel_linux? ( >=sys-kernel/linux-headers-2.6.35 )
|
||||
static? (
|
||||
${ALL_DEPEND}
|
||||
${SOFTMMU_TOOLS_DEPEND}
|
||||
)
|
||||
static-user? ( ${ALL_DEPEND} )"
|
||||
RDEPEND="${CDEPEND}
|
||||
acct-group/kvm
|
||||
selinux? ( sec-policy/selinux-qemu )"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${PN}-2.11.1-capstone_include_path.patch
|
||||
"${FILESDIR}"/${PN}-5.2.0-disable-keymap.patch
|
||||
"${FILESDIR}"/${PN}-6.0.0-make.patch
|
||||
"${FILESDIR}"/${PN}-6.1.0-strings.patch
|
||||
)
|
||||
|
||||
QA_PREBUILT="
|
||||
usr/share/qemu/hppa-firmware.img
|
||||
usr/share/qemu/openbios-ppc
|
||||
usr/share/qemu/openbios-sparc64
|
||||
usr/share/qemu/openbios-sparc32
|
||||
usr/share/qemu/opensbi-riscv64-generic-fw_dynamic.elf
|
||||
usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.elf
|
||||
usr/share/qemu/palcode-clipper
|
||||
usr/share/qemu/s390-ccw.img
|
||||
usr/share/qemu/s390-netboot.img
|
||||
usr/share/qemu/u-boot.e500
|
||||
"
|
||||
|
||||
QA_WX_LOAD="usr/bin/qemu-i386
|
||||
usr/bin/qemu-x86_64
|
||||
usr/bin/qemu-alpha
|
||||
usr/bin/qemu-arm
|
||||
usr/bin/qemu-cris
|
||||
usr/bin/qemu-m68k
|
||||
usr/bin/qemu-microblaze
|
||||
usr/bin/qemu-microblazeel
|
||||
usr/bin/qemu-mips
|
||||
usr/bin/qemu-mipsel
|
||||
usr/bin/qemu-or1k
|
||||
usr/bin/qemu-ppc
|
||||
usr/bin/qemu-ppc64
|
||||
usr/bin/qemu-ppc64abi32
|
||||
usr/bin/qemu-sh4
|
||||
usr/bin/qemu-sh4eb
|
||||
usr/bin/qemu-sparc
|
||||
usr/bin/qemu-sparc64
|
||||
usr/bin/qemu-armeb
|
||||
usr/bin/qemu-sparc32plus
|
||||
usr/bin/qemu-s390x
|
||||
usr/bin/qemu-unicore32
|
||||
"
|
||||
|
||||
DOC_CONTENTS="If you don't have kvm compiled into the kernel, make sure you have the
|
||||
kernel module loaded before running kvm. The easiest way to ensure that the
|
||||
kernel module is loaded is to load it on boot.
|
||||
For AMD CPUs the module is called 'kvm-amd'.
|
||||
For Intel CPUs the module is called 'kvm-intel'.
|
||||
Please review /etc/conf.d/modules for how to load these.
|
||||
|
||||
Make sure your user is in the 'kvm' group. Just run
|
||||
$ gpasswd -a <USER> kvm
|
||||
then have <USER> re-login.
|
||||
|
||||
For brand new installs, the default permissions on /dev/kvm might not let
|
||||
you access it. You can tell udev to reset ownership/perms:
|
||||
$ udevadm trigger -c add /dev/kvm
|
||||
|
||||
If you want to register binfmt handlers for qemu user targets:
|
||||
For openrc:
|
||||
# rc-update add qemu-binfmt
|
||||
For systemd:
|
||||
# ln -s /usr/share/qemu/binfmt.d/qemu.conf /etc/binfmt.d/qemu.conf"
|
||||
|
||||
pkg_pretend() {
|
||||
if use kernel_linux && kernel_is lt 2 6 25; then
|
||||
eerror "This version of KVM requires a host kernel of 2.6.25 or higher."
|
||||
elif use kernel_linux; then
|
||||
if ! linux_config_exists; then
|
||||
eerror "Unable to check your kernel for KVM support"
|
||||
else
|
||||
CONFIG_CHECK="~KVM ~TUN ~BRIDGE"
|
||||
ERROR_KVM="You must enable KVM in your kernel to continue"
|
||||
ERROR_KVM_AMD="If you have an AMD CPU, you must enable KVM_AMD in"
|
||||
ERROR_KVM_AMD+=" your kernel configuration."
|
||||
ERROR_KVM_INTEL="If you have an Intel CPU, you must enable"
|
||||
ERROR_KVM_INTEL+=" KVM_INTEL in your kernel configuration."
|
||||
ERROR_TUN="You will need the Universal TUN/TAP driver compiled"
|
||||
ERROR_TUN+=" into your kernel or loaded as a module to use the"
|
||||
ERROR_TUN+=" virtual network device if using -net tap."
|
||||
ERROR_BRIDGE="You will also need support for 802.1d"
|
||||
ERROR_BRIDGE+=" Ethernet Bridging for some network configurations."
|
||||
use vhost-net && CONFIG_CHECK+=" ~VHOST_NET"
|
||||
ERROR_VHOST_NET="You must enable VHOST_NET to have vhost-net"
|
||||
ERROR_VHOST_NET+=" support"
|
||||
|
||||
if use amd64 || use x86 || use amd64-linux || use x86-linux; then
|
||||
if grep -q AuthenticAMD /proc/cpuinfo; then
|
||||
CONFIG_CHECK+=" ~KVM_AMD"
|
||||
elif grep -q GenuineIntel /proc/cpuinfo; then
|
||||
CONFIG_CHECK+=" ~KVM_INTEL"
|
||||
fi
|
||||
fi
|
||||
|
||||
use python && CONFIG_CHECK+=" ~DEBUG_FS"
|
||||
ERROR_DEBUG_FS="debugFS support required for kvm_stat"
|
||||
|
||||
# Now do the actual checks setup above
|
||||
check_extra_config
|
||||
fi
|
||||
fi
|
||||
|
||||
if grep -qs '/usr/bin/qemu-kvm' "${EROOT}"/etc/libvirt/qemu/*.xml; then
|
||||
eerror "The kvm/qemu-kvm wrappers no longer exist, but your libvirt"
|
||||
eerror "instances are still pointing to it. Please update your"
|
||||
eerror "configs in /etc/libvirt/qemu/ to use the -enable-kvm flag"
|
||||
eerror "and the right system binary (e.g. qemu-system-x86_64)."
|
||||
die "update your virt configs to not use qemu-kvm"
|
||||
fi
|
||||
}
|
||||
|
||||
# Sanity check to make sure target lists are kept up-to-date.
|
||||
check_targets() {
|
||||
local var=$1 mak=$2
|
||||
local detected sorted
|
||||
|
||||
pushd "${S}"/configs/targets/ >/dev/null || die
|
||||
|
||||
# Force C locale until glibc is updated. #564936
|
||||
detected=$(echo $(printf '%s\n' *-${mak}.mak | sed "s:-${mak}.mak::" | LC_COLLATE=C sort -u))
|
||||
sorted=$(echo $(printf '%s\n' ${!var} | LC_COLLATE=C sort -u))
|
||||
if [[ ${sorted} != "${detected}" ]] ; then
|
||||
eerror "The ebuild needs to be kept in sync."
|
||||
eerror "${var}: ${sorted}"
|
||||
eerror "$(printf '%-*s' ${#var} configure): ${detected}"
|
||||
die "sync ${var} to the list of targets"
|
||||
fi
|
||||
|
||||
popd >/dev/null
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
check_targets IUSE_SOFTMMU_TARGETS softmmu
|
||||
check_targets IUSE_USER_TARGETS linux-user
|
||||
|
||||
default
|
||||
|
||||
# Use correct toolchain to fix cross-compiling
|
||||
tc-export AR AS LD NM OBJCOPY PKG_CONFIG RANLIB STRINGS
|
||||
export WINDRES=${CHOST}-windres
|
||||
|
||||
# Verbose builds
|
||||
MAKEOPTS+=" V=1"
|
||||
|
||||
# Remove bundled copy of libfdt
|
||||
rm -r dtc || die
|
||||
}
|
||||
|
||||
##
|
||||
# configures qemu based on the build directory and the build type
|
||||
# we are using.
|
||||
#
|
||||
qemu_src_configure() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
local buildtype=$1
|
||||
local builddir="${S}/${buildtype}-build"
|
||||
|
||||
mkdir "${builddir}"
|
||||
|
||||
local conf_opts=(
|
||||
--prefix=/usr
|
||||
--sysconfdir=/etc
|
||||
--bindir=/usr/bin
|
||||
--libdir=/usr/$(get_libdir)
|
||||
--datadir=/usr/share
|
||||
--docdir=/usr/share/doc/${PF}/html
|
||||
--mandir=/usr/share/man
|
||||
--localstatedir=/var
|
||||
--disable-bsd-user
|
||||
--disable-containers # bug #732972
|
||||
--disable-guest-agent
|
||||
--disable-strip
|
||||
|
||||
# bug #746752: TCG interpreter has a few limitations:
|
||||
# - it does not support FPU
|
||||
# - it's generally slower on non-self-modifying code
|
||||
# It's advantage is support for host architectures
|
||||
# where native codegeneration is not implemented.
|
||||
# Gentoo has qemu keyworded only on targets with
|
||||
# native code generation available. Avoid the interpreter.
|
||||
--disable-tcg-interpreter
|
||||
|
||||
--disable-werror
|
||||
# We support gnutls/nettle for crypto operations. It is possible
|
||||
# to use gcrypt when gnutls/nettle are disabled (but not when they
|
||||
# are enabled), but it's not really worth the hassle. Disable it
|
||||
# all the time to avoid automatically detecting it. #568856
|
||||
--disable-gcrypt
|
||||
--python="${PYTHON}"
|
||||
--cc="$(tc-getCC)"
|
||||
--cxx="$(tc-getCXX)"
|
||||
--host-cc="$(tc-getBUILD_CC)"
|
||||
$(use_enable debug debug-info)
|
||||
$(use_enable debug debug-tcg)
|
||||
$(use_enable doc docs)
|
||||
$(use_enable nls gettext)
|
||||
$(use_enable plugins)
|
||||
$(use_enable xattr attr)
|
||||
)
|
||||
|
||||
# Disable options not used by user targets. This simplifies building
|
||||
# static user targets (USE=static-user) considerably.
|
||||
conf_notuser() {
|
||||
if [[ ${buildtype} == "user" ]] ; then
|
||||
echo "--disable-${2:-$1}"
|
||||
else
|
||||
use_enable "$@"
|
||||
fi
|
||||
}
|
||||
# Enable option only for softmmu build, but not 'user' or 'tools'
|
||||
conf_softmmu() {
|
||||
if [[ ${buildtype} == "softmmu" ]] ; then
|
||||
use_enable "$@"
|
||||
else
|
||||
echo "--disable-${2:-$1}"
|
||||
fi
|
||||
}
|
||||
# Enable option only for tools build, but not 'user' or 'softmmu'
|
||||
conf_tools() {
|
||||
if [[ ${buildtype} == "tools" ]] ; then
|
||||
use_enable "$@"
|
||||
else
|
||||
echo "--disable-${2:-$1}"
|
||||
fi
|
||||
}
|
||||
conf_opts+=(
|
||||
$(conf_notuser accessibility brlapi)
|
||||
$(conf_notuser aio linux-aio)
|
||||
$(conf_notuser bzip2)
|
||||
$(conf_notuser capstone)
|
||||
$(conf_notuser caps cap-ng)
|
||||
$(conf_notuser curl)
|
||||
$(conf_notuser fdt)
|
||||
$(conf_notuser fuse)
|
||||
$(conf_notuser glusterfs)
|
||||
$(conf_notuser gnutls)
|
||||
$(conf_notuser gnutls nettle)
|
||||
$(conf_notuser gtk)
|
||||
$(conf_notuser infiniband rdma)
|
||||
$(conf_notuser iscsi libiscsi)
|
||||
$(conf_notuser io-uring linux-io-uring)
|
||||
$(conf_notuser jemalloc jemalloc)
|
||||
$(conf_notuser jpeg vnc-jpeg)
|
||||
$(conf_notuser kernel_linux kvm)
|
||||
$(conf_notuser lzo)
|
||||
$(conf_notuser multipath mpath)
|
||||
$(conf_notuser ncurses curses)
|
||||
$(conf_notuser nfs libnfs)
|
||||
$(conf_notuser numa)
|
||||
$(conf_notuser opengl)
|
||||
$(conf_notuser png vnc-png)
|
||||
$(conf_notuser rbd)
|
||||
$(conf_notuser sasl vnc-sasl)
|
||||
$(conf_notuser sdl)
|
||||
$(conf_softmmu sdl-image)
|
||||
$(conf_notuser seccomp)
|
||||
$(conf_notuser slirp slirp system)
|
||||
$(conf_notuser smartcard)
|
||||
$(conf_notuser snappy)
|
||||
$(conf_notuser spice)
|
||||
$(conf_notuser ssh libssh)
|
||||
$(conf_notuser udev libudev)
|
||||
$(conf_notuser usb libusb)
|
||||
$(conf_notuser usbredir usb-redir)
|
||||
$(conf_notuser vde)
|
||||
$(conf_notuser vhost-net)
|
||||
$(conf_notuser vhost-user-fs)
|
||||
$(conf_tools vhost-user-fs virtiofsd)
|
||||
$(conf_notuser virgl virglrenderer)
|
||||
$(conf_softmmu virtfs)
|
||||
$(conf_notuser vnc)
|
||||
$(conf_notuser vte)
|
||||
$(conf_notuser xen)
|
||||
$(conf_notuser xen xen-pci-passthrough)
|
||||
$(conf_notuser xfs xfsctl)
|
||||
# use prebuilt keymaps, bug #759604
|
||||
--disable-xkbcommon
|
||||
$(conf_notuser zstd)
|
||||
)
|
||||
|
||||
if [[ ${buildtype} == "user" ]] ; then
|
||||
conf_opts+=( --disable-libxml2 )
|
||||
else
|
||||
conf_opts+=( --enable-libxml2 )
|
||||
fi
|
||||
|
||||
if [[ ! ${buildtype} == "user" ]] ; then
|
||||
# audio options
|
||||
local audio_opts=(
|
||||
# Note: backend order matters here: #716202
|
||||
# We iterate from higher-level to lower level.
|
||||
$(usex pulseaudio pa "")
|
||||
$(usev jack)
|
||||
$(usev sdl)
|
||||
$(usev alsa)
|
||||
$(usev oss)
|
||||
)
|
||||
conf_opts+=(
|
||||
--audio-drv-list=$(printf "%s," "${audio_opts[@]}")
|
||||
)
|
||||
fi
|
||||
|
||||
case ${buildtype} in
|
||||
user)
|
||||
conf_opts+=(
|
||||
--enable-linux-user
|
||||
--disable-system
|
||||
--disable-blobs
|
||||
--disable-tools
|
||||
)
|
||||
local static_flag="static-user"
|
||||
;;
|
||||
softmmu)
|
||||
conf_opts+=(
|
||||
--disable-linux-user
|
||||
--enable-system
|
||||
--disable-tools
|
||||
)
|
||||
local static_flag="static"
|
||||
;;
|
||||
tools)
|
||||
conf_opts+=(
|
||||
--disable-linux-user
|
||||
--disable-system
|
||||
--disable-blobs
|
||||
--enable-tools
|
||||
)
|
||||
local static_flag="static"
|
||||
;;
|
||||
esac
|
||||
|
||||
local targets="${buildtype}_targets"
|
||||
[[ -n ${targets} ]] && conf_opts+=( --target-list="${!targets}" )
|
||||
|
||||
# Add support for SystemTAP
|
||||
use systemtap && conf_opts+=( --enable-trace-backend=dtrace )
|
||||
|
||||
# We always want to attempt to build with PIE support as it results
|
||||
# in a more secure binary. But it doesn't work with static or if
|
||||
# the current GCC doesn't have PIE support.
|
||||
if use ${static_flag}; then
|
||||
conf_opts+=( --static --disable-pie )
|
||||
else
|
||||
tc-enables-pie && conf_opts+=( --enable-pie )
|
||||
fi
|
||||
|
||||
# Meson will not use a cross-file unless cross_prefix is set.
|
||||
tc-is-cross-compiler && conf_opts+=( --cross-prefix="${CHOST}-" )
|
||||
|
||||
# Plumb through equivalent of EXTRA_ECONF to allow experiments
|
||||
# like bug #747928.
|
||||
conf_opts+=( ${EXTRA_CONF_QEMU} )
|
||||
|
||||
echo "../configure ${conf_opts[*]}"
|
||||
cd "${builddir}"
|
||||
../configure "${conf_opts[@]}" || die "configure failed"
|
||||
|
||||
# FreeBSD's kernel does not support QEMU assigning/grabbing
|
||||
# host USB devices yet
|
||||
use kernel_FreeBSD && \
|
||||
sed -i -E -e "s|^(HOST_USB=)bsd|\1stub|" "${S}"/config-host.mak
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local target
|
||||
|
||||
python_setup
|
||||
|
||||
softmmu_targets= softmmu_bins=()
|
||||
user_targets= user_bins=()
|
||||
|
||||
for target in ${IUSE_SOFTMMU_TARGETS} ; do
|
||||
if use "qemu_softmmu_targets_${target}"; then
|
||||
softmmu_targets+=",${target}-softmmu"
|
||||
softmmu_bins+=( "qemu-system-${target}" )
|
||||
fi
|
||||
done
|
||||
|
||||
for target in ${IUSE_USER_TARGETS} ; do
|
||||
if use "qemu_user_targets_${target}"; then
|
||||
user_targets+=",${target}-linux-user"
|
||||
user_bins+=( "qemu-${target}" )
|
||||
fi
|
||||
done
|
||||
|
||||
softmmu_targets=${softmmu_targets#,}
|
||||
user_targets=${user_targets#,}
|
||||
|
||||
[[ -n ${softmmu_targets} ]] && qemu_src_configure "softmmu"
|
||||
[[ -n ${user_targets} ]] && qemu_src_configure "user"
|
||||
qemu_src_configure "tools"
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
if [[ -n ${user_targets} ]]; then
|
||||
cd "${S}/user-build"
|
||||
default
|
||||
fi
|
||||
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
cd "${S}/softmmu-build"
|
||||
default
|
||||
fi
|
||||
|
||||
cd "${S}/tools-build"
|
||||
default
|
||||
}
|
||||
|
||||
src_test() {
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
cd "${S}/softmmu-build"
|
||||
pax-mark m */qemu-system-* #515550
|
||||
emake check
|
||||
fi
|
||||
}
|
||||
|
||||
qemu_python_install() {
|
||||
python_domodule "${S}/python/qemu"
|
||||
|
||||
python_doscript "${S}/scripts/kvm/vmxcap"
|
||||
python_doscript "${S}/scripts/qmp/qmp-shell"
|
||||
python_doscript "${S}/scripts/qmp/qemu-ga-client"
|
||||
}
|
||||
|
||||
# Generate binfmt support files.
|
||||
# - /etc/init.d/qemu-binfmt script which registers the user handlers (openrc)
|
||||
# - /usr/share/qemu/binfmt.d/qemu.conf (for use with systemd-binfmt)
|
||||
generate_initd() {
|
||||
local out="${T}/qemu-binfmt"
|
||||
local out_systemd="${T}/qemu.conf"
|
||||
local d="${T}/binfmt.d"
|
||||
|
||||
einfo "Generating qemu binfmt scripts and configuration files"
|
||||
|
||||
# Generate the debian fragments first.
|
||||
mkdir -p "${d}"
|
||||
"${S}"/scripts/qemu-binfmt-conf.sh \
|
||||
--debian \
|
||||
--exportdir "${d}" \
|
||||
--qemu-path "${EPREFIX}/usr/bin" \
|
||||
|| die
|
||||
# Then turn the fragments into a shell script we can source.
|
||||
sed -E -i \
|
||||
-e 's:^([^ ]+) (.*)$:\1="\2":' \
|
||||
"${d}"/* || die
|
||||
|
||||
# Generate the init.d script by assembling the fragments from above.
|
||||
local f qcpu package interpreter magic mask
|
||||
cat "${FILESDIR}"/qemu-binfmt.initd.head >"${out}" || die
|
||||
for f in "${d}"/qemu-* ; do
|
||||
source "${f}"
|
||||
|
||||
# Normalize the cpu logic like we do in the init.d for the native cpu.
|
||||
qcpu=${package#qemu-}
|
||||
case ${qcpu} in
|
||||
arm*) qcpu="arm";;
|
||||
mips*) qcpu="mips";;
|
||||
ppc*) qcpu="ppc";;
|
||||
s390*) qcpu="s390";;
|
||||
sh*) qcpu="sh";;
|
||||
sparc*) qcpu="sparc";;
|
||||
esac
|
||||
|
||||
# we use 'printf' here to be portable across 'sh'
|
||||
# implementations: #679168
|
||||
cat <<EOF >>"${out}"
|
||||
if [ "\${cpu}" != "${qcpu}" -a -x "${interpreter}" ] ; then
|
||||
printf '%s\n' ':${package}:M::${magic}:${mask}:${interpreter}:'"\${QEMU_BINFMT_FLAGS}" >/proc/sys/fs/binfmt_misc/register
|
||||
fi
|
||||
EOF
|
||||
|
||||
echo ":${package}:M::${magic}:${mask}:${interpreter}:OC" >>"${out_systemd}"
|
||||
|
||||
done
|
||||
cat "${FILESDIR}"/qemu-binfmt.initd.tail >>"${out}" || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
if [[ -n ${user_targets} ]]; then
|
||||
cd "${S}/user-build"
|
||||
emake DESTDIR="${ED}" install
|
||||
|
||||
# Install binfmt handler init script for user targets.
|
||||
generate_initd
|
||||
doinitd "${T}/qemu-binfmt"
|
||||
|
||||
# Install binfmt/qemu.conf.
|
||||
insinto "/usr/share/qemu/binfmt.d"
|
||||
doins "${T}/qemu.conf"
|
||||
fi
|
||||
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
cd "${S}/softmmu-build"
|
||||
emake DESTDIR="${ED}" install
|
||||
|
||||
# This might not exist if the test failed. #512010
|
||||
[[ -e check-report.html ]] && dodoc check-report.html
|
||||
|
||||
if use kernel_linux; then
|
||||
udev_newrules "${FILESDIR}"/65-kvm.rules-r2 65-kvm.rules
|
||||
fi
|
||||
|
||||
if use python; then
|
||||
python_foreach_impl qemu_python_install
|
||||
fi
|
||||
fi
|
||||
|
||||
cd "${S}/tools-build"
|
||||
emake DESTDIR="${ED}" install
|
||||
|
||||
# Disable mprotect on the qemu binaries as they use JITs to be fast #459348
|
||||
pushd "${ED}"/usr/bin >/dev/null
|
||||
pax-mark mr "${softmmu_bins[@]}" "${user_bins[@]}" # bug 575594
|
||||
popd >/dev/null
|
||||
|
||||
# Install config file example for qemu-bridge-helper
|
||||
insinto "/etc/qemu"
|
||||
doins "${FILESDIR}/bridge.conf"
|
||||
|
||||
cd "${S}"
|
||||
dodoc MAINTAINERS docs/specs/pci-ids.txt
|
||||
newdoc pc-bios/README README.pc-bios
|
||||
|
||||
# Disallow stripping of prebuilt firmware files.
|
||||
dostrip -x ${QA_PREBUILT}
|
||||
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
# Remove SeaBIOS since we're using the SeaBIOS packaged one
|
||||
rm "${ED}/usr/share/qemu/bios.bin"
|
||||
rm "${ED}/usr/share/qemu/bios-256k.bin"
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
||||
dosym ../seabios/bios.bin /usr/share/qemu/bios.bin
|
||||
dosym ../seabios/bios-256k.bin /usr/share/qemu/bios-256k.bin
|
||||
fi
|
||||
|
||||
# Remove vgabios since we're using the seavgabios packaged one
|
||||
rm "${ED}/usr/share/qemu/vgabios.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-cirrus.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-qxl.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-stdvga.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-virtio.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-vmware.bin"
|
||||
# PPC/PPC64 loads vgabios-stdvga
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 || use qemu_softmmu_targets_ppc || use qemu_softmmu_targets_ppc64; then
|
||||
dosym ../seavgabios/vgabios-isavga.bin /usr/share/qemu/vgabios.bin
|
||||
dosym ../seavgabios/vgabios-cirrus.bin /usr/share/qemu/vgabios-cirrus.bin
|
||||
dosym ../seavgabios/vgabios-qxl.bin /usr/share/qemu/vgabios-qxl.bin
|
||||
dosym ../seavgabios/vgabios-stdvga.bin /usr/share/qemu/vgabios-stdvga.bin
|
||||
dosym ../seavgabios/vgabios-virtio.bin /usr/share/qemu/vgabios-virtio.bin
|
||||
dosym ../seavgabios/vgabios-vmware.bin /usr/share/qemu/vgabios-vmware.bin
|
||||
fi
|
||||
|
||||
# Remove sgabios since we're using the sgabios packaged one
|
||||
rm "${ED}/usr/share/qemu/sgabios.bin"
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
||||
dosym ../sgabios/sgabios.bin /usr/share/qemu/sgabios.bin
|
||||
fi
|
||||
|
||||
# Remove iPXE since we're using the iPXE packaged one
|
||||
rm "${ED}"/usr/share/qemu/pxe-*.rom
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
||||
dosym ../ipxe/8086100e.rom /usr/share/qemu/pxe-e1000.rom
|
||||
dosym ../ipxe/80861209.rom /usr/share/qemu/pxe-eepro100.rom
|
||||
dosym ../ipxe/10500940.rom /usr/share/qemu/pxe-ne2k_pci.rom
|
||||
dosym ../ipxe/10222000.rom /usr/share/qemu/pxe-pcnet.rom
|
||||
dosym ../ipxe/10ec8139.rom /usr/share/qemu/pxe-rtl8139.rom
|
||||
dosym ../ipxe/1af41000.rom /usr/share/qemu/pxe-virtio.rom
|
||||
fi
|
||||
fi
|
||||
|
||||
DISABLE_AUTOFORMATTING=true
|
||||
readme.gentoo_create_doc
|
||||
}
|
||||
|
||||
firmware_abi_change() {
|
||||
local pv
|
||||
for pv in ${REPLACING_VERSIONS}; do
|
||||
if ver_test ${pv} -lt ${FIRMWARE_ABI_VERSION}; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
if [[ -n ${softmmu_targets} ]] && use kernel_linux; then
|
||||
udev_reload
|
||||
fi
|
||||
|
||||
xdg_icon_cache_update
|
||||
|
||||
[[ -z ${EPREFIX} ]] && [[ -f ${EROOT}/usr/libexec/qemu-bridge-helper ]] && \
|
||||
fcaps cap_net_admin ${EROOT}/usr/libexec/qemu-bridge-helper
|
||||
|
||||
DISABLE_AUTOFORMATTING=true
|
||||
readme.gentoo_print_elog
|
||||
|
||||
if use pin-upstream-blobs && firmware_abi_change; then
|
||||
ewarn "This version of qemu pins new versions of firmware blobs:"
|
||||
ewarn " $(best_version sys-firmware/edk2-ovmf)"
|
||||
ewarn " $(best_version sys-firmware/ipxe)"
|
||||
ewarn " $(best_version sys-firmware/seabios)"
|
||||
ewarn " $(best_version sys-firmware/sgabios)"
|
||||
ewarn "This might break resume of hibernated guests (started with a different"
|
||||
ewarn "firmware version) and live migration to/from qemu versions with different"
|
||||
ewarn "firmware. Please (cold) restart all running guests. For functional"
|
||||
ewarn "guest migration ensure that all"
|
||||
ewarn "hosts run at least"
|
||||
ewarn " app-emulation/qemu-${FIRMWARE_ABI_VERSION}."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_info() {
|
||||
echo "Using:"
|
||||
echo " $(best_version app-emulation/spice-protocol)"
|
||||
echo " $(best_version sys-firmware/edk2-ovmf)"
|
||||
if has_version 'sys-firmware/edk2-ovmf[binary]'; then
|
||||
echo " USE=binary"
|
||||
else
|
||||
echo " USE=''"
|
||||
fi
|
||||
echo " $(best_version sys-firmware/ipxe)"
|
||||
echo " $(best_version sys-firmware/seabios)"
|
||||
if has_version 'sys-firmware/seabios[binary]'; then
|
||||
echo " USE=binary"
|
||||
else
|
||||
echo " USE=''"
|
||||
fi
|
||||
echo " $(best_version sys-firmware/sgabios)"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
xdg_icon_cache_update
|
||||
}
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,57 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
inherit fcaps toolchain-funcs
|
||||
|
||||
DESCRIPTION="Advanced PC speaker beeper"
|
||||
HOMEPAGE="https://github.com/spkr-beep"
|
||||
SRC_URI="https://github.com/spkr-beep/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~sparc ~x86"
|
||||
|
||||
# Tests require a speaker
|
||||
RESTRICT="test"
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
sed -i -e "s#-D_FORTIFY_SOURCE=2##g;" GNUmakefile || die
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
emake \
|
||||
COMPILERS=gcc \
|
||||
COMPILER_gcc="$(tc-getCC)" \
|
||||
LINKER_gcc="$(tc-getCC)" \
|
||||
CFLAGS_gcc="${CFLAGS}" \
|
||||
LDFLAGS="${LDFLAGS}" \
|
||||
CPPFLAGS_gcc="" \
|
||||
all
|
||||
}
|
||||
|
||||
src_test() {
|
||||
emake \
|
||||
COMPILERS=gcc \
|
||||
COMPILER_gcc="$(tc-getCC)" \
|
||||
LINKER_gcc="$(tc-getCC)" \
|
||||
CFLAGS_gcc="${CFLAGS}" \
|
||||
LDFLAGS="${LDFLAGS}" \
|
||||
check
|
||||
}
|
||||
|
||||
src_install() {
|
||||
dobin beep
|
||||
doman "${PN}.1"
|
||||
|
||||
fperms 0711 /usr/bin/beep
|
||||
|
||||
einstalldocs
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
fcaps cap_dac_override,cap_sys_tty_config "${EROOT}/usr/bin/beep"
|
||||
}
|
Binary file not shown.
@ -0,0 +1,108 @@
|
||||
Drop bogus dependencies, add implicit.
|
||||
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -11,25 +11,32 @@
|
||||
include(ECMInstallIcons)
|
||||
include(ECMAddTests)
|
||||
|
||||
-find_package(Qt5Widgets REQUIRED)
|
||||
+# Works without this explicit declaration but it ought to be here for correctness
|
||||
+find_package( SQLite3 REQUIRED )
|
||||
|
||||
-find_package( KF5 ${KF5_MIN_VERSION} REQUIRED
|
||||
- Auth
|
||||
- Config
|
||||
- ConfigWidgets
|
||||
- CoreAddons
|
||||
- I18n
|
||||
- IconThemes
|
||||
- ItemModels
|
||||
- ItemViews
|
||||
+# These are actually all deps of other things
|
||||
+find_package( Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
|
||||
+ Core
|
||||
+ Gui
|
||||
+ Widgets
|
||||
+)
|
||||
+
|
||||
+find_package( KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
|
||||
+ # These are all required directly and not provided by any dependencies. It "compiles and works" on the development system with just these
|
||||
KIO
|
||||
Notifications
|
||||
ThreadWeaver
|
||||
TextWidgets
|
||||
- Su
|
||||
- WidgetsAddons
|
||||
- WindowSystem
|
||||
- XmlGui
|
||||
+ # Required in link step
|
||||
+ XmlGui # MainWindow is XmlGuiWindow
|
||||
+ ItemViews # TreeWidgetSearchLine
|
||||
+ # These seem to be provided by deps, but should be direct deps too
|
||||
+ ConfigWidgets
|
||||
+ I18n # i18n(QStr)
|
||||
+ Config # Config dialogs
|
||||
+ Auth # KAuthExecuteJob &c.
|
||||
+ CoreAddons # AboutData? Job Process User?
|
||||
+ WidgetsAddons # Font(Chooser|Requester)? PageWidget? MessageBox ...
|
||||
)
|
||||
|
||||
#
|
||||
--- a/src/CMakeLists.txt
|
||||
+++ b/src/CMakeLists.txt
|
||||
@@ -102,25 +102,37 @@
|
||||
kde_enable_exceptions()
|
||||
|
||||
target_link_libraries( kuroo
|
||||
+ # These are all used directly and not provided by any other dependency. It "compiles and works" on the development system with just these
|
||||
+ KF5::KIOCore
|
||||
+ KF5::Notifications
|
||||
+ KF5::ThreadWeaver
|
||||
+ KF5::TextWidgets
|
||||
+ KF5::XmlGui
|
||||
+ sqlite3 # TODO: use some sort of ORM maybe find_package?
|
||||
+ KF5::ItemViews
|
||||
+ # Builds without these specified, but they should be necessary
|
||||
Qt5::Core
|
||||
+ Qt5::Gui
|
||||
+ Qt5::Widgets
|
||||
KF5::Auth
|
||||
+ KF5::AuthCore
|
||||
KF5::ConfigCore
|
||||
KF5::ConfigGui
|
||||
+ KF5::ConfigWidgets
|
||||
KF5::CoreAddons
|
||||
KF5::I18n
|
||||
- KF5::ItemViews
|
||||
- KF5::KIOCore
|
||||
- KF5::Notifications
|
||||
- KF5::ThreadWeaver
|
||||
- KF5::TextWidgets
|
||||
KF5::WidgetsAddons
|
||||
- KF5::WindowSystem
|
||||
- KF5::XmlGui
|
||||
- sqlite3
|
||||
)
|
||||
|
||||
add_executable( kuroo_helper auth/kuroohelper.cpp )
|
||||
-target_link_libraries( kuroo_helper Qt5::Core KF5::KIOCore KF5::Auth KF5::CoreAddons )
|
||||
+target_link_libraries( kuroo_helper
|
||||
+ # These are all used directly and not provided by any other dependency. It "compiles and works" on the development system with just these
|
||||
+ KF5::KIOCore
|
||||
+ KF5::Auth
|
||||
+ # Builds without explicit declaration, but these make sense
|
||||
+ Qt5::Core
|
||||
+ KF5::CoreAddons # KProcess
|
||||
+)
|
||||
install( TARGETS kuroo_helper DESTINATION ${KAUTH_HELPER_INSTALL_DIR} )
|
||||
kauth_install_helper_files( kuroo_helper org.gentoo.portage.kuroo root )
|
||||
kauth_install_actions( org.gentoo.portage.kuroo auth/org.gentoo.portage.kuroo.actions )
|
||||
@@ -139,6 +151,6 @@
|
||||
########### install ###############
|
||||
install( TARGETS kuroo ${INSTALL_TARGETS_DEFAULT_ARGS} )
|
||||
#install( FILES DESTINATION ${DATA_INSTALL_DIR}/autostart )
|
||||
-install( FILES config/kurooconfig.kcfg DESTINATION ${KCFG_INSTALL_DIR} )
|
||||
+install( FILES config/kurooconfig.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR} )
|
||||
install( FILES kurooui.rc DESTINATION ${KXMLGUI_INSTALL_DIR}/kuroo )
|
||||
install( FILES kuroo.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}/System )
|
Binary file not shown.
@ -1,2 +1 @@
|
||||
DIST libmwaw-0.3.19.tar.xz 1401720 BLAKE2B 93e63993dd73d52d1b071c44a5efa4ba2495a370a767cd80fbeb437a56224d333781cfdf32c3ca1c0a3794544da6cdf8c967badf98b6858796fbc8f2ea7878c1 SHA512 a5b74f417366f7e8a8303948e678d54caf9c45e0b51694d39593926b2f2fbbaa5dfea5dee8a6b4a656e5ca5bd880f41a76e7b869f55230690740b7ab75a28f1f
|
||||
DIST libmwaw-0.3.20.tar.xz 1425812 BLAKE2B a708ce4a28a0d5a5a5ee9d178c67119189add0180e61d67af6821c509d95b9f8bfb60eeb1afcdf8e2da5bed26053108b12db57db98912d97dc7e0ef0f7121f18 SHA512 d6cd28629b6482dd61e070036e94568ecc44d9064dddd9c699c7362caa8ef36652ce84cf0f199813854636f2e39ab19d47f4e148990822791b88cd3f17f68b3b
|
||||
|
@ -1,52 +0,0 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
if [[ ${PV} = 9999 ]]; then
|
||||
EGIT_REPO_URI="https://git.code.sf.net/p/libmwaw/libmwaw"
|
||||
inherit autotools git-r3
|
||||
else
|
||||
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.xz"
|
||||
KEYWORDS="amd64 ~arm arm64 ~ppc64 x86"
|
||||
fi
|
||||
|
||||
DESCRIPTION="Library parsing many pre-OSX MAC text formats"
|
||||
HOMEPAGE="https://sourceforge.net/p/libmwaw/wiki/Home/"
|
||||
|
||||
LICENSE="LGPL-2.1"
|
||||
SLOT="0"
|
||||
IUSE="doc tools"
|
||||
|
||||
BDEPEND="
|
||||
sys-devel/libtool
|
||||
virtual/pkgconfig
|
||||
doc? ( app-doc/doxygen )
|
||||
"
|
||||
DEPEND="
|
||||
dev-libs/librevenge
|
||||
sys-libs/zlib
|
||||
"
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
[[ ${PV} == 9999 ]] && eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# zip is hard enabled as the zlib is dep on the rdeps anyway
|
||||
local myeconfargs=(
|
||||
--enable-zip
|
||||
--disable-static
|
||||
--disable-werror
|
||||
$(use_with doc docs)
|
||||
$(use_enable tools)
|
||||
)
|
||||
econf "${myeconfargs[@]}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
default
|
||||
find "${D}" -name '*.la' -type f -delete || die
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,995 +0,0 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="6"
|
||||
MY_EXTRAS_VER="20190822-1908Z"
|
||||
|
||||
CMAKE_MAKEFILE_GENERATOR=emake
|
||||
|
||||
# Keeping eutils in EAPI=6 for emktemp in pkg_config
|
||||
|
||||
inherit cmake-utils eutils flag-o-matic linux-info \
|
||||
prefix toolchain-funcs multilib-minimal
|
||||
|
||||
SRC_URI="https://cdn.mysql.com/Downloads/MySQL-5.7/${PN}-boost-${PV}.tar.gz
|
||||
https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-${PV}.tar.gz
|
||||
http://downloads.mysql.com/archives/MySQL-5.7/${PN}-boost-${PV}.tar.gz"
|
||||
|
||||
# Gentoo patches to MySQL
|
||||
if [[ "${MY_EXTRAS_VER}" != "live" && "${MY_EXTRAS_VER}" != "none" ]] ; then
|
||||
SRC_URI="${SRC_URI}
|
||||
mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
|
||||
https://gitweb.gentoo.org/proj/mysql-extras.git/snapshot/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
|
||||
fi
|
||||
|
||||
HOMEPAGE="https://www.mysql.com/"
|
||||
DESCRIPTION="A fast, multi-threaded, multi-user SQL database server"
|
||||
LICENSE="GPL-2"
|
||||
SLOT="5.7/18"
|
||||
IUSE="cjk client-libs cracklib debug experimental jemalloc latin1 numa +perl profiling
|
||||
selinux +server static static-libs systemtap tcmalloc test yassl"
|
||||
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
REQUIRED_USE="?? ( tcmalloc jemalloc ) static? ( yassl )"
|
||||
|
||||
KEYWORDS="amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris ~x86-solaris"
|
||||
|
||||
# Shorten the path because the socket path length must be shorter than 107 chars
|
||||
# and we will run a mysql server during test phase
|
||||
S="${WORKDIR}/mysql"
|
||||
|
||||
if [[ "${MY_EXTRAS_VER}" == "live" ]] ; then
|
||||
inherit git-r3
|
||||
EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/mysql-extras.git"
|
||||
EGIT_CHECKOUT_DIR="${WORKDIR}/mysql-extras"
|
||||
EGIT_CLONE_TYPE=shallow
|
||||
MY_PATCH_DIR="${WORKDIR}/mysql-extras"
|
||||
else
|
||||
MY_PATCH_DIR="${WORKDIR}/mysql-extras-${MY_EXTRAS_VER}"
|
||||
fi
|
||||
|
||||
PATCHES=(
|
||||
"${MY_PATCH_DIR}"/20001_all_fix-minimal-build-cmake-mysql-5.7.23.patch
|
||||
"${MY_PATCH_DIR}"/20007_all_cmake-debug-werror-5.7.patch
|
||||
"${MY_PATCH_DIR}"/20009_all_mysql_myodbc_symbol_fix-5.7.10.patch
|
||||
"${MY_PATCH_DIR}"/20018_all_mysql-5.7.26-without-clientlibs-tools.patch
|
||||
"${MY_PATCH_DIR}"/20018_all_mysql-5.7.23-add-missing-gcc-8-fix.patch
|
||||
"${MY_PATCH_DIR}"/20018_all_mysql-5.7.23-fix-grant_user_lock-a-root.patch
|
||||
"${MY_PATCH_DIR}"/20018_all_mysql-5.7.23-round-off-test-values-for-same-output-on-all-architectures.patch
|
||||
"${MY_PATCH_DIR}"/20018_all_mysql-5.7.23-fix-mips-ASM.patch
|
||||
"${MY_PATCH_DIR}"/20018_all_mysql-5.7.25-fix-build-without-server.patch
|
||||
)
|
||||
|
||||
# Be warned, *DEPEND are version-dependant
|
||||
# These are used for both runtime and compiletime
|
||||
# MULTILIB_USEDEP only set for libraries used by the client library
|
||||
COMMON_DEPEND="net-misc/curl:=
|
||||
>=sys-apps/sed-4
|
||||
>=sys-apps/texinfo-4.7-r1
|
||||
sys-libs/ncurses:0=
|
||||
client-libs? ( >=sys-libs/zlib-1.2.3:0=[${MULTILIB_USEDEP},static-libs?] )
|
||||
!client-libs? (
|
||||
dev-db/mysql-connector-c[${MULTILIB_USEDEP},static-libs?]
|
||||
>=sys-libs/zlib-1.2.3:0=
|
||||
)
|
||||
jemalloc? ( dev-libs/jemalloc:0= )
|
||||
kernel_linux? (
|
||||
dev-libs/libaio:0=
|
||||
sys-process/procps:0=
|
||||
)
|
||||
server? (
|
||||
>=app-arch/lz4-0_p131:=
|
||||
cjk? ( app-text/mecab:= )
|
||||
experimental? (
|
||||
dev-libs/libevent:=
|
||||
dev-libs/protobuf:=
|
||||
net-libs/libtirpc:=
|
||||
)
|
||||
numa? ( sys-process/numactl )
|
||||
)
|
||||
systemtap? ( >=dev-util/systemtap-1.3:0= )
|
||||
tcmalloc? ( dev-util/google-perftools:0= )
|
||||
!yassl? (
|
||||
client-libs? (
|
||||
>=dev-libs/openssl-1.0.0:0=[${MULTILIB_USEDEP},static-libs?]
|
||||
)
|
||||
!client-libs? (
|
||||
>=dev-libs/openssl-1.0.0:0=
|
||||
)
|
||||
)
|
||||
"
|
||||
DEPEND="${COMMON_DEPEND}
|
||||
|| ( >=sys-devel/gcc-3.4.6 >=sys-devel/gcc-apple-4.0 )
|
||||
dev-libs/protobuf
|
||||
virtual/yacc
|
||||
server? (
|
||||
dev-libs/libevent
|
||||
experimental? ( net-libs/rpcsvc-proto )
|
||||
)
|
||||
static? ( sys-libs/ncurses[static-libs] )
|
||||
test? (
|
||||
acct-group/mysql acct-user/mysql
|
||||
dev-perl/JSON
|
||||
)
|
||||
"
|
||||
RDEPEND="${COMMON_DEPEND}
|
||||
!dev-db/mariadb !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster
|
||||
!dev-db/mysql:0
|
||||
!dev-db/mysql:8.0
|
||||
client-libs? ( !dev-db/mariadb-connector-c[mysqlcompat] !dev-db/mysql-connector-c dev-libs/protobuf:= )
|
||||
selinux? ( sec-policy/selinux-mysql )
|
||||
server? (
|
||||
!prefix? (
|
||||
acct-group/mysql acct-user/mysql
|
||||
dev-db/mysql-init-scripts
|
||||
)
|
||||
)
|
||||
"
|
||||
# For other stuff to bring us in
|
||||
# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
|
||||
PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
|
||||
|
||||
mysql_init_vars() {
|
||||
MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"}
|
||||
MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
|
||||
MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
|
||||
MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
|
||||
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR=""
|
||||
if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
|
||||
MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
|
||||
| sed -ne '/datadir/s|^--datadir=||p' \
|
||||
| tail -n1`
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
|
||||
| sed -e 's/.*=\s*//' \
|
||||
| tail -n1`
|
||||
fi
|
||||
fi
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR="${MY_LOCALSTATEDIR}"
|
||||
einfo "Using default MY_DATADIR"
|
||||
fi
|
||||
elog "MySQL MY_DATADIR is ${MY_DATADIR}"
|
||||
|
||||
if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
|
||||
if [[ -e "${MY_DATADIR}" ]] ; then
|
||||
# If you get this and you're wondering about it, see bug #207636
|
||||
elog "MySQL datadir found in ${MY_DATADIR}"
|
||||
elog "A new one will not be created."
|
||||
PREVIOUS_DATADIR="yes"
|
||||
else
|
||||
PREVIOUS_DATADIR="no"
|
||||
fi
|
||||
export PREVIOUS_DATADIR
|
||||
fi
|
||||
else
|
||||
if [[ ${EBUILD_PHASE} == "config" ]] ; then
|
||||
local new_MY_DATADIR
|
||||
new_MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
|
||||
| sed -ne '/datadir/s|^--datadir=||p' \
|
||||
| tail -n1`
|
||||
|
||||
if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]] ; then
|
||||
ewarn "MySQL MY_DATADIR has changed"
|
||||
ewarn "from ${MY_DATADIR}"
|
||||
ewarn "to ${new_MY_DATADIR}"
|
||||
MY_DATADIR="${new_MY_DATADIR}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
export MY_SHAREDSTATEDIR MY_SYSCONFDIR
|
||||
export MY_LOCALSTATEDIR MY_LOGDIR
|
||||
export MY_DATADIR
|
||||
}
|
||||
|
||||
pkg_pretend() {
|
||||
if use numa ; then
|
||||
local CONFIG_CHECK="~NUMA"
|
||||
|
||||
local WARNING_NUMA="This package expects NUMA support in kernel which this system does not have at the moment;"
|
||||
WARNING_NUMA+=" Either expect runtime errors, enable NUMA support in kernel or rebuild the package without NUMA support"
|
||||
|
||||
check_extra_config
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
if [[ ${MERGE_TYPE} != binary ]] ; then
|
||||
local GCC_MAJOR_SET=$(gcc-major-version)
|
||||
local GCC_MINOR_SET=$(gcc-minor-version)
|
||||
# Bug 565584: InnoDB now requires atomic functions introduced with gcc-4.7 on
|
||||
# non x86{,_64} arches
|
||||
if ! use amd64 && ! use x86 && [[ ${GCC_MAJOR_SET} -lt 4 || \
|
||||
${GCC_MAJOR_SET} -eq 4 && ${GCC_MINOR_SET} -lt 7 ]] ; then
|
||||
eerror "${PN} needs to be built with gcc-4.7 or later."
|
||||
eerror "Please use gcc-config to switch to gcc-4.7 or later version."
|
||||
die
|
||||
fi
|
||||
fi
|
||||
|
||||
if has test ${FEATURES} && \
|
||||
use server && ! has userpriv ${FEATURES} ; then
|
||||
eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
# Here we need to see if the implementation switched client libraries
|
||||
# We check if this is a new instance of the package and a client library already exists
|
||||
local SHOW_ABI_MESSAGE libpath
|
||||
if use client-libs && [[ -z ${REPLACING_VERSIONS} && -e "${EROOT}usr/$(get_libdir)/libmysqlclient.so" ]] ; then
|
||||
libpath=$(readlink "${EROOT}usr/$(get_libdir)/libmysqlclient.so")
|
||||
elog "Due to ABI changes when switching between different client libraries,"
|
||||
elog "revdep-rebuild must find and rebuild all packages linking to libmysqlclient."
|
||||
elog "Please run: revdep-rebuild --library ${libpath}"
|
||||
ewarn "Failure to run revdep-rebuild may cause issues with other programs or libraries"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
# Make sure the vars are correctly initialized
|
||||
mysql_init_vars
|
||||
|
||||
# Create log directory securely if it does not exist
|
||||
[[ -d "${ROOT}${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
|
||||
|
||||
if use server ; then
|
||||
if [[ -z "${REPLACING_VERSIONS}" ]] ; then
|
||||
einfo
|
||||
elog "You might want to run:"
|
||||
elog "\"emerge --config =${CATEGORY}/${PF}\""
|
||||
elog "if this is a new install."
|
||||
elog
|
||||
elog "If you are switching server implentations, you should run the"
|
||||
elog "mysql_upgrade tool."
|
||||
einfo
|
||||
else
|
||||
einfo
|
||||
elog "If you are upgrading major versions, you should run the"
|
||||
elog "mysql_upgrade tool."
|
||||
einfo
|
||||
fi
|
||||
fi
|
||||
|
||||
# Note about configuration change
|
||||
einfo
|
||||
elog "This version of ${PN} reorganizes the configuration from a single my.cnf"
|
||||
elog "to several files in /etc/mysql/mysql.d."
|
||||
elog "Please backup any changes you made to /etc/mysql/my.cnf"
|
||||
elog "and add them as a new file under /etc/mysql/mysql.d with a .cnf extension."
|
||||
elog "You may have as many files as needed and they are read alphabetically."
|
||||
elog "Be sure the options have the appropriate section headers, i.e. [mysqld]."
|
||||
einfo
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
unpack ${A}
|
||||
# Grab the patches
|
||||
[[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git-r3_src_unpack
|
||||
|
||||
mv -f "${WORKDIR}/${P}" "${S}" || die
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
cmake-utils_src_prepare
|
||||
|
||||
if use jemalloc ; then
|
||||
echo "TARGET_LINK_LIBRARIES(mysqld jemalloc)" >> "${S}/sql/CMakeLists.txt" || die
|
||||
fi
|
||||
|
||||
if use tcmalloc ; then
|
||||
echo "TARGET_LINK_LIBRARIES(mysqld tcmalloc)" >> "${S}/sql/CMakeLists.txt" || die
|
||||
fi
|
||||
|
||||
# Remove the centos and rhel selinux policies to support mysqld_safe under SELinux
|
||||
if [[ -d "${S}/support-files/SELinux" ]] ; then
|
||||
echo > "${S}/support-files/SELinux/CMakeLists.txt" || die
|
||||
fi
|
||||
|
||||
# Remove bundled libs so we cannot accidentally use them
|
||||
# We keep extra/lz4 directory because we use extra/lz4/xxhash.c via sql/CMakeLists.txt:394
|
||||
rm -rv \
|
||||
"${S}"/extra/protobuf \
|
||||
"${S}"/extra/libevent \
|
||||
"${S}"/zlib \
|
||||
|| die
|
||||
|
||||
# Don't clash with dev-db/mysql-connector-c
|
||||
rm \
|
||||
man/my_print_defaults.1 \
|
||||
man/perror.1 \
|
||||
man/zlib_decompress.1 \
|
||||
|| die
|
||||
|
||||
sed -i 's~ADD_SUBDIRECTORY(storage/ndb)~~' CMakeLists.txt || die
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Bug #114895, bug #110149
|
||||
filter-flags "-O" "-O[01]"
|
||||
|
||||
append-cxxflags -felide-constructors
|
||||
|
||||
# bug #283926, with GCC4.4, this is required to get correct behavior.
|
||||
append-flags -fno-strict-aliasing
|
||||
|
||||
if use client-libs ; then
|
||||
multilib-minimal_src_configure
|
||||
else
|
||||
multilib_src_configure
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
if ! multilib_is_native_abi && ! use client-libs ; then
|
||||
return
|
||||
fi
|
||||
|
||||
CMAKE_BUILD_TYPE="RelWithDebInfo"
|
||||
|
||||
# debug hack wrt #497532
|
||||
mycmakeargs=(
|
||||
-DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
|
||||
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
|
||||
-DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql"
|
||||
-DSYSCONFDIR="${EPREFIX}/etc/mysql"
|
||||
-DINSTALL_BINDIR=bin
|
||||
-DINSTALL_DOCDIR=share/doc/${PF}
|
||||
-DINSTALL_DOCREADMEDIR=share/doc/${PF}
|
||||
-DINSTALL_INCLUDEDIR=include/mysql
|
||||
-DINSTALL_INFODIR=share/info
|
||||
-DINSTALL_LIBDIR=$(get_libdir)
|
||||
-DINSTALL_MANDIR=share/man
|
||||
-DINSTALL_MYSQLSHAREDIR=share/mysql
|
||||
-DINSTALL_PLUGINDIR=$(get_libdir)/mysql/plugin
|
||||
-DINSTALL_SCRIPTDIR=share/mysql/scripts
|
||||
-DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql"
|
||||
-DINSTALL_SBINDIR=sbin
|
||||
-DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mysql"
|
||||
-DCOMPILATION_COMMENT="Gentoo Linux ${PF}"
|
||||
-DWITH_UNIT_TESTS=$(usex test ON OFF)
|
||||
### TODO: make this system but issues with UTF-8 prevent it
|
||||
-DWITH_EDITLINE=bundled
|
||||
-DWITH_ZLIB=system
|
||||
-DWITH_LIBWRAP=0
|
||||
-DENABLED_LOCAL_INFILE=1
|
||||
-DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock"
|
||||
-DWITH_DEFAULT_COMPILER_OPTIONS=0
|
||||
-DWITH_DEFAULT_FEATURE_SET=0
|
||||
# The build forces this to be defined when cross-compiling. We pass it
|
||||
# all the time for simplicity and to make sure it is actually correct.
|
||||
-DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1)
|
||||
-DWITH_CURL=system
|
||||
-DWITH_BOOST="${S}/boost"
|
||||
)
|
||||
if use test ; then
|
||||
mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test )
|
||||
else
|
||||
mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' )
|
||||
fi
|
||||
|
||||
if ! use yassl ; then
|
||||
mycmakeargs+=( -DWITH_SSL=system )
|
||||
else
|
||||
mycmakeargs+=( -DWITH_SSL=bundled )
|
||||
fi
|
||||
|
||||
if ! use client-libs ; then
|
||||
mycmakeargs+=( -DWITHOUT_CLIENTLIBS=YES )
|
||||
fi
|
||||
|
||||
# bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION
|
||||
# systemtap only works on native ABI, bug 530132
|
||||
if multilib_is_native_abi ; then
|
||||
mycmakeargs+=(
|
||||
-DENABLE_DTRACE=$(usex systemtap)
|
||||
)
|
||||
else
|
||||
mycmakeargs+=(
|
||||
-DWITHOUT_TOOLS=1
|
||||
-DWITH_READLINE=1
|
||||
-DENABLE_DTRACE=0
|
||||
)
|
||||
fi
|
||||
|
||||
if multilib_is_native_abi && use server ; then
|
||||
mycmakeargs+=(
|
||||
-DWITH_LIBEVENT=system
|
||||
-DWITH_LZ4=system
|
||||
-DWITH_PROTOBUF=system
|
||||
-DWITH_MECAB=$(usex cjk system OFF)
|
||||
-DWITH_NUMA=$(usex numa ON OFF)
|
||||
-DWITH_RAPID=$(usex experimental ON OFF)
|
||||
)
|
||||
|
||||
if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]] ; then
|
||||
ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
|
||||
ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
|
||||
ewarn "You MUST file bugs without these variables set."
|
||||
|
||||
mycmakeargs+=(
|
||||
-DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
|
||||
-DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
|
||||
)
|
||||
elif ! use latin1 ; then
|
||||
mycmakeargs+=(
|
||||
-DDEFAULT_CHARSET=utf8
|
||||
-DDEFAULT_COLLATION=utf8_general_ci
|
||||
)
|
||||
else
|
||||
mycmakeargs+=(
|
||||
-DDEFAULT_CHARSET=latin1
|
||||
-DDEFAULT_COLLATION=latin1_swedish_ci
|
||||
)
|
||||
fi
|
||||
|
||||
mycmakeargs+=(
|
||||
-DEXTRA_CHARSETS=all
|
||||
-DDISABLE_SHARED=$(usex static YES NO)
|
||||
-DWITH_DEBUG=$(usex debug)
|
||||
-DWITH_EMBEDDED_SERVER=OFF
|
||||
)
|
||||
|
||||
if use profiling ; then
|
||||
# Setting to OFF doesn't work: Once set, profiling options will be added
|
||||
# to `mysqld --help` output via sql/sys_vars.cc causing
|
||||
# "main.mysqld--help-notwin" test to fail
|
||||
mycmakeargs+=( -DENABLED_PROFILING=ON )
|
||||
fi
|
||||
|
||||
if use static ; then
|
||||
mycmakeargs+=( -DWITH_PIC=1 )
|
||||
fi
|
||||
|
||||
# Storage engines
|
||||
mycmakeargs+=(
|
||||
-DWITH_EXAMPLE_STORAGE_ENGINE=0
|
||||
-DWITH_ARCHIVE_STORAGE_ENGINE=1
|
||||
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
|
||||
-DWITH_CSV_STORAGE_ENGINE=1
|
||||
-DWITH_FEDERATED_STORAGE_ENGINE=1
|
||||
-DWITH_HEAP_STORAGE_ENGINE=1
|
||||
-DWITH_INNOBASE_STORAGE_ENGINE=1
|
||||
-DWITH_INNODB_MEMCACHED=0
|
||||
-DWITH_MYISAMMRG_STORAGE_ENGINE=1
|
||||
-DWITH_MYISAM_STORAGE_ENGINE=1
|
||||
-DWITH_PARTITION_STORAGE_ENGINE=1
|
||||
)
|
||||
|
||||
else
|
||||
mycmakeargs+=(
|
||||
-DWITHOUT_SERVER=1
|
||||
-DWITH_EMBEDDED_SERVER=OFF
|
||||
-DEXTRA_CHARSETS=none
|
||||
)
|
||||
fi
|
||||
|
||||
cmake-utils_src_configure
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
if use client-libs ; then
|
||||
multilib-minimal_src_compile
|
||||
else
|
||||
multilib_src_compile
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
cmake-utils_src_compile
|
||||
}
|
||||
|
||||
# Official test instructions:
|
||||
# ulimit -n 16500 && \
|
||||
# USE='latin1 perl server' \
|
||||
# FEATURES='test userpriv -usersandbox' \
|
||||
# ebuild mysql-X.X.XX.ebuild \
|
||||
# digest clean package
|
||||
src_test() {
|
||||
_disable_test() {
|
||||
local rawtestname reason
|
||||
rawtestname="${1}" ; shift
|
||||
reason="${@}"
|
||||
ewarn "test '${rawtestname}' disabled: '${reason}'"
|
||||
echo ${rawtestname} : ${reason} >> "${T}/disabled.def"
|
||||
}
|
||||
|
||||
local TESTDIR="${BUILD_DIR}/mysql-test"
|
||||
local retstatus_unit
|
||||
local retstatus_tests
|
||||
|
||||
if ! use server ; then
|
||||
einfo "Skipping server tests due to minimal build."
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Bug #213475 - MySQL _will_ object strenously if your machine is named
|
||||
# localhost. Also causes weird failures.
|
||||
[[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
|
||||
|
||||
if [[ $UID -eq 0 ]] ; then
|
||||
die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
|
||||
fi
|
||||
has usersandbox $FEATURES && ewarn "Some tests may fail with FEATURES=usersandbox"
|
||||
|
||||
einfo ">>> Test phase [test]: ${CATEGORY}/${PF}"
|
||||
|
||||
# Run CTest (test-units)
|
||||
cmake-utils_src_test
|
||||
retstatus_unit=$?
|
||||
|
||||
# Ensure that parallel runs don't die
|
||||
export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
|
||||
# Enable parallel testing, auto will try to detect number of cores
|
||||
# You may set this by hand.
|
||||
# The default maximum is 8 unless MTR_MAX_PARALLEL is increased
|
||||
export MTR_PARALLEL="${MTR_PARALLEL:-auto}"
|
||||
|
||||
# create directories because mysqladmin might run out of order
|
||||
mkdir -p "${T}"/var-tests{,/log} || die
|
||||
|
||||
# Run mysql tests
|
||||
pushd "${TESTDIR}" &>/dev/null || die
|
||||
|
||||
touch "${T}/disabled.def"
|
||||
# These are failing in MySQL 5.7 for now and are believed to be
|
||||
# false positives:
|
||||
#
|
||||
local t
|
||||
|
||||
for t in auth_sec.keyring_udf ; do
|
||||
_disable_test "$t" "False positives in Gentoo"
|
||||
done
|
||||
|
||||
# Unstable tests
|
||||
# - main.xa_prepared_binlog_off: https://bugs.mysql.com/bug.php?id=83340
|
||||
# - rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch: https://bugs.mysql.com/bug.php?id=89223
|
||||
# - rpl.rpl_non_direct_stm_mixing_engines: MDEV-14489
|
||||
for t in \
|
||||
main.xa_prepared_binlog_off \
|
||||
rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch \
|
||||
rpl.rpl_non_direct_stm_mixing_engines \
|
||||
; do
|
||||
_disable_test "$t" "Unstable test"
|
||||
done
|
||||
|
||||
for t in \
|
||||
gis.geometry_class_attri_prop \
|
||||
gis.geometry_property_function_issimple \
|
||||
gis.gis_bugs_crashes \
|
||||
gis.spatial_op_testingfunc_mix \
|
||||
gis.spatial_analysis_functions_buffer \
|
||||
gis.spatial_analysis_functions_distance \
|
||||
gis.spatial_utility_function_distance_sphere \
|
||||
gis.spatial_utility_function_simplify \
|
||||
gis.spatial_analysis_functions_centroid \
|
||||
; do
|
||||
_disable_test "$t" "Known rounding error with latest AMD processors"
|
||||
done
|
||||
|
||||
if use numa && use kernel_linux ; then
|
||||
# bug 584880
|
||||
if ! linux_config_exists || ! linux_chkconfig_present NUMA ; then
|
||||
for t in sys_vars.innodb_numa_interleave_basic ; do
|
||||
_disable_test "$t" "Test $t requires system with NUMA support"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! use latin1 ; then
|
||||
# The following tests will fail if DEFAULT_CHARSET
|
||||
# isn't set to latin1:
|
||||
for t in \
|
||||
binlog.binlog_mysqlbinlog_filter \
|
||||
binlog.binlog_xa_prepared_disconnect \
|
||||
funcs_1.is_columns_mysql \
|
||||
funcs_1.is_tables_mysql \
|
||||
funcs_1.is_triggers \
|
||||
innodb.innodb_pagesize_max_recordsize \
|
||||
innodb.innodb-system-table-view \
|
||||
innodb.mysqldump_max_recordsize \
|
||||
main.mysql_client_test \
|
||||
main.mysqld--help-notwin \
|
||||
main.type_string \
|
||||
main.information_schema \
|
||||
perfschema.binlog_edge_mix \
|
||||
perfschema.binlog_edge_stmt \
|
||||
rpl.rpl_xa_survive_disconnect \
|
||||
rpl.rpl_xa_survive_disconnect_lsu_off \
|
||||
rpl.rpl_xa_survive_disconnect_table \
|
||||
; do
|
||||
_disable_test "$t" "Requires DEFAULT_CHARSET=latin1 but USE=-latin1 is set"
|
||||
done
|
||||
fi
|
||||
|
||||
if has_version '>=dev-libs/openssl-1.1.1' ; then
|
||||
# Tests are expecting <openssl-1.1.1 default cipher
|
||||
for t in \
|
||||
auth_sec.cert_verify \
|
||||
auth_sec.mysql_ssl_connection \
|
||||
auth_sec.openssl_cert_generation \
|
||||
auth_sec.ssl_auto_detect \
|
||||
auth_sec.ssl_mode \
|
||||
auth_sec.tls \
|
||||
binlog.binlog_grant_alter_user \
|
||||
encryption.innodb_onlinealter_encryption \
|
||||
main.grant_alter_user_qa \
|
||||
main.grant_user_lock_qa \
|
||||
main.mysql_ssl_default \
|
||||
main.openssl_1 \
|
||||
main.plugin_auth_sha256_tls \
|
||||
main.ssl \
|
||||
main.ssl_8k_key \
|
||||
main.ssl_bug75311 \
|
||||
main.ssl_ca \
|
||||
main.ssl_cipher \
|
||||
main.ssl_compress \
|
||||
main.ssl_crl \
|
||||
main.ssl_ecdh \
|
||||
main.ssl_verify_identity \
|
||||
x.connection_tls_version \
|
||||
x.connection_openssl \
|
||||
; do
|
||||
_disable_test "$t" "Requires <dev-libs/openssl-1.1.1"
|
||||
done
|
||||
fi
|
||||
|
||||
# Try to increase file limits to increase test coverage
|
||||
if ! ulimit -n 16500 1>/dev/null 2>&1 ; then
|
||||
# Upper limit comes from parts.partition_* tests
|
||||
ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager."
|
||||
|
||||
if ! ulimit -n 4162 1>/dev/null 2>&1 ; then
|
||||
# Medium limit comes from '[Warning] Buffered warning: Could not increase number of max_open_files to more than 3000 (request: 4162)'
|
||||
ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager."
|
||||
|
||||
if ! ulimit -n 3000 1>/dev/null 2>&1 ; then
|
||||
ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager."
|
||||
else
|
||||
einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)."
|
||||
fi
|
||||
else
|
||||
einfo "Will run test suite with open file limit set to 4162 (medium test coverage)."
|
||||
fi
|
||||
else
|
||||
einfo "Will run test suite with open file limit set to 16500 (best test coverage)."
|
||||
fi
|
||||
|
||||
# run mysql-test tests
|
||||
perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test=tokudb --skip-test-list="${T}/disabled.def"
|
||||
retstatus_tests=$?
|
||||
|
||||
popd &>/dev/null || die
|
||||
|
||||
# Cleanup is important for these testcases.
|
||||
pkill -9 -f "${S}/ndb" 2>/dev/null
|
||||
pkill -9 -f "${S}/sql" 2>/dev/null
|
||||
|
||||
local failures=""
|
||||
[[ $retstatus_unit -eq 0 ]] || failures="${failures} test-unit"
|
||||
[[ $retstatus_tests -eq 0 ]] || failures="${failures} tests"
|
||||
|
||||
[[ -z "$failures" ]] || die "Test failures: $failures"
|
||||
einfo "Tests successfully completed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local MULTILIB_WRAPPED_HEADERS
|
||||
local MULTILIB_CHOST_TOOLS
|
||||
if use client-libs ; then
|
||||
# headers with ABI specific data
|
||||
MULTILIB_WRAPPED_HEADERS=(
|
||||
/usr/include/mysql/server/my_config.h
|
||||
/usr/include/mysql/server/mysql_version.h )
|
||||
|
||||
# wrap the config scripts
|
||||
MULTILIB_CHOST_TOOLS=( /usr/bin/mysql_config )
|
||||
multilib-minimal_src_install
|
||||
else
|
||||
multilib_src_install
|
||||
multilib_src_install_all
|
||||
fi
|
||||
}
|
||||
|
||||
# Intentionally override eclass function
|
||||
multilib_src_install() {
|
||||
|
||||
cmake-utils_src_install
|
||||
|
||||
# Kill old libmysqclient_r symlinks if they exist. Time to fix what depends on them.
|
||||
find "${D}" -name 'libmysqlclient_r.*' -type l -delete || die
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
# Make sure the vars are correctly initialized
|
||||
mysql_init_vars
|
||||
|
||||
# Convenience links
|
||||
einfo "Making Convenience links for mysqlcheck multi-call binary"
|
||||
dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
|
||||
dosym "mysqlcheck" "/usr/bin/mysqlrepair"
|
||||
dosym "mysqlcheck" "/usr/bin/mysqloptimize"
|
||||
|
||||
# INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
|
||||
if [[ -d "${ED}/usr/data" ]] ; then
|
||||
rm -Rf "${ED}/usr/data" || die
|
||||
fi
|
||||
|
||||
# Unless they explicitly specific USE=test, then do not install the
|
||||
# testsuite. It DOES have a use to be installed, esp. when you want to do a
|
||||
# validation of your database configuration after tuning it.
|
||||
if ! use test ; then
|
||||
rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test"
|
||||
fi
|
||||
|
||||
# Configuration stuff
|
||||
einfo "Building default configuration ..."
|
||||
insinto "${MY_SYSCONFDIR#${EPREFIX}}"
|
||||
[[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf
|
||||
cp "${FILESDIR}/my.cnf-5.7" "${TMPDIR}/my.cnf" || die
|
||||
eprefixify "${TMPDIR}/my.cnf"
|
||||
doins "${TMPDIR}/my.cnf"
|
||||
insinto "${MY_SYSCONFDIR#${EPREFIX}}/mysql.d"
|
||||
cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die
|
||||
eprefixify "${TMPDIR}/50-distro-client.cnf"
|
||||
doins "${TMPDIR}/50-distro-client.cnf"
|
||||
|
||||
if use server ; then
|
||||
mycnf_src="my.cnf.distro-server"
|
||||
sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
|
||||
"${FILESDIR}/${mycnf_src}" \
|
||||
> "${TMPDIR}/my.cnf.ok" || die
|
||||
|
||||
if use prefix ; then
|
||||
sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \
|
||||
"${TMPDIR}/my.cnf.ok" || die
|
||||
fi
|
||||
|
||||
if use latin1 ; then
|
||||
sed -i \
|
||||
-e "/character-set/s|utf8|latin1|g" \
|
||||
"${TMPDIR}/my.cnf.ok" || die
|
||||
fi
|
||||
|
||||
eprefixify "${TMPDIR}/my.cnf.ok"
|
||||
|
||||
newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf
|
||||
fi
|
||||
|
||||
#Remove mytop if perl is not selected
|
||||
[[ -e "${ED}/usr/bin/mytop" ]] && ! use perl && rm -f "${ED}/usr/bin/mytop"
|
||||
}
|
||||
|
||||
pkg_config() {
|
||||
_getoptval() {
|
||||
local mypd="${EROOT%/}"/usr/bin/my_print_defaults
|
||||
local section="$1"
|
||||
local flag="--${2}="
|
||||
local extra_options="${3}"
|
||||
"${mypd}" $extra_options $section | sed -n "/^${flag}/s,${flag},,gp"
|
||||
}
|
||||
local old_MY_DATADIR="${MY_DATADIR}"
|
||||
local old_HOME="${HOME}"
|
||||
# my_print_defaults needs to read stuff in $HOME/.my.cnf
|
||||
export HOME=${EPREFIX}/root
|
||||
|
||||
# Make sure the vars are correctly initialized
|
||||
mysql_init_vars
|
||||
|
||||
[[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
|
||||
if [[ ! -x "${EROOT%/}/usr/sbin/mysqld" ]] ; then
|
||||
die "Minimal builds do NOT include the MySQL server"
|
||||
fi
|
||||
|
||||
if [[ ( -n "${MY_DATADIR}" ) && ( "${MY_DATADIR}" != "${old_MY_DATADIR}" ) ]] ; then
|
||||
local MY_DATADIR_s="${ROOT%/}/${MY_DATADIR}"
|
||||
MY_DATADIR_s="${MY_DATADIR_s%%/}"
|
||||
local old_MY_DATADIR_s="${ROOT%/}/${old_MY_DATADIR}"
|
||||
old_MY_DATADIR_s="${old_MY_DATADIR_s%%/}"
|
||||
|
||||
if [[ ( -d "${old_MY_DATADIR_s}" ) && ( "${old_MY_DATADIR_s}" != / ) ]] ; then
|
||||
if [[ -d "${MY_DATADIR_s}" ]] ; then
|
||||
ewarn "Both ${old_MY_DATADIR_s} and ${MY_DATADIR_s} exist"
|
||||
ewarn "Attempting to use ${MY_DATADIR_s} and preserving ${old_MY_DATADIR_s}"
|
||||
else
|
||||
elog "Moving MY_DATADIR from ${old_MY_DATADIR_s} to ${MY_DATADIR_s}"
|
||||
mv --strip-trailing-slashes -T "${old_MY_DATADIR_s}" "${MY_DATADIR_s}" \
|
||||
|| die "Moving MY_DATADIR failed"
|
||||
fi
|
||||
else
|
||||
ewarn "Previous MY_DATADIR (${old_MY_DATADIR_s}) does not exist"
|
||||
if [[ -d "${MY_DATADIR_s}" ]] ; then
|
||||
ewarn "Attempting to use ${MY_DATADIR_s}"
|
||||
else
|
||||
eerror "New MY_DATADIR (${MY_DATADIR_s}) does not exist"
|
||||
die "Configuration Failed! Please reinstall ${CATEGORY}/${PN}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
local pwd1="a"
|
||||
local pwd2="b"
|
||||
local maxtry=15
|
||||
|
||||
if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
|
||||
local tmp_mysqld_password_source=
|
||||
|
||||
for tmp_mysqld_password_source in mysql client ; do
|
||||
einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
|
||||
MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
|
||||
if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then
|
||||
if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then
|
||||
ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!"
|
||||
MYSQL_ROOT_PASSWORD=
|
||||
continue
|
||||
fi
|
||||
|
||||
einfo "Found password in '${tmp_mysqld_password_source}' section!"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Sometimes --show is required to display passwords in some implementations of my_print_defaults
|
||||
if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then
|
||||
MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
|
||||
fi
|
||||
|
||||
unset tmp_mysqld_password_source
|
||||
fi
|
||||
MYSQL_TMPDIR="$(_getoptval mysqld tmpdir)"
|
||||
# These are dir+prefix
|
||||
MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log)"
|
||||
MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
|
||||
MYSQL_LOG_BIN="$(_getoptval mysqld log-bin)"
|
||||
MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
|
||||
|
||||
if [[ ! -d "${EROOT%/}/$MYSQL_TMPDIR" ]] ; then
|
||||
einfo "Creating MySQL tmpdir $MYSQL_TMPDIR"
|
||||
install -d -m 770 -o mysql -g mysql "${EROOT%/}/$MYSQL_TMPDIR"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${EROOT%/}/$MYSQL_LOG_BIN" ]] ; then
|
||||
einfo "Creating MySQL log-bin directory $MYSQL_LOG_BIN"
|
||||
install -d -m 770 -o mysql -g mysql "${EROOT%/}/$MYSQL_LOG_BIN"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${EROOT%/}/$MYSQL_RELAY_LOG" ]] ; then
|
||||
einfo "Creating MySQL relay-log directory $MYSQL_RELAY_LOG"
|
||||
install -d -m 770 -o mysql -g mysql "${EROOT%/}/$MYSQL_RELAY_LOG"
|
||||
fi
|
||||
|
||||
if [[ -d "${ROOT%/}/${MY_DATADIR}/mysql" ]] ; then
|
||||
ewarn "You have already a MySQL database in place."
|
||||
ewarn "(${ROOT%/}/${MY_DATADIR}/*)"
|
||||
ewarn "Please rename or delete it if you wish to replace it."
|
||||
die "MySQL database already exists!"
|
||||
fi
|
||||
|
||||
# Bug #213475 - MySQL _will_ object strenously if your machine is named
|
||||
# localhost. Also causes weird failures.
|
||||
[[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
|
||||
|
||||
if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
|
||||
|
||||
einfo "Please provide a password for the mysql 'root' user now"
|
||||
einfo "or through the ${HOME}/.my.cnf file."
|
||||
ewarn "Avoid [\"'\\_%] characters in the password"
|
||||
read -rsp " >" pwd1 ; echo
|
||||
|
||||
einfo "Retype the password"
|
||||
read -rsp " >" pwd2 ; echo
|
||||
|
||||
if [[ "x$pwd1" != "x$pwd2" ]] ; then
|
||||
die "Passwords are not the same"
|
||||
fi
|
||||
MYSQL_ROOT_PASSWORD="${pwd1}"
|
||||
unset pwd1 pwd2
|
||||
fi
|
||||
|
||||
local options
|
||||
local sqltmp="$(emktemp)"
|
||||
|
||||
# Fix bug 446200. Don't reference host my.cnf, needs to come first,
|
||||
# see http://bugs.mysql.com/bug.php?id=31312
|
||||
use prefix && options="${options} '--defaults-file=${MY_SYSCONFDIR}/my.cnf'"
|
||||
|
||||
# Figure out which options we need to disable to do the setup
|
||||
local helpfile="${TMPDIR%/}/mysqld-help"
|
||||
"${EROOT%/}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
|
||||
for opt in host-cache name-resolve networking slave-start \
|
||||
federated ssl log-bin relay-log slow-query-log external-locking \
|
||||
log-slave-updates \
|
||||
; do
|
||||
optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
|
||||
egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}"
|
||||
done
|
||||
|
||||
einfo "Creating the mysql database and setting proper permissions on it ..."
|
||||
|
||||
# Now that /var/run is a tmpfs mount point, we need to ensure it exists before using it
|
||||
PID_DIR="${EROOT%/}/var/run/mysqld"
|
||||
if [[ ! -d "${PID_DIR}" ]] ; then
|
||||
install -d -m 755 -o mysql -g mysql "${PID_DIR}" || die "Could not create pid directory"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${MY_DATADIR}" ]] ; then
|
||||
install -d -m 750 -o mysql -g mysql "${MY_DATADIR}" || die "Could not create data directory"
|
||||
fi
|
||||
|
||||
pushd "${TMPDIR}" &>/dev/null || die
|
||||
|
||||
# Filling timezones, see
|
||||
# http://dev.mysql.com/doc/mysql/en/time-zone-support.html
|
||||
echo "USE mysql;" >"${sqltmp}"
|
||||
"${EROOT%/}/usr/bin/mysql_tzinfo_to_sql" "${EROOT%/}/usr/share/zoneinfo" >> "${sqltmp}" 2>/dev/null
|
||||
chown mysql "${sqltmp}" || die
|
||||
|
||||
# --initialize-insecure will not set root password
|
||||
# --initialize would set a random one in the log which we don't need as we set it ourselves
|
||||
local cmd=( "${EROOT%/}/usr/sbin/mysqld" "--initialize-insecure" "--init-file='${sqltmp}'" )
|
||||
cmd+=( "--basedir=${EPREFIX}/usr" ${options} "--datadir=${ROOT%/}${MY_DATADIR}" "--tmpdir=${ROOT%/}${MYSQL_TMPDIR}" )
|
||||
einfo "Command: ${cmd[*]}"
|
||||
su -s /bin/sh -c "${cmd[*]}" mysql \
|
||||
>"${TMPDIR%/}"/mysql_install_db.log 2>&1
|
||||
if [[ $? -ne 0 ]] ; then
|
||||
grep -B5 -A999 -i "ERROR" "${TMPDIR%/}"/mysql_install_db.log 1>&2
|
||||
die "Failed to initialize mysqld. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR%/}/mysql_install_db.log"
|
||||
fi
|
||||
popd &>/dev/null || die
|
||||
[[ -f "${ROOT%/}/${MY_DATADIR}/mysql/user.frm" ]] \
|
||||
|| die "MySQL databases not installed"
|
||||
|
||||
use prefix || options="${options} --user=mysql"
|
||||
|
||||
local socket="${EROOT%/}/var/run/mysqld/mysqld${RANDOM}.sock"
|
||||
local pidfile="${EROOT%/}/var/run/mysqld/mysqld${RANDOM}.pid"
|
||||
local mysqld="${EROOT%/}/usr/sbin/mysqld \
|
||||
${options} \
|
||||
$(use prefix || echo --user=mysql) \
|
||||
--log-warnings=0 \
|
||||
--basedir=${EROOT%/}/usr \
|
||||
--datadir=${ROOT%/}/${MY_DATADIR} \
|
||||
--max_allowed_packet=8M \
|
||||
--net_buffer_length=16K \
|
||||
--socket=${socket} \
|
||||
--pid-file=${pidfile} \
|
||||
--tmpdir=${ROOT}/${MYSQL_TMPDIR}"
|
||||
#einfo "About to start mysqld: ${mysqld}"
|
||||
ebegin "Starting mysqld"
|
||||
einfo "Command ${mysqld}"
|
||||
${mysqld} &
|
||||
rc=$?
|
||||
while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
|
||||
maxtry=$((${maxtry}-1))
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
eend $rc
|
||||
|
||||
if ! [[ -S "${socket}" ]] ; then
|
||||
die "Completely failed to start up mysqld with: ${mysqld}"
|
||||
fi
|
||||
|
||||
ebegin "Setting root password"
|
||||
# Do this from memory, as we don't want clear text passwords in temp files
|
||||
local sql="ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '${MYSQL_ROOT_PASSWORD}'"
|
||||
"${EROOT%/}/usr/bin/mysql" \
|
||||
--no-defaults \
|
||||
"--socket=${socket}" \
|
||||
-hlocalhost \
|
||||
-e "${sql}"
|
||||
eend $?
|
||||
|
||||
# Stop the server and cleanup
|
||||
einfo "Stopping the server ..."
|
||||
kill $(< "${pidfile}" )
|
||||
rm -f "${sqltmp}"
|
||||
wait %1
|
||||
einfo "Done"
|
||||
}
|
@ -1,986 +0,0 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="6"
|
||||
MY_EXTRAS_VER="20200125-1945Z"
|
||||
|
||||
CMAKE_MAKEFILE_GENERATOR=emake
|
||||
|
||||
# Keeping eutils in EAPI=6 for emktemp in pkg_config
|
||||
|
||||
inherit cmake-utils eutils flag-o-matic linux-info \
|
||||
prefix toolchain-funcs multilib-minimal
|
||||
|
||||
SRC_URI="https://cdn.mysql.com/Downloads/MySQL-5.7/${PN}-boost-${PV}.tar.gz
|
||||
https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-${PV}.tar.gz
|
||||
http://downloads.mysql.com/archives/MySQL-5.7/${PN}-boost-${PV}.tar.gz"
|
||||
|
||||
# Gentoo patches to MySQL
|
||||
if [[ "${MY_EXTRAS_VER}" != "live" && "${MY_EXTRAS_VER}" != "none" ]] ; then
|
||||
SRC_URI="${SRC_URI}
|
||||
mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
|
||||
https://gitweb.gentoo.org/proj/mysql-extras.git/snapshot/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
|
||||
fi
|
||||
|
||||
HOMEPAGE="https://www.mysql.com/"
|
||||
DESCRIPTION="A fast, multi-threaded, multi-user SQL database server"
|
||||
LICENSE="GPL-2"
|
||||
SLOT="5.7/18"
|
||||
IUSE="cjk client-libs cracklib debug experimental jemalloc latin1 numa +perl profiling
|
||||
selinux +server static static-libs systemtap tcmalloc test"
|
||||
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
REQUIRED_USE="?? ( tcmalloc jemalloc )"
|
||||
|
||||
KEYWORDS="amd64 arm ~arm64 ~hppa ~ia64 ~mips ~ppc ppc64 ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris ~x86-solaris"
|
||||
|
||||
# Shorten the path because the socket path length must be shorter than 107 chars
|
||||
# and we will run a mysql server during test phase
|
||||
S="${WORKDIR}/mysql"
|
||||
|
||||
if [[ "${MY_EXTRAS_VER}" == "live" ]] ; then
|
||||
inherit git-r3
|
||||
EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/mysql-extras.git"
|
||||
EGIT_CHECKOUT_DIR="${WORKDIR}/mysql-extras"
|
||||
EGIT_CLONE_TYPE=shallow
|
||||
MY_PATCH_DIR="${WORKDIR}/mysql-extras"
|
||||
else
|
||||
MY_PATCH_DIR="${WORKDIR}/mysql-extras-${MY_EXTRAS_VER}"
|
||||
fi
|
||||
|
||||
PATCHES=(
|
||||
"${MY_PATCH_DIR}"/20001_all_fix-minimal-build-cmake-mysql-5.7.23.patch
|
||||
"${MY_PATCH_DIR}"/20007_all_cmake-debug-werror-5.7.patch
|
||||
"${MY_PATCH_DIR}"/20009_all_mysql_myodbc_symbol_fix-5.7.10.patch
|
||||
"${MY_PATCH_DIR}"/20018_all_mysql-5.7.29-without-clientlibs-tools.patch
|
||||
"${MY_PATCH_DIR}"/20018_all_mysql-5.7.23-fix-grant_user_lock-a-root.patch
|
||||
"${MY_PATCH_DIR}"/20018_all_mysql-5.7.23-round-off-test-values-for-same-output-on-all-architectures.patch
|
||||
"${MY_PATCH_DIR}"/20018_all_mysql-5.7.25-fix-build-without-server.patch
|
||||
)
|
||||
|
||||
# Be warned, *DEPEND are version-dependant
|
||||
# These are used for both runtime and compiletime
|
||||
# MULTILIB_USEDEP only set for libraries used by the client library
|
||||
COMMON_DEPEND="net-misc/curl:=
|
||||
>=sys-apps/sed-4
|
||||
>=sys-apps/texinfo-4.7-r1
|
||||
sys-libs/ncurses:0=
|
||||
client-libs? ( >=sys-libs/zlib-1.2.3:0=[${MULTILIB_USEDEP},static-libs?] )
|
||||
!client-libs? (
|
||||
dev-db/mysql-connector-c[${MULTILIB_USEDEP},static-libs?]
|
||||
>=sys-libs/zlib-1.2.3:0=
|
||||
)
|
||||
jemalloc? ( dev-libs/jemalloc:0= )
|
||||
kernel_linux? (
|
||||
dev-libs/libaio:0=
|
||||
sys-process/procps:0=
|
||||
)
|
||||
server? (
|
||||
>=app-arch/lz4-0_p131:=
|
||||
cjk? ( app-text/mecab:= )
|
||||
experimental? (
|
||||
dev-libs/libevent:=
|
||||
dev-libs/protobuf:=
|
||||
net-libs/libtirpc:=
|
||||
)
|
||||
numa? ( sys-process/numactl )
|
||||
)
|
||||
systemtap? ( >=dev-util/systemtap-1.3:0= )
|
||||
tcmalloc? ( dev-util/google-perftools:0= )
|
||||
client-libs? (
|
||||
>=dev-libs/openssl-1.0.0:0=[${MULTILIB_USEDEP},static-libs?]
|
||||
)
|
||||
!client-libs? (
|
||||
>=dev-libs/openssl-1.0.0:0=
|
||||
)
|
||||
"
|
||||
DEPEND="${COMMON_DEPEND}
|
||||
|| ( >=sys-devel/gcc-3.4.6 >=sys-devel/gcc-apple-4.0 )
|
||||
dev-libs/protobuf
|
||||
virtual/yacc
|
||||
server? (
|
||||
dev-libs/libevent
|
||||
experimental? ( net-libs/rpcsvc-proto )
|
||||
)
|
||||
static? ( sys-libs/ncurses[static-libs] )
|
||||
test? (
|
||||
acct-group/mysql acct-user/mysql
|
||||
dev-perl/JSON
|
||||
)
|
||||
"
|
||||
RDEPEND="${COMMON_DEPEND}
|
||||
!dev-db/mariadb !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster
|
||||
!dev-db/mysql:0
|
||||
!dev-db/mysql:8.0
|
||||
client-libs? ( !dev-db/mariadb-connector-c[mysqlcompat] !dev-db/mysql-connector-c dev-libs/protobuf:= )
|
||||
selinux? ( sec-policy/selinux-mysql )
|
||||
server? (
|
||||
!prefix? (
|
||||
acct-group/mysql acct-user/mysql
|
||||
dev-db/mysql-init-scripts
|
||||
)
|
||||
)
|
||||
"
|
||||
# For other stuff to bring us in
|
||||
# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
|
||||
PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
|
||||
|
||||
mysql_init_vars() {
|
||||
MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"}
|
||||
MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
|
||||
MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
|
||||
MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
|
||||
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR=""
|
||||
if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
|
||||
MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
|
||||
| sed -ne '/datadir/s|^--datadir=||p' \
|
||||
| tail -n1`
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
|
||||
| sed -e 's/.*=\s*//' \
|
||||
| tail -n1`
|
||||
fi
|
||||
fi
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR="${MY_LOCALSTATEDIR}"
|
||||
einfo "Using default MY_DATADIR"
|
||||
fi
|
||||
elog "MySQL MY_DATADIR is ${MY_DATADIR}"
|
||||
|
||||
if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
|
||||
if [[ -e "${MY_DATADIR}" ]] ; then
|
||||
# If you get this and you're wondering about it, see bug #207636
|
||||
elog "MySQL datadir found in ${MY_DATADIR}"
|
||||
elog "A new one will not be created."
|
||||
PREVIOUS_DATADIR="yes"
|
||||
else
|
||||
PREVIOUS_DATADIR="no"
|
||||
fi
|
||||
export PREVIOUS_DATADIR
|
||||
fi
|
||||
else
|
||||
if [[ ${EBUILD_PHASE} == "config" ]] ; then
|
||||
local new_MY_DATADIR
|
||||
new_MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
|
||||
| sed -ne '/datadir/s|^--datadir=||p' \
|
||||
| tail -n1`
|
||||
|
||||
if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]] ; then
|
||||
ewarn "MySQL MY_DATADIR has changed"
|
||||
ewarn "from ${MY_DATADIR}"
|
||||
ewarn "to ${new_MY_DATADIR}"
|
||||
MY_DATADIR="${new_MY_DATADIR}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
export MY_SHAREDSTATEDIR MY_SYSCONFDIR
|
||||
export MY_LOCALSTATEDIR MY_LOGDIR
|
||||
export MY_DATADIR
|
||||
}
|
||||
|
||||
pkg_pretend() {
|
||||
if use numa ; then
|
||||
local CONFIG_CHECK="~NUMA"
|
||||
|
||||
local WARNING_NUMA="This package expects NUMA support in kernel which this system does not have at the moment;"
|
||||
WARNING_NUMA+=" Either expect runtime errors, enable NUMA support in kernel or rebuild the package without NUMA support"
|
||||
|
||||
check_extra_config
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
if [[ ${MERGE_TYPE} != binary ]] ; then
|
||||
local GCC_MAJOR_SET=$(gcc-major-version)
|
||||
local GCC_MINOR_SET=$(gcc-minor-version)
|
||||
# Bug 565584: InnoDB now requires atomic functions introduced with gcc-4.7 on
|
||||
# non x86{,_64} arches
|
||||
if ! use amd64 && ! use x86 && [[ ${GCC_MAJOR_SET} -lt 4 || \
|
||||
${GCC_MAJOR_SET} -eq 4 && ${GCC_MINOR_SET} -lt 7 ]] ; then
|
||||
eerror "${PN} needs to be built with gcc-4.7 or later."
|
||||
eerror "Please use gcc-config to switch to gcc-4.7 or later version."
|
||||
die
|
||||
fi
|
||||
fi
|
||||
|
||||
if has test ${FEATURES} && \
|
||||
use server && ! has userpriv ${FEATURES} ; then
|
||||
eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
# Here we need to see if the implementation switched client libraries
|
||||
# We check if this is a new instance of the package and a client library already exists
|
||||
local SHOW_ABI_MESSAGE libpath
|
||||
if use client-libs && [[ -z ${REPLACING_VERSIONS} && -e "${EROOT}usr/$(get_libdir)/libmysqlclient.so" ]] ; then
|
||||
libpath=$(readlink "${EROOT}usr/$(get_libdir)/libmysqlclient.so")
|
||||
elog "Due to ABI changes when switching between different client libraries,"
|
||||
elog "revdep-rebuild must find and rebuild all packages linking to libmysqlclient."
|
||||
elog "Please run: revdep-rebuild --library ${libpath}"
|
||||
ewarn "Failure to run revdep-rebuild may cause issues with other programs or libraries"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
# Make sure the vars are correctly initialized
|
||||
mysql_init_vars
|
||||
|
||||
# Create log directory securely if it does not exist
|
||||
[[ -d "${ROOT}${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
|
||||
|
||||
if use server ; then
|
||||
if [[ -z "${REPLACING_VERSIONS}" ]] ; then
|
||||
einfo
|
||||
elog "You might want to run:"
|
||||
elog "\"emerge --config =${CATEGORY}/${PF}\""
|
||||
elog "if this is a new install."
|
||||
elog
|
||||
elog "If you are switching server implentations, you should run the"
|
||||
elog "mysql_upgrade tool."
|
||||
einfo
|
||||
else
|
||||
einfo
|
||||
elog "If you are upgrading major versions, you should run the"
|
||||
elog "mysql_upgrade tool."
|
||||
einfo
|
||||
fi
|
||||
fi
|
||||
|
||||
# Note about configuration change
|
||||
einfo
|
||||
elog "This version of ${PN} reorganizes the configuration from a single my.cnf"
|
||||
elog "to several files in /etc/mysql/mysql.d."
|
||||
elog "Please backup any changes you made to /etc/mysql/my.cnf"
|
||||
elog "and add them as a new file under /etc/mysql/mysql.d with a .cnf extension."
|
||||
elog "You may have as many files as needed and they are read alphabetically."
|
||||
elog "Be sure the options have the appropriate section headers, i.e. [mysqld]."
|
||||
einfo
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
unpack ${A}
|
||||
# Grab the patches
|
||||
[[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git-r3_src_unpack
|
||||
|
||||
mv -f "${WORKDIR}/${P}" "${S}" || die
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
cmake-utils_src_prepare
|
||||
|
||||
if use jemalloc ; then
|
||||
echo "TARGET_LINK_LIBRARIES(mysqld jemalloc)" >> "${S}/sql/CMakeLists.txt" || die
|
||||
fi
|
||||
|
||||
if use tcmalloc ; then
|
||||
echo "TARGET_LINK_LIBRARIES(mysqld tcmalloc)" >> "${S}/sql/CMakeLists.txt" || die
|
||||
fi
|
||||
|
||||
# Remove the centos and rhel selinux policies to support mysqld_safe under SELinux
|
||||
if [[ -d "${S}/support-files/SELinux" ]] ; then
|
||||
echo > "${S}/support-files/SELinux/CMakeLists.txt" || die
|
||||
fi
|
||||
|
||||
# Remove bundled libs so we cannot accidentally use them
|
||||
# We keep extra/lz4 directory because we use extra/lz4/xxhash.c via sql/CMakeLists.txt:394
|
||||
rm -rv \
|
||||
"${S}"/extra/protobuf \
|
||||
"${S}"/extra/libevent \
|
||||
"${S}"/zlib \
|
||||
|| die
|
||||
|
||||
# Don't clash with dev-db/mysql-connector-c
|
||||
rm \
|
||||
man/my_print_defaults.1 \
|
||||
man/perror.1 \
|
||||
man/zlib_decompress.1 \
|
||||
|| die
|
||||
|
||||
sed -i 's~ADD_SUBDIRECTORY(storage/ndb)~~' CMakeLists.txt || die
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Bug #114895, bug #110149
|
||||
filter-flags "-O" "-O[01]"
|
||||
|
||||
append-cxxflags -felide-constructors
|
||||
|
||||
# bug #283926, with GCC4.4, this is required to get correct behavior.
|
||||
append-flags -fno-strict-aliasing
|
||||
|
||||
if use client-libs ; then
|
||||
multilib-minimal_src_configure
|
||||
else
|
||||
multilib_src_configure
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
if ! multilib_is_native_abi && ! use client-libs ; then
|
||||
return
|
||||
fi
|
||||
|
||||
CMAKE_BUILD_TYPE="RelWithDebInfo"
|
||||
|
||||
# debug hack wrt #497532
|
||||
mycmakeargs=(
|
||||
-DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
|
||||
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
|
||||
-DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql"
|
||||
-DSYSCONFDIR="${EPREFIX}/etc/mysql"
|
||||
-DINSTALL_BINDIR=bin
|
||||
-DINSTALL_DOCDIR=share/doc/${PF}
|
||||
-DINSTALL_DOCREADMEDIR=share/doc/${PF}
|
||||
-DINSTALL_INCLUDEDIR=include/mysql
|
||||
-DINSTALL_INFODIR=share/info
|
||||
-DINSTALL_LIBDIR=$(get_libdir)
|
||||
-DINSTALL_MANDIR=share/man
|
||||
-DINSTALL_MYSQLSHAREDIR=share/mysql
|
||||
-DINSTALL_PLUGINDIR=$(get_libdir)/mysql/plugin
|
||||
-DINSTALL_SCRIPTDIR=share/mysql/scripts
|
||||
-DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql"
|
||||
-DINSTALL_SBINDIR=sbin
|
||||
-DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mysql"
|
||||
-DCOMPILATION_COMMENT="Gentoo Linux ${PF}"
|
||||
-DWITH_UNIT_TESTS=$(usex test ON OFF)
|
||||
### TODO: make this system but issues with UTF-8 prevent it
|
||||
-DWITH_EDITLINE=bundled
|
||||
-DWITH_ZLIB=system
|
||||
-DWITH_SSL=system
|
||||
-DWITH_LIBWRAP=0
|
||||
-DENABLED_LOCAL_INFILE=1
|
||||
-DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock"
|
||||
-DWITH_DEFAULT_COMPILER_OPTIONS=0
|
||||
-DWITH_DEFAULT_FEATURE_SET=0
|
||||
# The build forces this to be defined when cross-compiling. We pass it
|
||||
# all the time for simplicity and to make sure it is actually correct.
|
||||
-DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1)
|
||||
-DWITH_CURL=system
|
||||
-DWITH_BOOST="${S}/boost"
|
||||
)
|
||||
if use test ; then
|
||||
mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test )
|
||||
else
|
||||
mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' )
|
||||
fi
|
||||
|
||||
if ! use client-libs ; then
|
||||
mycmakeargs+=( -DWITHOUT_CLIENTLIBS=YES )
|
||||
fi
|
||||
|
||||
# bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION
|
||||
# systemtap only works on native ABI, bug 530132
|
||||
if multilib_is_native_abi ; then
|
||||
mycmakeargs+=(
|
||||
-DENABLE_DTRACE=$(usex systemtap)
|
||||
)
|
||||
else
|
||||
mycmakeargs+=(
|
||||
-DWITHOUT_TOOLS=1
|
||||
-DWITH_READLINE=1
|
||||
-DENABLE_DTRACE=0
|
||||
)
|
||||
fi
|
||||
|
||||
if multilib_is_native_abi && use server ; then
|
||||
mycmakeargs+=(
|
||||
-DWITH_LIBEVENT=system
|
||||
-DWITH_LZ4=system
|
||||
-DWITH_PROTOBUF=system
|
||||
-DWITH_MECAB=$(usex cjk system OFF)
|
||||
-DWITH_NUMA=$(usex numa ON OFF)
|
||||
-DWITH_RAPID=$(usex experimental ON OFF)
|
||||
)
|
||||
|
||||
if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]] ; then
|
||||
ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
|
||||
ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
|
||||
ewarn "You MUST file bugs without these variables set."
|
||||
|
||||
mycmakeargs+=(
|
||||
-DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
|
||||
-DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
|
||||
)
|
||||
elif ! use latin1 ; then
|
||||
mycmakeargs+=(
|
||||
-DDEFAULT_CHARSET=utf8
|
||||
-DDEFAULT_COLLATION=utf8_general_ci
|
||||
)
|
||||
else
|
||||
mycmakeargs+=(
|
||||
-DDEFAULT_CHARSET=latin1
|
||||
-DDEFAULT_COLLATION=latin1_swedish_ci
|
||||
)
|
||||
fi
|
||||
|
||||
mycmakeargs+=(
|
||||
-DEXTRA_CHARSETS=all
|
||||
-DDISABLE_SHARED=$(usex static YES NO)
|
||||
-DWITH_DEBUG=$(usex debug)
|
||||
-DWITH_EMBEDDED_SERVER=OFF
|
||||
)
|
||||
|
||||
if use profiling ; then
|
||||
# Setting to OFF doesn't work: Once set, profiling options will be added
|
||||
# to `mysqld --help` output via sql/sys_vars.cc causing
|
||||
# "main.mysqld--help-notwin" test to fail
|
||||
mycmakeargs+=( -DENABLED_PROFILING=ON )
|
||||
fi
|
||||
|
||||
if use static ; then
|
||||
mycmakeargs+=( -DWITH_PIC=1 )
|
||||
fi
|
||||
|
||||
# Storage engines
|
||||
mycmakeargs+=(
|
||||
-DWITH_EXAMPLE_STORAGE_ENGINE=0
|
||||
-DWITH_ARCHIVE_STORAGE_ENGINE=1
|
||||
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
|
||||
-DWITH_CSV_STORAGE_ENGINE=1
|
||||
-DWITH_FEDERATED_STORAGE_ENGINE=1
|
||||
-DWITH_HEAP_STORAGE_ENGINE=1
|
||||
-DWITH_INNOBASE_STORAGE_ENGINE=1
|
||||
-DWITH_INNODB_MEMCACHED=0
|
||||
-DWITH_MYISAMMRG_STORAGE_ENGINE=1
|
||||
-DWITH_MYISAM_STORAGE_ENGINE=1
|
||||
-DWITH_PARTITION_STORAGE_ENGINE=1
|
||||
)
|
||||
|
||||
else
|
||||
mycmakeargs+=(
|
||||
-DWITHOUT_SERVER=1
|
||||
-DWITH_EMBEDDED_SERVER=OFF
|
||||
-DEXTRA_CHARSETS=none
|
||||
)
|
||||
fi
|
||||
|
||||
cmake-utils_src_configure
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
if use client-libs ; then
|
||||
multilib-minimal_src_compile
|
||||
else
|
||||
multilib_src_compile
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
cmake-utils_src_compile
|
||||
}
|
||||
|
||||
# Official test instructions:
|
||||
# ulimit -n 16500 && \
|
||||
# USE='latin1 perl server' \
|
||||
# FEATURES='test userpriv -usersandbox' \
|
||||
# ebuild mysql-X.X.XX.ebuild \
|
||||
# digest clean package
|
||||
src_test() {
|
||||
_disable_test() {
|
||||
local rawtestname reason
|
||||
rawtestname="${1}" ; shift
|
||||
reason="${@}"
|
||||
ewarn "test '${rawtestname}' disabled: '${reason}'"
|
||||
echo ${rawtestname} : ${reason} >> "${T}/disabled.def"
|
||||
}
|
||||
|
||||
local TESTDIR="${BUILD_DIR}/mysql-test"
|
||||
local retstatus_unit
|
||||
local retstatus_tests
|
||||
|
||||
if ! use server ; then
|
||||
einfo "Skipping server tests due to minimal build."
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Bug #213475 - MySQL _will_ object strenously if your machine is named
|
||||
# localhost. Also causes weird failures.
|
||||
[[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
|
||||
|
||||
if [[ $UID -eq 0 ]] ; then
|
||||
die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
|
||||
fi
|
||||
has usersandbox $FEATURES && ewarn "Some tests may fail with FEATURES=usersandbox"
|
||||
|
||||
einfo ">>> Test phase [test]: ${CATEGORY}/${PF}"
|
||||
|
||||
# Run CTest (test-units)
|
||||
cmake-utils_src_test
|
||||
retstatus_unit=$?
|
||||
|
||||
# Ensure that parallel runs don't die
|
||||
export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
|
||||
# Enable parallel testing, auto will try to detect number of cores
|
||||
# You may set this by hand.
|
||||
# The default maximum is 8 unless MTR_MAX_PARALLEL is increased
|
||||
export MTR_PARALLEL="${MTR_PARALLEL:-auto}"
|
||||
|
||||
# create directories because mysqladmin might run out of order
|
||||
mkdir -p "${T}"/var-tests{,/log} || die
|
||||
|
||||
# Run mysql tests
|
||||
pushd "${TESTDIR}" &>/dev/null || die
|
||||
|
||||
touch "${T}/disabled.def"
|
||||
# These are failing in MySQL 5.7 for now and are believed to be
|
||||
# false positives:
|
||||
#
|
||||
local t
|
||||
|
||||
for t in auth_sec.keyring_udf ; do
|
||||
_disable_test "$t" "False positives in Gentoo"
|
||||
done
|
||||
|
||||
# Unstable tests
|
||||
# - main.xa_prepared_binlog_off: https://bugs.mysql.com/bug.php?id=83340
|
||||
# - rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch: https://bugs.mysql.com/bug.php?id=89223
|
||||
# - rpl.rpl_non_direct_stm_mixing_engines: MDEV-14489
|
||||
for t in \
|
||||
main.xa_prepared_binlog_off \
|
||||
rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch \
|
||||
rpl.rpl_non_direct_stm_mixing_engines \
|
||||
; do
|
||||
_disable_test "$t" "Unstable test"
|
||||
done
|
||||
|
||||
for t in \
|
||||
gis.geometry_class_attri_prop \
|
||||
gis.geometry_property_function_issimple \
|
||||
gis.gis_bugs_crashes \
|
||||
gis.spatial_op_testingfunc_mix \
|
||||
gis.spatial_analysis_functions_buffer \
|
||||
gis.spatial_analysis_functions_distance \
|
||||
gis.spatial_utility_function_distance_sphere \
|
||||
gis.spatial_utility_function_simplify \
|
||||
gis.spatial_analysis_functions_centroid \
|
||||
; do
|
||||
_disable_test "$t" "Known rounding error with latest AMD processors"
|
||||
done
|
||||
|
||||
if use numa && use kernel_linux ; then
|
||||
# bug 584880
|
||||
if ! linux_config_exists || ! linux_chkconfig_present NUMA ; then
|
||||
for t in sys_vars.innodb_numa_interleave_basic ; do
|
||||
_disable_test "$t" "Test $t requires system with NUMA support"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! use latin1 ; then
|
||||
# The following tests will fail if DEFAULT_CHARSET
|
||||
# isn't set to latin1:
|
||||
for t in \
|
||||
binlog.binlog_mysqlbinlog_filter \
|
||||
binlog.binlog_xa_prepared_disconnect \
|
||||
funcs_1.is_columns_mysql \
|
||||
funcs_1.is_tables_mysql \
|
||||
funcs_1.is_triggers \
|
||||
innodb.innodb_pagesize_max_recordsize \
|
||||
innodb.innodb-system-table-view \
|
||||
innodb.mysqldump_max_recordsize \
|
||||
main.mysql_client_test \
|
||||
main.mysqld--help-notwin \
|
||||
main.type_string \
|
||||
main.information_schema \
|
||||
perfschema.binlog_edge_mix \
|
||||
perfschema.binlog_edge_stmt \
|
||||
rpl.rpl_xa_survive_disconnect \
|
||||
rpl.rpl_xa_survive_disconnect_lsu_off \
|
||||
rpl.rpl_xa_survive_disconnect_table \
|
||||
; do
|
||||
_disable_test "$t" "Requires DEFAULT_CHARSET=latin1 but USE=-latin1 is set"
|
||||
done
|
||||
fi
|
||||
|
||||
if has_version '>=dev-libs/openssl-1.1.1' ; then
|
||||
# Tests are expecting <openssl-1.1.1 default cipher
|
||||
for t in \
|
||||
auth_sec.cert_verify \
|
||||
auth_sec.mysql_ssl_connection \
|
||||
auth_sec.openssl_cert_generation \
|
||||
auth_sec.ssl_auto_detect \
|
||||
auth_sec.ssl_mode \
|
||||
auth_sec.tls \
|
||||
binlog.binlog_grant_alter_user \
|
||||
encryption.innodb_onlinealter_encryption \
|
||||
main.grant_alter_user_qa \
|
||||
main.grant_user_lock_qa \
|
||||
main.mysql_ssl_default \
|
||||
main.openssl_1 \
|
||||
main.plugin_auth_sha256_tls \
|
||||
main.ssl \
|
||||
main.ssl_8k_key \
|
||||
main.ssl_bug75311 \
|
||||
main.ssl_ca \
|
||||
main.ssl_cipher \
|
||||
main.ssl_compress \
|
||||
main.ssl_crl \
|
||||
main.ssl_ecdh \
|
||||
main.ssl_verify_identity \
|
||||
x.connection_tls_version \
|
||||
x.connection_openssl \
|
||||
; do
|
||||
_disable_test "$t" "Requires <dev-libs/openssl-1.1.1"
|
||||
done
|
||||
fi
|
||||
|
||||
# Try to increase file limits to increase test coverage
|
||||
if ! ulimit -n 16500 1>/dev/null 2>&1 ; then
|
||||
# Upper limit comes from parts.partition_* tests
|
||||
ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager."
|
||||
|
||||
if ! ulimit -n 4162 1>/dev/null 2>&1 ; then
|
||||
# Medium limit comes from '[Warning] Buffered warning: Could not increase number of max_open_files to more than 3000 (request: 4162)'
|
||||
ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager."
|
||||
|
||||
if ! ulimit -n 3000 1>/dev/null 2>&1 ; then
|
||||
ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager."
|
||||
else
|
||||
einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)."
|
||||
fi
|
||||
else
|
||||
einfo "Will run test suite with open file limit set to 4162 (medium test coverage)."
|
||||
fi
|
||||
else
|
||||
einfo "Will run test suite with open file limit set to 16500 (best test coverage)."
|
||||
fi
|
||||
|
||||
# run mysql-test tests
|
||||
perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test=tokudb --skip-test-list="${T}/disabled.def"
|
||||
retstatus_tests=$?
|
||||
|
||||
popd &>/dev/null || die
|
||||
|
||||
# Cleanup is important for these testcases.
|
||||
pkill -9 -f "${S}/ndb" 2>/dev/null
|
||||
pkill -9 -f "${S}/sql" 2>/dev/null
|
||||
|
||||
local failures=""
|
||||
[[ $retstatus_unit -eq 0 ]] || failures="${failures} test-unit"
|
||||
[[ $retstatus_tests -eq 0 ]] || failures="${failures} tests"
|
||||
|
||||
[[ -z "$failures" ]] || die "Test failures: $failures"
|
||||
einfo "Tests successfully completed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local MULTILIB_WRAPPED_HEADERS
|
||||
local MULTILIB_CHOST_TOOLS
|
||||
if use client-libs ; then
|
||||
# headers with ABI specific data
|
||||
MULTILIB_WRAPPED_HEADERS=(
|
||||
/usr/include/mysql/server/my_config.h
|
||||
/usr/include/mysql/server/mysql_version.h )
|
||||
|
||||
# wrap the config scripts
|
||||
MULTILIB_CHOST_TOOLS=( /usr/bin/mysql_config )
|
||||
multilib-minimal_src_install
|
||||
else
|
||||
multilib_src_install
|
||||
multilib_src_install_all
|
||||
fi
|
||||
}
|
||||
|
||||
# Intentionally override eclass function
|
||||
multilib_src_install() {
|
||||
|
||||
cmake-utils_src_install
|
||||
|
||||
# Kill old libmysqclient_r symlinks if they exist. Time to fix what depends on them.
|
||||
find "${D}" -name 'libmysqlclient_r.*' -type l -delete || die
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
# Make sure the vars are correctly initialized
|
||||
mysql_init_vars
|
||||
|
||||
# Convenience links
|
||||
einfo "Making Convenience links for mysqlcheck multi-call binary"
|
||||
dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
|
||||
dosym "mysqlcheck" "/usr/bin/mysqlrepair"
|
||||
dosym "mysqlcheck" "/usr/bin/mysqloptimize"
|
||||
|
||||
# INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
|
||||
if [[ -d "${ED}/usr/data" ]] ; then
|
||||
rm -Rf "${ED}/usr/data" || die
|
||||
fi
|
||||
|
||||
# Unless they explicitly specific USE=test, then do not install the
|
||||
# testsuite. It DOES have a use to be installed, esp. when you want to do a
|
||||
# validation of your database configuration after tuning it.
|
||||
if ! use test ; then
|
||||
rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test"
|
||||
fi
|
||||
|
||||
# Configuration stuff
|
||||
einfo "Building default configuration ..."
|
||||
insinto "${MY_SYSCONFDIR#${EPREFIX}}"
|
||||
[[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf
|
||||
cp "${FILESDIR}/my.cnf-5.7" "${TMPDIR}/my.cnf" || die
|
||||
eprefixify "${TMPDIR}/my.cnf"
|
||||
doins "${TMPDIR}/my.cnf"
|
||||
insinto "${MY_SYSCONFDIR#${EPREFIX}}/mysql.d"
|
||||
cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die
|
||||
eprefixify "${TMPDIR}/50-distro-client.cnf"
|
||||
doins "${TMPDIR}/50-distro-client.cnf"
|
||||
|
||||
if use server ; then
|
||||
mycnf_src="my.cnf.distro-server"
|
||||
sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
|
||||
"${FILESDIR}/${mycnf_src}" \
|
||||
> "${TMPDIR}/my.cnf.ok" || die
|
||||
|
||||
if use prefix ; then
|
||||
sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \
|
||||
"${TMPDIR}/my.cnf.ok" || die
|
||||
fi
|
||||
|
||||
if use latin1 ; then
|
||||
sed -i \
|
||||
-e "/character-set/s|utf8|latin1|g" \
|
||||
"${TMPDIR}/my.cnf.ok" || die
|
||||
fi
|
||||
|
||||
eprefixify "${TMPDIR}/my.cnf.ok"
|
||||
|
||||
newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf
|
||||
fi
|
||||
|
||||
#Remove mytop if perl is not selected
|
||||
[[ -e "${ED}/usr/bin/mytop" ]] && ! use perl && rm -f "${ED}/usr/bin/mytop"
|
||||
}
|
||||
|
||||
pkg_config() {
|
||||
_getoptval() {
|
||||
local mypd="${EROOT%/}"/usr/bin/my_print_defaults
|
||||
local section="$1"
|
||||
local flag="--${2}="
|
||||
local extra_options="${3}"
|
||||
"${mypd}" $extra_options $section | sed -n "/^${flag}/s,${flag},,gp"
|
||||
}
|
||||
local old_MY_DATADIR="${MY_DATADIR}"
|
||||
local old_HOME="${HOME}"
|
||||
# my_print_defaults needs to read stuff in $HOME/.my.cnf
|
||||
export HOME=${EPREFIX}/root
|
||||
|
||||
# Make sure the vars are correctly initialized
|
||||
mysql_init_vars
|
||||
|
||||
[[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
|
||||
if [[ ! -x "${EROOT%/}/usr/sbin/mysqld" ]] ; then
|
||||
die "Minimal builds do NOT include the MySQL server"
|
||||
fi
|
||||
|
||||
if [[ ( -n "${MY_DATADIR}" ) && ( "${MY_DATADIR}" != "${old_MY_DATADIR}" ) ]] ; then
|
||||
local MY_DATADIR_s="${ROOT%/}/${MY_DATADIR}"
|
||||
MY_DATADIR_s="${MY_DATADIR_s%%/}"
|
||||
local old_MY_DATADIR_s="${ROOT%/}/${old_MY_DATADIR}"
|
||||
old_MY_DATADIR_s="${old_MY_DATADIR_s%%/}"
|
||||
|
||||
if [[ ( -d "${old_MY_DATADIR_s}" ) && ( "${old_MY_DATADIR_s}" != / ) ]] ; then
|
||||
if [[ -d "${MY_DATADIR_s}" ]] ; then
|
||||
ewarn "Both ${old_MY_DATADIR_s} and ${MY_DATADIR_s} exist"
|
||||
ewarn "Attempting to use ${MY_DATADIR_s} and preserving ${old_MY_DATADIR_s}"
|
||||
else
|
||||
elog "Moving MY_DATADIR from ${old_MY_DATADIR_s} to ${MY_DATADIR_s}"
|
||||
mv --strip-trailing-slashes -T "${old_MY_DATADIR_s}" "${MY_DATADIR_s}" \
|
||||
|| die "Moving MY_DATADIR failed"
|
||||
fi
|
||||
else
|
||||
ewarn "Previous MY_DATADIR (${old_MY_DATADIR_s}) does not exist"
|
||||
if [[ -d "${MY_DATADIR_s}" ]] ; then
|
||||
ewarn "Attempting to use ${MY_DATADIR_s}"
|
||||
else
|
||||
eerror "New MY_DATADIR (${MY_DATADIR_s}) does not exist"
|
||||
die "Configuration Failed! Please reinstall ${CATEGORY}/${PN}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
local pwd1="a"
|
||||
local pwd2="b"
|
||||
local maxtry=15
|
||||
|
||||
if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
|
||||
local tmp_mysqld_password_source=
|
||||
|
||||
for tmp_mysqld_password_source in mysql client ; do
|
||||
einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
|
||||
MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
|
||||
if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then
|
||||
if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then
|
||||
ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!"
|
||||
MYSQL_ROOT_PASSWORD=
|
||||
continue
|
||||
fi
|
||||
|
||||
einfo "Found password in '${tmp_mysqld_password_source}' section!"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Sometimes --show is required to display passwords in some implementations of my_print_defaults
|
||||
if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then
|
||||
MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
|
||||
fi
|
||||
|
||||
unset tmp_mysqld_password_source
|
||||
fi
|
||||
MYSQL_TMPDIR="$(_getoptval mysqld tmpdir)"
|
||||
# These are dir+prefix
|
||||
MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log)"
|
||||
MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
|
||||
MYSQL_LOG_BIN="$(_getoptval mysqld log-bin)"
|
||||
MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
|
||||
|
||||
if [[ ! -d "${EROOT%/}/$MYSQL_TMPDIR" ]] ; then
|
||||
einfo "Creating MySQL tmpdir $MYSQL_TMPDIR"
|
||||
install -d -m 770 -o mysql -g mysql "${EROOT%/}/$MYSQL_TMPDIR"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${EROOT%/}/$MYSQL_LOG_BIN" ]] ; then
|
||||
einfo "Creating MySQL log-bin directory $MYSQL_LOG_BIN"
|
||||
install -d -m 770 -o mysql -g mysql "${EROOT%/}/$MYSQL_LOG_BIN"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${EROOT%/}/$MYSQL_RELAY_LOG" ]] ; then
|
||||
einfo "Creating MySQL relay-log directory $MYSQL_RELAY_LOG"
|
||||
install -d -m 770 -o mysql -g mysql "${EROOT%/}/$MYSQL_RELAY_LOG"
|
||||
fi
|
||||
|
||||
if [[ -d "${ROOT%/}/${MY_DATADIR}/mysql" ]] ; then
|
||||
ewarn "You have already a MySQL database in place."
|
||||
ewarn "(${ROOT%/}/${MY_DATADIR}/*)"
|
||||
ewarn "Please rename or delete it if you wish to replace it."
|
||||
die "MySQL database already exists!"
|
||||
fi
|
||||
|
||||
# Bug #213475 - MySQL _will_ object strenously if your machine is named
|
||||
# localhost. Also causes weird failures.
|
||||
[[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
|
||||
|
||||
if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
|
||||
|
||||
einfo "Please provide a password for the mysql 'root' user now"
|
||||
einfo "or through the ${HOME}/.my.cnf file."
|
||||
ewarn "Avoid [\"'\\_%] characters in the password"
|
||||
read -rsp " >" pwd1 ; echo
|
||||
|
||||
einfo "Retype the password"
|
||||
read -rsp " >" pwd2 ; echo
|
||||
|
||||
if [[ "x$pwd1" != "x$pwd2" ]] ; then
|
||||
die "Passwords are not the same"
|
||||
fi
|
||||
MYSQL_ROOT_PASSWORD="${pwd1}"
|
||||
unset pwd1 pwd2
|
||||
fi
|
||||
|
||||
local options
|
||||
local sqltmp="$(emktemp)"
|
||||
|
||||
# Fix bug 446200. Don't reference host my.cnf, needs to come first,
|
||||
# see http://bugs.mysql.com/bug.php?id=31312
|
||||
use prefix && options="${options} '--defaults-file=${MY_SYSCONFDIR}/my.cnf'"
|
||||
|
||||
# Figure out which options we need to disable to do the setup
|
||||
local helpfile="${TMPDIR%/}/mysqld-help"
|
||||
"${EROOT%/}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
|
||||
for opt in host-cache name-resolve networking slave-start \
|
||||
federated ssl log-bin relay-log slow-query-log external-locking \
|
||||
log-slave-updates \
|
||||
; do
|
||||
optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
|
||||
egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}"
|
||||
done
|
||||
|
||||
einfo "Creating the mysql database and setting proper permissions on it ..."
|
||||
|
||||
# Now that /var/run is a tmpfs mount point, we need to ensure it exists before using it
|
||||
PID_DIR="${EROOT%/}/var/run/mysqld"
|
||||
if [[ ! -d "${PID_DIR}" ]] ; then
|
||||
install -d -m 755 -o mysql -g mysql "${PID_DIR}" || die "Could not create pid directory"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${MY_DATADIR}" ]] ; then
|
||||
install -d -m 750 -o mysql -g mysql "${MY_DATADIR}" || die "Could not create data directory"
|
||||
fi
|
||||
|
||||
pushd "${TMPDIR}" &>/dev/null || die
|
||||
|
||||
# Filling timezones, see
|
||||
# http://dev.mysql.com/doc/mysql/en/time-zone-support.html
|
||||
echo "USE mysql;" >"${sqltmp}"
|
||||
"${EROOT%/}/usr/bin/mysql_tzinfo_to_sql" "${EROOT%/}/usr/share/zoneinfo" >> "${sqltmp}" 2>/dev/null
|
||||
chown mysql "${sqltmp}" || die
|
||||
|
||||
# --initialize-insecure will not set root password
|
||||
# --initialize would set a random one in the log which we don't need as we set it ourselves
|
||||
local cmd=( "${EROOT%/}/usr/sbin/mysqld" "--initialize-insecure" "--init-file='${sqltmp}'" )
|
||||
cmd+=( "--basedir=${EPREFIX}/usr" ${options} "--datadir=${ROOT%/}${MY_DATADIR}" "--tmpdir=${ROOT%/}${MYSQL_TMPDIR}" )
|
||||
einfo "Command: ${cmd[*]}"
|
||||
su -s /bin/sh -c "${cmd[*]}" mysql \
|
||||
>"${TMPDIR%/}"/mysql_install_db.log 2>&1
|
||||
if [[ $? -ne 0 ]] ; then
|
||||
grep -B5 -A999 -i "ERROR" "${TMPDIR%/}"/mysql_install_db.log 1>&2
|
||||
die "Failed to initialize mysqld. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR%/}/mysql_install_db.log"
|
||||
fi
|
||||
popd &>/dev/null || die
|
||||
[[ -f "${ROOT%/}/${MY_DATADIR}/mysql/user.frm" ]] \
|
||||
|| die "MySQL databases not installed"
|
||||
|
||||
use prefix || options="${options} --user=mysql"
|
||||
|
||||
local socket="${EROOT%/}/var/run/mysqld/mysqld${RANDOM}.sock"
|
||||
local pidfile="${EROOT%/}/var/run/mysqld/mysqld${RANDOM}.pid"
|
||||
local mysqld="${EROOT%/}/usr/sbin/mysqld \
|
||||
${options} \
|
||||
$(use prefix || echo --user=mysql) \
|
||||
--log-warnings=0 \
|
||||
--basedir=${EROOT%/}/usr \
|
||||
--datadir=${ROOT%/}/${MY_DATADIR} \
|
||||
--max_allowed_packet=8M \
|
||||
--net_buffer_length=16K \
|
||||
--socket=${socket} \
|
||||
--pid-file=${pidfile} \
|
||||
--tmpdir=${ROOT}/${MYSQL_TMPDIR}"
|
||||
#einfo "About to start mysqld: ${mysqld}"
|
||||
ebegin "Starting mysqld"
|
||||
einfo "Command ${mysqld}"
|
||||
${mysqld} &
|
||||
rc=$?
|
||||
while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
|
||||
maxtry=$((${maxtry}-1))
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
eend $rc
|
||||
|
||||
if ! [[ -S "${socket}" ]] ; then
|
||||
die "Completely failed to start up mysqld with: ${mysqld}"
|
||||
fi
|
||||
|
||||
ebegin "Setting root password"
|
||||
# Do this from memory, as we don't want clear text passwords in temp files
|
||||
local sql="ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '${MYSQL_ROOT_PASSWORD}'"
|
||||
"${EROOT%/}/usr/bin/mysql" \
|
||||
--no-defaults \
|
||||
"--socket=${socket}" \
|
||||
-hlocalhost \
|
||||
-e "${sql}"
|
||||
eend $?
|
||||
|
||||
# Stop the server and cleanup
|
||||
einfo "Stopping the server ..."
|
||||
kill $(< "${pidfile}" )
|
||||
rm -f "${sqltmp}"
|
||||
wait %1
|
||||
einfo "Done"
|
||||
}
|
@ -1,977 +0,0 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="6"
|
||||
|
||||
CMAKE_MAKEFILE_GENERATOR=emake
|
||||
|
||||
# Keeping eutils in EAPI=6 for emktemp in pkg_config
|
||||
|
||||
inherit cmake-utils eutils flag-o-matic linux-info \
|
||||
prefix toolchain-funcs multilib-minimal
|
||||
|
||||
# Patch version
|
||||
PATCH_SET="https://dev.gentoo.org/~whissi/dist/mysql/${PN}-5.7.30-patches-01.tar.xz"
|
||||
|
||||
SRC_URI="https://cdn.mysql.com/Downloads/MySQL-5.7/${PN}-boost-${PV}.tar.gz
|
||||
https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-${PV}.tar.gz
|
||||
http://downloads.mysql.com/archives/MySQL-5.7/${PN}-boost-${PV}.tar.gz
|
||||
${PATCH_SET}"
|
||||
|
||||
HOMEPAGE="https://www.mysql.com/"
|
||||
DESCRIPTION="A fast, multi-threaded, multi-user SQL database server"
|
||||
LICENSE="GPL-2"
|
||||
SLOT="5.7/18"
|
||||
IUSE="cjk client-libs cracklib debug experimental jemalloc latin1 numa +perl profiling
|
||||
selinux +server static static-libs systemtap tcmalloc test"
|
||||
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
REQUIRED_USE="?? ( tcmalloc jemalloc )"
|
||||
|
||||
KEYWORDS="amd64 arm arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris ~x86-solaris"
|
||||
|
||||
# Shorten the path because the socket path length must be shorter than 107 chars
|
||||
# and we will run a mysql server during test phase
|
||||
S="${WORKDIR}/mysql"
|
||||
|
||||
# Be warned, *DEPEND are version-dependant
|
||||
# These are used for both runtime and compiletime
|
||||
# MULTILIB_USEDEP only set for libraries used by the client library
|
||||
COMMON_DEPEND="net-misc/curl:=
|
||||
>=sys-apps/sed-4
|
||||
>=sys-apps/texinfo-4.7-r1
|
||||
sys-libs/ncurses:0=
|
||||
client-libs? ( >=sys-libs/zlib-1.2.3:0=[${MULTILIB_USEDEP},static-libs?] )
|
||||
!client-libs? (
|
||||
dev-db/mysql-connector-c[${MULTILIB_USEDEP},static-libs?]
|
||||
>=sys-libs/zlib-1.2.3:0=
|
||||
)
|
||||
jemalloc? ( dev-libs/jemalloc:0= )
|
||||
kernel_linux? (
|
||||
dev-libs/libaio:0=
|
||||
sys-process/procps:0=
|
||||
)
|
||||
server? (
|
||||
>=app-arch/lz4-0_p131:=
|
||||
cjk? ( app-text/mecab:= )
|
||||
experimental? (
|
||||
dev-libs/libevent:=
|
||||
dev-libs/protobuf:=
|
||||
net-libs/libtirpc:=
|
||||
)
|
||||
numa? ( sys-process/numactl )
|
||||
)
|
||||
systemtap? ( >=dev-util/systemtap-1.3:0= )
|
||||
tcmalloc? ( dev-util/google-perftools:0= )
|
||||
client-libs? (
|
||||
>=dev-libs/openssl-1.0.0:0=[${MULTILIB_USEDEP},static-libs?]
|
||||
)
|
||||
!client-libs? (
|
||||
>=dev-libs/openssl-1.0.0:0=
|
||||
)
|
||||
"
|
||||
DEPEND="${COMMON_DEPEND}
|
||||
|| ( >=sys-devel/gcc-3.4.6 >=sys-devel/gcc-apple-4.0 )
|
||||
dev-libs/protobuf
|
||||
virtual/yacc
|
||||
server? (
|
||||
dev-libs/libevent
|
||||
experimental? ( net-libs/rpcsvc-proto )
|
||||
)
|
||||
static? ( sys-libs/ncurses[static-libs] )
|
||||
test? (
|
||||
acct-group/mysql acct-user/mysql
|
||||
dev-perl/JSON
|
||||
)
|
||||
"
|
||||
RDEPEND="${COMMON_DEPEND}
|
||||
!dev-db/mariadb !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster
|
||||
!dev-db/mysql:0
|
||||
!dev-db/mysql:8.0
|
||||
client-libs? ( !dev-db/mariadb-connector-c[mysqlcompat] !dev-db/mysql-connector-c dev-libs/protobuf:= )
|
||||
selinux? ( sec-policy/selinux-mysql )
|
||||
server? (
|
||||
!prefix? (
|
||||
acct-group/mysql acct-user/mysql
|
||||
dev-db/mysql-init-scripts
|
||||
)
|
||||
)
|
||||
"
|
||||
# For other stuff to bring us in
|
||||
# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
|
||||
PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
|
||||
|
||||
mysql_init_vars() {
|
||||
MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"}
|
||||
MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
|
||||
MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
|
||||
MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
|
||||
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR=""
|
||||
if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
|
||||
MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
|
||||
| sed -ne '/datadir/s|^--datadir=||p' \
|
||||
| tail -n1`
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
|
||||
| sed -e 's/.*=\s*//' \
|
||||
| tail -n1`
|
||||
fi
|
||||
fi
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR="${MY_LOCALSTATEDIR}"
|
||||
einfo "Using default MY_DATADIR"
|
||||
fi
|
||||
elog "MySQL MY_DATADIR is ${MY_DATADIR}"
|
||||
|
||||
if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
|
||||
if [[ -e "${MY_DATADIR}" ]] ; then
|
||||
# If you get this and you're wondering about it, see bug #207636
|
||||
elog "MySQL datadir found in ${MY_DATADIR}"
|
||||
elog "A new one will not be created."
|
||||
PREVIOUS_DATADIR="yes"
|
||||
else
|
||||
PREVIOUS_DATADIR="no"
|
||||
fi
|
||||
export PREVIOUS_DATADIR
|
||||
fi
|
||||
else
|
||||
if [[ ${EBUILD_PHASE} == "config" ]] ; then
|
||||
local new_MY_DATADIR
|
||||
new_MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
|
||||
| sed -ne '/datadir/s|^--datadir=||p' \
|
||||
| tail -n1`
|
||||
|
||||
if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]] ; then
|
||||
ewarn "MySQL MY_DATADIR has changed"
|
||||
ewarn "from ${MY_DATADIR}"
|
||||
ewarn "to ${new_MY_DATADIR}"
|
||||
MY_DATADIR="${new_MY_DATADIR}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
export MY_SHAREDSTATEDIR MY_SYSCONFDIR
|
||||
export MY_LOCALSTATEDIR MY_LOGDIR
|
||||
export MY_DATADIR
|
||||
}
|
||||
|
||||
pkg_pretend() {
|
||||
if use numa ; then
|
||||
local CONFIG_CHECK="~NUMA"
|
||||
|
||||
local WARNING_NUMA="This package expects NUMA support in kernel which this system does not have at the moment;"
|
||||
WARNING_NUMA+=" Either expect runtime errors, enable NUMA support in kernel or rebuild the package without NUMA support"
|
||||
|
||||
check_extra_config
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
if [[ ${MERGE_TYPE} != binary ]] ; then
|
||||
local GCC_MAJOR_SET=$(gcc-major-version)
|
||||
local GCC_MINOR_SET=$(gcc-minor-version)
|
||||
# Bug 565584: InnoDB now requires atomic functions introduced with gcc-4.7 on
|
||||
# non x86{,_64} arches
|
||||
if ! use amd64 && ! use x86 && [[ ${GCC_MAJOR_SET} -lt 4 || \
|
||||
${GCC_MAJOR_SET} -eq 4 && ${GCC_MINOR_SET} -lt 7 ]] ; then
|
||||
eerror "${PN} needs to be built with gcc-4.7 or later."
|
||||
eerror "Please use gcc-config to switch to gcc-4.7 or later version."
|
||||
die
|
||||
fi
|
||||
fi
|
||||
|
||||
if has test ${FEATURES} && \
|
||||
use server && ! has userpriv ${FEATURES} ; then
|
||||
eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
# Here we need to see if the implementation switched client libraries
|
||||
# We check if this is a new instance of the package and a client library already exists
|
||||
local SHOW_ABI_MESSAGE libpath
|
||||
if use client-libs && [[ -z ${REPLACING_VERSIONS} && -e "${EROOT}usr/$(get_libdir)/libmysqlclient.so" ]] ; then
|
||||
libpath=$(readlink "${EROOT}usr/$(get_libdir)/libmysqlclient.so")
|
||||
elog "Due to ABI changes when switching between different client libraries,"
|
||||
elog "revdep-rebuild must find and rebuild all packages linking to libmysqlclient."
|
||||
elog "Please run: revdep-rebuild --library ${libpath}"
|
||||
ewarn "Failure to run revdep-rebuild may cause issues with other programs or libraries"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
# Make sure the vars are correctly initialized
|
||||
mysql_init_vars
|
||||
|
||||
# Create log directory securely if it does not exist
|
||||
[[ -d "${ROOT}${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
|
||||
|
||||
if use server ; then
|
||||
if [[ -z "${REPLACING_VERSIONS}" ]] ; then
|
||||
einfo
|
||||
elog "You might want to run:"
|
||||
elog "\"emerge --config =${CATEGORY}/${PF}\""
|
||||
elog "if this is a new install."
|
||||
elog
|
||||
elog "If you are switching server implentations, you should run the"
|
||||
elog "mysql_upgrade tool."
|
||||
einfo
|
||||
else
|
||||
einfo
|
||||
elog "If you are upgrading major versions, you should run the"
|
||||
elog "mysql_upgrade tool."
|
||||
einfo
|
||||
fi
|
||||
fi
|
||||
|
||||
# Note about configuration change
|
||||
einfo
|
||||
elog "This version of ${PN} reorganizes the configuration from a single my.cnf"
|
||||
elog "to several files in /etc/mysql/mysql.d."
|
||||
elog "Please backup any changes you made to /etc/mysql/my.cnf"
|
||||
elog "and add them as a new file under /etc/mysql/mysql.d with a .cnf extension."
|
||||
elog "You may have as many files as needed and they are read alphabetically."
|
||||
elog "Be sure the options have the appropriate section headers, i.e. [mysqld]."
|
||||
einfo
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
unpack ${A}
|
||||
|
||||
mv -f "${WORKDIR}/${P}" "${S}" || die
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
eapply "${WORKDIR}"/mysql-patches
|
||||
|
||||
cmake-utils_src_prepare
|
||||
|
||||
if use jemalloc ; then
|
||||
echo "TARGET_LINK_LIBRARIES(mysqld jemalloc)" >> "${S}/sql/CMakeLists.txt" || die
|
||||
fi
|
||||
|
||||
if use tcmalloc ; then
|
||||
echo "TARGET_LINK_LIBRARIES(mysqld tcmalloc)" >> "${S}/sql/CMakeLists.txt" || die
|
||||
fi
|
||||
|
||||
# Remove the centos and rhel selinux policies to support mysqld_safe under SELinux
|
||||
if [[ -d "${S}/support-files/SELinux" ]] ; then
|
||||
echo > "${S}/support-files/SELinux/CMakeLists.txt" || die
|
||||
fi
|
||||
|
||||
# Remove bundled libs so we cannot accidentally use them
|
||||
# We keep extra/lz4 directory because we use extra/lz4/xxhash.c via sql/CMakeLists.txt:394
|
||||
rm -rv \
|
||||
"${S}"/extra/protobuf \
|
||||
"${S}"/extra/libevent \
|
||||
"${S}"/zlib \
|
||||
|| die
|
||||
|
||||
# Don't clash with dev-db/mysql-connector-c
|
||||
rm \
|
||||
man/my_print_defaults.1 \
|
||||
man/perror.1 \
|
||||
man/zlib_decompress.1 \
|
||||
|| die
|
||||
|
||||
sed -i 's~ADD_SUBDIRECTORY(storage/ndb)~~' CMakeLists.txt || die
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Bug #114895, bug #110149
|
||||
filter-flags "-O" "-O[01]"
|
||||
|
||||
append-cxxflags -felide-constructors
|
||||
|
||||
# bug #283926, with GCC4.4, this is required to get correct behavior.
|
||||
append-flags -fno-strict-aliasing
|
||||
|
||||
if use client-libs ; then
|
||||
multilib-minimal_src_configure
|
||||
else
|
||||
multilib_src_configure
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
if ! multilib_is_native_abi && ! use client-libs ; then
|
||||
return
|
||||
fi
|
||||
|
||||
CMAKE_BUILD_TYPE="RelWithDebInfo"
|
||||
|
||||
# debug hack wrt #497532
|
||||
mycmakeargs=(
|
||||
-DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
|
||||
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
|
||||
-DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql"
|
||||
-DSYSCONFDIR="${EPREFIX}/etc/mysql"
|
||||
-DINSTALL_BINDIR=bin
|
||||
-DINSTALL_DOCDIR=share/doc/${PF}
|
||||
-DINSTALL_DOCREADMEDIR=share/doc/${PF}
|
||||
-DINSTALL_INCLUDEDIR=include/mysql
|
||||
-DINSTALL_INFODIR=share/info
|
||||
-DINSTALL_LIBDIR=$(get_libdir)
|
||||
-DINSTALL_MANDIR=share/man
|
||||
-DINSTALL_MYSQLSHAREDIR=share/mysql
|
||||
-DINSTALL_PLUGINDIR=$(get_libdir)/mysql/plugin
|
||||
-DINSTALL_SCRIPTDIR=share/mysql/scripts
|
||||
-DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql"
|
||||
-DINSTALL_SBINDIR=sbin
|
||||
-DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mysql"
|
||||
-DCOMPILATION_COMMENT="Gentoo Linux ${PF}"
|
||||
-DWITH_UNIT_TESTS=$(usex test ON OFF)
|
||||
### TODO: make this system but issues with UTF-8 prevent it
|
||||
-DWITH_EDITLINE=bundled
|
||||
-DWITH_ZLIB=system
|
||||
-DWITH_SSL=system
|
||||
-DWITH_LIBWRAP=0
|
||||
-DENABLED_LOCAL_INFILE=1
|
||||
-DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock"
|
||||
-DWITH_DEFAULT_COMPILER_OPTIONS=0
|
||||
-DWITH_DEFAULT_FEATURE_SET=0
|
||||
# The build forces this to be defined when cross-compiling. We pass it
|
||||
# all the time for simplicity and to make sure it is actually correct.
|
||||
-DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1)
|
||||
-DWITH_CURL=system
|
||||
-DWITH_BOOST="${S}/boost"
|
||||
)
|
||||
if use test ; then
|
||||
mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test )
|
||||
else
|
||||
mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' )
|
||||
fi
|
||||
|
||||
if ! use client-libs ; then
|
||||
mycmakeargs+=( -DWITHOUT_CLIENTLIBS=YES )
|
||||
fi
|
||||
|
||||
# bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION
|
||||
# systemtap only works on native ABI, bug 530132
|
||||
if multilib_is_native_abi ; then
|
||||
mycmakeargs+=(
|
||||
-DENABLE_DTRACE=$(usex systemtap)
|
||||
)
|
||||
else
|
||||
mycmakeargs+=(
|
||||
-DWITHOUT_TOOLS=1
|
||||
-DWITH_READLINE=1
|
||||
-DENABLE_DTRACE=0
|
||||
)
|
||||
fi
|
||||
|
||||
if multilib_is_native_abi && use server ; then
|
||||
mycmakeargs+=(
|
||||
-DWITH_LIBEVENT=system
|
||||
-DWITH_LZ4=system
|
||||
-DWITH_PROTOBUF=system
|
||||
-DWITH_MECAB=$(usex cjk system OFF)
|
||||
-DWITH_NUMA=$(usex numa ON OFF)
|
||||
-DWITH_RAPID=$(usex experimental ON OFF)
|
||||
)
|
||||
|
||||
if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]] ; then
|
||||
ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
|
||||
ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
|
||||
ewarn "You MUST file bugs without these variables set."
|
||||
|
||||
mycmakeargs+=(
|
||||
-DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
|
||||
-DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
|
||||
)
|
||||
elif ! use latin1 ; then
|
||||
mycmakeargs+=(
|
||||
-DDEFAULT_CHARSET=utf8
|
||||
-DDEFAULT_COLLATION=utf8_general_ci
|
||||
)
|
||||
else
|
||||
mycmakeargs+=(
|
||||
-DDEFAULT_CHARSET=latin1
|
||||
-DDEFAULT_COLLATION=latin1_swedish_ci
|
||||
)
|
||||
fi
|
||||
|
||||
mycmakeargs+=(
|
||||
-DEXTRA_CHARSETS=all
|
||||
-DDISABLE_SHARED=$(usex static YES NO)
|
||||
-DWITH_DEBUG=$(usex debug)
|
||||
-DWITH_EMBEDDED_SERVER=OFF
|
||||
)
|
||||
|
||||
if use profiling ; then
|
||||
# Setting to OFF doesn't work: Once set, profiling options will be added
|
||||
# to `mysqld --help` output via sql/sys_vars.cc causing
|
||||
# "main.mysqld--help-notwin" test to fail
|
||||
mycmakeargs+=( -DENABLED_PROFILING=ON )
|
||||
fi
|
||||
|
||||
if use static ; then
|
||||
mycmakeargs+=( -DWITH_PIC=1 )
|
||||
fi
|
||||
|
||||
# Storage engines
|
||||
mycmakeargs+=(
|
||||
-DWITH_EXAMPLE_STORAGE_ENGINE=0
|
||||
-DWITH_ARCHIVE_STORAGE_ENGINE=1
|
||||
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
|
||||
-DWITH_CSV_STORAGE_ENGINE=1
|
||||
-DWITH_FEDERATED_STORAGE_ENGINE=1
|
||||
-DWITH_HEAP_STORAGE_ENGINE=1
|
||||
-DWITH_INNOBASE_STORAGE_ENGINE=1
|
||||
-DWITH_INNODB_MEMCACHED=0
|
||||
-DWITH_MYISAMMRG_STORAGE_ENGINE=1
|
||||
-DWITH_MYISAM_STORAGE_ENGINE=1
|
||||
-DWITH_PARTITION_STORAGE_ENGINE=1
|
||||
)
|
||||
|
||||
else
|
||||
mycmakeargs+=(
|
||||
-DWITHOUT_SERVER=1
|
||||
-DWITH_EMBEDDED_SERVER=OFF
|
||||
-DEXTRA_CHARSETS=none
|
||||
)
|
||||
fi
|
||||
|
||||
cmake-utils_src_configure
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
if use client-libs ; then
|
||||
multilib-minimal_src_compile
|
||||
else
|
||||
multilib_src_compile
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
cmake-utils_src_compile
|
||||
}
|
||||
|
||||
# Official test instructions:
|
||||
# ulimit -n 16500 && \
|
||||
# USE='latin1 perl server' \
|
||||
# FEATURES='test userpriv -usersandbox' \
|
||||
# ebuild mysql-X.X.XX.ebuild \
|
||||
# digest clean package
|
||||
src_test() {
|
||||
_disable_test() {
|
||||
local rawtestname reason
|
||||
rawtestname="${1}" ; shift
|
||||
reason="${@}"
|
||||
ewarn "test '${rawtestname}' disabled: '${reason}'"
|
||||
echo ${rawtestname} : ${reason} >> "${T}/disabled.def"
|
||||
}
|
||||
|
||||
local TESTDIR="${BUILD_DIR}/mysql-test"
|
||||
local retstatus_unit
|
||||
local retstatus_tests
|
||||
|
||||
if ! use server ; then
|
||||
einfo "Skipping server tests due to minimal build."
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Bug #213475 - MySQL _will_ object strenously if your machine is named
|
||||
# localhost. Also causes weird failures.
|
||||
[[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
|
||||
|
||||
if [[ $UID -eq 0 ]] ; then
|
||||
die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
|
||||
fi
|
||||
has usersandbox $FEATURES && ewarn "Some tests may fail with FEATURES=usersandbox"
|
||||
|
||||
einfo ">>> Test phase [test]: ${CATEGORY}/${PF}"
|
||||
|
||||
# Run CTest (test-units)
|
||||
cmake-utils_src_test
|
||||
retstatus_unit=$?
|
||||
|
||||
# Ensure that parallel runs don't die
|
||||
export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
|
||||
# Enable parallel testing, auto will try to detect number of cores
|
||||
# You may set this by hand.
|
||||
# The default maximum is 8 unless MTR_MAX_PARALLEL is increased
|
||||
export MTR_PARALLEL="${MTR_PARALLEL:-auto}"
|
||||
|
||||
# create directories because mysqladmin might run out of order
|
||||
mkdir -p "${T}"/var-tests{,/log} || die
|
||||
|
||||
# Run mysql tests
|
||||
pushd "${TESTDIR}" &>/dev/null || die
|
||||
|
||||
touch "${T}/disabled.def"
|
||||
# These are failing in MySQL 5.7 for now and are believed to be
|
||||
# false positives:
|
||||
#
|
||||
local t
|
||||
|
||||
for t in auth_sec.keyring_udf ; do
|
||||
_disable_test "$t" "False positives in Gentoo"
|
||||
done
|
||||
|
||||
# Unstable tests
|
||||
# - main.xa_prepared_binlog_off: https://bugs.mysql.com/bug.php?id=83340
|
||||
# - rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch: https://bugs.mysql.com/bug.php?id=89223
|
||||
# - rpl.rpl_non_direct_stm_mixing_engines: MDEV-14489
|
||||
for t in \
|
||||
main.xa_prepared_binlog_off \
|
||||
rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch \
|
||||
rpl.rpl_non_direct_stm_mixing_engines \
|
||||
; do
|
||||
_disable_test "$t" "Unstable test"
|
||||
done
|
||||
|
||||
for t in \
|
||||
gis.geometry_class_attri_prop \
|
||||
gis.geometry_property_function_issimple \
|
||||
gis.gis_bugs_crashes \
|
||||
gis.spatial_op_testingfunc_mix \
|
||||
gis.spatial_analysis_functions_buffer \
|
||||
gis.spatial_analysis_functions_distance \
|
||||
gis.spatial_utility_function_distance_sphere \
|
||||
gis.spatial_utility_function_simplify \
|
||||
gis.spatial_analysis_functions_centroid \
|
||||
main.with_recursive \
|
||||
; do
|
||||
_disable_test "$t" "Known rounding error with latest AMD processors"
|
||||
done
|
||||
|
||||
if ! hash zip 1>/dev/null 2>&1 ; then
|
||||
# no need to force dep app-arch/zip for one test
|
||||
_disable_test "innodb.partition_upgrade_create" "Requires app-arch/zip"
|
||||
fi
|
||||
|
||||
if use numa && use kernel_linux ; then
|
||||
# bug 584880
|
||||
if ! linux_config_exists || ! linux_chkconfig_present NUMA ; then
|
||||
for t in sys_vars.innodb_numa_interleave_basic ; do
|
||||
_disable_test "$t" "Test $t requires system with NUMA support"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! use latin1 ; then
|
||||
# The following tests will fail if DEFAULT_CHARSET
|
||||
# isn't set to latin1:
|
||||
for t in \
|
||||
binlog.binlog_mysqlbinlog_filter \
|
||||
binlog.binlog_xa_prepared_disconnect \
|
||||
funcs_1.is_columns_mysql \
|
||||
funcs_1.is_tables_mysql \
|
||||
funcs_1.is_triggers \
|
||||
innodb.innodb_pagesize_max_recordsize \
|
||||
innodb.innodb-system-table-view \
|
||||
innodb.mysqldump_max_recordsize \
|
||||
main.mysql_client_test \
|
||||
main.mysqld--help-notwin \
|
||||
main.type_string \
|
||||
main.information_schema \
|
||||
perfschema.binlog_edge_mix \
|
||||
perfschema.binlog_edge_stmt \
|
||||
rpl.rpl_xa_survive_disconnect \
|
||||
rpl.rpl_xa_survive_disconnect_lsu_off \
|
||||
rpl.rpl_xa_survive_disconnect_table \
|
||||
; do
|
||||
_disable_test "$t" "Requires DEFAULT_CHARSET=latin1 but USE=-latin1 is set"
|
||||
done
|
||||
fi
|
||||
|
||||
if has_version '>=dev-libs/openssl-1.1.1' ; then
|
||||
# Tests are expecting <openssl-1.1.1 default cipher
|
||||
for t in \
|
||||
auth_sec.cert_verify \
|
||||
auth_sec.mysql_ssl_connection \
|
||||
auth_sec.openssl_cert_generation \
|
||||
auth_sec.ssl_auto_detect \
|
||||
auth_sec.ssl_mode \
|
||||
auth_sec.tls \
|
||||
binlog.binlog_grant_alter_user \
|
||||
encryption.innodb_onlinealter_encryption \
|
||||
main.grant_alter_user_qa \
|
||||
main.grant_user_lock_qa \
|
||||
main.mysql_ssl_default \
|
||||
main.openssl_1 \
|
||||
main.plugin_auth_sha256_tls \
|
||||
main.ssl \
|
||||
main.ssl_8k_key \
|
||||
main.ssl_bug75311 \
|
||||
main.ssl_ca \
|
||||
main.ssl_cipher \
|
||||
main.ssl_compress \
|
||||
main.ssl_crl \
|
||||
main.ssl_ecdh \
|
||||
main.ssl_verify_identity \
|
||||
x.connection_tls_version \
|
||||
x.connection_openssl \
|
||||
; do
|
||||
_disable_test "$t" "Requires <dev-libs/openssl-1.1.1"
|
||||
done
|
||||
fi
|
||||
|
||||
# Try to increase file limits to increase test coverage
|
||||
if ! ulimit -n 16500 1>/dev/null 2>&1 ; then
|
||||
# Upper limit comes from parts.partition_* tests
|
||||
ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager."
|
||||
|
||||
if ! ulimit -n 4162 1>/dev/null 2>&1 ; then
|
||||
# Medium limit comes from '[Warning] Buffered warning: Could not increase number of max_open_files to more than 3000 (request: 4162)'
|
||||
ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager."
|
||||
|
||||
if ! ulimit -n 3000 1>/dev/null 2>&1 ; then
|
||||
ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager."
|
||||
else
|
||||
einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)."
|
||||
fi
|
||||
else
|
||||
einfo "Will run test suite with open file limit set to 4162 (medium test coverage)."
|
||||
fi
|
||||
else
|
||||
einfo "Will run test suite with open file limit set to 16500 (best test coverage)."
|
||||
fi
|
||||
|
||||
# run mysql-test tests
|
||||
perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test=tokudb --skip-test-list="${T}/disabled.def"
|
||||
retstatus_tests=$?
|
||||
|
||||
popd &>/dev/null || die
|
||||
|
||||
# Cleanup is important for these testcases.
|
||||
pkill -9 -f "${S}/ndb" 2>/dev/null
|
||||
pkill -9 -f "${S}/sql" 2>/dev/null
|
||||
|
||||
local failures=""
|
||||
[[ $retstatus_unit -eq 0 ]] || failures="${failures} test-unit"
|
||||
[[ $retstatus_tests -eq 0 ]] || failures="${failures} tests"
|
||||
|
||||
[[ -z "$failures" ]] || die "Test failures: $failures"
|
||||
einfo "Tests successfully completed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local MULTILIB_WRAPPED_HEADERS
|
||||
local MULTILIB_CHOST_TOOLS
|
||||
if use client-libs ; then
|
||||
# headers with ABI specific data
|
||||
MULTILIB_WRAPPED_HEADERS=(
|
||||
/usr/include/mysql/server/my_config.h
|
||||
/usr/include/mysql/server/mysql_version.h )
|
||||
|
||||
# wrap the config scripts
|
||||
MULTILIB_CHOST_TOOLS=( /usr/bin/mysql_config )
|
||||
multilib-minimal_src_install
|
||||
else
|
||||
multilib_src_install
|
||||
multilib_src_install_all
|
||||
fi
|
||||
}
|
||||
|
||||
# Intentionally override eclass function
|
||||
multilib_src_install() {
|
||||
|
||||
cmake-utils_src_install
|
||||
|
||||
# Kill old libmysqclient_r symlinks if they exist. Time to fix what depends on them.
|
||||
find "${D}" -name 'libmysqlclient_r.*' -type l -delete || die
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
# Make sure the vars are correctly initialized
|
||||
mysql_init_vars
|
||||
|
||||
# Convenience links
|
||||
einfo "Making Convenience links for mysqlcheck multi-call binary"
|
||||
dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
|
||||
dosym "mysqlcheck" "/usr/bin/mysqlrepair"
|
||||
dosym "mysqlcheck" "/usr/bin/mysqloptimize"
|
||||
|
||||
# INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
|
||||
if [[ -d "${ED}/usr/data" ]] ; then
|
||||
rm -Rf "${ED}/usr/data" || die
|
||||
fi
|
||||
|
||||
# Unless they explicitly specific USE=test, then do not install the
|
||||
# testsuite. It DOES have a use to be installed, esp. when you want to do a
|
||||
# validation of your database configuration after tuning it.
|
||||
if ! use test ; then
|
||||
rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test"
|
||||
fi
|
||||
|
||||
# Configuration stuff
|
||||
einfo "Building default configuration ..."
|
||||
insinto "${MY_SYSCONFDIR#${EPREFIX}}"
|
||||
[[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf
|
||||
cp "${FILESDIR}/my.cnf-5.7" "${TMPDIR}/my.cnf" || die
|
||||
eprefixify "${TMPDIR}/my.cnf"
|
||||
doins "${TMPDIR}/my.cnf"
|
||||
insinto "${MY_SYSCONFDIR#${EPREFIX}}/mysql.d"
|
||||
cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die
|
||||
eprefixify "${TMPDIR}/50-distro-client.cnf"
|
||||
doins "${TMPDIR}/50-distro-client.cnf"
|
||||
|
||||
if use server ; then
|
||||
mycnf_src="my.cnf.distro-server"
|
||||
sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
|
||||
"${FILESDIR}/${mycnf_src}" \
|
||||
> "${TMPDIR}/my.cnf.ok" || die
|
||||
|
||||
if use prefix ; then
|
||||
sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \
|
||||
"${TMPDIR}/my.cnf.ok" || die
|
||||
fi
|
||||
|
||||
if use latin1 ; then
|
||||
sed -i \
|
||||
-e "/character-set/s|utf8|latin1|g" \
|
||||
"${TMPDIR}/my.cnf.ok" || die
|
||||
fi
|
||||
|
||||
eprefixify "${TMPDIR}/my.cnf.ok"
|
||||
|
||||
newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf
|
||||
fi
|
||||
|
||||
#Remove mytop if perl is not selected
|
||||
[[ -e "${ED}/usr/bin/mytop" ]] && ! use perl && rm -f "${ED}/usr/bin/mytop"
|
||||
}
|
||||
|
||||
pkg_config() {
|
||||
_getoptval() {
|
||||
local section="$1"
|
||||
local flag="--${2}="
|
||||
local extra_options="${3}"
|
||||
local cmd=(
|
||||
"${EROOT%/}/usr/bin/my_print_defaults"
|
||||
"${extra_options}"
|
||||
"${section}"
|
||||
)
|
||||
local results=( $(eval "${cmd[@]}" 2>/dev/null | sed -n "/^${flag}/s,${flag},,gp") )
|
||||
|
||||
if [[ ${#results[@]} -gt 0 ]] ; then
|
||||
# When option is set multiple times only return last value
|
||||
echo "${results[-1]}"
|
||||
fi
|
||||
}
|
||||
local old_MY_DATADIR="${MY_DATADIR}"
|
||||
local old_HOME="${HOME}"
|
||||
# my_print_defaults needs to read stuff in $HOME/.my.cnf
|
||||
export HOME=${EPREFIX}/root
|
||||
|
||||
# Make sure the vars are correctly initialized
|
||||
mysql_init_vars
|
||||
|
||||
[[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
|
||||
if [[ ! -x "${EROOT%/}/usr/sbin/mysqld" ]] ; then
|
||||
die "Minimal builds do NOT include the MySQL server"
|
||||
fi
|
||||
|
||||
if [[ ( -n "${MY_DATADIR}" ) && ( "${MY_DATADIR}" != "${old_MY_DATADIR}" ) ]] ; then
|
||||
local MY_DATADIR_s="${ROOT%/}/${MY_DATADIR}"
|
||||
MY_DATADIR_s="${MY_DATADIR_s%%/}"
|
||||
local old_MY_DATADIR_s="${ROOT%/}/${old_MY_DATADIR}"
|
||||
old_MY_DATADIR_s="${old_MY_DATADIR_s%%/}"
|
||||
|
||||
if [[ ( -d "${old_MY_DATADIR_s}" ) && ( "${old_MY_DATADIR_s}" != / ) ]] ; then
|
||||
if [[ -d "${MY_DATADIR_s}" ]] ; then
|
||||
ewarn "Both ${old_MY_DATADIR_s} and ${MY_DATADIR_s} exist"
|
||||
ewarn "Attempting to use ${MY_DATADIR_s} and preserving ${old_MY_DATADIR_s}"
|
||||
else
|
||||
elog "Moving MY_DATADIR from ${old_MY_DATADIR_s} to ${MY_DATADIR_s}"
|
||||
mv --strip-trailing-slashes -T "${old_MY_DATADIR_s}" "${MY_DATADIR_s}" \
|
||||
|| die "Moving MY_DATADIR failed"
|
||||
fi
|
||||
else
|
||||
ewarn "Previous MY_DATADIR (${old_MY_DATADIR_s}) does not exist"
|
||||
if [[ -d "${MY_DATADIR_s}" ]] ; then
|
||||
ewarn "Attempting to use ${MY_DATADIR_s}"
|
||||
else
|
||||
eerror "New MY_DATADIR (${MY_DATADIR_s}) does not exist"
|
||||
die "Configuration Failed! Please reinstall ${CATEGORY}/${PN}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
local pwd1="a"
|
||||
local pwd2="b"
|
||||
local maxtry=15
|
||||
|
||||
if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
|
||||
local tmp_mysqld_password_source=
|
||||
|
||||
for tmp_mysqld_password_source in mysql client ; do
|
||||
einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
|
||||
MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
|
||||
if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then
|
||||
if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then
|
||||
ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!"
|
||||
MYSQL_ROOT_PASSWORD=
|
||||
continue
|
||||
fi
|
||||
|
||||
einfo "Found password in '${tmp_mysqld_password_source}' section!"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Sometimes --show is required to display passwords in some implementations of my_print_defaults
|
||||
if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then
|
||||
MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
|
||||
fi
|
||||
|
||||
unset tmp_mysqld_password_source
|
||||
fi
|
||||
MYSQL_TMPDIR="$(_getoptval mysqld tmpdir)"
|
||||
# These are dir+prefix
|
||||
MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log)"
|
||||
MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
|
||||
MYSQL_LOG_BIN="$(_getoptval mysqld log-bin)"
|
||||
MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
|
||||
|
||||
if [[ ! -d "${EROOT%/}/$MYSQL_TMPDIR" ]] ; then
|
||||
einfo "Creating MySQL tmpdir $MYSQL_TMPDIR"
|
||||
install -d -m 770 -o mysql -g mysql "${EROOT%/}/$MYSQL_TMPDIR"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${EROOT%/}/$MYSQL_LOG_BIN" ]] ; then
|
||||
einfo "Creating MySQL log-bin directory $MYSQL_LOG_BIN"
|
||||
install -d -m 770 -o mysql -g mysql "${EROOT%/}/$MYSQL_LOG_BIN"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${EROOT%/}/$MYSQL_RELAY_LOG" ]] ; then
|
||||
einfo "Creating MySQL relay-log directory $MYSQL_RELAY_LOG"
|
||||
install -d -m 770 -o mysql -g mysql "${EROOT%/}/$MYSQL_RELAY_LOG"
|
||||
fi
|
||||
|
||||
if [[ -d "${ROOT%/}/${MY_DATADIR}/mysql" ]] ; then
|
||||
ewarn "You have already a MySQL database in place."
|
||||
ewarn "(${ROOT%/}/${MY_DATADIR}/*)"
|
||||
ewarn "Please rename or delete it if you wish to replace it."
|
||||
die "MySQL database already exists!"
|
||||
fi
|
||||
|
||||
# Bug #213475 - MySQL _will_ object strenously if your machine is named
|
||||
# localhost. Also causes weird failures.
|
||||
[[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
|
||||
|
||||
if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
|
||||
|
||||
einfo "Please provide a password for the mysql 'root' user now"
|
||||
einfo "or through the ${HOME}/.my.cnf file."
|
||||
ewarn "Avoid [\"'\\_%] characters in the password"
|
||||
read -rsp " >" pwd1 ; echo
|
||||
|
||||
einfo "Retype the password"
|
||||
read -rsp " >" pwd2 ; echo
|
||||
|
||||
if [[ "x$pwd1" != "x$pwd2" ]] ; then
|
||||
die "Passwords are not the same"
|
||||
fi
|
||||
MYSQL_ROOT_PASSWORD="${pwd1}"
|
||||
unset pwd1 pwd2
|
||||
fi
|
||||
|
||||
local options
|
||||
local sqltmp="$(emktemp "${EROOT%/}/tmp")"
|
||||
|
||||
# Fix bug 446200. Don't reference host my.cnf, needs to come first,
|
||||
# see http://bugs.mysql.com/bug.php?id=31312
|
||||
use prefix && options="${options} '--defaults-file=${MY_SYSCONFDIR}/my.cnf'"
|
||||
|
||||
# Figure out which options we need to disable to do the setup
|
||||
local helpfile="${TMPDIR%/}/mysqld-help"
|
||||
"${EROOT%/}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
|
||||
for opt in host-cache name-resolve networking slave-start \
|
||||
federated ssl log-bin relay-log slow-query-log external-locking \
|
||||
log-slave-updates \
|
||||
; do
|
||||
optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
|
||||
egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}"
|
||||
done
|
||||
|
||||
einfo "Creating the mysql database and setting proper permissions on it ..."
|
||||
|
||||
# Now that /var/run is a tmpfs mount point, we need to ensure it exists before using it
|
||||
PID_DIR="${EROOT%/}/var/run/mysqld"
|
||||
if [[ ! -d "${PID_DIR}" ]] ; then
|
||||
install -d -m 755 -o mysql -g mysql "${PID_DIR}" || die "Could not create pid directory"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${MY_DATADIR}" ]] ; then
|
||||
install -d -m 750 -o mysql -g mysql "${MY_DATADIR}" || die "Could not create data directory"
|
||||
fi
|
||||
|
||||
pushd "${TMPDIR}" &>/dev/null || die
|
||||
|
||||
# Filling timezones, see
|
||||
# http://dev.mysql.com/doc/mysql/en/time-zone-support.html
|
||||
echo "USE mysql;" >"${sqltmp}"
|
||||
"${EROOT%/}/usr/bin/mysql_tzinfo_to_sql" "${EROOT%/}/usr/share/zoneinfo" >> "${sqltmp}" 2>/dev/null
|
||||
chown mysql "${sqltmp}" || die
|
||||
|
||||
# --initialize-insecure will not set root password
|
||||
# --initialize would set a random one in the log which we don't need as we set it ourselves
|
||||
local cmd=( "${EROOT%/}/usr/sbin/mysqld" "--initialize-insecure" "--init-file='${sqltmp}'" )
|
||||
cmd+=( "--basedir=${EPREFIX}/usr" ${options} "--datadir=${ROOT%/}${MY_DATADIR}" "--tmpdir=${ROOT%/}${MYSQL_TMPDIR}" )
|
||||
einfo "Command: ${cmd[*]}"
|
||||
su -s /bin/sh -c "${cmd[*]}" mysql \
|
||||
>"${TMPDIR%/}"/mysql_install_db.log 2>&1
|
||||
if [[ $? -ne 0 ]] ; then
|
||||
grep -B5 -A999 -i "ERROR" "${TMPDIR%/}"/mysql_install_db.log 1>&2
|
||||
die "Failed to initialize mysqld. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR%/}/mysql_install_db.log"
|
||||
fi
|
||||
popd &>/dev/null || die
|
||||
[[ -f "${ROOT%/}/${MY_DATADIR}/mysql/user.frm" ]] \
|
||||
|| die "MySQL databases not installed"
|
||||
|
||||
use prefix || options="${options} --user=mysql"
|
||||
|
||||
local socket="${EROOT%/}/var/run/mysqld/mysqld${RANDOM}.sock"
|
||||
local pidfile="${EROOT%/}/var/run/mysqld/mysqld${RANDOM}.pid"
|
||||
local mysqld="${EROOT%/}/usr/sbin/mysqld \
|
||||
${options} \
|
||||
$(use prefix || echo --user=mysql) \
|
||||
--log-warnings=0 \
|
||||
--basedir=${EROOT%/}/usr \
|
||||
--datadir=${ROOT%/}/${MY_DATADIR} \
|
||||
--max_allowed_packet=8M \
|
||||
--net_buffer_length=16K \
|
||||
--socket=${socket} \
|
||||
--pid-file=${pidfile} \
|
||||
--tmpdir=${ROOT}/${MYSQL_TMPDIR}"
|
||||
#einfo "About to start mysqld: ${mysqld}"
|
||||
ebegin "Starting mysqld"
|
||||
einfo "Command ${mysqld}"
|
||||
${mysqld} &
|
||||
rc=$?
|
||||
while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
|
||||
maxtry=$((${maxtry}-1))
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
eend $rc
|
||||
|
||||
if ! [[ -S "${socket}" ]] ; then
|
||||
die "Completely failed to start up mysqld with: ${mysqld}"
|
||||
fi
|
||||
|
||||
ebegin "Setting root password"
|
||||
# Do this from memory, as we don't want clear text passwords in temp files
|
||||
local sql="ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '${MYSQL_ROOT_PASSWORD}'"
|
||||
"${EROOT%/}/usr/bin/mysql" \
|
||||
--no-defaults \
|
||||
"--socket=${socket}" \
|
||||
-hlocalhost \
|
||||
-e "${sql}"
|
||||
eend $?
|
||||
|
||||
# Stop the server and cleanup
|
||||
einfo "Stopping the server ..."
|
||||
kill $(< "${pidfile}" )
|
||||
rm -f "${sqltmp}"
|
||||
wait %1
|
||||
einfo "Done"
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -1,2 +1 @@
|
||||
DIST asm-ASM_9_1.tar.gz 1614561 BLAKE2B f19efad14a7bce5dd7311682a2e6c8625816d1b97ed390652681f14d6d341f559fee152b70474566752a80ff2fcc7cb83fea91f7382f898a0725beba5c9c6ada SHA512 84eb7bc0c7119d3ab0ddd9f3bad640662d96235d365da5bd85031abbdfed371c9742a01817ddd022fd4fb447441f423e4f5126d12dcadf12fa9669cd86b34f18
|
||||
DIST asm-ASM_9_2.tar.gz 1614845 BLAKE2B 3fc0fb45d0583b06371452d2df166ce53f81a114a386eda96fe3b0c748beffdd42791d59ddfb4c9ad368f73728f3382855a7336324b013e937c20a4f31cea44b SHA512 a0077e3c1ebbd8a841d3556be4363383951244ba87670af45a8565e14ad3ac94ab89a23b934b3609190e1b16dd9663798c01d1c859eddb2e825c41908c2e2afd
|
||||
|
@ -1,28 +0,0 @@
|
||||
# Copyright 2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
JAVA_PKG_IUSE="doc source"
|
||||
MAVEN_ID="org.ow2.asm:asm-analysis:9.1"
|
||||
|
||||
inherit java-pkg-2 java-pkg-simple
|
||||
|
||||
DESCRIPTION="Bytecode manipulation framework for Java (Static code analysis API)"
|
||||
HOMEPAGE="http://asm.ow2.org"
|
||||
MY_P="ASM_${PV//./_}"
|
||||
SRC_URI="https://gitlab.ow2.org/asm/asm/-/archive/${MY_P}/asm-${MY_P}.tar.gz"
|
||||
LICENSE="BSD"
|
||||
SLOT=`ver_cut 1`
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86 ~x64-macos"
|
||||
RESTRICT="test"
|
||||
|
||||
CDEPEND="dev-java/asm-tree:${SLOT}"
|
||||
DEPEND=">=virtual/jdk-1.8
|
||||
${CDEPEND}
|
||||
"
|
||||
RDEPEND=">=virtual/jre-1.8
|
||||
${CDEPEND}
|
||||
"
|
||||
|
||||
JAVA_GENTOO_CLASSPATH="asm-${SLOT} asm-tree-${SLOT}"
|
||||
JAVA_SRC_DIR="asm-${MY_P}/${PN}/src/main/java"
|
@ -1,2 +1 @@
|
||||
DIST asm-ASM_9_1.tar.gz 1614561 BLAKE2B f19efad14a7bce5dd7311682a2e6c8625816d1b97ed390652681f14d6d341f559fee152b70474566752a80ff2fcc7cb83fea91f7382f898a0725beba5c9c6ada SHA512 84eb7bc0c7119d3ab0ddd9f3bad640662d96235d365da5bd85031abbdfed371c9742a01817ddd022fd4fb447441f423e4f5126d12dcadf12fa9669cd86b34f18
|
||||
DIST asm-ASM_9_2.tar.gz 1614845 BLAKE2B 3fc0fb45d0583b06371452d2df166ce53f81a114a386eda96fe3b0c748beffdd42791d59ddfb4c9ad368f73728f3382855a7336324b013e937c20a4f31cea44b SHA512 a0077e3c1ebbd8a841d3556be4363383951244ba87670af45a8565e14ad3ac94ab89a23b934b3609190e1b16dd9663798c01d1c859eddb2e825c41908c2e2afd
|
||||
|
@ -1,28 +0,0 @@
|
||||
# Copyright 2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
JAVA_PKG_IUSE="doc source"
|
||||
MAVEN_ID="org.ow2.asm:asm-commons:9.1"
|
||||
|
||||
inherit java-pkg-2 java-pkg-simple
|
||||
|
||||
DESCRIPTION="Bytecode manipulation framework for Java (Common class adaptors)"
|
||||
HOMEPAGE="http://asm.ow2.org"
|
||||
MY_P="ASM_${PV//./_}"
|
||||
SRC_URI="https://gitlab.ow2.org/asm/asm/-/archive/${MY_P}/asm-${MY_P}.tar.gz"
|
||||
LICENSE="BSD"
|
||||
SLOT=`ver_cut 1`
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86 ~x64-macos"
|
||||
RESTRICT="test"
|
||||
|
||||
CDEPEND="dev-java/asm-analysis:${SLOT} dev-java/asm-tree:${SLOT} dev-java/asm:${SLOT}"
|
||||
DEPEND=">=virtual/jdk-1.8
|
||||
${CDEPEND}
|
||||
"
|
||||
RDEPEND=">=virtual/jre-1.8
|
||||
${CDEPEND}
|
||||
"
|
||||
|
||||
JAVA_GENTOO_CLASSPATH="asm-${SLOT} asm-tree-${SLOT} asm-analysis-${SLOT}"
|
||||
JAVA_SRC_DIR="asm-${MY_P}/${PN}/src/main/java"
|
@ -1,2 +1 @@
|
||||
DIST asm-ASM_9_1.tar.gz 1614561 BLAKE2B f19efad14a7bce5dd7311682a2e6c8625816d1b97ed390652681f14d6d341f559fee152b70474566752a80ff2fcc7cb83fea91f7382f898a0725beba5c9c6ada SHA512 84eb7bc0c7119d3ab0ddd9f3bad640662d96235d365da5bd85031abbdfed371c9742a01817ddd022fd4fb447441f423e4f5126d12dcadf12fa9669cd86b34f18
|
||||
DIST asm-ASM_9_2.tar.gz 1614845 BLAKE2B 3fc0fb45d0583b06371452d2df166ce53f81a114a386eda96fe3b0c748beffdd42791d59ddfb4c9ad368f73728f3382855a7336324b013e937c20a4f31cea44b SHA512 a0077e3c1ebbd8a841d3556be4363383951244ba87670af45a8565e14ad3ac94ab89a23b934b3609190e1b16dd9663798c01d1c859eddb2e825c41908c2e2afd
|
||||
|
@ -1,28 +0,0 @@
|
||||
# Copyright 2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
JAVA_PKG_IUSE="doc source"
|
||||
MAVEN_ID="org.ow2.asm:asm-tree:9.1"
|
||||
|
||||
inherit java-pkg-2 java-pkg-simple
|
||||
|
||||
DESCRIPTION="Bytecode manipulation framework for Java (Tree API)"
|
||||
HOMEPAGE="http://asm.ow2.org"
|
||||
MY_P="ASM_${PV//./_}"
|
||||
SRC_URI="https://gitlab.ow2.org/asm/asm/-/archive/${MY_P}/asm-${MY_P}.tar.gz"
|
||||
LICENSE="BSD"
|
||||
SLOT=`ver_cut 1`
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86 ~x64-macos"
|
||||
RESTRICT="test"
|
||||
|
||||
CDEPEND="dev-java/asm:${SLOT}"
|
||||
DEPEND=">=virtual/jdk-1.8
|
||||
${CDEPEND}
|
||||
"
|
||||
RDEPEND=">=virtual/jre-1.8
|
||||
${CDEPEND}
|
||||
"
|
||||
|
||||
JAVA_GENTOO_CLASSPATH="asm-${SLOT}"
|
||||
JAVA_SRC_DIR="asm-${MY_P}/${PN}/src/main/java"
|
@ -1,2 +1 @@
|
||||
DIST asm-ASM_9_1.tar.gz 1614561 BLAKE2B f19efad14a7bce5dd7311682a2e6c8625816d1b97ed390652681f14d6d341f559fee152b70474566752a80ff2fcc7cb83fea91f7382f898a0725beba5c9c6ada SHA512 84eb7bc0c7119d3ab0ddd9f3bad640662d96235d365da5bd85031abbdfed371c9742a01817ddd022fd4fb447441f423e4f5126d12dcadf12fa9669cd86b34f18
|
||||
DIST asm-ASM_9_2.tar.gz 1614845 BLAKE2B 3fc0fb45d0583b06371452d2df166ce53f81a114a386eda96fe3b0c748beffdd42791d59ddfb4c9ad368f73728f3382855a7336324b013e937c20a4f31cea44b SHA512 a0077e3c1ebbd8a841d3556be4363383951244ba87670af45a8565e14ad3ac94ab89a23b934b3609190e1b16dd9663798c01d1c859eddb2e825c41908c2e2afd
|
||||
|
@ -1,28 +0,0 @@
|
||||
# Copyright 2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
JAVA_PKG_IUSE="doc source"
|
||||
MAVEN_ID="org.ow2.asm:asm-util:9.1"
|
||||
|
||||
inherit java-pkg-2 java-pkg-simple
|
||||
|
||||
DESCRIPTION="Bytecode manipulation framework for Java (Utilities)"
|
||||
HOMEPAGE="http://asm.ow2.org"
|
||||
MY_P="ASM_${PV//./_}"
|
||||
SRC_URI="https://gitlab.ow2.org/asm/asm/-/archive/${MY_P}/asm-${MY_P}.tar.gz"
|
||||
LICENSE="BSD"
|
||||
SLOT=`ver_cut 1`
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86 ~x64-macos"
|
||||
RESTRICT="test"
|
||||
|
||||
CDEPEND="dev-java/asm-analysis:${SLOT} dev-java/asm-tree:${SLOT} dev-java/asm:${SLOT}"
|
||||
DEPEND=">=virtual/jdk-1.8
|
||||
${CDEPEND}
|
||||
"
|
||||
RDEPEND=">=virtual/jre-1.8
|
||||
${CDEPEND}
|
||||
"
|
||||
|
||||
JAVA_GENTOO_CLASSPATH="asm-${SLOT} asm-tree-${SLOT} asm-analysis-${SLOT}"
|
||||
JAVA_SRC_DIR="asm-${MY_P}/${PN}/src/main/java"
|
@ -1,4 +1,3 @@
|
||||
DIST asm-ASM_4_0.tar.gz 14789505 BLAKE2B 62b49d904f1ef2d32379f4f5d644cdc274b30f292ee4f64ad02be7d2226a90965f7b12421700e79dcd1e67a46e6a8543d5e353486a1577313616688ddc57f3b3 SHA512 e654623a882d9fe414e71861183f64840f7b6629231864872497d4bf9274e8ac05e05496593fa54a90d8c6a2e6d701b9a6f3876df611637f7d2079c5519def1e
|
||||
DIST asm-ASM_5_1.tar.gz 16258842 BLAKE2B bd7d717cdfa6ff652c96b88d7b7d33fae614acba390c256ea72ecfbb3edc48382621a076dedf9b8728fdb1d0961cda943f165f99de840824b766c9af45a49339 SHA512 4bb32ce6eba267928261238f8f13cd2365ab374780039ad1df31698cd791645a370aca58c44270ec05f8377d6aa0a0d00f9f3890961cbd32a10cbd2e79e2d518
|
||||
DIST asm-ASM_9_1.tar.gz 1614561 BLAKE2B f19efad14a7bce5dd7311682a2e6c8625816d1b97ed390652681f14d6d341f559fee152b70474566752a80ff2fcc7cb83fea91f7382f898a0725beba5c9c6ada SHA512 84eb7bc0c7119d3ab0ddd9f3bad640662d96235d365da5bd85031abbdfed371c9742a01817ddd022fd4fb447441f423e4f5126d12dcadf12fa9669cd86b34f18
|
||||
DIST asm-ASM_9_2.tar.gz 1614845 BLAKE2B 3fc0fb45d0583b06371452d2df166ce53f81a114a386eda96fe3b0c748beffdd42791d59ddfb4c9ad368f73728f3382855a7336324b013e937c20a4f31cea44b SHA512 a0077e3c1ebbd8a841d3556be4363383951244ba87670af45a8565e14ad3ac94ab89a23b934b3609190e1b16dd9663798c01d1c859eddb2e825c41908c2e2afd
|
||||
|
@ -1,23 +0,0 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
JAVA_PKG_IUSE="doc source"
|
||||
MAVEN_ID="org.ow2.asm:asm:9.1"
|
||||
|
||||
inherit java-pkg-2 java-pkg-simple
|
||||
|
||||
DESCRIPTION="Bytecode manipulation framework for Java"
|
||||
HOMEPAGE="https://asm.ow2.io"
|
||||
MY_P="ASM_${PV//./_}"
|
||||
SRC_URI="https://gitlab.ow2.org/asm/asm/-/archive/${MY_P}/asm-${MY_P}.tar.gz"
|
||||
LICENSE="BSD"
|
||||
SLOT="9"
|
||||
KEYWORDS="amd64 ~arm arm64 ppc64 x86 ~x64-macos"
|
||||
RESTRICT="test"
|
||||
|
||||
CDEPEND=""
|
||||
DEPEND=">=virtual/jdk-1.8"
|
||||
RDEPEND=">=virtual/jre-1.8"
|
||||
|
||||
JAVA_SRC_DIR="asm-${MY_P}/${PN}/src/main/java"
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,49 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
inherit gnome.org meson virtualx
|
||||
|
||||
DESCRIPTION="Javascript bindings for GNOME"
|
||||
HOMEPAGE="https://wiki.gnome.org/Projects/Gjs"
|
||||
|
||||
LICENSE="MIT || ( MPL-1.1 LGPL-2+ GPL-2+ )"
|
||||
SLOT="0"
|
||||
IUSE="+cairo examples gtk readline sysprof test"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
RDEPEND="
|
||||
>=dev-libs/glib-2.66.0
|
||||
dev-libs/libffi:=
|
||||
>=dev-libs/gobject-introspection-1.66.1:=
|
||||
dev-lang/spidermonkey:78
|
||||
cairo? ( x11-libs/cairo[X,svg] )
|
||||
readline? ( sys-libs/readline:0= )
|
||||
"
|
||||
DEPEND="${RDEPEND}
|
||||
sysprof? ( >=dev-util/sysprof-capture-3.40.1:4 )
|
||||
test? ( sys-apps/dbus
|
||||
>=x11-libs/gtk+-3.20:3[introspection] )
|
||||
"
|
||||
BDEPEND="
|
||||
virtual/pkgconfig
|
||||
"
|
||||
|
||||
src_configure() {
|
||||
# FIXME: add systemtap/dtrace support, like in glib:2
|
||||
local emesonargs=(
|
||||
$(meson_feature cairo)
|
||||
$(meson_feature readline)
|
||||
$(meson_feature sysprof profiler)
|
||||
-Dinstalled_tests=false
|
||||
$(meson_use !test skip_dbus_tests)
|
||||
$(meson_use !test skip_gtk_tests)
|
||||
)
|
||||
meson_src_configure
|
||||
}
|
||||
|
||||
src_test() {
|
||||
virtx meson_src_test
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
|
||||
PYTHON_COMPAT=( python3_{8..10} )
|
||||
|
||||
inherit python-any-r1 toolchain-funcs
|
||||
|
||||
DESCRIPTION="Apache Kafka C/C++ client library"
|
||||
HOMEPAGE="https://github.com/edenhill/librdkafka"
|
||||
|
||||
if [[ ${PV} == "9999" ]]; then
|
||||
EGIT_REPO_URI="https://github.com/edenhill/${PN}.git"
|
||||
|
||||
inherit git-r3
|
||||
else
|
||||
SRC_URI="https://github.com/edenhill/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
|
||||
fi
|
||||
|
||||
LICENSE="BSD-2"
|
||||
|
||||
# subslot = soname version
|
||||
SLOT="0/1"
|
||||
|
||||
IUSE="lz4 sasl ssl static-libs zstd"
|
||||
|
||||
LIB_DEPEND="
|
||||
lz4? ( app-arch/lz4:=[static-libs(+)] )
|
||||
sasl? ( dev-libs/cyrus-sasl:=[static-libs(+)] )
|
||||
ssl? ( dev-libs/openssl:0=[static-libs(+)] )
|
||||
zstd? ( app-arch/zstd:=[static-libs(+)] )
|
||||
sys-libs/zlib:=[static-libs(+)]
|
||||
"
|
||||
|
||||
BDEPEND="
|
||||
virtual/pkgconfig
|
||||
${PYTHON_DEPS}
|
||||
"
|
||||
|
||||
RDEPEND="!static-libs? ( ${LIB_DEPEND//\[static-libs(+)]} )"
|
||||
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
static-libs? ( ${LIB_DEPEND} )
|
||||
"
|
||||
|
||||
pkg_setup() {
|
||||
python-any-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
if [[ ${PV} != "9999" ]]; then
|
||||
sed -i \
|
||||
-e "s/^\(export RDKAFKA_GITVER=\).*/\1\"${PV}@release\"/" \
|
||||
tests/run-test.sh || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
tc-export AR CC CXX LD NM OBJDUMP PKG_CONFIG STRIP
|
||||
|
||||
local myeconf=(
|
||||
--no-cache
|
||||
--no-download
|
||||
--disable-debug-symbols
|
||||
$(use_enable lz4)
|
||||
$(use_enable sasl)
|
||||
$(usex static-libs '--enable-static' '')
|
||||
$(use_enable ssl)
|
||||
$(use_enable zstd)
|
||||
)
|
||||
|
||||
econf ${myeconf[@]}
|
||||
}
|
||||
|
||||
src_test() {
|
||||
# Simulate CI so we do not fail when tests are running longer than expected,
|
||||
# https://github.com/edenhill/librdkafka/blob/v1.6.1/tests/0062-stats_event.c#L101-L116
|
||||
local -x CI=true
|
||||
|
||||
emake -C tests run_local
|
||||
}
|
||||
|
||||
src_install() {
|
||||
emake -j1 \
|
||||
DESTDIR="${D}" \
|
||||
docdir="/usr/share/doc/${PF}" \
|
||||
install
|
||||
|
||||
if ! use static-libs; then
|
||||
find "${ED}" -type f \( -name "*.a" -o -name "*.la" \) -delete || die
|
||||
fi
|
||||
}
|
@ -0,0 +1 @@
|
||||
DIST pocl-1.7.tar.gz 1577676 BLAKE2B 50d4f50236b1c81f319b5559ca2b1df529209f07899acf51c487820d97cc6766c5130a55afca910517c7db63d8041ac8306062880c3a821cbc1bf9108bf13d65 SHA512 23bb82b25a222186c001b2ed413f26253e1e0e16518e98c95173f51491e15d107e6ab1b334ffd490b41199743267d9ad64882a22fea327e17ec9604f9847fc38
|
@ -0,0 +1,20 @@
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -125,7 +125,7 @@
|
||||
endif()
|
||||
|
||||
# for libpocl.so
|
||||
-set(POCL_INSTALL_PUBLIC_LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" CACHE PATH "POCL public libdir")
|
||||
+set(POCL_INSTALL_PUBLIC_LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/OpenCL/vendors/pocl" CACHE PATH "POCL public libdir")
|
||||
|
||||
# for llvmopencl.so
|
||||
set(POCL_INSTALL_PRIVATE_LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pocl" CACHE PATH "POCL private libdir")
|
||||
@@ -134,7 +134,7 @@
|
||||
if(UNIX AND NOT CMAKE_CROSSCOMPILING AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(POCL_INSTALL_ICD_VENDORDIR "/etc/OpenCL/vendors" CACHE PATH "POCL ICD file destination")
|
||||
else()
|
||||
- set(POCL_INSTALL_ICD_VENDORDIR "${CMAKE_INSTALL_PREFIX}/etc/OpenCL/vendors" CACHE PATH "POCL ICD file destination")
|
||||
+ set(POCL_INSTALL_ICD_VENDORDIR "${SYSCONFDIR}/etc/OpenCL/vendors" CACHE PATH "POCL ICD file destination")
|
||||
endif()
|
||||
|
||||
# for kernel-<target>.bc
|
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pkgmetadata>
|
||||
<maintainer type="person">
|
||||
<email>sam@gentoo.org</email>
|
||||
<name>Sam James</name>
|
||||
</maintainer>
|
||||
<use>
|
||||
<flag name="accel">Enable the generic hardware accelerator device driver</flag>
|
||||
<flag name="cl20">Enable reporting OpenCL 2.0 for the CPU device</flag>
|
||||
<flag name="conformance">Ensures that certain build options which would result in non-conformant pocl build stay disabled. Note that this does not quarantee a fully conformant build of pocl.</flag>
|
||||
<flag name="cuda">Enable the CUDA backend for NVIDIA GPUs</flag>
|
||||
<flag name="float-conversion">When enabled, OpenCL printf() call's f/e/g formatters are handled by pocl. When disabled, these are handled by system C library.</flag>
|
||||
<flag name="hardening">Enable hardening against various attacks. May worsen performance</flag>
|
||||
<!--<flag name="hsa">Enable the HSA base profile runtime device driver</flag>-->
|
||||
<flag name="hwloc">Enable hwloc support</flag>
|
||||
<flag name="memmanager">Enables custom memory manager. Except for special circumstances, this should be disabled</flag>
|
||||
</use>
|
||||
<upstream>
|
||||
<remote-id type="github">pocl/pocl</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
@ -0,0 +1,120 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
DOCS_AUTODOC=0
|
||||
DOCS_BUILDER="sphinx"
|
||||
DOCS_DIR="doc/sphinx/source"
|
||||
PYTHON_COMPAT=( python3_{8..10} pypy3 )
|
||||
|
||||
inherit cmake llvm python-any-r1 docs
|
||||
|
||||
LLVM_MAX_SLOT=12
|
||||
|
||||
DESCRIPTION="Portable Computing Language (an implementation of OpenCL)"
|
||||
HOMEPAGE="http://portablecl.org https://github.com/pocl/pocl"
|
||||
SRC_URI="https://github.com/pocl/pocl/archive/v${PV}.tar.gz -> ${P}.tar.gz"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64"
|
||||
IUSE="accel cl20 +conformance cuda debug examples float-conversion hardening +hwloc memmanager test" #hsa tce
|
||||
|
||||
RESTRICT="!test? ( test ) mirror"
|
||||
|
||||
# TODO: add dependencies for cuda
|
||||
# Note: No := on LLVM because it pulls in Clang
|
||||
# see llvm.eclass for why
|
||||
CLANG_DEPS="!cuda? ( <sys-devel/clang-$((${LLVM_MAX_SLOT} + 1)):= )
|
||||
cuda? ( <sys-devel/clang-$((${LLVM_MAX_SLOT} + 1)):=[llvm_targets_NVPTX] )"
|
||||
RDEPEND="
|
||||
dev-libs/libltdl
|
||||
<sys-devel/llvm-$((${LLVM_MAX_SLOT} + 1)):*
|
||||
virtual/opencl
|
||||
|
||||
${CLANG_DEPS}
|
||||
debug? ( dev-util/lttng-ust )
|
||||
hwloc? ( sys-apps/hwloc[cuda?] )
|
||||
"
|
||||
DEPEND="${RDEPEND}"
|
||||
BDEPEND="${CLANG_DEPS}
|
||||
virtual/pkgconfig
|
||||
doc? (
|
||||
$(python_gen_any_dep '<dev-python/markupsafe-2.0[${PYTHON_USEDEP}]')
|
||||
)"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/vendor_opencl_libs_location.patch"
|
||||
)
|
||||
|
||||
python_check_deps() {
|
||||
has_version -b "<dev-python/markupsafe-2.0[${PYTHON_USEDEP}]"
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
local usedep=$(usex cuda "[llvm_targets_NVPTX]" '')
|
||||
|
||||
# Clang is used at both build time (executed) and runtime
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}${usedep}" && \
|
||||
has_version -r "sys-devel/clang:${LLVM_SLOT}${usedep}" && \
|
||||
has_version -b "sys-devel/clang:${LLVM_SLOT}${usedep}"
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
use doc && python-any-r1_pkg_setup
|
||||
|
||||
llvm_pkg_setup
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local mycmakeargs=(
|
||||
-DBUILD_SHARED_LIBS=ON
|
||||
-DENABLE_HSA=OFF
|
||||
-DENABLE_ICD=ON
|
||||
-DENABLE_POCL_BUILDING=ON
|
||||
-DKERNELLIB_HOST_CPU_VARIANTS=native
|
||||
-DPOCL_ICD_ABSOLUTE_PATH=ON
|
||||
-DSTATIC_LLVM=OFF
|
||||
-DWITH_LLVM_CONFIG=$(get_llvm_prefix -d "${LLVM_MAX_SLOT}")/bin/llvm-config
|
||||
|
||||
-DENABLE_ACCEL_DEVICE=$(usex accel)
|
||||
-DENABLE_CONFORMANCE=$(usex conformance)
|
||||
-DENABLE_CUDA=$(usex cuda)
|
||||
-DENABLE_HOST_CPU_DEVICE_CL20=$(usex cl20)
|
||||
-DENABLE_HWLOC=$(usex hwloc)
|
||||
-DENABLE_POCL_FLOAT_CONVERSION=$(usex float-conversion)
|
||||
-DHARDENING_ENABLE=$(usex hardening)
|
||||
-DPOCL_DEBUG_MESSAGES=$(usex debug)
|
||||
-DUSE_POCL_MEMMANAGER=$(usex memmanager)
|
||||
)
|
||||
|
||||
cmake_src_configure
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
cmake_src_compile
|
||||
docs_compile
|
||||
}
|
||||
|
||||
src_test() {
|
||||
export POCL_BUILDING=1
|
||||
export CTEST_OUTPUT_ON_FAILURE=1
|
||||
cmake_src_test
|
||||
}
|
||||
|
||||
src_install() {
|
||||
cmake_src_install
|
||||
|
||||
dodoc CREDITS README CHANGES
|
||||
|
||||
if use doc; then
|
||||
dodoc -r _build/html
|
||||
docompress -x /usr/share/doc/${P}/html
|
||||
fi
|
||||
|
||||
if use examples; then
|
||||
dodoc -r examples
|
||||
docompress -x /usr/share/doc/${P}/examples
|
||||
fi
|
||||
}
|
@ -0,0 +1 @@
|
||||
DIST yascreen-1.86.tar.xz 26104 BLAKE2B 4716c1eb2a41468fbb0ecbcda7c34a031d97f5292632501ce4c9740de071f8c39e1c7d9f0f8f6c5fbdccaef5908e3751b25ebc7e0c6dab3dff63b2a99f12eefa SHA512 dce785c477395b0c78c5054682dd8ccfbe3243ede966300c3e95e25fac6320f820aa1f0a3b2ce37544b3b45adb94eccccaf32187b145cd2bba43367e166b9e7c
|
@ -0,0 +1,22 @@
|
||||
From: Boian Bonev <bbonev@ipacct.com>
|
||||
Date: Tue, 21 Sep 2021 03:36:23 +0300
|
||||
Subject: [PATCH] fix problems with install
|
||||
|
||||
--- a/Makefile.main
|
||||
+++ b/Makefile.main
|
||||
@@ -108,12 +108,12 @@ yascreen.pc: yascreen.pc.in
|
||||
|
||||
install: libyascreen.a libyascreen.so yascreen.pc yascreen.3
|
||||
$(INSTALL) -Ds -m 644 -t $(DESTDIR)$(PREFIX)$(LIBDIR) libyascreen.a
|
||||
- $(INSTALL) -Ds -m 644 -t $(DESTDIR)$(PREFIX)$(LIBDIR)/pkgconfig/ yascreen.pc
|
||||
+ $(INSTALL) -D -m 644 -t $(DESTDIR)$(PREFIX)$(LIBDIR)/pkgconfig/ yascreen.pc
|
||||
ln -fs libyascreen.so.$(SOVERF) $(DESTDIR)$(PREFIX)$(LIBDIR)libyascreen.so.$(SOVERM)
|
||||
ln -fs libyascreen.so.$(SOVERM) $(DESTDIR)$(PREFIX)$(LIBDIR)libyascreen.so
|
||||
$(INSTALL) -Ds -m 644 -s -t $(DESTDIR)$(PREFIX)$(LIBDIR) libyascreen.so.$(SOVERF)
|
||||
- $(INSTALL) -Ds -m 644 -t $(DESTDIR)$(PREFIX)$(INCDIR) yascreen.h
|
||||
- $(INSTALL) -TDs -m 0644 yascreen.3 $(DESTDIR)$(PREFIX)/share/man/man3/yascreen.3
|
||||
+ $(INSTALL) -D -m 644 -t $(DESTDIR)$(PREFIX)$(INCDIR) yascreen.h
|
||||
+ $(INSTALL) -TD -m 0644 yascreen.3 $(DESTDIR)$(PREFIX)/share/man/man3/yascreen.3
|
||||
|
||||
clean:
|
||||
rm -f yastest yastest.shared yastest.o yascreen.o libyascreen.a libyascreen.so libyascreen.so.$(SOVERM) libyascreen.so.$(SOVERF) yascreen.pc
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="person">
|
||||
<email>arthurzam@gentoo.org</email>
|
||||
<name>Arthur Zamarin</name>
|
||||
</maintainer>
|
||||
<upstream>
|
||||
<remote-id type="github">bbonev/yascreen</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
@ -0,0 +1,36 @@
|
||||
# Copyright 2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit toolchain-funcs
|
||||
|
||||
DESCRIPTION="Yet Another Screen Library - curses replacement"
|
||||
HOMEPAGE="https://github.com/bbonev/yascreen"
|
||||
SRC_URI="https://github.com/bbonev/yascreen/releases/download/v${PV}/${P}.tar.xz"
|
||||
|
||||
LICENSE="LGPL-3+"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${P}-fix-install.patch"
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
sed -e '/INSTALL/s/-Ds/-D/' \
|
||||
-e '/INSTALL/s/-s//' \
|
||||
-e "s:/usr/local:${EPREFIX}/usr:" \
|
||||
-e "s:/lib/:/$(get_libdir)/:" \
|
||||
-i Makefile.main || die
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
emake CC="$(tc-getCC)" AR="$(tc-getAR)" RANLIB="$(tc-getRANLIB)" NO_FLTO=1
|
||||
}
|
||||
|
||||
src_install() {
|
||||
default
|
||||
find "${D}" -name '*.a' -delete || die
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
DIST_AUTHOR=ISHIGAKI
|
||||
DIST_VERSION=0.11
|
||||
inherit perl-module
|
||||
|
||||
DESCRIPTION="simple CPAN package extractor"
|
||||
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64"
|
||||
|
||||
RDEPEND="
|
||||
>=virtual/perl-Archive-Tar-1.760.0
|
||||
dev-perl/Archive-Zip
|
||||
virtual/perl-File-Spec
|
||||
>=virtual/perl-File-Temp-0.190.0
|
||||
"
|
||||
BDEPEND="${RDEPEND}
|
||||
virtual/perl-ExtUtils-MakeMaker
|
||||
>=dev-perl/ExtUtils-MakeMaker-CPANfile-0.70.0
|
||||
test? (
|
||||
>=virtual/perl-Test-Simple-0.820.0
|
||||
>=dev-perl/Test-UseAllModules-0.100.0
|
||||
)
|
||||
"
|
@ -0,0 +1 @@
|
||||
DIST Archive-Any-Lite-0.11.tar.gz 28998 BLAKE2B 6e86bff29b311c538c72f58dc3bca6e70bb8c31066a6649e5f1488bf73fca376c8387b8f78e7b98c11103d07147744fe5082a7843065123ccab6d92ae16370a6 SHA512 40db0122a359d295459b3c146cb1a8b45cadc6bd678c05d9cf32f906e8b99a692c59efe5ca18a2ce05d0ab4b741affa8e7158b7f9cebc4232c4126970c93a890
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<email>perl@gentoo.org</email>
|
||||
<name>Gentoo Perl Project</name>
|
||||
</maintainer>
|
||||
</pkgmetadata>
|
@ -0,0 +1,21 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
DIST_AUTHOR=NEILB
|
||||
DIST_VERSION=0.09
|
||||
inherit perl-module
|
||||
|
||||
DESCRIPTION="Find the differences between two arrays"
|
||||
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64"
|
||||
|
||||
RDEPEND="
|
||||
>=dev-perl/Algorithm-Diff-1.190.0
|
||||
dev-perl/Class-Accessor
|
||||
"
|
||||
BDEPEND="${RDEPEND}
|
||||
virtual/perl-ExtUtils-MakeMaker
|
||||
"
|
@ -0,0 +1 @@
|
||||
DIST Array-Diff-0.09.tar.gz 11335 BLAKE2B 20be05a78f02444c5a0833d0aca6d164f8d9fed56b3fa8102aed2928f9cc95a6ad4430edd6fd7d9e0b92df105e8a215451eb931f053659e2cf3377fb3ac0463b SHA512 acfa2e47f39f2af5a04b59c3c708349e603295cf12c699ecbd9184c975e2cdb5edacbafc15c61c976c73ce459e3d2d5ea99fc50c2e4e2e56132dd1c3794e5e6c
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<email>perl@gentoo.org</email>
|
||||
<name>Gentoo Perl Project</name>
|
||||
</maintainer>
|
||||
</pkgmetadata>
|
@ -0,0 +1,19 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
DIST_AUTHOR=SNKWATT
|
||||
DIST_VERSION=0.01
|
||||
inherit perl-module
|
||||
|
||||
DESCRIPTION="Simple detection of binary versus text in strings"
|
||||
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64"
|
||||
|
||||
RDEPEND="
|
||||
"
|
||||
BDEPEND="${RDEPEND}
|
||||
virtual/perl-ExtUtils-MakeMaker
|
||||
"
|
@ -0,0 +1 @@
|
||||
DIST Data-Binary-0.01.tar.gz 3419 BLAKE2B ad58c7cb4a7f6206737f25ad7fb994d60eed2a27fd7dab14bc694621d95683d0051e89201b07c58b2702236c0385637d4068cd6ac06efdab755a4bf303f8d58a SHA512 fee212031713280218ad01aba596bb6827ee10c2cc258f18ddf02b2e5e3b5dbf40f80d8ad92f29e5acb390656fd1c7d752e783401842b45cb75ddd9ff6fd975d
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<email>perl@gentoo.org</email>
|
||||
<name>Gentoo Perl Project</name>
|
||||
</maintainer>
|
||||
</pkgmetadata>
|
@ -0,0 +1,21 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
DIST_AUTHOR=ISHIGAKI
|
||||
DIST_VERSION=0.09
|
||||
inherit perl-module
|
||||
|
||||
DESCRIPTION="cpanfile support for EUMM"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64"
|
||||
|
||||
RDEPEND="
|
||||
>=virtual/perl-ExtUtils-MakeMaker-6.170.0
|
||||
dev-perl/Module-CPANfile
|
||||
>=virtual/perl-version-0.760.0
|
||||
"
|
||||
BDEPEND="${RDEPEND}
|
||||
virtual/perl-ExtUtils-MakeMaker
|
||||
"
|
@ -0,0 +1 @@
|
||||
DIST ExtUtils-MakeMaker-CPANfile-0.09.tar.gz 11720 BLAKE2B 62830246bcb67286a74ac5339b1997ae24c5c8e7292c18b503a3c099a85ddc75fe844e02c4b12f522418c5a73a8e82513564a22336705c0477a31103467e2fa9 SHA512 ff5b9d81ce5d8204fcd84ee88a2b5d8fe037cf5cae7a7291d7ccdc411301979093ae66d90203c6c16fddad5173a663f20fef0504ae684a8e522ef4b21c9edc13
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue