Merge pull request #364 from flatcar/krnowak/dev-util-update

Development utilities update
This commit is contained in:
Krzesimir Nowak 2022-10-05 11:32:39 +02:00 committed by GitHub
commit ce9e0fd224
91 changed files with 2008 additions and 2490 deletions

View File

@ -23,24 +23,56 @@ dev-libs/libxml2
dev-libs/libxslt dev-libs/libxslt
dev-libs/oniguruma dev-libs/oniguruma
dev-python/fasteners
dev-util/boost-build dev-util/boost-build
dev-util/bpftool
dev-util/catalyst
dev-util/checkbashisms
dev-util/cmake
dev-util/cmocka
dev-util/desktop-file-utils
dev-util/gdbus-codegen dev-util/gdbus-codegen
dev-util/glib-utils dev-util/glib-utils
dev-util/gperf
dev-util/gtk-doc-am
dev-util/meson
dev-util/meson-format-array
dev-util/ninja
dev-util/pahole
dev-util/patchelf
dev-util/patchutils
dev-util/perf
dev-util/pkgconf dev-util/pkgconf
dev-util/re2c
dev-util/strace
dev-vcs/git dev-vcs/git
eclass/alternatives.eclass eclass/alternatives.eclass
eclass/autotools.eclass eclass/autotools.eclass
# Still has some Flatcar modifications, will need to upstream it first.
#
# eclass/bash-completion-r1.eclass
eclass/cmake-multilib.eclass
eclass/cmake.eclass
eclass/elisp-common.eclass
eclass/flag-o-matic.eclass eclass/flag-o-matic.eclass
eclass/git-r3.eclass eclass/git-r3.eclass
eclass/gnome.org.eclass
eclass/gnuconfig.eclass eclass/gnuconfig.eclass
eclass/java-pkg-opt-2.eclass eclass/java-pkg-opt-2.eclass
eclass/java-utils-2.eclass eclass/java-utils-2.eclass
eclass/libtool.eclass eclass/libtool.eclass
eclass/linux-info.eclass
eclass/linux-mod.eclass
eclass/llvm.eclass
eclass/meson.eclass
eclass/multilib-build.eclass eclass/multilib-build.eclass
eclass/multilib-minimal.eclass eclass/multilib-minimal.eclass
eclass/multilib.eclass eclass/multilib.eclass
eclass/ninja-utils.eclass
eclass/optfeature.eclass
eclass/pax-utils.eclass eclass/pax-utils.eclass
eclass/prefix.eclass eclass/prefix.eclass
eclass/tmpfiles.eclass eclass/tmpfiles.eclass
@ -49,6 +81,7 @@ eclass/toolchain.eclass
eclass/verify-sig.eclass eclass/verify-sig.eclass
eclass/vim-doc.eclass eclass/vim-doc.eclass
eclass/vim-plugin.eclass eclass/vim-plugin.eclass
eclass/virtualx.eclass
net-analyzer/nmap net-analyzer/nmap

View File

@ -0,0 +1,7 @@
- bpftool ([5.18.11](https://lwn.net/Articles/900912/))
- SDK: catalyst ([3.0.21](https://gitweb.gentoo.org/proj/catalyst.git/log/?h=3.0.21))
- SDK: cmake ([3.23.3](https://cmake.org/cmake/help/v3.23/release/3.23.html))
- SDK: meson ([0.62.2](https://mesonbuild.com/Release-notes-for-0-62-0.html))
- SDK: ninja ([1.11.0](https://groups.google.com/g/ninja-build/c/R2oCyDctDf8/m/-U94Y5I8AgAJ?pli=1))
- pahole ([1.23](https://git.kernel.org/pub/scm/devel/pahole/pahole.git/tag/?h=v1.23))
- strace ([5.19](https://github.com/strace/strace/releases/tag/v5.19))

View File

@ -0,0 +1,2 @@
DIST fasteners-0.17.3.gh.tar.gz 29409 BLAKE2B b4cd5c2f5dcd87808b4edf42ba160eb6b0bf08df544cbe1cc96ab3dd43f8fee02342a56a8b9529354e102f8e4280f9375f89f58318e46f2e8d52fa49bdb0f5ac SHA512 bed890d674bbb8d0442cb0a36c81bd5d1b4e555534ce4451f1cf70dcf72e222d52ae98154d09ac0ad1e52d1a2026c532fd40df715fbbd6bc95f874a916911ec7
DIST fasteners-0.18.gh.tar.gz 42343 BLAKE2B 702ca6a68733ed202ae0f8a2d9d430012c5786ef8d779903186815f9250ed7b2ccf781694aa57ef230009a470ef7c6bd0e83cc7bc9fcb809d2335542e799e3d6 SHA512 40928e93fa94ca9e67335d15acede73b70906885f8cc34262b00e2dfba9dfed8647f11490ab0df4c8fcfd94778362cfdc4bd0053063660b962202524dd5bda18

View File

@ -0,0 +1,27 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{8..11} )
inherit distutils-r1
DESCRIPTION="Python package that provides useful locks"
HOMEPAGE="https://github.com/harlowja/fasteners/"
SRC_URI="
https://github.com/harlowja/fasteners/archive/${PV}.tar.gz
-> ${P}.gh.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
BDEPEND="
test? (
dev-python/diskcache[${PYTHON_USEDEP}]
dev-python/more-itertools[${PYTHON_USEDEP}]
)
"
distutils_enable_tests pytest

View File

@ -0,0 +1,31 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{8..11} )
inherit distutils-r1
DESCRIPTION="Python package that provides useful locks"
HOMEPAGE="https://github.com/harlowja/fasteners/"
SRC_URI="
https://github.com/harlowja/fasteners/archive/${PV}.tar.gz
-> ${P}.gh.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos"
BDEPEND="
test? (
dev-python/diskcache[${PYTHON_USEDEP}]
dev-python/more-itertools[${PYTHON_USEDEP}]
)
"
distutils_enable_tests pytest
EPYTEST_IGNORE=(
tests_eventlet/test_eventlet.py
)

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>prometheanfire@gentoo.org</email>
<name>Matthew Thode</name>
</maintainer>
<maintainer type="project">
<email>python@gentoo.org</email>
<name>Python</name>
</maintainer>
<stabilize-allarches/>
<upstream>
<remote-id type="pypi">fasteners</remote-id>
<remote-id type="github">harlowja/fasteners</remote-id>
</upstream>
</pkgmetadata>

View File

@ -1,5 +1,6 @@
DIST linux-5.15.tar.xz 121913744 BLAKE2B 3921274b23f7938abdf3ed9334534b4581e13d7484303d3a5280eddb038999aaa8b836666a487472d9c4a219af0f06b9fecccaf348fb5510ab8762f4ef4b7e83 SHA512 d25ad40b5bcd6a4c6042fd0fd84e196e7a58024734c3e9a484fd0d5d54a0c1d87db8a3c784eff55e43b6f021709dc685eb0efa18d2aec327e4f88a79f405705a DIST linux-5.18.tar.xz 129790264 BLAKE2B e2745a69eb70169e90505a9318a3993046eab3020496eecde7d8352ecda0eb71a25b21becf7ce93fc593507dce7d1cd61b94ddcdf82b3094d79c0d3d48508eeb SHA512 dbbc9d1395898a498fa4947fceda1781344fa5d360240f753810daa4fa88e519833e2186c4e582a8f1836e6413e9e85f6563c7770523b704e8702d67622f98b5
DIST linux-5.16.tar.xz 123114100 BLAKE2B 07a90cc640ff89e1359c06cee8c38abd33e51f9b9a89833e31a1d2750526fda4a59e8884db3c1ea63df0a37f0d3de6b5a922b014b7313d8abce20d90ac08adcb SHA512 7a257dd576bc8493595ec7d6f3c9cb6e22c772a8b2dbe735d2485c4f5c56e26a08695546e7e0f1f1cd04a533f25e829361958d4da0b98bf0ba8094dd57a85aaf DIST linux-5.19.tar.xz 131581464 BLAKE2B 4db03a6830a3b3bbf0837e1912182a443d9a4aa8af20a12e6ec814ed708038452d3c0ccee1258cca671c464d76461536363a8adc56e9d098c9a44ae3484a297a SHA512 00313b2f9b82d2dc3fb8294007cf7d7599d254b717ed2de23c81fa7a1bbcbc2798ad286cb94e2f7f5bd54132d1d764facd90d30f79dbcc6616cc7f926adc2623
DIST patch-5.15.8.xz 537596 BLAKE2B 0f431804d406c4bbb09c44826fe1018b0bca94018337b73387d44ff3e25e6b90e2ec10cf9935847786e4dac6e1523e8e7daeaedb4f854d20a155bd13b29a0c72 SHA512 ef6d0841033fecba7c4aa25f5249a1e532a0d95f4b7e7048357ff00277d9abc11897f92d05d4a2cb90372da9cec8aa6664ce1058f71a6cae6bc647649787667d DIST patch-5.18.11.xz 595980 BLAKE2B 74b305bd21c71c9328f02183c3b098ee1e476c1d58e79120b5d9e9ab53da5c32ffe4bba6f4e4c0d75188f187b81fc898fe9fd29762695254e23702caa824f0aa SHA512 5a4972b96438b38aa2bd6b1893557aab528bc465464613ba2c1ef069e501761d995efb26b9a910f638383a821d249d1f6c748e1da993b428c0c4bcbb24621415
DIST patch-5.16.2.xz 20432 BLAKE2B 9c9f697e4dd0a78a94ac0bd361ec69683c6904d9af02da55c3001394e6a6efcc1fccd5d44747fff6ea47271b7655bd7866d161a90196cecaddde1c630ef5c425 SHA512 50d3c386e391603fbfe86780bbfa69c3a7caa83a7eea6c239af133dde3a7aa4746f4a3f1483589018d5ac27caa7ee69d869f8f64f4b5121ddab52224f5302222 DIST patch-5.19.2.xz 475316 BLAKE2B e1a3238a1cfb33178d1d9608821ad1f275165b0df0f4883dfd136ebe2ff31839d4cb82af60a874673b256653a0eca625dcb9016179ae9d1522099465b2014642 SHA512 53aecf0c08ce7bbd10e8f7a75397155054badeedbd20a2ef228c6726436e701095a79ae5322c8052550cbd79b8dc02b7caa30c8916cae5733a2bc04ed3157299
DIST patch-5.16.4.xz 343964 BLAKE2B 1fa1b90cecafe11ea0be1c099c4e2b4775ab87fd204a3ab2985e1ed479866763663db62a4de15c6aae243c0c34356f72c51df7437ce9a8fa8e257c4b3bc6cf20 SHA512 504d02a825dc9e06f2f6802567f179d5b956f3be4ccf3dae97ec31eefb0826f784292215e85fbb51ea98198288db9735de8d87f84551ff85f389cb713ee1cff5 DIST patch-5.19.8.xz 695676 BLAKE2B 3b661fec35c883a97f2f2b489e43cb276eb7cfe6818d37cc3482c880d8c52d3f4ce740b9791d30095d21146ae842988f684c2f7bd153359ba8d2adaaef71221c SHA512 16ee25c1a215a9a14e6bcc4ce6b1a7a83cb99c2ea7754974e247e7a84b21cab8d9f56f174fb49fc682f6a79507c0d7dc3c1162226680364eaa2e632bfb52b161
DIST perf-5.19-binutils-2.39-patches.tar.xz 5612 BLAKE2B ec3aeadc3e2508f33dddbb419f434885b39b8220d294f3845f0bc96282923ff46dca126a04c732b8286752e56087ba5b2c5ad9526884f6d0b8b6df5665121e5e SHA512 af676e5a600e227d85f89a5ee0cfacfe1845aa56c27ef9da3ebaf578362d7e741375d30565759123b33b86d36bc9981c8c4cda113af32745cc59cf4a9275e73b

View File

@ -25,7 +25,7 @@ S="${S_K}/tools/bpf/bpftool"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
KEYWORDS="amd64 ~x86" KEYWORDS="amd64 ~riscv ~x86"
IUSE="caps" IUSE="caps"
RDEPEND=" RDEPEND="

View File

@ -20,12 +20,14 @@ SRC_URI="https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_PATCH}"
LINUX_SOURCES="linux-${LINUX_VER}.tar.xz" LINUX_SOURCES="linux-${LINUX_VER}.tar.xz"
SRC_URI+=" https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_SOURCES}" SRC_URI+=" https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_SOURCES}"
SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/dev-util/perf/perf-5.19-binutils-2.39-patches.tar.xz"
S_K="${WORKDIR}/linux-${LINUX_VER}" S_K="${WORKDIR}/linux-${LINUX_VER}"
S="${S_K}/tools/bpf/bpftool" S="${S_K}/tools/bpf/bpftool"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
KEYWORDS="~amd64 ~x86" KEYWORDS="~amd64 ~riscv ~x86"
IUSE="caps" IUSE="caps"
RDEPEND=" RDEPEND="
@ -86,6 +88,12 @@ src_prepare() {
popd || die popd || die
fi fi
pushd "${S_K}" >/dev/null || die
# Used `git format-patch 00b32625982e0c796f0abb8effcac9c05ef55bd3...600b7b26c07a070d0153daa76b3806c1e52c9e00`
# bug #868123
eapply "${WORKDIR}"/perf-5.19-binutils-2.39-patches
popd || die
# dev-python/docutils installs rst2man.py, not rst2man # dev-python/docutils installs rst2man.py, not rst2man
sed -i -e 's/rst2man/rst2man.py/g' Documentation/Makefile || die sed -i -e 's/rst2man/rst2man.py/g' Documentation/Makefile || die
} }

View File

@ -20,12 +20,14 @@ SRC_URI="https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_PATCH}"
LINUX_SOURCES="linux-${LINUX_VER}.tar.xz" LINUX_SOURCES="linux-${LINUX_VER}.tar.xz"
SRC_URI+=" https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_SOURCES}" SRC_URI+=" https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_SOURCES}"
SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/dev-util/perf/perf-5.19-binutils-2.39-patches.tar.xz"
S_K="${WORKDIR}/linux-${LINUX_VER}" S_K="${WORKDIR}/linux-${LINUX_VER}"
S="${S_K}/tools/bpf/bpftool" S="${S_K}/tools/bpf/bpftool"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
KEYWORDS="~amd64 ~x86" KEYWORDS="~amd64 ~riscv ~x86"
IUSE="caps" IUSE="caps"
RDEPEND=" RDEPEND="
@ -86,6 +88,12 @@ src_prepare() {
popd || die popd || die
fi fi
pushd "${S_K}" >/dev/null || die
# Used `git format-patch 00b32625982e0c796f0abb8effcac9c05ef55bd3...600b7b26c07a070d0153daa76b3806c1e52c9e00`
# bug #868123
eapply "${WORKDIR}"/perf-5.19-binutils-2.39-patches
popd || die
# dev-python/docutils installs rst2man.py, not rst2man # dev-python/docutils installs rst2man.py, not rst2man
sed -i -e 's/rst2man/rst2man.py/g' Documentation/Makefile || die sed -i -e 's/rst2man/rst2man.py/g' Documentation/Makefile || die
} }

View File

@ -1,2 +1 @@
DIST catalyst-3.0.18.tar.bz2 621208 BLAKE2B 63f76634b96006ef4a751b0ce166ab36dcba3016234251b2e44e89b43b0c6909e57914007d6287e54584094ff7f064c0251a79f095c87e4c7957925e9d4605cd SHA512 94a30304b242b4e63cc14f34916acd68c03700876ba1cc2f516880f4e8365258de8b62db85cddc9492229414484ba6908edc91991b70b13da0578792b8b96aa3
DIST catalyst-3.0.21.tar.bz2 620472 BLAKE2B 6ecf59edde24cbec6d072a31680b75e2e7f142e267b43783473dc607b189d5091b6ca2b7bd02e88a6528a7bccea8441fce21c74aed6623ec14d701557fb4d267 SHA512 e2c58a562508e25465186a5d9771040ddb9f00104943a6434489e5ef01da220ac0330339f741d023717c8d1df6ec2bf765654fabe4097d93d3086ef9005a294c DIST catalyst-3.0.21.tar.bz2 620472 BLAKE2B 6ecf59edde24cbec6d072a31680b75e2e7f142e267b43783473dc607b189d5091b6ca2b7bd02e88a6528a7bccea8441fce21c74aed6623ec14d701557fb4d267 SHA512 e2c58a562508e25465186a5d9771040ddb9f00104943a6434489e5ef01da220ac0330339f741d023717c8d1df6ec2bf765654fabe4097d93d3086ef9005a294c

View File

@ -1,73 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=6
if [[ ${PV} == *9999* ]]; then
SRC_ECLASS="git-r3"
EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/catalyst.git"
EGIT_BRANCH="master"
else
SRC_URI="https://gitweb.gentoo.org/proj/catalyst.git/snapshot/${P}.tar.bz2"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 ~s390 sparc x86"
fi
PYTHON_COMPAT=( python3_{8,9} )
DISTUTILS_USE_SETUPTOOLS=no
inherit distutils-r1 ${SRC_ECLASS}
DESCRIPTION="Release metatool used for creating releases based on Gentoo Linux"
HOMEPAGE="https://wiki.gentoo.org/wiki/Catalyst"
LICENSE="GPL-2+"
SLOT="0"
IUSE="ccache doc +iso system-bootloader"
DEPEND="
app-text/asciidoc
>=dev-python/snakeoil-0.6.5[${PYTHON_USEDEP}]
<dev-python/snakeoil-0.9.6[${PYTHON_USEDEP}]
"
RDEPEND="
>=dev-python/snakeoil-0.6.5[${PYTHON_USEDEP}]
<dev-python/snakeoil-0.9.6[${PYTHON_USEDEP}]
>=dev-python/pydecomp-0.3[${PYTHON_USEDEP}]
app-arch/lbzip2
app-crypt/shash
sys-fs/dosfstools
|| (
app-arch/tar[xattr]
app-arch/libarchive[xattr]
)
amd64? ( >=sys-boot/syslinux-3.72 )
x86? ( >=sys-boot/syslinux-3.72 )
ccache? ( dev-util/ccache )
iso? ( app-cdr/cdrtools )
kernel_linux? ( app-misc/zisofs-tools >=sys-fs/squashfs-tools-2.1 )
"
PDEPEND="system-bootloader? ( >=sys-apps/memtest86+-5.01-r4
sys-boot/grub:2
amd64? ( sys-boot/grub[grub_platforms_efi-32,grub_platforms_efi-64] )
x86? ( sys-boot/grub[grub_platforms_efi-32] )
sys-boot/syslinux
sys-boot/shim )"
python_prepare_all() {
python_setup
echo VERSION="${PV}" "${PYTHON}" setup.py set_version
VERSION="${PV}" "${PYTHON}" setup.py set_version || die
distutils-r1_python_prepare_all
}
python_compile_all() {
# build the man pages and docs
emake
}
python_install_all() {
distutils-r1_python_install_all
if use doc; then
dodoc files/HOWTO.html files/docbook-xsl.css
fi
}

View File

@ -9,7 +9,7 @@ if [[ ${PV} == *9999* ]]; then
EGIT_BRANCH="master" EGIT_BRANCH="master"
else else
SRC_URI="https://gitweb.gentoo.org/proj/catalyst.git/snapshot/${P}.tar.bz2" SRC_URI="https://gitweb.gentoo.org/proj/catalyst.git/snapshot/${P}.tar.bz2"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 ~riscv ~s390 sparc x86"
fi fi
PYTHON_COMPAT=( python3_{8..10} ) PYTHON_COMPAT=( python3_{8..10} )

View File

@ -1,2 +1,2 @@
DIST devscripts_2.21.2.tar.xz 980516 BLAKE2B 907f2f4e258a8396ad0a28eead1e2058b8e19be205f024ea80c0fbd9621d5ca4299844fe83d66cac7f653a917705d9c36eddb9d51454a7fbb9d7e2b52bc994ff SHA512 a6765d807dc0c2ef7a3d8c59e1262bfe7542c3ca52cda3c1910af253925cb105a9d1bf272c76a86f0b3cdda9c8a4e2d29a660437f73087dd70ee8a444bbedb01 DIST devscripts_2.22.1.tar.xz 989556 BLAKE2B 2a2e3ca9757c710e181e807f0369c137f21070d86b4c51d8b5132ca4add33677edbd26e04a2faae93e9e4586080286888880ce450119579aa40ad205c8e5d857 SHA512 260603e1a655035c5aca3c9734db1bc6aa7e9aa017ece7e9158c57e06a1ee548922ec2defdd9dcb4560743d78aef08d30695b1bc833bd4d77fe1c7497d157c45
DIST devscripts_2.21.4.tar.xz 981488 BLAKE2B 29339490586a66c6360f599a90e23452fd1e99fd01757e258e082b9550731b3e443b12fb9ce9b8fe6fb229f228a115f87a9b91b8769000afd741eb77e9e7a4a4 SHA512 99250737cabc24bbd21e20de7c787e182492e15cad4288226ed497349cbf3dd45927e1c501d73341e48dfd14ee2285c8cca8ac3b2145c2f02ce4d04ddb881e50 DIST devscripts_2.22.2.tar.xz 995524 BLAKE2B a7649ea5b790a64b5470a66425e487959b058e9af34be173210277765c8610f7d6da1b9105f97e1da2f84a578ca7514b1dabaa7c38a88c9b1eef29c2f34f97a1 SHA512 d6c47f604a252f58e1cf8ea9fe7387a390683757144bb76cce6915fca1ff7ccb71ce6c87d829f874097d869172774a806b506dc7fb4187876d14e50eaaf92593

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
@ -13,7 +13,7 @@ S="${WORKDIR}/${MY_P}/scripts"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
KEYWORDS="amd64 ~arm ~arm64 ~ppc64 ~riscv x86" KEYWORDS="amd64 arm arm64 ~ppc64 ~riscv x86"
# Requires python packages to check tools we don't need anyway # Requires python packages to check tools we don't need anyway
RESTRICT="test" RESTRICT="test"

View File

@ -1,7 +1,7 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=8
MY_PN="devscripts" MY_PN="devscripts"
MY_P="${MY_PN}-${PV}" MY_P="${MY_PN}-${PV}"
@ -9,11 +9,11 @@ MY_P="${MY_PN}-${PV}"
DESCRIPTION="Perl script to check for commonly used bash features not defined by POSIX" DESCRIPTION="Perl script to check for commonly used bash features not defined by POSIX"
HOMEPAGE="https://packages.debian.org/devscripts https://salsa.debian.org/debian/devscripts" HOMEPAGE="https://packages.debian.org/devscripts https://salsa.debian.org/debian/devscripts"
SRC_URI="mirror://debian/pool/main/d/${MY_PN}/${MY_P/-/_}.tar.xz" SRC_URI="mirror://debian/pool/main/d/${MY_PN}/${MY_P/-/_}.tar.xz"
S="${WORKDIR}/${MY_P}/scripts"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
KEYWORDS="amd64 ~arm ~arm64 ~ppc64 x86" KEYWORDS="amd64 arm arm64 ~ppc64 ~riscv x86"
IUSE=""
# Requires python packages to check tools we don't need anyway # Requires python packages to check tools we don't need anyway
RESTRICT="test" RESTRICT="test"
@ -21,8 +21,6 @@ RESTRICT="test"
RDEPEND="dev-lang/perl RDEPEND="dev-lang/perl
virtual/perl-Getopt-Long" virtual/perl-Getopt-Long"
S="${WORKDIR}/${MY_P}/scripts"
src_prepare() { src_prepare() {
default default

View File

@ -1,3 +1,7 @@
DIST cmake-3.20.5.tar.gz 9441947 BLAKE2B f073d7c3968c714be315f5014076c785790ed47e9a746f2d16bc59769fb6862009f67c2e118038c6c9d8390b709f2b4ed4a4dfc41a93996fedd9d7d77111b84a SHA512 4ad7f194353be291e76d86d95928633daea653a0bd8d35369ac6ee2bb3f811c3a1aabe6a2bd51c6d5b07af2c6edc7e38d8b347ded32ab1ddcf331dbfce40c008 DIST cmake-3.23.3-SHA-256.txt 1452 BLAKE2B aa2e2dfb2757210688a5a9131ca1fffdf6617a52219d373fd908c08e52b7d77f0e980086561a083cabaf8d9f3e24b15064bb74ad2737fcbfe11c8aba5814eb4e SHA512 22808c050e8927867fc5d2daa6999d9eed53e99015f89d1f5bef61397d1b2a9888728e86fdca8716c47f8133e02b3fa726d0cc97c0bb4ab5f5ff16a1fc0ae82f
DIST cmake-3.21.4.tar.gz 9630991 BLAKE2B ca6b6c50d984cc6713f3e88e1a6438c360d80c34927e60a20cc006ba47df2b91a290f1578d556f58d2d40711848a9b9caf36f65a043df892b81c1d48e3edb0d8 SHA512 0262a666f6da106576c26215580c40b54497bcdac400e847e1799716c31c71068293e719416338132a7da6122826c08ff50ac23dfed2711ab42631e96303f544 DIST cmake-3.23.3-SHA-256.txt.asc 833 BLAKE2B 10f61d7cfaa5c86d0e372f33d9ba0dbe7ae9cbfe17669107167b3ae72d0e337c63fb1c27a528dcda804323a1f0d4843b630e15427c33e0f5d5c568e27cea769d SHA512 75ff4b25fdd71bc05a7d6fec3c72ec5b8d6ed7ac980d533e6c820855c74a1a58f52d53c1a454dffe1a15568445c4c1c805891997e5709567c9e7709ba1c5e4d9
DIST cmake-3.22.1.tar.gz 9778031 BLAKE2B 8c91e9e666ece94e0cfb5868ad257b1de824206b6f5420a5f516f684e4fd655e634918c59955f41a3f27b604b76946d86ab51cf975de7052c067a9dc4f952400 SHA512 b1e900fe573cd1cc76d26386f2298d7722737c9ff67930ee108994972b4561ef69caeb537177c9b95b7f17b755e20e034825d3807ea0d2dd4c391310b03adc11 DIST cmake-3.23.3.tar.gz 9988050 BLAKE2B 55105ce380e5e9f1839fc38cc0eaefe505d58bffa60feab9813a36c7cac92f4fb6aa6b6aaad899f1e8d58cfa5ececb9e7335a470244ccc06848d833b1eddf224 SHA512 75f86abe60ef28ba9bd06546c0c24578921621fb4be942171e629366a759cf1469e430945addc85f8ce977920883c063ed26de1b78fd24dfd98d0eb604800632
DIST cmake-3.24.2-SHA-256.txt 1646 BLAKE2B 3c48226c96844c5ddd8567637a61eca697425021735d5dc8613a1fd7a68887f6707b6030c1e4476af5e4bdb4830cc4ff3d8708f4bdf557ba94508086e0447030 SHA512 f7500d8c9a500c9ad2679a68d6343cbbbae1483014ab2cd48a056e1e9591b6edd0d712e9ff5441e19c05284696e6c52ebdc3cf1efc61432f2764da7703816b49
DIST cmake-3.24.2-SHA-256.txt.asc 833 BLAKE2B fe6a3caa3db7b6be186e49ee5d86706f2cda9a45858bc964be5407f577195d0af74c10e66ea30faa0a35280f1c9f927732f9cc7fcb9dae8e521882955b6ef617 SHA512 a0fa1a002f2f23e8b3b8fb2689905ac618ca423b96f904bee172d6a62e6fb0c0a46394ce57474be9c9810e1d09abf3b192f595cb0e92d5c62d11b60f0c572b82
DIST cmake-3.24.2-docs.tar.xz 492188 BLAKE2B 64e0d69ce8e739e6622b0cfde8956cb2bf67f9bf412b8d98afa1657bd30d8a2a1cf874e6422c78c222199616aac85d472ef398c83da29d5d64516384e9ed69aa SHA512 d0ef81dfe37ac2a225fe795fd3e6780e3b8fd5caa472a14ff8d036917172efd13126897c7a2a78d8269aa20e4f35c7b9be7bed14ecbfb24df332c332a4ff16c4
DIST cmake-3.24.2.tar.gz 10396126 BLAKE2B fcfdbbce94ce6cdb3fa478afe591bc63ba25104a32edc3dd9395d7b6bd16e222f41428ef4f9982061d6d1e69b10efbc2a33cc9df4573400612b4b756b80ec348 SHA512 6f0e8e29bf0336f555ba72c4d83f35d820f8a5159cc999d48795dc57a6627b4ee3966dda84ca97d39906e35dd476ea00cf80023672cc0fad862e2996194c0674

View File

@ -1,9 +1,12 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=8 EAPI=8
CMAKE_MAKEFILE_GENERATOR="emake" # TODO RunCMake.LinkWhatYouUse fails consistently w/ ninja # TODO RunCMake.LinkWhatYouUse fails consistently w/ ninja
# ... but seems fine as of 3.22.3?
# TODO ... but bootstrap sometimes(?) fails with ninja now. bug #834759.
CMAKE_MAKEFILE_GENERATOR="emake"
CMAKE_REMOVE_MODULES_LIST=( none ) CMAKE_REMOVE_MODULES_LIST=( none )
inherit bash-completion-r1 cmake elisp-common flag-o-matic multiprocessing \ inherit bash-completion-r1 cmake elisp-common flag-o-matic multiprocessing \
toolchain-funcs virtualx xdg-utils toolchain-funcs virtualx xdg-utils
@ -12,12 +15,28 @@ MY_P="${P/_/-}"
DESCRIPTION="Cross platform Make" DESCRIPTION="Cross platform Make"
HOMEPAGE="https://cmake.org/" HOMEPAGE="https://cmake.org/"
if [[ ${PV} == 9999 ]] ; then
inherit git-r3
EGIT_REPO_URI="https://gitlab.kitware.com/cmake/cmake.git"
else
SRC_URI="https://cmake.org/files/v$(ver_cut 1-2)/${MY_P}.tar.gz" SRC_URI="https://cmake.org/files/v$(ver_cut 1-2)/${MY_P}.tar.gz"
if [[ ${PV} != *_rc* ]] ; then
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/bradking.asc
inherit verify-sig
SRC_URI+=" verify-sig? (
https://github.com/Kitware/CMake/releases/download/v$(ver_cut 1-3)/${MY_P}-SHA-256.txt
https://github.com/Kitware/CMake/releases/download/v$(ver_cut 1-3)/${MY_P}-SHA-256.txt.asc
)"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
BDEPEND="verify-sig? ( sec-keys/openpgp-keys-bradking )"
fi
fi
LICENSE="CMake" LICENSE="CMake"
SLOT="0" SLOT="0"
[[ "${PV}" = *_rc* ]] || \
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="doc emacs ncurses qt5 test" IUSE="doc emacs ncurses qt5 test"
RESTRICT="!test? ( test )" RESTRICT="!test? ( test )"
@ -39,7 +58,7 @@ RDEPEND="
) )
" "
DEPEND="${RDEPEND}" DEPEND="${RDEPEND}"
BDEPEND=" BDEPEND+="
doc? ( doc? (
dev-python/requests dev-python/requests
dev-python/sphinx dev-python/sphinx
@ -91,39 +110,22 @@ cmake_src_bootstrap() {
|| die "Bootstrap failed" || die "Bootstrap failed"
} }
cmake_src_test() { src_unpack() {
# fix OutDir and SelectLibraryConfigurations tests if [[ ${PV} == 9999 ]] ; then
# these are altered thanks to our eclass git-r3_src_unpack
sed -i -e 's:^#_cmake_modify_IGNORE ::g' \ elif ! use verify-sig || [[ ${PV} == *_rc ]] ; then
"${S}"/Tests/{OutDir,CMakeOnly/SelectLibraryConfigurations}/CMakeLists.txt \ default
|| die else
cd "${DISTDIR}" || die
pushd "${BUILD_DIR}" > /dev/null # See https://mgorny.pl/articles/verify-sig-by-example.html#verifying-using-a-checksum-file-with-a-detached-signature
verify-sig_verify_detached ${MY_P}-SHA-256.txt{,.asc}
verify-sig_verify_unsigned_checksums ${MY_P}-SHA-256.txt sha256 ${MY_P}.tar.gz
local ctestargs cd "${WORKDIR}" || die
[[ -n ${TEST_VERBOSE} ]] && ctestargs="--extra-verbose --output-on-failure"
# Excluded tests: default
# BootstrapTest: we actually bootstrap it every time so why test it. fi
# BundleUtilities: bundle creation broken
# CMakeOnly.AllFindModules: pthread issues
# CTest.updatecvs: fails to commit as root
# Fortran: requires fortran
# RunCMake.CompilerLauncher: also requires fortran
# RunCMake.CPack_RPM: breaks if app-arch/rpm is installed because
# debugedit binary is not in the expected location
# RunCMake.CPack_DEB: breaks if app-arch/dpkg is installed because
# it can't find a deb package that owns libc
# RunCMake.{IncompatibleQt,ObsoleteQtMacros}: Require Qt4
# TestUpload: requires network access
"${BUILD_DIR}"/bin/ctest \
-j "$(makeopts_jobs)" \
--test-load "$(makeopts_loadavg)" \
${ctestargs} \
-E "(BootstrapTest|BundleUtilities|ConfigSources|CMakeOnly.AllFindModules|CPackComponentsDEB-components-depend2|CompileOptions|CTest.UpdateCVS|DependencyGraph|Fortran|RunCMake.CompilerLauncher|RunCMake.IncompatibleQt|RunCMake.ObsoleteQtMacros|RunCMake.PrecompileHeaders|RunCMake.CPack_(DEB|RPM)|TestUpload)" \
|| die "Tests failed"
popd > /dev/null
} }
src_prepare() { src_prepare() {
@ -159,7 +161,8 @@ src_prepare() {
-e "$(usex prefix-guest "s|@GENTOO_HOST@||" "/@GENTOO_HOST@/d")" \ -e "$(usex prefix-guest "s|@GENTOO_HOST@||" "/@GENTOO_HOST@/d")" \
-e "s|@GENTOO_PORTAGE_EPREFIX@|${EPREFIX}/|g" \ -e "s|@GENTOO_PORTAGE_EPREFIX@|${EPREFIX}/|g" \
Modules/Platform/{UnixPaths,Darwin}.cmake || die "sed failed" Modules/Platform/{UnixPaths,Darwin}.cmake || die "sed failed"
if ! has_version -b \>=${CATEGORY}/${PN}-3.4.0_rc1 || ! cmake --version &>/dev/null ; then
if ! has_version -b \>=${CATEGORY}/${PN}-3.13 || ! cmake --version &>/dev/null ; then
CMAKE_BINARY="${S}/Bootstrap.cmk/cmake" CMAKE_BINARY="${S}/Bootstrap.cmk/cmake"
cmake_src_bootstrap cmake_src_bootstrap
fi fi
@ -190,6 +193,32 @@ src_compile() {
} }
src_test() { src_test() {
# fix OutDir and SelectLibraryConfigurations tests
# these are altered thanks to our eclass
sed -i -e 's:^#_cmake_modify_IGNORE ::g' \
"${S}"/Tests/{OutDir,CMakeOnly/SelectLibraryConfigurations}/CMakeLists.txt \
|| die
pushd "${BUILD_DIR}" > /dev/null || die
# Excluded tests:
# BootstrapTest: we actualy bootstrap it every time so why test it.
# BundleUtilities: bundle creation broken
# CMakeOnly.AllFindModules: pthread issues
# CTest.updatecvs: which fails to commit as root
# Fortran: requires fortran
# RunCMake.CompilerLauncher: also requires fortran
# RunCMake.CPack_RPM: breaks if app-arch/rpm is installed because
# debugedit binary is not in the expected location
# RunCMake.CPack_DEB: breaks if app-arch/dpkg is installed because
# it can't find a deb package that owns libc
# TestUpload, which requires network access
# RunCMake.CMP0125, known failure reported upstream (bug #829414)
local myctestargs=(
--output-on-failure
-E "(BootstrapTest|BundleUtilities|CMakeOnly.AllFindModules|CompileOptions|CTest.UpdateCVS|Fortran|RunCMake.CompilerLauncher|RunCMake.CPack_(DEB|RPM)|TestUpload|RunCMake.CMP0125)" \
)
virtx cmake_src_test virtx cmake_src_test
} }

View File

@ -1,9 +1,23 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=8
CMAKE_MAKEFILE_GENERATOR="emake" # TODO RunCMake.LinkWhatYouUse fails consistently w/ ninja # Generate using https://github.com/thesamesam/sam-gentoo-scripts/blob/main/niche/generate-cmake-docs
# Set to 1 if prebuilt, 0 if not
# (the construct below is to allow overriding from env for script)
: ${CMAKE_DOCS_PREBUILT:=1}
CMAKE_DOCS_PREBUILT_DEV=sam
CMAKE_DOCS_VERSION=$(ver_cut 1-3)
# Default to generating docs (inc. man pages) if no prebuilt; overridden later
# See bug #784815
CMAKE_DOCS_USEFLAG="+doc"
# TODO RunCMake.LinkWhatYouUse fails consistently w/ ninja
# ... but seems fine as of 3.22.3?
# TODO ... but bootstrap sometimes(?) fails with ninja now. bug #834759.
CMAKE_MAKEFILE_GENERATOR="emake"
CMAKE_REMOVE_MODULES_LIST=( none ) CMAKE_REMOVE_MODULES_LIST=( none )
inherit bash-completion-r1 cmake elisp-common flag-o-matic multiprocessing \ inherit bash-completion-r1 cmake elisp-common flag-o-matic multiprocessing \
toolchain-funcs virtualx xdg-utils toolchain-funcs virtualx xdg-utils
@ -12,13 +26,40 @@ MY_P="${P/_/-}"
DESCRIPTION="Cross platform Make" DESCRIPTION="Cross platform Make"
HOMEPAGE="https://cmake.org/" HOMEPAGE="https://cmake.org/"
if [[ ${PV} == 9999 ]] ; then
CMAKE_DOCS_PREBUILT=0
EGIT_REPO_URI="https://gitlab.kitware.com/cmake/cmake.git"
inherit git-r3
else
SRC_URI="https://cmake.org/files/v$(ver_cut 1-2)/${MY_P}.tar.gz" SRC_URI="https://cmake.org/files/v$(ver_cut 1-2)/${MY_P}.tar.gz"
if [[ ${CMAKE_DOCS_PREBUILT} == 1 ]] ; then
SRC_URI+=" !doc? ( https://dev.gentoo.org/~${CMAKE_DOCS_PREBUILT_DEV}/distfiles/${CATEGORY}/${PN}/${PN}-${CMAKE_DOCS_VERSION}-docs.tar.xz )"
fi
if [[ ${PV} != *_rc* ]] ; then
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/bradking.asc
inherit verify-sig
SRC_URI+=" verify-sig? (
https://github.com/Kitware/CMake/releases/download/v$(ver_cut 1-3)/${MY_P}-SHA-256.txt
https://github.com/Kitware/CMake/releases/download/v$(ver_cut 1-3)/${MY_P}-SHA-256.txt.asc
)"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
BDEPEND="verify-sig? ( sec-keys/openpgp-keys-bradking )"
fi
fi
[[ ${CMAKE_DOCS_PREBUILT} == 1 ]] && CMAKE_DOCS_USEFLAG="doc"
S="${WORKDIR}/${MY_P}"
LICENSE="CMake" LICENSE="CMake"
SLOT="0" SLOT="0"
[[ "${PV}" = *_rc* ]] || \ IUSE="${CMAKE_DOCS_USEFLAG} emacs ncurses qt5 test"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="doc emacs ncurses qt5 test"
RESTRICT="!test? ( test )" RESTRICT="!test? ( test )"
RDEPEND=" RDEPEND="
@ -39,7 +80,7 @@ RDEPEND="
) )
" "
DEPEND="${RDEPEND}" DEPEND="${RDEPEND}"
BDEPEND=" BDEPEND+="
doc? ( doc? (
dev-python/requests dev-python/requests
dev-python/sphinx dev-python/sphinx
@ -47,23 +88,21 @@ BDEPEND="
test? ( app-arch/libarchive[zstd] ) test? ( app-arch/libarchive[zstd] )
" "
S="${WORKDIR}/${MY_P}"
SITEFILE="50${PN}-gentoo.el" SITEFILE="50${PN}-gentoo.el"
PATCHES=( PATCHES=(
# prefix # Prefix
"${FILESDIR}"/${PN}-3.16.0_rc4-darwin-bundle.patch "${FILESDIR}"/${PN}-3.16.0_rc4-darwin-bundle.patch
"${FILESDIR}"/${PN}-3.14.0_rc3-prefix-dirs.patch "${FILESDIR}"/${PN}-3.14.0_rc3-prefix-dirs.patch
"${FILESDIR}"/${PN}-3.19.1-darwin-gcc.patch "${FILESDIR}"/${PN}-3.19.1-darwin-gcc.patch
# handle gentoo packaging in find modules # Handle gentoo packaging in find modules
"${FILESDIR}"/${PN}-3.17.0_rc1-FindBLAS.patch "${FILESDIR}"/${PN}-3.17.0_rc1-FindBLAS.patch
# Next patch needs to be reworked # Next patch needs to be reworked
#"${FILESDIR}"/${PN}-3.17.0_rc1-FindLAPACK.patch #"${FILESDIR}"/${PN}-3.17.0_rc1-FindLAPACK.patch
"${FILESDIR}"/${PN}-3.5.2-FindQt4.patch "${FILESDIR}"/${PN}-3.5.2-FindQt4.patch
# respect python eclasses # Respect python eclasses
"${FILESDIR}"/${PN}-2.8.10.2-FindPythonLibs.patch "${FILESDIR}"/${PN}-2.8.10.2-FindPythonLibs.patch
"${FILESDIR}"/${PN}-3.9.0_rc2-FindPythonInterp.patch "${FILESDIR}"/${PN}-3.9.0_rc2-FindPythonInterp.patch
@ -91,59 +130,43 @@ cmake_src_bootstrap() {
|| die "Bootstrap failed" || die "Bootstrap failed"
} }
cmake_src_test() { src_unpack() {
# fix OutDir and SelectLibraryConfigurations tests if [[ ${PV} == 9999 ]] ; then
# these are altered thanks to our eclass git-r3_src_unpack
sed -i -e 's:^#_cmake_modify_IGNORE ::g' \ elif ! use verify-sig || [[ ${PV} == *_rc* ]] ; then
"${S}"/Tests/{OutDir,CMakeOnly/SelectLibraryConfigurations}/CMakeLists.txt \ default
|| die else
cd "${DISTDIR}" || die
pushd "${BUILD_DIR}" > /dev/null # See https://mgorny.pl/articles/verify-sig-by-example.html#verifying-using-a-checksum-file-with-a-detached-signature
verify-sig_verify_detached ${MY_P}-SHA-256.txt{,.asc}
verify-sig_verify_unsigned_checksums ${MY_P}-SHA-256.txt sha256 ${MY_P}.tar.gz
local ctestargs cd "${WORKDIR}" || die
[[ -n ${TEST_VERBOSE} ]] && ctestargs="--extra-verbose --output-on-failure"
# Excluded tests: default
# BootstrapTest: we actually bootstrap it every time so why test it. fi
# BundleUtilities: bundle creation broken
# CMakeOnly.AllFindModules: pthread issues
# CTest.updatecvs: fails to commit as root
# Fortran: requires fortran
# RunCMake.CompilerLauncher: also requires fortran
# RunCMake.CPack_RPM: breaks if app-arch/rpm is installed because
# debugedit binary is not in the expected location
# RunCMake.CPack_DEB: breaks if app-arch/dpkg is installed because
# it can't find a deb package that owns libc
# RunCMake.{IncompatibleQt,ObsoleteQtMacros}: Require Qt4
# TestUpload: requires network access
"${BUILD_DIR}"/bin/ctest \
-j "$(makeopts_jobs)" \
--test-load "$(makeopts_loadavg)" \
${ctestargs} \
-E "(BootstrapTest|BundleUtilities|ConfigSources|CMakeOnly.AllFindModules|CPackComponentsDEB-components-depend2|CompileOptions|CTest.UpdateCVS|DependencyGraph|Fortran|RunCMake.CompilerLauncher|RunCMake.IncompatibleQt|RunCMake.ObsoleteQtMacros|RunCMake.PrecompileHeaders|RunCMake.CPack_(DEB|RPM)|TestUpload)" \
|| die "Tests failed"
popd > /dev/null
} }
src_prepare() { src_prepare() {
cmake_src_prepare cmake_src_prepare
if [[ ${CHOST} == *-darwin* ]] ; then if [[ ${CHOST} == *-darwin* ]] ; then
# disable Xcode hooks, bug #652134 # Disable Xcode hooks, bug #652134
sed -i -e 's/cm\(\|Global\|Local\)XCode[^.]\+\.\(cxx\|h\)//' \ sed -i -e 's/cm\(\|Global\|Local\)XCode[^.]\+\.\(cxx\|h\)//' \
Source/CMakeLists.txt || die Source/CMakeLists.txt || die
sed -i -e '/define CMAKE_USE_XCODE/s/XCODE/NO_XCODE/' \ sed -i -e '/define CMAKE_USE_XCODE/s/XCODE/NO_XCODE/' \
-e '/cmGlobalXCodeGenerator.h/d' \ -e '/cmGlobalXCodeGenerator.h/d' \
Source/cmake.cxx || die Source/cmake.cxx || die
# disable isysroot usage with GCC, we've properly instructed
# Disable isysroot usage with GCC, we've properly instructed
# where things are via GCC configuration and ldwrapper # where things are via GCC configuration and ldwrapper
sed -i -e '/cmake_gnu_set_sysroot_flag/d' \ sed -i -e '/cmake_gnu_set_sysroot_flag/d' \
Modules/Platform/Apple-GNU-*.cmake || die Modules/Platform/Apple-GNU-*.cmake || die
# disable isysroot usage with clang as well # Disable isysroot usage with clang as well
sed -i -e '/_SYSROOT_FLAG/d' \ sed -i -e '/_SYSROOT_FLAG/d' \
Modules/Platform/Apple-Clang.cmake || die Modules/Platform/Apple-Clang.cmake || die
# don't set a POSIX standard, system headers don't like that, #757426 # Don't set a POSIX standard, system headers don't like that, #757426
sed -i -e 's/^#if !defined(_WIN32) && !defined(__sun)/& \&\& !defined(__APPLE__)/' \ sed -i -e 's/^#if !defined(_WIN32) && !defined(__sun)/& \&\& !defined(__APPLE__)/' \
Source/cmLoadCommandCommand.cxx \ Source/cmLoadCommandCommand.cxx \
Source/cmStandardLexer.h \ Source/cmStandardLexer.h \
@ -159,7 +182,8 @@ src_prepare() {
-e "$(usex prefix-guest "s|@GENTOO_HOST@||" "/@GENTOO_HOST@/d")" \ -e "$(usex prefix-guest "s|@GENTOO_HOST@||" "/@GENTOO_HOST@/d")" \
-e "s|@GENTOO_PORTAGE_EPREFIX@|${EPREFIX}/|g" \ -e "s|@GENTOO_PORTAGE_EPREFIX@|${EPREFIX}/|g" \
Modules/Platform/{UnixPaths,Darwin}.cmake || die "sed failed" Modules/Platform/{UnixPaths,Darwin}.cmake || die "sed failed"
if ! has_version -b \>=${CATEGORY}/${PN}-3.4.0_rc1 || ! cmake --version &>/dev/null ; then
if ! has_version -b \>=${CATEGORY}/${PN}-3.13 || ! cmake --version &>/dev/null ; then
CMAKE_BINARY="${S}/Bootstrap.cmk/cmake" CMAKE_BINARY="${S}/Bootstrap.cmk/cmake"
cmake_src_bootstrap cmake_src_bootstrap
fi fi
@ -169,6 +193,10 @@ src_configure() {
# Fix linking on Solaris # Fix linking on Solaris
[[ ${CHOST} == *-solaris* ]] && append-ldflags -lsocket -lnsl [[ ${CHOST} == *-solaris* ]] && append-ldflags -lsocket -lnsl
# ODR warnings, bug #858335
# https://gitlab.kitware.com/cmake/cmake/-/issues/20740
filter-lto
local mycmakeargs=( local mycmakeargs=(
-DCMAKE_USE_SYSTEM_LIBRARIES=ON -DCMAKE_USE_SYSTEM_LIBRARIES=ON
-DCMAKE_DOC_DIR=/share/doc/${PF} -DCMAKE_DOC_DIR=/share/doc/${PF}
@ -190,12 +218,43 @@ src_compile() {
} }
src_test() { src_test() {
# Fix OutDir and SelectLibraryConfigurations tests
# these are altered thanks to our eclass
sed -i -e 's:^#_cmake_modify_IGNORE ::g' \
"${S}"/Tests/{OutDir,CMakeOnly/SelectLibraryConfigurations}/CMakeLists.txt \
|| die
pushd "${BUILD_DIR}" > /dev/null || die
# Excluded tests:
# BootstrapTest: we actualy bootstrap it every time so why test it.
# BundleUtilities: bundle creation broken
# CMakeOnly.AllFindModules: pthread issues
# CTest.updatecvs: which fails to commit as root
# Fortran: requires fortran
# RunCMake.CompilerLauncher: also requires fortran
# RunCMake.CPack_RPM: breaks if app-arch/rpm is installed because
# debugedit binary is not in the expected location
# RunCMake.CPack_DEB: breaks if app-arch/dpkg is installed because
# it can't find a deb package that owns libc
# TestUpload, which requires network access
# RunCMake.CMP0125, known failure reported upstream (bug #829414)
local myctestargs=(
--output-on-failure
-E "(BootstrapTest|BundleUtilities|CMakeOnly.AllFindModules|CompileOptions|CTest.UpdateCVS|Fortran|RunCMake.CompilerLauncher|RunCMake.CPack_(DEB|RPM)|TestUpload|RunCMake.CMP0125)" \
)
virtx cmake_src_test virtx cmake_src_test
} }
src_install() { src_install() {
cmake_src_install cmake_src_install
# If USE=doc, there'll be newly generated docs which we install instead.
if ! use doc && [[ ${CMAKE_DOCS_PREBUILT} == 1 ]] ; then
doman "${WORKDIR}"/${PN}-${CMAKE_DOCS_VERSION}-docs/man*/*.[0-8]
fi
if use emacs; then if use emacs; then
elisp-install ${PN} Auxiliary/cmake-mode.el Auxiliary/cmake-mode.elc elisp-install ${PN} Auxiliary/cmake-mode.el Auxiliary/cmake-mode.elc
elisp-site-file-install "${FILESDIR}/${SITEFILE}" elisp-site-file-install "${FILESDIR}/${SITEFILE}"
@ -215,6 +274,7 @@ src_install() {
pkg_postinst() { pkg_postinst() {
use emacs && elisp-site-regen use emacs && elisp-site-regen
if use qt5; then if use qt5; then
xdg_icon_cache_update xdg_icon_cache_update
xdg_desktop_database_update xdg_desktop_database_update
@ -224,6 +284,7 @@ pkg_postinst() {
pkg_postrm() { pkg_postrm() {
use emacs && elisp-site-regen use emacs && elisp-site-regen
if use qt5; then if use qt5; then
xdg_icon_cache_update xdg_icon_cache_update
xdg_desktop_database_update xdg_desktop_database_update

View File

@ -1,9 +1,23 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=8
CMAKE_MAKEFILE_GENERATOR="emake" # TODO RunCMake.LinkWhatYouUse fails consistently w/ ninja # Generate using https://github.com/thesamesam/sam-gentoo-scripts/blob/main/niche/generate-cmake-docs
# Set to 1 if prebuilt, 0 if not
# (the construct below is to allow overriding from env for script)
: ${CMAKE_DOCS_PREBUILT:=1}
CMAKE_DOCS_PREBUILT_DEV=sam
CMAKE_DOCS_VERSION=$(ver_cut 1-3)
# Default to generating docs (inc. man pages) if no prebuilt; overridden later
# See bug #784815
CMAKE_DOCS_USEFLAG="+doc"
# TODO RunCMake.LinkWhatYouUse fails consistently w/ ninja
# ... but seems fine as of 3.22.3?
# TODO ... but bootstrap sometimes(?) fails with ninja now. bug #834759.
CMAKE_MAKEFILE_GENERATOR="emake"
CMAKE_REMOVE_MODULES_LIST=( none ) CMAKE_REMOVE_MODULES_LIST=( none )
inherit bash-completion-r1 cmake elisp-common flag-o-matic multiprocessing \ inherit bash-completion-r1 cmake elisp-common flag-o-matic multiprocessing \
toolchain-funcs virtualx xdg-utils toolchain-funcs virtualx xdg-utils
@ -12,13 +26,40 @@ MY_P="${P/_/-}"
DESCRIPTION="Cross platform Make" DESCRIPTION="Cross platform Make"
HOMEPAGE="https://cmake.org/" HOMEPAGE="https://cmake.org/"
if [[ ${PV} == 9999 ]] ; then
CMAKE_DOCS_PREBUILT=0
EGIT_REPO_URI="https://gitlab.kitware.com/cmake/cmake.git"
inherit git-r3
else
SRC_URI="https://cmake.org/files/v$(ver_cut 1-2)/${MY_P}.tar.gz" SRC_URI="https://cmake.org/files/v$(ver_cut 1-2)/${MY_P}.tar.gz"
if [[ ${CMAKE_DOCS_PREBUILT} == 1 ]] ; then
SRC_URI+=" !doc? ( https://dev.gentoo.org/~${CMAKE_DOCS_PREBUILT_DEV}/distfiles/${CATEGORY}/${PN}/${PN}-${CMAKE_DOCS_VERSION}-docs.tar.xz )"
fi
if [[ ${PV} != *_rc* ]] ; then
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/bradking.asc
inherit verify-sig
SRC_URI+=" verify-sig? (
https://github.com/Kitware/CMake/releases/download/v$(ver_cut 1-3)/${MY_P}-SHA-256.txt
https://github.com/Kitware/CMake/releases/download/v$(ver_cut 1-3)/${MY_P}-SHA-256.txt.asc
)"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
BDEPEND="verify-sig? ( sec-keys/openpgp-keys-bradking )"
fi
fi
[[ ${CMAKE_DOCS_PREBUILT} == 1 ]] && CMAKE_DOCS_USEFLAG="doc"
S="${WORKDIR}/${MY_P}"
LICENSE="CMake" LICENSE="CMake"
SLOT="0" SLOT="0"
[[ "${PV}" = *_rc* ]] || \ IUSE="${CMAKE_DOCS_USEFLAG} emacs ncurses qt5 test"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="doc emacs ncurses qt5 test"
RESTRICT="!test? ( test )" RESTRICT="!test? ( test )"
RDEPEND=" RDEPEND="
@ -39,7 +80,7 @@ RDEPEND="
) )
" "
DEPEND="${RDEPEND}" DEPEND="${RDEPEND}"
BDEPEND=" BDEPEND+="
doc? ( doc? (
dev-python/requests dev-python/requests
dev-python/sphinx dev-python/sphinx
@ -47,23 +88,21 @@ BDEPEND="
test? ( app-arch/libarchive[zstd] ) test? ( app-arch/libarchive[zstd] )
" "
S="${WORKDIR}/${MY_P}"
SITEFILE="50${PN}-gentoo.el" SITEFILE="50${PN}-gentoo.el"
PATCHES=( PATCHES=(
# prefix # Prefix
"${FILESDIR}"/${PN}-3.16.0_rc4-darwin-bundle.patch "${FILESDIR}"/${PN}-3.16.0_rc4-darwin-bundle.patch
"${FILESDIR}"/${PN}-3.14.0_rc3-prefix-dirs.patch "${FILESDIR}"/${PN}-3.14.0_rc3-prefix-dirs.patch
"${FILESDIR}"/${PN}-3.19.1-darwin-gcc.patch "${FILESDIR}"/${PN}-3.19.1-darwin-gcc.patch
# handle gentoo packaging in find modules # Handle gentoo packaging in find modules
"${FILESDIR}"/${PN}-3.17.0_rc1-FindBLAS.patch "${FILESDIR}"/${PN}-3.17.0_rc1-FindBLAS.patch
# Next patch needs to be reworked # Next patch needs to be reworked
#"${FILESDIR}"/${PN}-3.17.0_rc1-FindLAPACK.patch #"${FILESDIR}"/${PN}-3.17.0_rc1-FindLAPACK.patch
"${FILESDIR}"/${PN}-3.5.2-FindQt4.patch "${FILESDIR}"/${PN}-3.5.2-FindQt4.patch
# respect python eclasses # Respect python eclasses
"${FILESDIR}"/${PN}-2.8.10.2-FindPythonLibs.patch "${FILESDIR}"/${PN}-2.8.10.2-FindPythonLibs.patch
"${FILESDIR}"/${PN}-3.9.0_rc2-FindPythonInterp.patch "${FILESDIR}"/${PN}-3.9.0_rc2-FindPythonInterp.patch
@ -91,59 +130,43 @@ cmake_src_bootstrap() {
|| die "Bootstrap failed" || die "Bootstrap failed"
} }
cmake_src_test() { src_unpack() {
# fix OutDir and SelectLibraryConfigurations tests if [[ ${PV} == 9999 ]] ; then
# these are altered thanks to our eclass git-r3_src_unpack
sed -i -e 's:^#_cmake_modify_IGNORE ::g' \ elif ! use verify-sig || [[ ${PV} == *_rc* ]] ; then
"${S}"/Tests/{OutDir,CMakeOnly/SelectLibraryConfigurations}/CMakeLists.txt \ default
|| die else
cd "${DISTDIR}" || die
pushd "${BUILD_DIR}" > /dev/null # See https://mgorny.pl/articles/verify-sig-by-example.html#verifying-using-a-checksum-file-with-a-detached-signature
verify-sig_verify_detached ${MY_P}-SHA-256.txt{,.asc}
verify-sig_verify_unsigned_checksums ${MY_P}-SHA-256.txt sha256 ${MY_P}.tar.gz
local ctestargs cd "${WORKDIR}" || die
[[ -n ${TEST_VERBOSE} ]] && ctestargs="--extra-verbose --output-on-failure"
# Excluded tests: default
# BootstrapTest: we actually bootstrap it every time so why test it. fi
# BundleUtilities: bundle creation broken
# CMakeOnly.AllFindModules: pthread issues
# CTest.updatecvs: fails to commit as root
# Fortran: requires fortran
# RunCMake.CompilerLauncher: also requires fortran
# RunCMake.CPack_RPM: breaks if app-arch/rpm is installed because
# debugedit binary is not in the expected location
# RunCMake.CPack_DEB: breaks if app-arch/dpkg is installed because
# it can't find a deb package that owns libc
# RunCMake.{IncompatibleQt,ObsoleteQtMacros}: Require Qt4
# TestUpload: requires network access
"${BUILD_DIR}"/bin/ctest \
-j "$(makeopts_jobs)" \
--test-load "$(makeopts_loadavg)" \
${ctestargs} \
-E "(BootstrapTest|BundleUtilities|ConfigSources|CMakeOnly.AllFindModules|CPackComponentsDEB-components-depend2|CompileOptions|CTest.UpdateCVS|DependencyGraph|Fortran|RunCMake.CompilerLauncher|RunCMake.IncompatibleQt|RunCMake.ObsoleteQtMacros|RunCMake.PrecompileHeaders|RunCMake.CPack_(DEB|RPM)|TestUpload)" \
|| die "Tests failed"
popd > /dev/null
} }
src_prepare() { src_prepare() {
cmake_src_prepare cmake_src_prepare
if [[ ${CHOST} == *-darwin* ]] ; then if [[ ${CHOST} == *-darwin* ]] ; then
# disable Xcode hooks, bug #652134 # Disable Xcode hooks, bug #652134
sed -i -e 's/cm\(\|Global\|Local\)XCode[^.]\+\.\(cxx\|h\)//' \ sed -i -e 's/cm\(\|Global\|Local\)XCode[^.]\+\.\(cxx\|h\)//' \
Source/CMakeLists.txt || die Source/CMakeLists.txt || die
sed -i -e '/define CMAKE_USE_XCODE/s/XCODE/NO_XCODE/' \ sed -i -e '/define CMAKE_USE_XCODE/s/XCODE/NO_XCODE/' \
-e '/cmGlobalXCodeGenerator.h/d' \ -e '/cmGlobalXCodeGenerator.h/d' \
Source/cmake.cxx || die Source/cmake.cxx || die
# disable isysroot usage with GCC, we've properly instructed
# Disable isysroot usage with GCC, we've properly instructed
# where things are via GCC configuration and ldwrapper # where things are via GCC configuration and ldwrapper
sed -i -e '/cmake_gnu_set_sysroot_flag/d' \ sed -i -e '/cmake_gnu_set_sysroot_flag/d' \
Modules/Platform/Apple-GNU-*.cmake || die Modules/Platform/Apple-GNU-*.cmake || die
# disable isysroot usage with clang as well # Disable isysroot usage with clang as well
sed -i -e '/_SYSROOT_FLAG/d' \ sed -i -e '/_SYSROOT_FLAG/d' \
Modules/Platform/Apple-Clang.cmake || die Modules/Platform/Apple-Clang.cmake || die
# don't set a POSIX standard, system headers don't like that, #757426 # Don't set a POSIX standard, system headers don't like that, #757426
sed -i -e 's/^#if !defined(_WIN32) && !defined(__sun)/& \&\& !defined(__APPLE__)/' \ sed -i -e 's/^#if !defined(_WIN32) && !defined(__sun)/& \&\& !defined(__APPLE__)/' \
Source/cmLoadCommandCommand.cxx \ Source/cmLoadCommandCommand.cxx \
Source/cmStandardLexer.h \ Source/cmStandardLexer.h \
@ -159,7 +182,8 @@ src_prepare() {
-e "$(usex prefix-guest "s|@GENTOO_HOST@||" "/@GENTOO_HOST@/d")" \ -e "$(usex prefix-guest "s|@GENTOO_HOST@||" "/@GENTOO_HOST@/d")" \
-e "s|@GENTOO_PORTAGE_EPREFIX@|${EPREFIX}/|g" \ -e "s|@GENTOO_PORTAGE_EPREFIX@|${EPREFIX}/|g" \
Modules/Platform/{UnixPaths,Darwin}.cmake || die "sed failed" Modules/Platform/{UnixPaths,Darwin}.cmake || die "sed failed"
if ! has_version -b \>=${CATEGORY}/${PN}-3.4.0_rc1 || ! cmake --version &>/dev/null ; then
if ! has_version -b \>=${CATEGORY}/${PN}-3.13 || ! cmake --version &>/dev/null ; then
CMAKE_BINARY="${S}/Bootstrap.cmk/cmake" CMAKE_BINARY="${S}/Bootstrap.cmk/cmake"
cmake_src_bootstrap cmake_src_bootstrap
fi fi
@ -169,6 +193,10 @@ src_configure() {
# Fix linking on Solaris # Fix linking on Solaris
[[ ${CHOST} == *-solaris* ]] && append-ldflags -lsocket -lnsl [[ ${CHOST} == *-solaris* ]] && append-ldflags -lsocket -lnsl
# ODR warnings, bug #858335
# https://gitlab.kitware.com/cmake/cmake/-/issues/20740
filter-lto
local mycmakeargs=( local mycmakeargs=(
-DCMAKE_USE_SYSTEM_LIBRARIES=ON -DCMAKE_USE_SYSTEM_LIBRARIES=ON
-DCMAKE_DOC_DIR=/share/doc/${PF} -DCMAKE_DOC_DIR=/share/doc/${PF}
@ -190,12 +218,43 @@ src_compile() {
} }
src_test() { src_test() {
# Fix OutDir and SelectLibraryConfigurations tests
# these are altered thanks to our eclass
sed -i -e 's:^#_cmake_modify_IGNORE ::g' \
"${S}"/Tests/{OutDir,CMakeOnly/SelectLibraryConfigurations}/CMakeLists.txt \
|| die
pushd "${BUILD_DIR}" > /dev/null || die
# Excluded tests:
# BootstrapTest: we actualy bootstrap it every time so why test it.
# BundleUtilities: bundle creation broken
# CMakeOnly.AllFindModules: pthread issues
# CTest.updatecvs: which fails to commit as root
# Fortran: requires fortran
# RunCMake.CompilerLauncher: also requires fortran
# RunCMake.CPack_RPM: breaks if app-arch/rpm is installed because
# debugedit binary is not in the expected location
# RunCMake.CPack_DEB: breaks if app-arch/dpkg is installed because
# it can't find a deb package that owns libc
# TestUpload, which requires network access
# RunCMake.CMP0125, known failure reported upstream (bug #829414)
local myctestargs=(
--output-on-failure
-E "(BootstrapTest|BundleUtilities|CMakeOnly.AllFindModules|CompileOptions|CTest.UpdateCVS|Fortran|RunCMake.CompilerLauncher|RunCMake.CPack_(DEB|RPM)|TestUpload|RunCMake.CMP0125)" \
)
virtx cmake_src_test virtx cmake_src_test
} }
src_install() { src_install() {
cmake_src_install cmake_src_install
# If USE=doc, there'll be newly generated docs which we install instead.
if ! use doc && [[ ${CMAKE_DOCS_PREBUILT} == 1 ]] ; then
doman "${WORKDIR}"/${PN}-${CMAKE_DOCS_VERSION}-docs/man*/*.[0-8]
fi
if use emacs; then if use emacs; then
elisp-install ${PN} Auxiliary/cmake-mode.el Auxiliary/cmake-mode.elc elisp-install ${PN} Auxiliary/cmake-mode.el Auxiliary/cmake-mode.elc
elisp-site-file-install "${FILESDIR}/${SITEFILE}" elisp-site-file-install "${FILESDIR}/${SITEFILE}"
@ -215,6 +274,7 @@ src_install() {
pkg_postinst() { pkg_postinst() {
use emacs && elisp-site-regen use emacs && elisp-site-regen
if use qt5; then if use qt5; then
xdg_icon_cache_update xdg_icon_cache_update
xdg_desktop_database_update xdg_desktop_database_update
@ -224,6 +284,7 @@ pkg_postinst() {
pkg_postrm() { pkg_postrm() {
use emacs && elisp-site-regen use emacs && elisp-site-regen
if use qt5; then if use qt5; then
xdg_icon_cache_update xdg_icon_cache_update
xdg_desktop_database_update xdg_desktop_database_update

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata> <pkgmetadata>
<maintainer type="project">
<email>base-system@gentoo.org</email>
<name>Gentoo Base System</name>
</maintainer>
<maintainer type="project"> <maintainer type="project">
<email>kde@gentoo.org</email> <email>kde@gentoo.org</email>
<name>Gentoo KDE Project</name> <name>Gentoo KDE Project</name>

View File

@ -1,24 +1,21 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=8
CMAKE_ECLASS=cmake
inherit cmake-multilib inherit cmake-multilib
DESCRIPTION="Unit testing framework for C" DESCRIPTION="Unit testing framework for C"
HOMEPAGE="https://cmocka.org/" HOMEPAGE="https://cmocka.org/"
SRC_URI="https://cmocka.org/files/1.1/${P}.tar.xz" SRC_URI="https://cmocka.org/files/$(ver_cut 1-2)/${P}.tar.xz"
LICENSE="Apache-2.0" LICENSE="Apache-2.0"
SLOT="0" SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux" KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
IUSE="doc examples static-libs test" IUSE="doc examples static-libs test"
RESTRICT="!test? ( test )" RESTRICT="!test? ( test )"
BDEPEND=" BDEPEND="doc? ( app-doc/doxygen[dot] )"
doc? ( app-doc/doxygen[dot] )
"
multilib_src_configure() { multilib_src_configure() {
local mycmakeargs=( local mycmakeargs=(

View File

@ -0,0 +1,50 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit elisp-common meson
DESCRIPTION="Command line utilities to work with desktop menu entries"
HOMEPAGE="https://freedesktop.org/wiki/Software/desktop-file-utils/"
SRC_URI="https://www.freedesktop.org/software/${PN}/releases/${P}.tar.xz"
LICENSE="GPL-2+"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~x64-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
IUSE="emacs"
RDEPEND=">=dev-libs/glib-2.12:2"
DEPEND="${RDEPEND}"
BDEPEND="
app-arch/xz-utils
virtual/pkgconfig
emacs? ( >=app-editors/emacs-23.1:* )
"
SITEFILE="50${PN}-gentoo.el"
DOCS=( AUTHORS ChangeLog HACKING NEWS README )
# Will be in next release
PATCHES=( "${FILESDIR}/${P}-support-version-1.5.patch" )
src_compile() {
meson_src_compile
use emacs && elisp-compile misc/desktop-entry-mode.el
}
src_install() {
meson_src_install
if use emacs; then
elisp-install ${PN} misc/*.el misc/*.elc || die
elisp-site-file-install "${FILESDIR}"/${SITEFILE} || die
fi
}
pkg_postinst() {
use emacs && elisp-site-regen
}
pkg_postrm() {
use emacs && elisp-site-regen
}

View File

@ -0,0 +1,88 @@
# Adds support for Desktop Entry Specification 1.5. Gentoo bug 795570.
# Upstream commit URLs:
# https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/commit/425177a28b6215e0745f95100160a08e810fd47c
# https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/commit/56d220dd679c7c3a8f995a41a27a7d6f3df49dea
From 425177a28b6215e0745f95100160a08e810fd47c Mon Sep 17 00:00:00 2001
From: David King <amigadave@amigadave.com>
Date: Tue, 15 Feb 2022 10:54:40 +0000
Subject: [PATCH 1/2] validate: support SingleMainWindow key from 1.5
Fixes https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/issues/59
---
src/validate.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/validate.c b/src/validate.c
index 62406ab..ebb03b5 100644
--- a/src/validate.c
+++ b/src/validate.c
@@ -326,6 +326,9 @@ static DesktopKeyDefinition registered_desktop_keys[] = {
/* Since 1.4 */
{ DESKTOP_BOOLEAN_TYPE, "PrefersNonDefaultGPU", FALSE, FALSE, FALSE, NULL },
+ /* Since 1.5 */
+ { DESKTOP_BOOLEAN_TYPE, "SingleMainWindow", FALSE, FALSE, FALSE, NULL },
+
/* Keys reserved for KDE */
/* since 0.9.4 */
--
GitLab
From 56d220dd679c7c3a8f995a41a27a7d6f3df49dea Mon Sep 17 00:00:00 2001
From: David King <amigadave@amigadave.com>
Date: Tue, 15 Feb 2022 10:56:04 +0000
Subject: [PATCH 2/2] validate: Support version 1.5
Bump CURRENT_SPEC_VERSION to 1.5.
---
man/desktop-file-validate.1 | 2 +-
src/validate.c | 3 +++
src/validate.h | 2 +-
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/man/desktop-file-validate.1 b/man/desktop-file-validate.1
index 8e17411..ce87c47 100644
--- a/man/desktop-file-validate.1
+++ b/man/desktop-file-validate.1
@@ -9,7 +9,7 @@ desktop-file-validate \- Validate desktop entry files
.B desktop-file-validate [\-\-no-hints] [\-\-no-warn-deprecated] [\-\-warn-kde] FILE...
.SH DESCRIPTION
The \fIdesktop-file-validate\fP program is a tool to validate desktop
-entry files according to the Desktop Entry specification 1.4.
+entry files according to the Desktop Entry specification 1.5.
.PP
The specification describes a file format to provide information such as
name, icon and description for an application. Such a file can then be
diff --git a/src/validate.c b/src/validate.c
index ebb03b5..f9eedee 100644
--- a/src/validate.c
+++ b/src/validate.c
@@ -961,6 +961,9 @@ handle_version_key (kf_validator *kf,
const char *locale_key,
const char *value)
{
+ if (!strcmp (value, "1.5"))
+ return TRUE;
+
if (!strcmp (value, "1.4"))
return TRUE;
diff --git a/src/validate.h b/src/validate.h
index e6efd93..a7952cd 100644
--- a/src/validate.h
+++ b/src/validate.h
@@ -30,7 +30,7 @@
#include <glib.h>
-#define CURRENT_SPEC_VERSION "1.4"
+#define CURRENT_SPEC_VERSION "1.5"
#define GROUP_KDE_DESKTOP_ENTRY "KDE Desktop Entry"
#define GROUP_DESKTOP_ACTION "Desktop Action "
--
GitLab

View File

@ -0,0 +1,28 @@
https://bugs.gentoo.org/869134
From 09844ce4ca3d5975469640cea9c5414d5c0baa44 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Thu, 8 Sep 2022 04:45:03 +0200
Subject: [PATCH] Fix a warning regarding strncmp.
Reported by Sam James in <https://savannah.gnu.org/bugs/?63031>.
* lib/getopt.c (strncmp): Declare with a prototype.
--- a/lib/getopt.c
+++ b/lib/getopt.c
@@ -194,7 +194,6 @@ static char *posixly_correct;
whose names are inconsistent. */
extern char *getenv ();
-extern int strncmp ();
static char *
my_index (const char *str, int chr)
@@ -209,6 +208,7 @@ my_index (const char *str, int chr)
}
extern int strcmp (const char *, const char *);
+extern int strncmp (const char *, const char *, size_t);
extern size_t strlen (const char *);
#endif /* not __GNU_LIBRARY__ */

View File

@ -0,0 +1,24 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="A perfect hash function generator"
HOMEPAGE="https://www.gnu.org/software/gperf/"
SRC_URI="mirror://gnu/gperf/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt"
PATCHES=(
"${FILESDIR}"/${P}-strncmp-decl-mismatch.patch
)
src_prepare() {
sed -i \
-e "/^CPPFLAGS /s:=:+=:" \
*/Makefile.in || die #444078
default
}

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
@ -9,7 +9,7 @@ SRC_URI="mirror://gnu/gperf/${P}.tar.gz"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt" KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt"
src_prepare() { src_prepare() {
sed -i \ sed -i \

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
@ -11,7 +11,7 @@ HOMEPAGE="https://wiki.gnome.org/DocumentationProject/GtkDoc"
LICENSE="GPL-2 FDL-1.1" LICENSE="GPL-2 FDL-1.1"
SLOT="0" SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
RDEPEND="!<dev-util/gtk-doc-${GNOME_ORG_PVP}" RDEPEND="!<dev-util/gtk-doc-${GNOME_ORG_PVP}"
PDEPEND="virtual/pkgconfig" PDEPEND="virtual/pkgconfig"

View File

@ -1,8 +1,8 @@
# Copyright 2020-2021 Gentoo Authors # Copyright 2020-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
PYTHON_COMPAT=( python3_{6..9} ) PYTHON_COMPAT=( python3_{8..11} )
inherit python-r1 inherit python-r1
@ -11,7 +11,7 @@ HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
REQUIRED_USE="${PYTHON_REQUIRED_USE}" REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RDEPEND="${PYTHON_DEPS}" RDEPEND="${PYTHON_DEPS}"

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata> <pkgmetadata>
<maintainer type="person"> <maintainer type="person">
<email>floppym@gentoo.org</email> <email>floppym@gentoo.org</email>

View File

@ -1 +1,4 @@
DIST meson-0.60.3.tar.gz 2001124 BLAKE2B f66fb29d309f5dea9c0b1934e8b5dfc2b33586e06c6a2d616798d5724216035fe03a3f9b1c6976546d5d5c069734357d61a92aa43de01161cf1fe4297a1d1f2e SHA512 0aa6ef71c20cd899ebb0b202c6319e093e1df1c39fa58c94a1bb479efe630213272127346eab589948898d115d02d64f4bdffd892fbb9700884c1edf2dc6c6dc DIST meson-0.62.2.tar.gz 2038542 BLAKE2B 51446cd348f3e8681a61ebecf95f5aafcafd90654e3c86d87ee2b68239237bd889b667f3c6543faba7d4b98d7e0ed73d96c6a988913e5262d3b9611b80ff8db2 SHA512 4089588701f0f702eb3b794e0ede78b99f13ec7545d1a7470c7bfd6a857de59673684a543928dd578402578c53f38365a3a59e3e29022fd30a525353818a4195
DIST meson-0.63.0.tar.gz 2060688 BLAKE2B 763d35a6dee42d7ef61b00c472681042289f38737374178d43eb8e66c3abe38affd372fca7aea4f4c7cd52f25ad3754485f54f24ac5e453b7a58011397ddbbb8 SHA512 8d427261bb42d2bd1da7d4f7b5f53908044aa2cea6d020fb320b0ab9d9848e17cf28deb12ae6dc139807f9e377db0c8a546561e94301216b634bd77703f17cea
DIST meson-0.63.1.tar.gz 2064118 BLAKE2B 2d7bf439ed096cc38d9e676a8837069d10f34299cc5a61773df7a27d9a67fd33ce3b4193f33b35e5d77dc5cc346098e427f70f0dc0eafcebce055940420c785e SHA512 25f96e18bcdbb6346c44d9f8e63035d6cb3d8f781cf43ac5530ddd6f8090f4d16d192f8d331240154602e92b498b410fabb1381dc5f39db1dfb9da05a964d44e
DIST meson-0.63.2.tar.gz 2063397 BLAKE2B 765ef8994168bb149cce4dbbbdab4a5531b1c1119db5dace1a66c2728241830c7de075d586187d3f987fcc99e4181176a5910da56552ba735dda110a641d2541 SHA512 770d8d82502c5cd419123e09f6a445d2cbaea4463c5fa79f1497c868bf5defc5e5779a6e550ef5fcf75d57322d2b25b61574f4df0cbf001c4325c6abdbbc30b4

View File

@ -1,28 +0,0 @@
From df7ddc7ec19886ccdc433f42379c04c1df793565 Mon Sep 17 00:00:00 2001
From: Mike Gilbert <floppym@gentoo.org>
Date: Thu, 25 Nov 2021 21:19:32 -0500
Subject: [PATCH] Remove premature return in build.check_module_linking()
We want to loop over all link_targets to update
backwards_compat_want_soname if necessary.
Fixes: ec9bdc6edb17d1d9da5df2d6525025242c119f3a
---
mesonbuild/build.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index ad18a7f6a..263942556 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -1601,7 +1601,6 @@ You probably should put it in link_with instead.''')
'\n '
'use shared_libary() with `override_options: [\'b_lundef=false\']` instead.')
link_target.backwards_compat_want_soname = True
- return
class Generator(HoldableObject):
def __init__(self, exe: T.Union['Executable', programs.ExternalProgram],
--
2.34.0

View File

@ -0,0 +1,26 @@
linkers_detect: detect xtools (Apple ld64 derivative)
xtools is in use on x86_64 and ppc based darwin Prefix installs. Pick
it up as a valid linker.
Meson is the only thing known at this point to try and figure out what
linker is in use exactly, so instead of changing the linker (xtools),
just teach Meson about xtools.
Author: Fabian Groffen <grobian@gentoo.org>
Bug: https://bugs.gentoo.org/868516
--- a/mesonbuild/linkers/detect.py
+++ b/mesonbuild/linkers/detect.py
@@ -188,6 +188,11 @@
v = search_version(o)
linker = LLVMDynamicLinker(compiler, for_machine, comp_class.LINKER_PREFIX, override, version=v)
+ # detect xtools first, bug #868516
+ elif 'xtools-' in o.split('\n')[0]:
+ xtools = o.split(' ')[0]
+ v = xtools.split('-')[1]
+ linker = AppleDynamicLinker(compiler, for_machine, comp_class.LINKER_PREFIX, override, version=v)
# first might be apple clang, second is for real gcc, the third is icc
elif e.endswith('(use -v to see invocation)\n') or 'macosx_version' in e or 'ld: unknown option:' in e:
if isinstance(comp_class.LINKER_PREFIX, str):

View File

@ -1,28 +0,0 @@
From bb07c850c77e2bd07e1261547bc6b1e6b024f31d Mon Sep 17 00:00:00 2001
From: Mike Gilbert <floppym@gentoo.org>
Date: Fri, 27 Aug 2021 10:17:14 -0400
Subject: [PATCH] mcompile: treat load-average as a float
`ninja -l` accepts a double. We should do the same.
Bug: https://bugs.gentoo.org/810655
---
mesonbuild/mcompile.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mesonbuild/mcompile.py b/mesonbuild/mcompile.py
index bb7ecae9b..e20485c76 100644
--- a/mesonbuild/mcompile.py
+++ b/mesonbuild/mcompile.py
@@ -305,7 +305,7 @@ def add_arguments(parser: 'argparse.ArgumentParser') -> None:
'-l', '--load-average',
action='store',
default=0,
- type=int,
+ type=float,
help='The system load average to try to maintain (if supported).'
)
parser.add_argument(
--
2.33.0

View File

@ -2,17 +2,19 @@
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=8 EAPI=8
PYTHON_COMPAT=( python3_{7,8,9,10} )
PYTHON_COMPAT=( python3_{8..11} )
DISTUTILS_USE_PEP517=setuptools
if [[ ${PV} = *9999* ]]; then if [[ ${PV} = *9999* ]]; then
EGIT_REPO_URI="https://github.com/mesonbuild/meson" EGIT_REPO_URI="https://github.com/mesonbuild/meson"
inherit git-r3 inherit git-r3
else else
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz" SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi fi
inherit distutils-r1 toolchain-funcs inherit bash-completion-r1 distutils-r1 toolchain-funcs
DESCRIPTION="Open source build system" DESCRIPTION="Open source build system"
HOMEPAGE="https://mesonbuild.com/" HOMEPAGE="https://mesonbuild.com/"
@ -50,7 +52,7 @@ python_prepare_all() {
-e 's/test_python_module/_&/' -e 's/test_python_module/_&/'
) )
sed -i "${disable_unittests[@]}" run_unittests.py || die sed -i "${disable_unittests[@]}" unittests/*.py || die
# Broken due to python2 script created by python_wrapper_setup # Broken due to python2 script created by python_wrapper_setup
rm -r "test cases/frameworks/1 boost" || die rm -r "test cases/frameworks/1 boost" || die
@ -63,8 +65,6 @@ src_test() {
if ${PKG_CONFIG} --exists Qt5Core && ! ${PKG_CONFIG} --exists Qt5Gui; then if ${PKG_CONFIG} --exists Qt5Core && ! ${PKG_CONFIG} --exists Qt5Gui; then
ewarn "Found Qt5Core but not Qt5Gui; skipping tests" ewarn "Found Qt5Core but not Qt5Gui; skipping tests"
else else
# https://bugs.gentoo.org/687792
unset PKG_CONFIG
distutils-r1_src_test distutils-r1_src_test
fi fi
} }
@ -74,6 +74,9 @@ python_test() {
# test_meson_installed # test_meson_installed
unset PYTHONDONTWRITEBYTECODE unset PYTHONDONTWRITEBYTECODE
# https://bugs.gentoo.org/687792
unset PKG_CONFIG
# test_cross_file_system_paths # test_cross_file_system_paths
unset XDG_DATA_HOME unset XDG_DATA_HOME
@ -87,7 +90,8 @@ python_test() {
# value in JAVA_HOME, and the tests should get skipped. # value in JAVA_HOME, and the tests should get skipped.
export JAVA_HOME=$(java-config -O 2>/dev/null) export JAVA_HOME=$(java-config -O 2>/dev/null)
${EPYTHON} -u run_tests.py # Call python3 instead of EPYTHON to satisfy test_meson_uninstalled.
python3 run_tests.py
) || die "Testing failed with ${EPYTHON}" ) || die "Testing failed with ${EPYTHON}"
} }
@ -96,6 +100,9 @@ python_install_all() {
insinto /usr/share/vim/vimfiles insinto /usr/share/vim/vimfiles
doins -r data/syntax-highlighting/vim/{ftdetect,indent,syntax} doins -r data/syntax-highlighting/vim/{ftdetect,indent,syntax}
insinto /usr/share/zsh/site-functions insinto /usr/share/zsh/site-functions
doins data/shell-completions/zsh/_meson doins data/shell-completions/zsh/_meson
dobashcomp data/shell-completions/bash/meson
} }

View File

@ -0,0 +1,110 @@
# Copyright 2016-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{8..11} )
DISTUTILS_USE_PEP517=setuptools
if [[ ${PV} = *9999* ]]; then
EGIT_REPO_URI="https://github.com/mesonbuild/meson"
inherit git-r3
else
MY_P=${P/_/}
S=${WORKDIR}/${MY_P}
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
inherit bash-completion-r1 distutils-r1 toolchain-funcs
DESCRIPTION="Open source build system"
HOMEPAGE="https://mesonbuild.com/"
LICENSE="Apache-2.0"
SLOT="0"
IUSE="test"
RESTRICT="!test? ( test )"
DEPEND="
test? (
dev-libs/glib:2
dev-libs/gobject-introspection
dev-util/ninja
dev-vcs/git
sys-libs/zlib[static-libs(+)]
virtual/pkgconfig
)
"
python_prepare_all() {
local disable_unittests=(
# ASAN and sandbox both want control over LD_PRELOAD
# https://bugs.gentoo.org/673016
-e 's/test_generate_gir_with_address_sanitizer/_&/'
# ASAN is unsupported on some targets
# https://bugs.gentoo.org/692822
-e 's/test_pch_with_address_sanitizer/_&/'
# https://github.com/mesonbuild/meson/issues/7203
-e 's/test_templates/_&/'
# Broken due to python2 wrapper
-e 's/test_python_module/_&/'
)
sed -i "${disable_unittests[@]}" unittests/*.py || die
# Broken due to python2 script created by python_wrapper_setup
rm -r "test cases/frameworks/1 boost" || die
distutils-r1_python_prepare_all
}
src_test() {
tc-export PKG_CONFIG
if ${PKG_CONFIG} --exists Qt5Core && ! ${PKG_CONFIG} --exists Qt5Gui; then
ewarn "Found Qt5Core but not Qt5Gui; skipping tests"
else
distutils-r1_src_test
fi
}
python_test() {
(
# test_meson_installed
unset PYTHONDONTWRITEBYTECODE
# https://bugs.gentoo.org/687792
unset PKG_CONFIG
# test_cross_file_system_paths
unset XDG_DATA_HOME
# 'test cases/unit/73 summary' expects 80 columns
export COLUMNS=80
# If JAVA_HOME is not set, meson looks for javac in PATH.
# If javac is in /usr/bin, meson assumes /usr/include is a valid
# JDK include path. Setting JAVA_HOME works around this broken
# autodetection. If no JDK is installed, we should end up with an empty
# value in JAVA_HOME, and the tests should get skipped.
export JAVA_HOME=$(java-config -O 2>/dev/null)
# Call python3 instead of EPYTHON to satisfy test_meson_uninstalled.
python3 run_tests.py
) || die "Testing failed with ${EPYTHON}"
}
python_install_all() {
distutils-r1_python_install_all
insinto /usr/share/vim/vimfiles
doins -r data/syntax-highlighting/vim/{ftdetect,indent,syntax}
insinto /usr/share/zsh/site-functions
doins data/shell-completions/zsh/_meson
dobashcomp data/shell-completions/bash/meson
}

View File

@ -0,0 +1,110 @@
# Copyright 2016-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{8..11} )
DISTUTILS_USE_PEP517=setuptools
if [[ ${PV} = *9999* ]]; then
EGIT_REPO_URI="https://github.com/mesonbuild/meson"
inherit git-r3
else
MY_P=${P/_/}
S=${WORKDIR}/${MY_P}
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
inherit bash-completion-r1 distutils-r1 toolchain-funcs
DESCRIPTION="Open source build system"
HOMEPAGE="https://mesonbuild.com/"
LICENSE="Apache-2.0"
SLOT="0"
IUSE="test"
RESTRICT="!test? ( test )"
DEPEND="
test? (
dev-libs/glib:2
dev-libs/gobject-introspection
dev-util/ninja
dev-vcs/git
sys-libs/zlib[static-libs(+)]
virtual/pkgconfig
)
"
python_prepare_all() {
local disable_unittests=(
# ASAN and sandbox both want control over LD_PRELOAD
# https://bugs.gentoo.org/673016
-e 's/test_generate_gir_with_address_sanitizer/_&/'
# ASAN is unsupported on some targets
# https://bugs.gentoo.org/692822
-e 's/test_pch_with_address_sanitizer/_&/'
# https://github.com/mesonbuild/meson/issues/7203
-e 's/test_templates/_&/'
# Broken due to python2 wrapper
-e 's/test_python_module/_&/'
)
sed -i "${disable_unittests[@]}" unittests/*.py || die
# Broken due to python2 script created by python_wrapper_setup
rm -r "test cases/frameworks/1 boost" || die
distutils-r1_python_prepare_all
}
src_test() {
tc-export PKG_CONFIG
if ${PKG_CONFIG} --exists Qt5Core && ! ${PKG_CONFIG} --exists Qt5Gui; then
ewarn "Found Qt5Core but not Qt5Gui; skipping tests"
else
distutils-r1_src_test
fi
}
python_test() {
(
# test_meson_installed
unset PYTHONDONTWRITEBYTECODE
# https://bugs.gentoo.org/687792
unset PKG_CONFIG
# test_cross_file_system_paths
unset XDG_DATA_HOME
# 'test cases/unit/73 summary' expects 80 columns
export COLUMNS=80
# If JAVA_HOME is not set, meson looks for javac in PATH.
# If javac is in /usr/bin, meson assumes /usr/include is a valid
# JDK include path. Setting JAVA_HOME works around this broken
# autodetection. If no JDK is installed, we should end up with an empty
# value in JAVA_HOME, and the tests should get skipped.
export JAVA_HOME=$(java-config -O 2>/dev/null)
# Call python3 instead of EPYTHON to satisfy test_meson_uninstalled.
python3 run_tests.py
) || die "Testing failed with ${EPYTHON}"
}
python_install_all() {
distutils-r1_python_install_all
insinto /usr/share/vim/vimfiles
doins -r data/syntax-highlighting/vim/{ftdetect,indent,syntax}
insinto /usr/share/zsh/site-functions
doins data/shell-completions/zsh/_meson
dobashcomp data/shell-completions/bash/meson
}

View File

@ -0,0 +1,114 @@
# Copyright 2016-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{8..11} )
DISTUTILS_USE_PEP517=setuptools
if [[ ${PV} = *9999* ]]; then
EGIT_REPO_URI="https://github.com/mesonbuild/meson"
inherit git-r3
else
MY_P=${P/_/}
S=${WORKDIR}/${MY_P}
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
inherit bash-completion-r1 distutils-r1 toolchain-funcs
DESCRIPTION="Open source build system"
HOMEPAGE="https://mesonbuild.com/"
LICENSE="Apache-2.0"
SLOT="0"
IUSE="test"
RESTRICT="!test? ( test )"
DEPEND="
test? (
dev-libs/glib:2
dev-libs/gobject-introspection
dev-util/ninja
dev-vcs/git
sys-libs/zlib[static-libs(+)]
virtual/pkgconfig
)
"
PATCHES=(
"${FILESDIR}"/${PN}-0.63-xtools-support.patch
)
python_prepare_all() {
local disable_unittests=(
# ASAN and sandbox both want control over LD_PRELOAD
# https://bugs.gentoo.org/673016
-e 's/test_generate_gir_with_address_sanitizer/_&/'
# ASAN is unsupported on some targets
# https://bugs.gentoo.org/692822
-e 's/test_pch_with_address_sanitizer/_&/'
# https://github.com/mesonbuild/meson/issues/7203
-e 's/test_templates/_&/'
# Broken due to python2 wrapper
-e 's/test_python_module/_&/'
)
sed -i "${disable_unittests[@]}" unittests/*.py || die
# Broken due to python2 script created by python_wrapper_setup
rm -r "test cases/frameworks/1 boost" || die
distutils-r1_python_prepare_all
}
src_test() {
tc-export PKG_CONFIG
if ${PKG_CONFIG} --exists Qt5Core && ! ${PKG_CONFIG} --exists Qt5Gui; then
ewarn "Found Qt5Core but not Qt5Gui; skipping tests"
else
distutils-r1_src_test
fi
}
python_test() {
(
# test_meson_installed
unset PYTHONDONTWRITEBYTECODE
# https://bugs.gentoo.org/687792
unset PKG_CONFIG
# test_cross_file_system_paths
unset XDG_DATA_HOME
# 'test cases/unit/73 summary' expects 80 columns
export COLUMNS=80
# If JAVA_HOME is not set, meson looks for javac in PATH.
# If javac is in /usr/bin, meson assumes /usr/include is a valid
# JDK include path. Setting JAVA_HOME works around this broken
# autodetection. If no JDK is installed, we should end up with an empty
# value in JAVA_HOME, and the tests should get skipped.
export JAVA_HOME=$(java-config -O 2>/dev/null)
# Call python3 instead of EPYTHON to satisfy test_meson_uninstalled.
python3 run_tests.py
) || die "Testing failed with ${EPYTHON}"
}
python_install_all() {
distutils-r1_python_install_all
insinto /usr/share/vim/vimfiles
doins -r data/syntax-highlighting/vim/{ftdetect,indent,syntax}
insinto /usr/share/zsh/site-functions
doins data/shell-completions/zsh/_meson
dobashcomp data/shell-completions/bash/meson
}

View File

@ -1,18 +1,22 @@
# Copyright 2016-2021 Gentoo Authors # Copyright 2016-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=8 EAPI=8
PYTHON_COMPAT=( python3_{7,8,9,10} )
PYTHON_COMPAT=( python3_{8..11} )
DISTUTILS_USE_PEP517=setuptools
if [[ ${PV} = *9999* ]]; then if [[ ${PV} = *9999* ]]; then
EGIT_REPO_URI="https://github.com/mesonbuild/meson" EGIT_REPO_URI="https://github.com/mesonbuild/meson"
inherit git-r3 inherit git-r3
else else
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz" MY_P=${P/_/}
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" S=${WORKDIR}/${MY_P}
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi fi
inherit distutils-r1 toolchain-funcs inherit bash-completion-r1 distutils-r1 toolchain-funcs
DESCRIPTION="Open source build system" DESCRIPTION="Open source build system"
HOMEPAGE="https://mesonbuild.com/" HOMEPAGE="https://mesonbuild.com/"
@ -33,6 +37,10 @@ DEPEND="
) )
" "
PATCHES=(
"${FILESDIR}"/${PN}-0.63-xtools-support.patch
)
python_prepare_all() { python_prepare_all() {
local disable_unittests=( local disable_unittests=(
# ASAN and sandbox both want control over LD_PRELOAD # ASAN and sandbox both want control over LD_PRELOAD
@ -50,7 +58,7 @@ python_prepare_all() {
-e 's/test_python_module/_&/' -e 's/test_python_module/_&/'
) )
sed -i "${disable_unittests[@]}" run_unittests.py || die sed -i "${disable_unittests[@]}" unittests/*.py || die
# Broken due to python2 script created by python_wrapper_setup # Broken due to python2 script created by python_wrapper_setup
rm -r "test cases/frameworks/1 boost" || die rm -r "test cases/frameworks/1 boost" || die
@ -63,8 +71,6 @@ src_test() {
if ${PKG_CONFIG} --exists Qt5Core && ! ${PKG_CONFIG} --exists Qt5Gui; then if ${PKG_CONFIG} --exists Qt5Core && ! ${PKG_CONFIG} --exists Qt5Gui; then
ewarn "Found Qt5Core but not Qt5Gui; skipping tests" ewarn "Found Qt5Core but not Qt5Gui; skipping tests"
else else
# https://bugs.gentoo.org/687792
unset PKG_CONFIG
distutils-r1_src_test distutils-r1_src_test
fi fi
} }
@ -74,6 +80,9 @@ python_test() {
# test_meson_installed # test_meson_installed
unset PYTHONDONTWRITEBYTECODE unset PYTHONDONTWRITEBYTECODE
# https://bugs.gentoo.org/687792
unset PKG_CONFIG
# test_cross_file_system_paths # test_cross_file_system_paths
unset XDG_DATA_HOME unset XDG_DATA_HOME
@ -87,7 +96,8 @@ python_test() {
# value in JAVA_HOME, and the tests should get skipped. # value in JAVA_HOME, and the tests should get skipped.
export JAVA_HOME=$(java-config -O 2>/dev/null) export JAVA_HOME=$(java-config -O 2>/dev/null)
${EPYTHON} -u run_tests.py # Call python3 instead of EPYTHON to satisfy test_meson_uninstalled.
python3 run_tests.py
) || die "Testing failed with ${EPYTHON}" ) || die "Testing failed with ${EPYTHON}"
} }
@ -96,6 +106,9 @@ python_install_all() {
insinto /usr/share/vim/vimfiles insinto /usr/share/vim/vimfiles
doins -r data/syntax-highlighting/vim/{ftdetect,indent,syntax} doins -r data/syntax-highlighting/vim/{ftdetect,indent,syntax}
insinto /usr/share/zsh/site-functions insinto /usr/share/zsh/site-functions
doins data/shell-completions/zsh/_meson doins data/shell-completions/zsh/_meson
dobashcomp data/shell-completions/bash/meson
} }

View File

@ -10,6 +10,7 @@
<name>William Hubbs</name> <name>William Hubbs</name>
</maintainer> </maintainer>
<upstream> <upstream>
<remote-id type="github">mesonbuild/meson</remote-id>
<remote-id type="pypi">meson</remote-id> <remote-id type="pypi">meson</remote-id>
</upstream> </upstream>
</pkgmetadata> </pkgmetadata>

View File

@ -1,3 +1,2 @@
DIST ninja-1.10.0.tar.gz 210313 BLAKE2B 0a3db145deaea8a990958ad2e812bc18ed014aaba94911a2905b082745a0d08f10ce1113badabaa362f3834540b7bd3858f07e2a5fce268c66d3d6c73e974e76 SHA512 5ed47ef1ff18a03eb73296629679a8617a08ee443e10e28ae9cb24e4506f84fe1eb142888adea9a62364b626b35817def8c55ba956c9b3cbc7b82d3e62293044 DIST ninja-1.11.0.tar.gz 229475 BLAKE2B 71c8b6cf9524bdc11cf73f7e761f0d7deef2498a970c1439c10cc7d361e31fed1e3b54bcb185f3c7ed041f15704851a96e42560058af61b8a5df6e918d52ebf3 SHA512 9b9c8dae2251f9ddba50680911271b8504c292994fd90a0da94902f64c69a9edc72212217df5c651ddfc2f79c2ae03e84c99b805497dcd7497c53a1617de83e7
DIST ninja-1.10.1.tar.gz 211216 BLAKE2B cb27beeef903ff7c5a00f2ac85b36e66d9c41bcb271edbb6c6d827d5b2b652bacfe3d429a3f966d22fd97495323f83692abf7835f3d6ed3af51a3df9fef180c1 SHA512 9915767a6ffc7147903f346082b5c31fcaeb1e45742754cfaaa642e8ec4c1bd9ec26692a59eb4e2118c397336712a6548e6a16408e094001f8f0c173e67afcc2 DIST ninja-1.11.1.tar.gz 229479 BLAKE2B c96cf7c319b7abd65f644465688d256f8b3a576c4616d0c63852e25dd0dc5f63c66708d429d8dddb6228502eb147211a86a5dd369b80ec2228902b370d2343e5 SHA512 1bca38877c70ee6613f347ffccef5adc02ba0a3947c62ae004ea97f918442b5a3de92378e4f820ae2a7676bc7609d25fbc7d41f6cfb3a61e5e4b26ec3639e403
DIST ninja-1.10.2.tar.gz 213959 BLAKE2B b8160ca6d58cfa0edb93d16b7dfb9776d290c42e54b33b78cd925f167c80f8794e4cc30af984a526b8263c7904a734cf0770d3c27283d21d02f18d3e2eb70032 SHA512 895412ae1cbc83c656e92f282602a29300e08274e9dea0da4464202ae556e7a1ab03bec057f23da4756bbd91bd2d744cd7a64b336740fd2782bb4db5c3b7b496

View File

@ -1,38 +0,0 @@
From b748d085618bf5e802de6a13b07d632d20ab04bf Mon Sep 17 00:00:00 2001
From: Mike Gilbert <floppym@gentoo.org>
Date: Fri, 20 Mar 2020 19:36:01 -0400
Subject: [PATCH] Replace references to README with README.md
The README file was renamed to README.md in commit
a37da20ae74c81703b1c811182fc154d95ed46fe.
---
configure.py | 2 +-
misc/packaging/ninja.spec | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure.py b/configure.py
index 7d8ce9045..8eef7e6eb 100755
--- a/configure.py
+++ b/configure.py
@@ -649,7 +649,7 @@ def has_re2c():
command='$doxygen_mainpage_generator $in > $out',
description='DOXYGEN_MAINPAGE $out')
mainpage = n.build(built('doxygen_mainpage'), 'doxygen_mainpage',
- ['README', 'COPYING'],
+ ['README.md', 'COPYING'],
implicit=['$doxygen_mainpage_generator'])
n.build('doxygen', 'doxygen', doc('doxygen.config'),
implicit=mainpage)
diff --git a/misc/packaging/ninja.spec b/misc/packaging/ninja.spec
index 05f5a079a..36e518186 100644
--- a/misc/packaging/ninja.spec
+++ b/misc/packaging/ninja.spec
@@ -32,7 +32,7 @@ cp -p ninja %{buildroot}%{_bindir}/
%files
%defattr(-, root, root)
-%doc COPYING README doc/manual.html
+%doc COPYING README.md doc/manual.html
%{_bindir}/*
%clean

View File

@ -6,6 +6,6 @@
<name>Chromium in Gentoo Project</name> <name>Chromium in Gentoo Project</name>
</maintainer> </maintainer>
<upstream> <upstream>
<remote-id type="github">martine/ninja</remote-id> <remote-id type="github">ninja-build/ninja</remote-id>
</upstream> </upstream>
</pkgmetadata> </pkgmetadata>

View File

@ -1,133 +0,0 @@
# Copyright 2012-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{7,8} )
inherit bash-completion-r1 elisp-common python-any-r1 toolchain-funcs
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/ninja-build/ninja.git"
else
SRC_URI="https://github.com/ninja-build/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
DESCRIPTION="A small build system similar to make"
HOMEPAGE="https://ninja-build.org/"
LICENSE="Apache-2.0"
SLOT="0"
IUSE="doc emacs test vim-syntax"
RESTRICT="!test? ( test )"
BDEPEND="
${PYTHON_DEPS}
dev-util/re2c
doc? (
app-text/asciidoc
app-doc/doxygen
dev-libs/libxslt
)
test? ( dev-cpp/gtest )
"
RDEPEND="
emacs? ( >=app-editors/emacs-23.1:* )
vim-syntax? (
|| (
app-editors/vim
app-editors/gvim
)
)
"
PATCHES=(
"${FILESDIR}"/ninja-cflags.patch
"${FILESDIR}"/ninja-1.10.0-readme.patch
)
run_for_build() {
if tc-is-cross-compiler; then
local -x AR=$(tc-getBUILD_AR)
local -x CXX=$(tc-getBUILD_CXX)
local -x CFLAGS=
local -x CXXFLAGS=${BUILD_CXXFLAGS}
local -x LDFLAGS=${BUILD_LDFLAGS}
fi
echo "$@" >&2
"$@"
}
src_compile() {
tc-export AR CXX
# configure.py appends CFLAGS to CXXFLAGS
unset CFLAGS
run_for_build ${EPYTHON} configure.py --bootstrap --verbose || die
if tc-is-cross-compiler; then
mv ninja ninja-build || die
${EPYTHON} configure.py || die
./ninja-build -v ninja || die
else
ln ninja ninja-build || die
fi
if use doc; then
./ninja-build -v doxygen manual || die
fi
if use emacs; then
elisp-compile misc/ninja-mode.el || die
fi
}
src_test() {
if ! tc-is-cross-compiler; then
# Bug 485772
ulimit -n 2048
./ninja -v ninja_test || die
./ninja_test || die
fi
}
src_install() {
dodoc README.md CONTRIBUTING.md
if use doc; then
docinto html
dodoc -r doc/doxygen/html/.
dodoc doc/manual.html
fi
dobin ninja
newbashcomp misc/bash-completion "${PN}"
if use vim-syntax; then
insinto /usr/share/vim/vimfiles/syntax/
doins misc/ninja.vim
echo 'au BufNewFile,BufRead *.ninja set ft=ninja' > "${T}/ninja.vim"
insinto /usr/share/vim/vimfiles/ftdetect
doins "${T}/ninja.vim"
fi
insinto /usr/share/zsh/site-functions
newins misc/zsh-completion _ninja
if use emacs; then
cd misc || die
elisp-install ninja ninja-mode.el* || die
fi
}
pkg_postinst() {
use emacs && elisp-site-regen
}
pkg_postrm() {
use emacs && elisp-site-regen
}

View File

@ -1,136 +0,0 @@
# Copyright 2012-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 elisp-common python-any-r1 toolchain-funcs
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/ninja-build/ninja.git"
else
SRC_URI="https://github.com/ninja-build/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
DESCRIPTION="A small build system similar to make"
HOMEPAGE="https://ninja-build.org/"
LICENSE="Apache-2.0"
SLOT="0"
IUSE="doc emacs test vim-syntax"
RESTRICT="!test? ( test )"
BDEPEND="
${PYTHON_DEPS}
dev-util/re2c
doc? (
app-text/asciidoc
app-doc/doxygen
dev-libs/libxslt
)
test? ( dev-cpp/gtest )
"
RDEPEND="
emacs? ( >=app-editors/emacs-23.1:* )
vim-syntax? (
|| (
app-editors/vim
app-editors/gvim
)
)
"
PATCHES=(
"${FILESDIR}"/ninja-cflags.patch
)
run_for_build() {
if tc-is-cross-compiler; then
local -x AR=$(tc-getBUILD_AR)
local -x CXX=$(tc-getBUILD_CXX)
local -x CFLAGS=
local -x CXXFLAGS=${BUILD_CXXFLAGS}
local -x LDFLAGS=${BUILD_LDFLAGS}
fi
echo "$@" >&2
"$@"
}
src_compile() {
tc-export AR CXX
# configure.py appends CFLAGS to CXXFLAGS
unset CFLAGS
# enable LFS, bug #760848
export CXXFLAGS+=" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
BUILD_CXXFLAGS+=" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
run_for_build ${EPYTHON} configure.py --bootstrap --verbose || die
if tc-is-cross-compiler; then
mv ninja ninja-build || die
${EPYTHON} configure.py || die
./ninja-build -v ninja || die
else
ln ninja ninja-build || die
fi
if use doc; then
./ninja-build -v doxygen manual || die
fi
if use emacs; then
elisp-compile misc/ninja-mode.el || die
fi
}
src_test() {
if ! tc-is-cross-compiler; then
# Bug 485772
ulimit -n 2048
./ninja -v ninja_test || die
./ninja_test || die
fi
}
src_install() {
dodoc README.md CONTRIBUTING.md
if use doc; then
docinto html
dodoc -r doc/doxygen/html/.
dodoc doc/manual.html
fi
dobin ninja
newbashcomp misc/bash-completion "${PN}"
if use vim-syntax; then
insinto /usr/share/vim/vimfiles/syntax/
doins misc/ninja.vim
echo 'au BufNewFile,BufRead *.ninja set ft=ninja' > "${T}/ninja.vim"
insinto /usr/share/vim/vimfiles/ftdetect
doins "${T}/ninja.vim"
fi
insinto /usr/share/zsh/site-functions
newins misc/zsh-completion _ninja
if use emacs; then
cd misc || die
elisp-install ninja ninja-mode.el* || die
fi
}
pkg_postinst() {
use emacs && elisp-site-regen
}
pkg_postrm() {
use emacs && elisp-site-regen
}

View File

@ -1,9 +1,9 @@
# Copyright 2012-2021 Gentoo Authors # Copyright 2012-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
PYTHON_COMPAT=( python3_{7,8,9} ) PYTHON_COMPAT=( python3_{8..11} )
inherit bash-completion-r1 elisp-common python-any-r1 toolchain-funcs inherit bash-completion-r1 elisp-common python-any-r1 toolchain-funcs
@ -12,7 +12,7 @@ if [[ ${PV} == 9999 ]]; then
EGIT_REPO_URI="https://github.com/ninja-build/ninja.git" EGIT_REPO_URI="https://github.com/ninja-build/ninja.git"
else else
SRC_URI="https://github.com/ninja-build/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" SRC_URI="https://github.com/ninja-build/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi fi
DESCRIPTION="A small build system similar to make" DESCRIPTION="A small build system similar to make"
@ -31,6 +31,7 @@ BDEPEND="
app-text/asciidoc app-text/asciidoc
app-doc/doxygen app-doc/doxygen
dev-libs/libxslt dev-libs/libxslt
media-gfx/graphviz
) )
test? ( dev-cpp/gtest ) test? ( dev-cpp/gtest )
" "

View File

@ -1,18 +1,18 @@
# Copyright 2012-2021 Gentoo Authors # Copyright 2012-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=8
PYTHON_COMPAT=( python3_{7,8,9} ) PYTHON_COMPAT=( python3_{8..11} )
inherit bash-completion-r1 elisp-common python-any-r1 toolchain-funcs inherit edo bash-completion-r1 elisp-common python-any-r1 toolchain-funcs
if [[ ${PV} == 9999 ]]; then if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/ninja-build/ninja.git" EGIT_REPO_URI="https://github.com/ninja-build/ninja.git"
inherit git-r3
else else
SRC_URI="https://github.com/ninja-build/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" SRC_URI="https://github.com/ninja-build/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi fi
DESCRIPTION="A small build system similar to make" DESCRIPTION="A small build system similar to make"
@ -21,7 +21,7 @@ HOMEPAGE="https://ninja-build.org/"
LICENSE="Apache-2.0" LICENSE="Apache-2.0"
SLOT="0" SLOT="0"
IUSE="doc emacs test vim-syntax" IUSE="doc emacs test"
RESTRICT="!test? ( test )" RESTRICT="!test? ( test )"
BDEPEND=" BDEPEND="
@ -31,18 +31,11 @@ BDEPEND="
app-text/asciidoc app-text/asciidoc
app-doc/doxygen app-doc/doxygen
dev-libs/libxslt dev-libs/libxslt
media-gfx/graphviz
) )
test? ( dev-cpp/gtest ) test? ( dev-cpp/gtest )
" "
RDEPEND=" RDEPEND="emacs? ( >=app-editors/emacs-23.1:* )"
emacs? ( >=app-editors/emacs-23.1:* )
vim-syntax? (
|| (
app-editors/vim
app-editors/gvim
)
)
"
PATCHES=( PATCHES=(
"${FILESDIR}"/ninja-cflags.patch "${FILESDIR}"/ninja-cflags.patch
@ -89,30 +82,30 @@ src_test() {
if ! tc-is-cross-compiler; then if ! tc-is-cross-compiler; then
# Bug 485772 # Bug 485772
ulimit -n 2048 ulimit -n 2048
./ninja -v ninja_test || die edo ./ninja -v ninja_test
./ninja_test || die edo ./ninja_test
fi fi
} }
src_install() { src_install() {
dodoc README.md CONTRIBUTING.md dodoc README.md CONTRIBUTING.md
if use doc; then if use doc; then
docinto html docinto html
dodoc -r doc/doxygen/html/. dodoc -r doc/doxygen/html/.
dodoc doc/manual.html dodoc doc/manual.html
fi fi
dobin ninja dobin ninja
newbashcomp misc/bash-completion "${PN}" newbashcomp misc/bash-completion ${PN}
if use vim-syntax; then
insinto /usr/share/vim/vimfiles/syntax/ insinto /usr/share/vim/vimfiles/syntax/
doins misc/ninja.vim doins misc/ninja.vim
echo 'au BufNewFile,BufRead *.ninja set ft=ninja' > "${T}/ninja.vim" echo 'au BufNewFile,BufRead *.ninja set ft=ninja' > "${T}"/ninja.vim || die
insinto /usr/share/vim/vimfiles/ftdetect insinto /usr/share/vim/vimfiles/ftdetect
doins "${T}/ninja.vim" doins "${T}"/ninja.vim
fi
insinto /usr/share/zsh/site-functions insinto /usr/share/zsh/site-functions
newins misc/zsh-completion _ninja newins misc/zsh-completion _ninja

View File

@ -1,18 +1,18 @@
# Copyright 2012-2021 Gentoo Authors # Copyright 2012-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=8
PYTHON_COMPAT=( python3_{8..10} ) PYTHON_COMPAT=( python3_{8..11} )
inherit bash-completion-r1 elisp-common python-any-r1 toolchain-funcs inherit edo bash-completion-r1 elisp-common python-any-r1 toolchain-funcs
if [[ ${PV} == 9999 ]]; then if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/ninja-build/ninja.git" EGIT_REPO_URI="https://github.com/ninja-build/ninja.git"
inherit git-r3
else else
SRC_URI="https://github.com/ninja-build/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" SRC_URI="https://github.com/ninja-build/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi fi
DESCRIPTION="A small build system similar to make" DESCRIPTION="A small build system similar to make"
@ -21,7 +21,7 @@ HOMEPAGE="https://ninja-build.org/"
LICENSE="Apache-2.0" LICENSE="Apache-2.0"
SLOT="0" SLOT="0"
IUSE="doc emacs test vim-syntax" IUSE="doc emacs test"
RESTRICT="!test? ( test )" RESTRICT="!test? ( test )"
BDEPEND=" BDEPEND="
@ -31,18 +31,11 @@ BDEPEND="
app-text/asciidoc app-text/asciidoc
app-doc/doxygen app-doc/doxygen
dev-libs/libxslt dev-libs/libxslt
media-gfx/graphviz
) )
test? ( dev-cpp/gtest ) test? ( dev-cpp/gtest )
" "
RDEPEND=" RDEPEND="emacs? ( >=app-editors/emacs-23.1:* )"
emacs? ( >=app-editors/emacs-23.1:* )
vim-syntax? (
|| (
app-editors/vim
app-editors/gvim
)
)
"
PATCHES=( PATCHES=(
"${FILESDIR}"/ninja-cflags.patch "${FILESDIR}"/ninja-cflags.patch
@ -89,30 +82,30 @@ src_test() {
if ! tc-is-cross-compiler; then if ! tc-is-cross-compiler; then
# Bug 485772 # Bug 485772
ulimit -n 2048 ulimit -n 2048
./ninja -v ninja_test || die edo ./ninja -v ninja_test
./ninja_test || die edo ./ninja_test
fi fi
} }
src_install() { src_install() {
dodoc README.md CONTRIBUTING.md dodoc README.md CONTRIBUTING.md
if use doc; then if use doc; then
docinto html docinto html
dodoc -r doc/doxygen/html/. dodoc -r doc/doxygen/html/.
dodoc doc/manual.html dodoc doc/manual.html
fi fi
dobin ninja dobin ninja
newbashcomp misc/bash-completion "${PN}" newbashcomp misc/bash-completion ${PN}
if use vim-syntax; then
insinto /usr/share/vim/vimfiles/syntax/ insinto /usr/share/vim/vimfiles/syntax/
doins misc/ninja.vim doins misc/ninja.vim
echo 'au BufNewFile,BufRead *.ninja set ft=ninja' > "${T}/ninja.vim" echo 'au BufNewFile,BufRead *.ninja set ft=ninja' > "${T}"/ninja.vim || die
insinto /usr/share/vim/vimfiles/ftdetect insinto /usr/share/vim/vimfiles/ftdetect
doins "${T}/ninja.vim" doins "${T}"/ninja.vim
fi
insinto /usr/share/zsh/site-functions insinto /usr/share/zsh/site-functions
newins misc/zsh-completion _ninja newins misc/zsh-completion _ninja

View File

@ -1,3 +1,2 @@
DIST dwarves-1.20.tar.xz 688728 BLAKE2B c57f390f7e1d20c861a4acb8cd7fe238a3f7c3f2d915d96fc051dba2587942e8fabfa4f524d18555c486863fa02bc4ab63d90e90d477f376dc5e547aa36cccac SHA512 306bb74c498527a5a9bdae4d304e90511336cab627d9acad5237d93cbb48efe11dbca4418c540fa03e3ecdd168ce224cabe9fd2f6fbb50520d0dd17741c80817 DIST dwarves-1.23.tar.xz 815076 BLAKE2B 2d89ac2d8cacb70a322b1c946356c0b18a2276f7a549efc2cf530c087dd718c7d01f5bcf8b9208965e066770064b6d8db7a9f6ab9a3f3a4612f6fcc8d146c1e8 SHA512 5255930d6898ce35a41e3e553363964663d2b686d12732ff6140fa1d06fcc3806adf28e24ec35ab0712eec0562c52c3943afe9ecce468b0053b852ffeb04c3dc
DIST dwarves-1.21.tar.xz 910480 BLAKE2B b6dcdaf008a7714838904b0bc1050e6af4617e00e168f45a3f1a5d4611a05c898182f3395b2f10478240e05c22ce82a3a7381a1ea7ab41684e3b05ea6e73620c SHA512 69f510025f5790a004c356546f7d92996ad84c4ff1636876b48f1c7d81bf66c83da70f11a1912d65b46f81bea79418782021396a018e74baae5cad9221af14e1 DIST dwarves-1.24.tar.xz 875744 BLAKE2B 6766b5a5ecbf64013227e7cd459af662fc213f230b5b1279354fcaaccebfa3d74f9a2254542dc4f3f1bb4a5def1d4c77e2445fa8b531fa8b9e331cdfc23155fe SHA512 3cdca183cf68ec46fd9a0301ae4a8a30b23a8139c65ffba64ae11f85f9e942f7341dca6f88a4a3b49f32bfd880927193a80fa011726e4a33d3e5a1a146326c06
DIST dwarves-1.22.tar.xz 922016 BLAKE2B 79ba94bcbec6ddc9ebcc6d9e72ed63c8704ca9a97bb3df1910114e89cdd4e7cc75024e4281f15f06be8f5b4656dd957a44d561a16beff1af14d8c7dc32fbd184 SHA512 d45b19505cd59eb2cbb42304ab599661355a4085262cb202757822ec1c05476c851dea85e922f9421efb8a978ab475a6a6545757c6ab080f13ac77c5f7186606

View File

@ -1,52 +0,0 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{7,8,9} )
inherit multilib cmake python-single-r1
DESCRIPTION="pahole (Poke-a-Hole) and other DWARF2 utilities"
HOMEPAGE="https://git.kernel.org/cgit/devel/pahole/pahole.git/"
LICENSE="GPL-2" # only
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
IUSE="debug"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RDEPEND="${PYTHON_DEPS}
>=dev-libs/elfutils-0.178
sys-libs/zlib"
DEPEND="${RDEPEND}"
MY_PN=dwarves
MY_P=${MY_PN}-${PV}
S=${WORKDIR}/${MY_P}
if [[ ${PV//_p} == ${PV} ]]; then
SRC_URI="http://fedorapeople.org/~acme/${MY_PN}/${MY_P}.tar.xz"
else
SRC_URI="https://dev.gentoo.org/~zzam/${PN}/${P}.tar.xz"
fi
DOCS=( README README.ctracer NEWS )
PATCHES=(
"${FILESDIR}"/${PN}-1.10-python-import.patch
)
src_prepare() {
cmake_src_prepare
python_fix_shebang ostra/ostra-cg ostra/python/ostra.py
}
src_configure() {
local mycmakeargs=( "-D__LIB=$(get_libdir)" )
cmake_src_configure
}
src_test() { :; }
src_install() {
cmake_src_install
}

View File

@ -1,9 +1,9 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
PYTHON_COMPAT=( python3_{7,8,9} ) PYTHON_COMPAT=( python3_{8..11} )
inherit multilib cmake python-single-r1 inherit multilib cmake python-single-r1
DESCRIPTION="pahole (Poke-a-Hole) and other DWARF2 utilities" DESCRIPTION="pahole (Poke-a-Hole) and other DWARF2 utilities"
@ -11,7 +11,7 @@ HOMEPAGE="https://git.kernel.org/cgit/devel/pahole/pahole.git/"
LICENSE="GPL-2" # only LICENSE="GPL-2" # only
SLOT="0" SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86" KEYWORDS="amd64 arm arm64 ~ppc ppc64 ~riscv x86"
IUSE="debug" IUSE="debug"
REQUIRED_USE="${PYTHON_REQUIRED_USE}" REQUIRED_USE="${PYTHON_REQUIRED_USE}"

View File

@ -1,17 +1,17 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
PYTHON_COMPAT=( python3_{7,8,9} ) PYTHON_COMPAT=( python3_{8..11} )
inherit multilib cmake python-single-r1 inherit cmake python-single-r1
DESCRIPTION="pahole (Poke-a-Hole) and other DWARF2 utilities" DESCRIPTION="pahole (Poke-a-Hole) and other DWARF2 utilities"
HOMEPAGE="https://git.kernel.org/cgit/devel/pahole/pahole.git/" HOMEPAGE="https://git.kernel.org/cgit/devel/pahole/pahole.git/"
LICENSE="GPL-2" # only LICENSE="GPL-2" # only
SLOT="0" SLOT="0"
KEYWORDS="amd64 ~arm ~arm64 ppc64 x86" KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
IUSE="debug" IUSE="debug"
REQUIRED_USE="${PYTHON_REQUIRED_USE}" REQUIRED_USE="${PYTHON_REQUIRED_USE}"

View File

@ -1,10 +1,10 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
PYTHON_COMPAT=( python3_{7,8,9} ) PYTHON_COMPAT=( python3_{8..11} )
inherit multilib cmake python-single-r1 git-r3 inherit cmake python-single-r1 git-r3
DESCRIPTION="pahole (Poke-a-Hole) and other DWARF2 utilities" DESCRIPTION="pahole (Poke-a-Hole) and other DWARF2 utilities"
HOMEPAGE="https://git.kernel.org/cgit/devel/pahole/pahole.git/" HOMEPAGE="https://git.kernel.org/cgit/devel/pahole/pahole.git/"

View File

@ -1,3 +1,2 @@
DIST patchelf-0.10.tar.bz2 158604 BLAKE2B 6aed9c2e7f37ff0330ca517a9491c46a93212140367b720bf94da4e4ec29a4978c920b53ce306ec333b3f7ac0216ff59637048c6997cfea4a34a87f2a0448796 SHA512 647ad13b7d45b3c5d20683ef8fe9760cb7f213e879231b6c5780bf32771adfbf7c5e5ce694c08e5681dceda63857d7d8a2d53efb60f799d3e7290cebc02ab501 DIST patchelf-0.14.5.tar.gz 124767 BLAKE2B f2e02fb468db7c8c0c4270c7f95ea6c8dc6ffab7ddb0a6479bd5d1dd0481cbc55982af21a13f42076504417264a11e74d50a9f15d3d5735e47019001abf33e41 SHA512 1b7eca84f6fe2d6f6d4469ca1ccdf35dc920d2052ba94b7daeba6c8cb41fdaff20b1e5bac7c8a7650ff12bf4156da87f84d32e75b09958636dc992a1b7b1a59d
DIST patchelf-0.13.tar.gz 117997 BLAKE2B 5db88c9ff9103f2e4b8e15d7dc0d677c3956a85ce5e86e371c4c32a21c3bc219990edd71a20a6b650342eff1068c0ba0976529d62d21dcc17dfc020abf7167ec SHA512 0b4cb41dc1b76d1c0f46655d8b1c56187d2bf18fa12fad9ad6e8acd321a98df372713a92c6649479498bb5939c91ce16a1032ec03afc5a2f7c92cd68882c2bd9 DIST patchelf-0.15.0.tar.gz 125803 BLAKE2B 08fc2cffd7d9e835c01c828c16762fb0b3c3e422990f2d0028a65a3e0ec849d01bdef699b6f68afa6bf307e34f5e76121fc94460793c95c055552e1d8a68d772 SHA512 3b2d3d6458be5b2d43cd2878dfb1a185a95cc13cd4c94abd0ee79979afb36f46e347acc292b8d9c2954a342b7291774e6a1b63930e9f90a1cf4179ec075ab046
DIST patchelf-0.14.3.tar.gz 123722 BLAKE2B ca9c28c88ff6a5eb37a8cb9010642f04335b74e2132987f34bc167c140dc95cd4ac7a3ed71b7287d952a0201b12148a15f3066e5c7d3d453cc18a1e97b6283ed SHA512 2f5caa6b038e630896dc0cebaf4d6f88d91f6dee7f2ffa2fc6b90d199b3a0140b7fe39ea43e582f7ac1145309a61e11fb7ce36c579ad217c48f1b189738f79c8

View File

@ -1,30 +0,0 @@
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit autotools
DESCRIPTION="Small utility to modify the dynamic linker and RPATH of ELF executables"
HOMEPAGE="https://nixos.org/patchelf.html"
SRC_URI="https://nixos.org/releases/${PN}/${P}/${P}.tar.bz2"
SLOT="0"
KEYWORDS="amd64 arm64 ppc ppc64 ~sparc x86 ~amd64-linux ~x86-linux"
LICENSE="GPL-3"
src_prepare() {
default
rm src/elf.h || die
sed -i \
-e 's:-Werror::g' \
configure.ac || die
eautoreconf
}
src_test() {
emake check \
CFLAGS+=" -no-pie" \
CXXFLAGS+=" -no-pie"
}

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=8 EAPI=8
@ -9,7 +9,7 @@ DESCRIPTION="Small utility to modify the dynamic linker and RPATH of ELF executa
HOMEPAGE="https://github.com/NixOS/patchelf" HOMEPAGE="https://github.com/NixOS/patchelf"
SRC_URI="https://github.com/NixOS/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" SRC_URI="https://github.com/NixOS/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
SLOT="0" SLOT="0"
KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux" KEYWORDS="amd64 arm64 ppc ppc64 ~sparc x86 ~amd64-linux ~x86-linux"
LICENSE="GPL-3" LICENSE="GPL-3"
src_prepare() { src_prepare() {

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=8 EAPI=8
@ -9,7 +9,7 @@ DESCRIPTION="Small utility to modify the dynamic linker and RPATH of ELF executa
HOMEPAGE="https://github.com/NixOS/patchelf" HOMEPAGE="https://github.com/NixOS/patchelf"
SRC_URI="https://github.com/NixOS/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" SRC_URI="https://github.com/NixOS/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
SLOT="0" SLOT="0"
KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux" KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~riscv-linux ~x86-linux"
LICENSE="GPL-3" LICENSE="GPL-3"
src_prepare() { src_prepare() {

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI="7" EAPI="7"
@ -9,7 +9,7 @@ SRC_URI="http://cyberelk.net/tim/data/patchutils/stable/${P}.tar.xz"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris ~x86-solaris" KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris ~x86-solaris"
IUSE="pcre" IUSE="pcre"
RDEPEND="pcre? ( dev-libs/libpcre2:= )" RDEPEND="pcre? ( dev-libs/libpcre2:= )"

View File

@ -1,3 +1,6 @@
DIST linux-5.12.tar.xz 118112412 BLAKE2B 842d921b9a73d2aaade763dbd2ec67bdfe0275baa6d628b775f5c87574ad7dc86f0419afcd48c10c1235f4bffa16084243f2cf4556e6afcd391e975fe8ba530b SHA512 be03b6fee1d1ea8087b09874d27c0a602c0b04fd90ad38b975bd2c8455a07e83c29b56814aaf1389e82305fae0e4c2d1701075a7f0a7295dd28149f967ec5b3d
DIST linux-5.15.tar.xz 121913744 BLAKE2B 3921274b23f7938abdf3ed9334534b4581e13d7484303d3a5280eddb038999aaa8b836666a487472d9c4a219af0f06b9fecccaf348fb5510ab8762f4ef4b7e83 SHA512 d25ad40b5bcd6a4c6042fd0fd84e196e7a58024734c3e9a484fd0d5d54a0c1d87db8a3c784eff55e43b6f021709dc685eb0efa18d2aec327e4f88a79f405705a DIST linux-5.15.tar.xz 121913744 BLAKE2B 3921274b23f7938abdf3ed9334534b4581e13d7484303d3a5280eddb038999aaa8b836666a487472d9c4a219af0f06b9fecccaf348fb5510ab8762f4ef4b7e83 SHA512 d25ad40b5bcd6a4c6042fd0fd84e196e7a58024734c3e9a484fd0d5d54a0c1d87db8a3c784eff55e43b6f021709dc685eb0efa18d2aec327e4f88a79f405705a
DIST linux-5.8.tar.xz 114459324 BLAKE2B 7bd97f8fa4527840754434414c07283e89731dc8ebb1e95fa5bc1469a60af1122582c0d3b6e262e77882f023190068df3537bd8b65964b3caa820bb2c8e579c7 SHA512 45a53ecf351096ef6e98242cca4228b8da9b9139ecc6963695791ea6fb7a9484a4e1c19dcca7ce7cbfdfa49de0451b70973bb078f12bdae9cbaddbc3f8092556 DIST linux-5.17.tar.xz 128399340 BLAKE2B 82dc4a45cc25c781ac67aa6ed1e4c369544154960f41c4634d47621f381159687a227054976d078524cda28884d395a15f7542fe44ca74ce98ca6ff54a81d6d0 SHA512 89f0a7ca69d20a539d4b612a7028a30a5e98b402e4b6b88516f14237e5da4b626d7929eab8b40fccc90766e8f3bae87e9858a19077ffad20d8204acf18794f5b
DIST linux-5.18.tar.xz 129790264 BLAKE2B e2745a69eb70169e90505a9318a3993046eab3020496eecde7d8352ecda0eb71a25b21becf7ce93fc593507dce7d1cd61b94ddcdf82b3094d79c0d3d48508eeb SHA512 dbbc9d1395898a498fa4947fceda1781344fa5d360240f753810daa4fa88e519833e2186c4e582a8f1836e6413e9e85f6563c7770523b704e8702d67622f98b5
DIST linux-5.19.tar.xz 131581464 BLAKE2B 4db03a6830a3b3bbf0837e1912182a443d9a4aa8af20a12e6ec814ed708038452d3c0ccee1258cca671c464d76461536363a8adc56e9d098c9a44ae3484a297a SHA512 00313b2f9b82d2dc3fb8294007cf7d7599d254b717ed2de23c81fa7a1bbcbc2798ad286cb94e2f7f5bd54132d1d764facd90d30f79dbcc6616cc7f926adc2623
DIST patch-5.17.1.xz 15244 BLAKE2B f340b8a103754122153dd381fe210b18ba37b7262dae4fc7a1f99c5a62868c9bdb178e83865b35f00b82bd2d67ae127c440515d1740093825f7ec7fa4c4a490d SHA512 fb9a28ce7c68daeca82586e7631dc0be00a1a8393b4cef4c659fc1f9dac6e1f941bd60671c0350d1dea9cb035f56d627f64a394a9acb00b2b5dea8a1d44c065f
DIST perf-5.19-binutils-2.39-patches.tar.xz 5612 BLAKE2B ec3aeadc3e2508f33dddbb419f434885b39b8220d294f3845f0bc96282923ff46dca126a04c732b8286752e56087ba5b2c5ad9526884f6d0b8b6df5665121e5e SHA512 af676e5a600e227d85f89a5ee0cfacfe1845aa56c27ef9da3ebaf578362d7e741375d30565759123b33b86d36bc9981c8c4cda113af32745cc59cf4a9275e73b

View File

@ -0,0 +1,61 @@
Fix building against LLVM/Clang with monolithic libraries and
adjust header includes for Clang >= 14.
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -299,7 +299,7 @@ $(OUTPUT)test-llvm.bin:
$(BUILDXX) -std=gnu++14 \
-I$(shell $(LLVM_CONFIG) --includedir) \
-L$(shell $(LLVM_CONFIG) --libdir) \
- $(shell $(LLVM_CONFIG) --libs Core BPF) \
+ $(shell $(LLVM_CONFIG) --libs) \
$(shell $(LLVM_CONFIG) --system-libs) \
> $(@:.bin=.make.output) 2>&1
@@ -312,10 +312,7 @@ $(OUTPUT)test-clang.bin:
$(BUILDXX) -std=gnu++14 \
-I$(shell $(LLVM_CONFIG) --includedir) \
-L$(shell $(LLVM_CONFIG) --libdir) \
- -Wl,--start-group -lclangBasic -lclangDriver \
- -lclangFrontend -lclangEdit -lclangLex \
- -lclangAST -Wl,--end-group \
- $(shell $(LLVM_CONFIG) --libs Core option) \
+ -lclang-cpp $(shell $(LLVM_CONFIG) --libs) \
$(shell $(LLVM_CONFIG) --system-libs) \
> $(@:.bin=.make.output) 2>&1
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -417,14 +417,11 @@ EXTLIBS := $(call filter-out,$(EXCLUDE_EXTLIBS),$(EXTLIBS))
LIBS = -Wl,--whole-archive $(PERFLIBS) $(EXTRA_PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $(EXTLIBS) -Wl,--end-group
ifeq ($(USE_CLANG), 1)
- CLANGLIBS_LIST = AST Basic CodeGen Driver Frontend Lex Tooling Edit Sema Analysis Parse Serialization
- CLANGLIBS_NOEXT_LIST = $(foreach l,$(CLANGLIBS_LIST),$(shell $(LLVM_CONFIG) --libdir)/libclang$(l))
- LIBCLANG = $(foreach l,$(CLANGLIBS_NOEXT_LIST),$(wildcard $(l).a $(l).so))
- LIBS += -Wl,--start-group $(LIBCLANG) -Wl,--end-group
+ LIBS += -lclang-cpp
endif
ifeq ($(USE_LLVM), 1)
- LIBLLVM = $(shell $(LLVM_CONFIG) --libs all) $(shell $(LLVM_CONFIG) --system-libs)
+ LIBLLVM = $(shell $(LLVM_CONFIG) --libs) $(shell $(LLVM_CONFIG) --system-libs)
LIBS += -L$(shell $(LLVM_CONFIG) --libdir) $(LIBLLVM)
endif
--- a/tools/perf/util/c++/clang.cpp
+++ b/tools/perf/util/c++/clang.cpp
@@ -20,7 +20,11 @@
#include "llvm/Option/Option.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/ManagedStatic.h"
+#if CLANG_VERSION_MAJOR >= 14
+#include "llvm/MC/TargetRegistry.h"
+#else
#include "llvm/Support/TargetRegistry.h"
+#endif
#include "llvm/Support/TargetSelect.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"

View File

@ -0,0 +1,45 @@
Fix building against LLVM/Clang with monolithic libraries.
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -299,7 +299,7 @@ $(OUTPUT)test-llvm.bin:
$(BUILDXX) -std=gnu++14 \
-I$(shell $(LLVM_CONFIG) --includedir) \
-L$(shell $(LLVM_CONFIG) --libdir) \
- $(shell $(LLVM_CONFIG) --libs Core BPF) \
+ $(shell $(LLVM_CONFIG) --libs) \
$(shell $(LLVM_CONFIG) --system-libs) \
> $(@:.bin=.make.output) 2>&1
@@ -312,10 +312,7 @@ $(OUTPUT)test-clang.bin:
$(BUILDXX) -std=gnu++14 \
-I$(shell $(LLVM_CONFIG) --includedir) \
-L$(shell $(LLVM_CONFIG) --libdir) \
- -Wl,--start-group -lclangBasic -lclangDriver \
- -lclangFrontend -lclangEdit -lclangLex \
- -lclangAST -Wl,--end-group \
- $(shell $(LLVM_CONFIG) --libs Core option) \
+ -lclang-cpp $(shell $(LLVM_CONFIG) --libs) \
$(shell $(LLVM_CONFIG) --system-libs) \
> $(@:.bin=.make.output) 2>&1
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -417,14 +417,11 @@ EXTLIBS := $(call filter-out,$(EXCLUDE_EXTLIBS),$(EXTLIBS))
LIBS = -Wl,--whole-archive $(PERFLIBS) $(EXTRA_PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $(EXTLIBS) -Wl,--end-group
ifeq ($(USE_CLANG), 1)
- CLANGLIBS_LIST = AST Basic CodeGen Driver Frontend Lex Tooling Edit Sema Analysis Parse Serialization
- CLANGLIBS_NOEXT_LIST = $(foreach l,$(CLANGLIBS_LIST),$(shell $(LLVM_CONFIG) --libdir)/libclang$(l))
- LIBCLANG = $(foreach l,$(CLANGLIBS_NOEXT_LIST),$(wildcard $(l).a $(l).so))
- LIBS += -Wl,--start-group $(LIBCLANG) -Wl,--end-group
+ LIBS += -lclang-cpp
endif
ifeq ($(USE_LLVM), 1)
- LIBLLVM = $(shell $(LLVM_CONFIG) --libs all) $(shell $(LLVM_CONFIG) --system-libs)
+ LIBLLVM = $(shell $(LLVM_CONFIG) --libs) $(shell $(LLVM_CONFIG) --system-libs)
LIBS += -L$(shell $(LLVM_CONFIG) --libdir) $(LIBLLVM)
endif

View File

@ -3,6 +3,7 @@
<pkgmetadata> <pkgmetadata>
<maintainer type="person"> <maintainer type="person">
<email>naota@gentoo.org</email> <email>naota@gentoo.org</email>
<name>Naohiro Aota</name>
</maintainer> </maintainer>
<maintainer type="person"> <maintainer type="person">
<email>dlan@gentoo.org</email> <email>dlan@gentoo.org</email>
@ -19,12 +20,6 @@
<use> <use>
<flag name="babeltrace">Enable <pkg>dev-util/babeltrace</pkg> support</flag> <flag name="babeltrace">Enable <pkg>dev-util/babeltrace</pkg> support</flag>
<flag name="clang">Enable builtin clang and LLVM support</flag> <flag name="clang">Enable builtin clang and LLVM support</flag>
<flag name="demangle">
Enable C++ symbol name demangling, using libbfd from
<pkg>sys-devel/binutils</pkg>. When this flag is enabled, the
package will have to be rebuilt after every version bump of
binutils.
</flag>
<flag name="doc"> <flag name="doc">
Build documentation and man pages. With this USE flag disabled, Build documentation and man pages. With this USE flag disabled,
the --help parameter for perf and its sub-tools will not be the --help parameter for perf and its sub-tools will not be
@ -41,7 +36,7 @@
Add support to define SDT event in perf tools. Add support to define SDT event in perf tools.
</flag> </flag>
<flag name="unwind"> <flag name="unwind">
Use sys-libs/libunwind for frame unwinding support. Use <pkg>sys-libs/libunwind</pkg> for frame unwinding support.
</flag> </flag>
</use> </use>
</pkgmetadata> </pkgmetadata>

View File

@ -1,11 +1,10 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
# Flatcar: Support python 3.6. PYTHON_COMPAT=( python3_{7..10} )
PYTHON_COMPAT=( python3_{6..10} ) inherit bash-completion-r1 estack llvm toolchain-funcs python-r1 linux-info
inherit bash-completion-r1 estack llvm toolchain-funcs prefix python-r1 linux-info
DESCRIPTION="Userland tools for Linux Performance Counters" DESCRIPTION="Userland tools for Linux Performance Counters"
HOMEPAGE="https://perf.wiki.kernel.org/" HOMEPAGE="https://perf.wiki.kernel.org/"
@ -32,7 +31,7 @@ SRC_URI+=" https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_SOURCES}"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux" KEYWORDS="amd64 arm arm64 ~mips ppc ppc64 ~riscv x86 ~amd64-linux ~x86-linux"
IUSE="audit babeltrace clang crypt debug +doc gtk java libpfm lzma numa perl python slang systemtap unwind zlib zstd" IUSE="audit babeltrace clang crypt debug +doc gtk java libpfm lzma numa perl python slang systemtap unwind zlib zstd"
REQUIRED_USE="${PYTHON_REQUIRED_USE}" REQUIRED_USE="${PYTHON_REQUIRED_USE}"
@ -55,8 +54,8 @@ RDEPEND="audit? ( sys-process/audit )
babeltrace? ( dev-util/babeltrace ) babeltrace? ( dev-util/babeltrace )
crypt? ( virtual/libcrypt:= ) crypt? ( virtual/libcrypt:= )
clang? ( clang? (
sys-devel/clang:= <sys-devel/clang-14:=
sys-devel/llvm:= <sys-devel/llvm-14:=
) )
gtk? ( x11-libs/gtk+:2 ) gtk? ( x11-libs/gtk+:2 )
java? ( virtual/jre:* ) java? ( virtual/jre:* )
@ -97,7 +96,7 @@ pkg_pretend() {
} }
pkg_setup() { pkg_setup() {
use clang && llvm_pkg_setup use clang && LLVM_MAX_SLOT=13 llvm_pkg_setup
# We enable python unconditionally as libbpf always generates # We enable python unconditionally as libbpf always generates
# API headers using python script # API headers using python script
python_setup python_setup
@ -151,10 +150,10 @@ src_prepare() {
# Drop some upstream too-developer-oriented flags and fix the # Drop some upstream too-developer-oriented flags and fix the
# Makefile in general # Makefile in general
sed -i \ sed -i \
-e "s:\$(sysconfdir_SQ)/bash_completion.d:$(get_bashcompdir):" \ -e "s@\$(sysconfdir_SQ)/bash_completion.d@$(get_bashcompdir)@" \
"${S}"/Makefile.perf || die "${S}"/Makefile.perf || die
# A few places still use -Werror w/out $(WERROR) protection. # A few places still use -Werror w/out $(WERROR) protection.
sed -i -e 's:-Werror::' \ sed -i -e 's@-Werror@@' \
"${S}"/Makefile.perf "${S_K}"/tools/lib/bpf/Makefile || die "${S}"/Makefile.perf "${S_K}"/tools/lib/bpf/Makefile || die
# Avoid the call to make kernelversion # Avoid the call to make kernelversion

View File

@ -1,10 +1,10 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
PYTHON_COMPAT=( python3_{7..10} ) PYTHON_COMPAT=( python3_{8..10} )
inherit bash-completion-r1 estack llvm toolchain-funcs prefix python-r1 linux-info inherit bash-completion-r1 estack llvm toolchain-funcs python-r1 linux-info
DESCRIPTION="Userland tools for Linux Performance Counters" DESCRIPTION="Userland tools for Linux Performance Counters"
HOMEPAGE="https://perf.wiki.kernel.org/" HOMEPAGE="https://perf.wiki.kernel.org/"
@ -54,8 +54,8 @@ RDEPEND="audit? ( sys-process/audit )
babeltrace? ( dev-util/babeltrace ) babeltrace? ( dev-util/babeltrace )
crypt? ( virtual/libcrypt:= ) crypt? ( virtual/libcrypt:= )
clang? ( clang? (
<sys-devel/clang-10:* sys-devel/clang:=
<sys-devel/llvm-10:* sys-devel/llvm:=
) )
gtk? ( x11-libs/gtk+:2 ) gtk? ( x11-libs/gtk+:2 )
java? ( virtual/jre:* ) java? ( virtual/jre:* )
@ -83,8 +83,8 @@ S="${S_K}/tools/perf"
CONFIG_CHECK="~PERF_EVENTS ~KALLSYMS" CONFIG_CHECK="~PERF_EVENTS ~KALLSYMS"
QA_FLAGS_IGNORED=( QA_FLAGS_IGNORED=(
usr/bin/perf-read-vdso32 # not linked with anything except for libc 'usr/bin/perf-read-vdso32' # not linked with anything except for libc
usr/libexec/perf-core/dlfilters/dlfilter-test-api-v0.so # not installed 'usr/libexec/perf-core/dlfilters/.*' # plugins
) )
pkg_pretend() { pkg_pretend() {
@ -96,7 +96,7 @@ pkg_pretend() {
} }
pkg_setup() { pkg_setup() {
use clang && LLVM_MAX_SLOT=9 llvm_pkg_setup use clang && llvm_pkg_setup
# We enable python unconditionally as libbpf always generates # We enable python unconditionally as libbpf always generates
# API headers using python script # API headers using python script
python_setup python_setup
@ -141,13 +141,17 @@ src_prepare() {
popd || die popd || die
fi fi
pushd "${S_K}" >/dev/null || die
eapply "${FILESDIR}"/${P}-clang.patch
popd || die
# Drop some upstream too-developer-oriented flags and fix the # Drop some upstream too-developer-oriented flags and fix the
# Makefile in general # Makefile in general
sed -i \ sed -i \
-e "s:\$(sysconfdir_SQ)/bash_completion.d:$(get_bashcompdir):" \ -e "s@\$(sysconfdir_SQ)/bash_completion.d@$(get_bashcompdir)@" \
"${S}"/Makefile.perf || die "${S}"/Makefile.perf || die
# A few places still use -Werror w/out $(WERROR) protection. # A few places still use -Werror w/out $(WERROR) protection.
sed -i -e 's:-Werror::' \ sed -i -e 's@-Werror@@' \
"${S}"/Makefile.perf "${S_K}"/tools/lib/bpf/Makefile || die "${S}"/Makefile.perf "${S_K}"/tools/lib/bpf/Makefile || die
# Avoid the call to make kernelversion # Avoid the call to make kernelversion
@ -156,11 +160,6 @@ src_prepare() {
# The code likes to compile local assembly files which lack ELF markings. # The code likes to compile local assembly files which lack ELF markings.
find -name '*.S' -exec sed -i '$a.section .note.GNU-stack,"",%progbits' {} + find -name '*.S' -exec sed -i '$a.section .note.GNU-stack,"",%progbits' {} +
# Fix shebang to use python from prefix
if [[ -n "${EPREFIX}" ]]; then
hprefixify ${S_K}/scripts/bpf_helpers_doc.py
fi
} }
puse() { usex $1 "" no; } puse() { usex $1 "" no; }
@ -222,9 +221,7 @@ perf_make() {
src_compile() { src_compile() {
# test-clang.bin not build with g++ # test-clang.bin not build with g++
if use clang; then if use clang; then
pushd "${S_K}/tools/build/feature/" || die make -C "${S_K}/tools/build/feature" V=1 CXX=${CHOST}-clang++ test-clang.bin || die
make V=1 CXX=${CHOST}-clang++ test-clang.bin || die
popd
fi fi
perf_make -f Makefile.perf perf_make -f Makefile.perf
use doc && perf_make -C Documentation man use doc && perf_make -C Documentation man

View File

@ -1,13 +1,10 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
PYTHON_COMPAT=( python3_{7,8} ) PYTHON_COMPAT=( python3_{8..10} )
inherit bash-completion-r1 estack llvm toolchain-funcs prefix python-r1 linux-info inherit bash-completion-r1 estack llvm toolchain-funcs python-r1 linux-info
MY_PV="${PV/_/-}"
MY_PV="${MY_PV/-pre/-git}"
DESCRIPTION="Userland tools for Linux Performance Counters" DESCRIPTION="Userland tools for Linux Performance Counters"
HOMEPAGE="https://perf.wiki.kernel.org/" HOMEPAGE="https://perf.wiki.kernel.org/"
@ -34,20 +31,35 @@ SRC_URI+=" https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_SOURCES}"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux" KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux"
IUSE="audit clang crypt debug +demangle +doc gtk java lzma numa perl python slang systemtap unwind zlib" IUSE="audit babeltrace clang crypt debug +doc gtk java libpfm lzma numa perl python slang systemtap unwind zlib zstd"
# TODO babeltrace
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" REQUIRED_USE="${PYTHON_REQUIRED_USE}"
BDEPEND="
${LINUX_PATCH+dev-util/patchutils}
sys-devel/bison
sys-devel/flex
virtual/pkgconfig
doc? (
app-text/asciidoc
app-text/sgml-common
app-text/xmlto
sys-process/time
)
${PYTHON_DEPS}
"
RDEPEND="audit? ( sys-process/audit ) RDEPEND="audit? ( sys-process/audit )
crypt? ( dev-libs/openssl:0= ) babeltrace? ( dev-util/babeltrace )
crypt? ( virtual/libcrypt:= )
clang? ( clang? (
<sys-devel/clang-10:* sys-devel/clang:=
<sys-devel/llvm-10:* sys-devel/llvm:=
) )
demangle? ( sys-libs/binutils-libs:= )
gtk? ( x11-libs/gtk+:2 ) gtk? ( x11-libs/gtk+:2 )
java? ( virtual/jre:* ) java? ( virtual/jre:* )
libpfm? ( dev-libs/libpfm )
lzma? ( app-arch/xz-utils ) lzma? ( app-arch/xz-utils )
numa? ( sys-process/numactl ) numa? ( sys-process/numactl )
perl? ( dev-lang/perl:= ) perl? ( dev-lang/perl:= )
@ -56,30 +68,42 @@ RDEPEND="audit? ( sys-process/audit )
systemtap? ( dev-util/systemtap ) systemtap? ( dev-util/systemtap )
unwind? ( sys-libs/libunwind ) unwind? ( sys-libs/libunwind )
zlib? ( sys-libs/zlib ) zlib? ( sys-libs/zlib )
dev-libs/elfutils" zstd? ( app-arch/zstd )
dev-libs/elfutils
sys-libs/binutils-libs:="
DEPEND="${RDEPEND} DEPEND="${RDEPEND}
>=sys-kernel/linux-headers-4.19 >=sys-kernel/linux-headers-5.10
${LINUX_PATCH+dev-util/patchutils}
sys-devel/bison
sys-devel/flex
virtual/pkgconfig
java? ( virtual/jdk ) java? ( virtual/jdk )
doc? ( "
app-text/asciidoc
app-text/sgml-common
app-text/xmlto
sys-process/time
)"
S_K="${WORKDIR}/linux-${LINUX_VER}" S_K="${WORKDIR}/linux-${LINUX_VER}"
S="${S_K}/tools/perf" S="${S_K}/tools/perf"
CONFIG_CHECK="~PERF_EVENTS ~KALLSYMS" CONFIG_CHECK="~PERF_EVENTS ~KALLSYMS"
pkg_setup() { QA_FLAGS_IGNORED=(
use clang && LLVM_MAX_SLOT=9 llvm_pkg_setup 'usr/bin/perf-read-vdso32' # not linked with anything except for libc
'usr/libexec/perf-core/dlfilters/.*' # plugins
)
pkg_pretend() {
if ! use doc ; then
ewarn "Without the doc USE flag you won't get any documentation nor man pages."
ewarn "And without man pages, you won't get any --help output for perf and its"
ewarn "sub-tools."
fi
} }
pkg_setup() {
use clang && llvm_pkg_setup
# We enable python unconditionally as libbpf always generates
# API headers using python script
python_setup
}
# src_unpack and src_prepare are copied to dev-util/bpftool since
# it's building from the same tarball, please keep it in sync with bpftool
src_unpack() { src_unpack() {
local paths=( local paths=(
tools/arch tools/build tools/include tools/lib tools/perf tools/scripts tools/arch tools/build tools/include tools/lib tools/perf tools/scripts
@ -117,25 +141,25 @@ src_prepare() {
popd || die popd || die
fi fi
pushd "${S_K}" >/dev/null || die
eapply "${FILESDIR}"/${P}-clang.patch
popd || die
# Drop some upstream too-developer-oriented flags and fix the # Drop some upstream too-developer-oriented flags and fix the
# Makefile in general # Makefile in general
sed -i \ sed -i \
-e "s:\$(sysconfdir_SQ)/bash_completion.d:$(get_bashcompdir):" \ -e "s@\$(sysconfdir_SQ)/bash_completion.d@$(get_bashcompdir)@" \
"${S}"/Makefile.perf || die "${S}"/Makefile.perf || die
# A few places still use -Werror w/out $(WERROR) protection. # A few places still use -Werror w/out $(WERROR) protection.
sed -i -e 's:-Werror::' \ sed -i -e 's@-Werror@@' \
"${S}"/Makefile.perf "${S_K}"/tools/lib/bpf/Makefile || die "${S}"/Makefile.perf "${S_K}"/tools/lib/bpf/Makefile || die
# Avoid the call to make kernelversion # Avoid the call to make kernelversion
echo "#define PERF_VERSION \"${MY_PV}\"" > PERF-VERSION-FILE sed -i -e '/PERF-VERSION-GEN/d' Makefile.perf || die
echo "#define PERF_VERSION \"${PV}\"" > PERF-VERSION-FILE
# The code likes to compile local assembly files which lack ELF markings. # The code likes to compile local assembly files which lack ELF markings.
find -name '*.S' -exec sed -i '$a.section .note.GNU-stack,"",%progbits' {} + find -name '*.S' -exec sed -i '$a.section .note.GNU-stack,"",%progbits' {} +
# Fix shebang to use python from prefix
if [[ -n "${EPREFIX}" ]]; then
hprefixify ${S_K}/scripts/bpf_helpers_doc.py
fi
} }
puse() { usex $1 "" no; } puse() { usex $1 "" no; }
@ -150,39 +174,43 @@ perf_make() {
local arch=$(tc-arch-kernel) local arch=$(tc-arch-kernel)
local java_dir local java_dir
use java && java_dir="/etc/java-config-2/current-system-vm" use java && java_dir="${EPREFIX}/etc/java-config-2/current-system-vm"
# FIXME: NO_CORESIGHT # FIXME: NO_CORESIGHT
# FIXME: NO_LIBBABELTRACE
emake V=1 VF=1 \ emake V=1 VF=1 \
HOSTCC="$(tc-getBUILD_CC)" HOSTLD="$(tc-getBUILD_LD)" \ HOSTCC="$(tc-getBUILD_CC)" HOSTLD="$(tc-getBUILD_LD)" \
CC="$(tc-getCC)" CXX="$(tc-getCXX)" AR="$(tc-getAR)" LD="$(tc-getLD)" NM="$(tc-getNM)" \ CC="$(tc-getCC)" CXX="$(tc-getCXX)" AR="$(tc-getAR)" LD="$(tc-getLD)" NM="$(tc-getNM)" \
PKG_CONFIG="$(tc-getPKG_CONFIG)" \ PKG_CONFIG="$(tc-getPKG_CONFIG)" \
prefix="${EPREFIX}/usr" bindir_relative="bin" \ prefix="${EPREFIX}/usr" bindir_relative="bin" \
tipdir="share/doc/${PF}" \
EXTRA_CFLAGS="${CFLAGS}" \ EXTRA_CFLAGS="${CFLAGS}" \
EXTRA_LDFLAGS="${LDFLAGS}" \
ARCH="${arch}" \ ARCH="${arch}" \
JDIR="${java_dir}" \ JDIR="${java_dir}" \
LIBCLANGLLVM=$(usex clang 1 "") \ LIBCLANGLLVM=$(usex clang 1 "") \
LIBPFM4=$(usex libpfm 1 "") \
NO_AUXTRACE="" \ NO_AUXTRACE="" \
NO_BACKTRACE="" \ NO_BACKTRACE="" \
NO_CORESIGHT=1 \ NO_CORESIGHT=1 \
NO_DEMANGLE=$(puse demangle) \ NO_DEMANGLE= \
NO_GTK2=$(puse gtk) \ GTK2=$(usex gtk 1 "") \
feature-gtk2-infobar=$(usex gtk 1 "") \
NO_JVMTI=$(puse java) \ NO_JVMTI=$(puse java) \
NO_LIBAUDIT=$(puse audit) \ NO_LIBAUDIT=$(puse audit) \
NO_LIBBABELTRACE=1 \ NO_LIBBABELTRACE=$(puse babeltrace) \
NO_LIBBIONIC=1 \ NO_LIBBIONIC=1 \
NO_LIBBPF="" \ NO_LIBBPF= \
NO_LIBCRYPTO=$(puse crypt) \ NO_LIBCRYPTO=$(puse crypt) \
NO_LIBDW_DWARF_UNWIND="" \ NO_LIBDW_DWARF_UNWIND= \
NO_LIBELF="" \ NO_LIBELF= \
NO_LIBNUMA=$(puse numa) \ NO_LIBNUMA=$(puse numa) \
NO_LIBPERL=$(puse perl) \ NO_LIBPERL=$(puse perl) \
NO_LIBPYTHON=$(puse python) \ NO_LIBPYTHON=$(puse python) \
NO_LIBUNWIND=$(puse unwind) \ NO_LIBUNWIND=$(puse unwind) \
NO_LIBZSTD=$(puse zstd) \
NO_SDT=$(puse systemtap) \ NO_SDT=$(puse systemtap) \
NO_SLANG=$(puse slang) \ NO_SLANG=$(puse slang) \
NO_LZMA=$(puse lzma) \ NO_LZMA=$(puse lzma) \
NO_ZLIB= \ NO_ZLIB=$(puse zlib) \
WERROR=0 \ WERROR=0 \
LIBDIR="/usr/libexec/perf-core" \ LIBDIR="/usr/libexec/perf-core" \
libdir="${EPREFIX}/usr/$(get_libdir)" \ libdir="${EPREFIX}/usr/$(get_libdir)" \
@ -193,12 +221,10 @@ perf_make() {
src_compile() { src_compile() {
# test-clang.bin not build with g++ # test-clang.bin not build with g++
if use clang; then if use clang; then
pushd "${S_K}/tools/build/feature/" || die make -C "${S_K}/tools/build/feature" V=1 CXX=${CHOST}-clang++ test-clang.bin || die
make V=1 CXX=${CHOST}-clang++ test-clang.bin || die
popd
fi fi
perf_make -f Makefile.perf perf_make -f Makefile.perf
use doc && perf_make -C Documentation use doc && perf_make -C Documentation man
} }
src_test() { src_test() {
@ -211,12 +237,11 @@ src_install() {
} }
perf_make -f Makefile.perf install DESTDIR="${D}" perf_make -f Makefile.perf install DESTDIR="${D}"
if use python; then if use python; then
python_foreach_impl _install_python_ext python_foreach_impl _install_python_ext
fi fi
rm -rv "${ED}"/usr/share/doc/perf-tip || die
if use gtk; then if use gtk; then
local libdir local libdir
libdir="$(get_libdir)" libdir="$(get_libdir)"
@ -229,16 +254,11 @@ src_install() {
dodoc CREDITS dodoc CREDITS
dodoc *txt Documentation/*.txt dodoc *txt Documentation/*.txt
# perf needs this decompressed to print out tips for users
docompress -x /usr/share/doc/${PF}/tips.txt
if use doc ; then if use doc ; then
HTML_DOCS="Documentation/*.html" einstalldocs
doman Documentation/*.1 doman Documentation/*.1
fi fi
} }
pkg_postinst() {
if ! use doc ; then
elog "Without the doc USE flag you won't get any documentation nor man pages."
elog "And without man pages, you won't get any --help output for perf and its"
elog "sub-tools."
fi
}

View File

@ -0,0 +1,271 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{8..10} )
inherit bash-completion-r1 estack llvm toolchain-funcs python-r1 linux-info
DESCRIPTION="Userland tools for Linux Performance Counters"
HOMEPAGE="https://perf.wiki.kernel.org/"
LINUX_V="${PV:0:1}.x"
if [[ ${PV} == *_rc* ]] ; then
LINUX_VER=$(ver_cut 1-2).$(($(ver_cut 3)-1))
PATCH_VERSION=$(ver_cut 1-3)
LINUX_PATCH=patch-${PV//_/-}.xz
SRC_URI="https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/testing/${LINUX_PATCH}
https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/testing/v${PATCH_VERSION}/${LINUX_PATCH}"
elif [[ ${PV} == *.*.* ]] ; then
# stable-release series
LINUX_VER=$(ver_cut 1-2)
LINUX_PATCH=patch-${PV}.xz
SRC_URI="https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_PATCH}"
else
LINUX_VER=${PV}
SRC_URI=""
SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-binutils-2.39-patches.tar.xz"
fi
LINUX_SOURCES="linux-${LINUX_VER}.tar.xz"
SRC_URI+=" https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_SOURCES}"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux"
IUSE="audit babeltrace clang crypt debug +doc gtk java libpfm lzma numa perl python slang systemtap unwind zlib zstd"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
BDEPEND="
${LINUX_PATCH+dev-util/patchutils}
sys-devel/bison
sys-devel/flex
virtual/pkgconfig
doc? (
app-text/asciidoc
app-text/sgml-common
app-text/xmlto
sys-process/time
)
${PYTHON_DEPS}
"
RDEPEND="audit? ( sys-process/audit )
babeltrace? ( dev-util/babeltrace )
crypt? ( virtual/libcrypt:= )
clang? (
sys-devel/clang:=
sys-devel/llvm:=
)
gtk? ( x11-libs/gtk+:2 )
java? ( virtual/jre:* )
libpfm? ( dev-libs/libpfm )
lzma? ( app-arch/xz-utils )
numa? ( sys-process/numactl )
perl? ( dev-lang/perl:= )
python? ( ${PYTHON_DEPS} )
slang? ( sys-libs/slang )
systemtap? ( dev-util/systemtap )
unwind? ( sys-libs/libunwind )
zlib? ( sys-libs/zlib )
zstd? ( app-arch/zstd )
dev-libs/elfutils
sys-libs/binutils-libs:="
DEPEND="${RDEPEND}
>=sys-kernel/linux-headers-5.10
java? ( virtual/jdk )
"
S_K="${WORKDIR}/linux-${LINUX_VER}"
S="${S_K}/tools/perf"
CONFIG_CHECK="~PERF_EVENTS ~KALLSYMS"
QA_FLAGS_IGNORED=(
'usr/bin/perf-read-vdso32' # not linked with anything except for libc
'usr/libexec/perf-core/dlfilters/.*' # plugins
)
pkg_pretend() {
if ! use doc ; then
ewarn "Without the doc USE flag you won't get any documentation nor man pages."
ewarn "And without man pages, you won't get any --help output for perf and its"
ewarn "sub-tools."
fi
}
pkg_setup() {
use clang && llvm_pkg_setup
# We enable python unconditionally as libbpf always generates
# API headers using python script
python_setup
}
# src_unpack and src_prepare are copied to dev-util/bpftool since
# it's building from the same tarball, please keep it in sync with bpftool
src_unpack() {
local paths=(
tools/arch tools/build tools/include tools/lib tools/perf tools/scripts
scripts include lib "arch/*/lib"
)
# We expect the tar implementation to support the -j option (both
# GNU tar and libarchive's tar support that).
echo ">>> Unpacking ${LINUX_SOURCES} (${paths[*]}) to ${PWD}"
tar --wildcards -xpf "${DISTDIR}"/${LINUX_SOURCES} \
"${paths[@]/#/linux-${LINUX_VER}/}" || die
if [[ -n ${LINUX_PATCH} ]] ; then
eshopts_push -o noglob
ebegin "Filtering partial source patch"
filterdiff -p1 ${paths[@]/#/-i } -z "${DISTDIR}"/${LINUX_PATCH} \
> ${P}.patch
eend $? || die "filterdiff failed"
eshopts_pop
fi
local a
for a in ${A}; do
[[ ${a} == ${LINUX_SOURCES} ]] && continue
[[ ${a} == ${LINUX_PATCH} ]] && continue
unpack ${a}
done
}
src_prepare() {
default
if [[ -n ${LINUX_PATCH} ]] ; then
pushd "${S_K}" >/dev/null || die
eapply "${WORKDIR}"/${P}.patch
popd || die
fi
pushd "${S_K}" >/dev/null || die
eapply "${FILESDIR}"/${PN}-5.18-clang.patch
# Used `git format-patch 00b32625982e0c796f0abb8effcac9c05ef55bd3...600b7b26c07a070d0153daa76b3806c1e52c9e00`
# bug #868129
rm "${WORKDIR}"/${P}-binutils-2.39-patches/0005-tools-bpf_jit_disasm-Fix-compilation-error-with-new-.patch || die
rm "${WORKDIR}"/${P}-binutils-2.39-patches/0006-tools-bpf_jit_disasm-Don-t-display-disassembler-four.patch || die
rm "${WORKDIR}"/${P}-binutils-2.39-patches/0007-tools-bpftool-Fix-compilation-error-with-new-binutil.patch || die
eapply "${WORKDIR}"/${P}-binutils-2.39-patches
popd || die
# Drop some upstream too-developer-oriented flags and fix the
# Makefile in general
sed -i \
-e "s@\$(sysconfdir_SQ)/bash_completion.d@$(get_bashcompdir)@" \
"${S}"/Makefile.perf || die
# A few places still use -Werror w/out $(WERROR) protection.
sed -i -e 's@-Werror@@' \
"${S}"/Makefile.perf "${S_K}"/tools/lib/bpf/Makefile || die
# Avoid the call to make kernelversion
sed -i -e '/PERF-VERSION-GEN/d' Makefile.perf || die
echo "#define PERF_VERSION \"${PV}\"" > PERF-VERSION-FILE
# The code likes to compile local assembly files which lack ELF markings.
find -name '*.S' -exec sed -i '$a.section .note.GNU-stack,"",%progbits' {} +
}
puse() { usex $1 "" no; }
perf_make() {
# The arch parsing is a bit funky. The perf tools package is integrated
# into the kernel, so it wants an ARCH that looks like the kernel arch,
# but it also wants to know about the split value -- i386/x86_64 vs just
# x86. We can get that by telling the func to use an older linux version.
# It's kind of a hack, but not that bad ...
# LIBDIR sets a search path of perf-gtk.so. Bug 515954
local arch=$(tc-arch-kernel)
local java_dir
use java && java_dir="${EPREFIX}/etc/java-config-2/current-system-vm"
# FIXME: NO_CORESIGHT
emake V=1 VF=1 \
HOSTCC="$(tc-getBUILD_CC)" HOSTLD="$(tc-getBUILD_LD)" \
CC="$(tc-getCC)" CXX="$(tc-getCXX)" AR="$(tc-getAR)" LD="$(tc-getLD)" NM="$(tc-getNM)" \
PKG_CONFIG="$(tc-getPKG_CONFIG)" \
prefix="${EPREFIX}/usr" bindir_relative="bin" \
tipdir="share/doc/${PF}" \
EXTRA_CFLAGS="${CFLAGS}" \
EXTRA_LDFLAGS="${LDFLAGS}" \
ARCH="${arch}" \
JDIR="${java_dir}" \
LIBCLANGLLVM=$(usex clang 1 "") \
LIBPFM4=$(usex libpfm 1 "") \
NO_AUXTRACE="" \
NO_BACKTRACE="" \
NO_CORESIGHT=1 \
NO_DEMANGLE= \
GTK2=$(usex gtk 1 "") \
feature-gtk2-infobar=$(usex gtk 1 "") \
NO_JVMTI=$(puse java) \
NO_LIBAUDIT=$(puse audit) \
NO_LIBBABELTRACE=$(puse babeltrace) \
NO_LIBBIONIC=1 \
NO_LIBBPF= \
NO_LIBCRYPTO=$(puse crypt) \
NO_LIBDW_DWARF_UNWIND= \
NO_LIBELF= \
NO_LIBNUMA=$(puse numa) \
NO_LIBPERL=$(puse perl) \
NO_LIBPYTHON=$(puse python) \
NO_LIBUNWIND=$(puse unwind) \
NO_LIBZSTD=$(puse zstd) \
NO_SDT=$(puse systemtap) \
NO_SLANG=$(puse slang) \
NO_LZMA=$(puse lzma) \
NO_ZLIB=$(puse zlib) \
WERROR=0 \
LIBDIR="/usr/libexec/perf-core" \
libdir="${EPREFIX}/usr/$(get_libdir)" \
plugindir="${EPREFIX}/usr/$(get_libdir)/perf/plugins" \
"$@"
}
src_compile() {
# test-clang.bin not build with g++
if use clang; then
make -C "${S_K}/tools/build/feature" V=1 CXX=${CHOST}-clang++ test-clang.bin || die
fi
perf_make -f Makefile.perf
use doc && perf_make -C Documentation man
}
src_test() {
:
}
src_install() {
_install_python_ext() {
perf_make -f Makefile.perf install-python_ext DESTDIR="${D}"
}
perf_make -f Makefile.perf install DESTDIR="${D}"
if use python; then
python_foreach_impl _install_python_ext
fi
if use gtk; then
local libdir
libdir="$(get_libdir)"
# on some arches it ends up in lib even on 64bit, ppc64 for instance.
[[ -f "${ED}"/usr/lib/libperf-gtk.so ]] && libdir="lib"
mv "${ED}"/usr/${libdir}/libperf-gtk.so \
"${ED}"/usr/libexec/perf-core || die
fi
dodoc CREDITS
dodoc *txt Documentation/*.txt
# perf needs this decompressed to print out tips for users
docompress -x /usr/share/doc/${PF}/tips.txt
if use doc ; then
doman Documentation/*.1
fi
}

View File

@ -1,19 +1,19 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=8 EAPI=8
PYTHON_COMPAT=( python3_{8,9,10} ) PYTHON_COMPAT=( python3_{8,9,10} )
inherit autotools python-any-r1 inherit python-any-r1
DESCRIPTION="tool for generating C-based recognizers from regular expressions" DESCRIPTION="Tool for generating C-based recognizers from regular expressions"
HOMEPAGE="http://re2c.org/" HOMEPAGE="https://re2c.org/"
SRC_URI="https://github.com/skvadrik/re2c/releases/download/${PV}/${P}.tar.xz" SRC_URI="https://github.com/skvadrik/re2c/releases/download/${PV}/${P}.tar.xz"
LICENSE="public-domain" LICENSE="public-domain"
SLOT="0" SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="debug test" IUSE="debug test"
RESTRICT="!test? ( test )" RESTRICT="!test? ( test )"

View File

@ -1,4 +0,0 @@
DIST scons-4.1.0-user.html 1454432 BLAKE2B 9fac4d7bfb4b25708bc4cc48d952beb030f88181af5dfee63090f726b1a82443c192c63ec5939869967ef8f374e8599321212971439fb265fb050b263681c9f8 SHA512 74f1349fa61dac9e66cfb863cb3126d07ce5f421b3e87d0220eb32bd5017ba8f6cf96eb8cb5ee45c39022671aa9f2d0408d4039970c438a69c002445aea510be
DIST scons-4.1.0-user.pdf 2691364 BLAKE2B a910a09fa936d4d6f8dc967676d5aa009aac58a5a4566399b3ddc3512ac0259731e6c5399722fefadb3b79d8f89a5257e2e9bc2fa4d65697c8293ab995248d64 SHA512 64584731a59b59b78283be3876ecca91d742f83da2653d0de17922bec01e3c9cea1ce2ce3c8dc718597910ba86ed2c8aff0f7ae371bf763439b57a6d5484e1a7
DIST scons-4.1.0.gh.tar.gz 5609204 BLAKE2B ede3d47a1ec652b9248681e26738073e9d01daab7ffeccc58f0fcadb79661e30edb9a35a511518e4a58459243acb027afd8fa5849b0f9e4bae451055f7b1a062 SHA512 f79b86bb09783767b3872cfb8efb665372714a604af2aaf3adc66eee63d3afe27bc6b2aab83813743c83f71c81c800d42842e916501787ba402ce2726dda9b44
DIST scons-4.1.0.tar.gz 3007701 BLAKE2B 70ab64ecfd89fa2af1d78a33fcef82a5f7db9875ffe9d2c16ea75cf40e661b2874359e3a5f75d761b3d9e863f7a434560992cfb020cce3e21e389381331d90de SHA512 24fd493643545a2998b053ed0d68caf6241f05bc2437e7cbeae33d2e1c63517a61449a1a18062f8e4e5a639295a2486925296ba3e54ccfa2ecdd56fa07132de8

View File

@ -1,88 +0,0 @@
From 929986e568446f54c2a99c309fbb4d05bd4af00a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Thu, 10 May 2018 08:01:08 +0200
Subject: [PATCH] posix: Also force common toolchain vars for Gentoo
---
src/SCons/Platform/posix.py | 20 ++++++++++++++++++++
src/SCons/Tool/cc.py | 3 ++-
src/SCons/Tool/cxx.py | 3 ++-
src/SCons/Tool/link.py | 3 ++-
4 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/src/SCons/Platform/posix.py b/src/SCons/Platform/posix.py
index 739310a1..ef7528e0 100644
--- a/src/SCons/Platform/posix.py
+++ b/src/SCons/Platform/posix.py
@@ -95,6 +95,26 @@ def generate(env):
if 'ENV' in env:
new_env.update(env['ENV'])
env['ENV'] = new_env
+
+ # Furthermore, force common compiler/linker variables as well
+ envvar_mapping = {
+ 'AR': 'AR',
+ 'AS': 'AS',
+ 'ASFLAGS': 'ASFLAGS',
+ 'CC': 'CC',
+ 'CXX': 'CXX',
+ 'CFLAGS': 'CFLAGS',
+ 'CXXFLAGS': 'CXXFLAGS',
+ 'CPPFLAGS': 'CPPFLAGS',
+ 'LDFLAGS': 'LINKFLAGS',
+ }
+
+ for envvar, toolvar in envvar_mapping.items():
+ if toolvar not in env and envvar in env['ENV']:
+ val = env['ENV'][envvar]
+ if toolvar.endswith('FLAGS'):
+ val = SCons.Util.CLVar(val)
+ env[toolvar] = val
else:
if 'ENV' not in env:
env['ENV'] = {}
diff --git a/src/SCons/Tool/cc.py b/src/SCons/Tool/cc.py
index 590ec5fd..5f9229a0 100644
--- a/src/SCons/Tool/cc.py
+++ b/src/SCons/Tool/cc.py
@@ -80,7 +80,8 @@ def generate(env):
if 'CC' not in env:
env['CC'] = env.Detect(compilers) or compilers[0]
- env['CFLAGS'] = SCons.Util.CLVar('')
+ if 'CFLAGS' not in env:
+ env['CFLAGS'] = SCons.Util.CLVar('')
env['CCCOM'] = '$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES'
env['SHCC'] = '$CC'
env['SHCFLAGS'] = SCons.Util.CLVar('$CFLAGS')
diff --git a/src/SCons/Tool/cxx.py b/src/SCons/Tool/cxx.py
index 430851c8..ca5ab563 100644
--- a/src/SCons/Tool/cxx.py
+++ b/src/SCons/Tool/cxx.py
@@ -74,7 +74,8 @@ def generate(env):
if 'CXX' not in env:
env['CXX'] = env.Detect(compilers) or compilers[0]
- env['CXXFLAGS'] = SCons.Util.CLVar('')
+ if 'CXXFLAGS' not in env:
+ env['CXXFLAGS'] = SCons.Util.CLVar('')
env['CXXCOM'] = '$CXX -o $TARGET -c $CXXFLAGS $CCFLAGS $_CCCOMCOM $SOURCES'
env['SHCXX'] = '$CXX'
env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
diff --git a/src/SCons/Tool/link.py b/src/SCons/Tool/link.py
index 5adc6ca2..a12ea8ed 100644
--- a/src/SCons/Tool/link.py
+++ b/src/SCons/Tool/link.py
@@ -318,7 +318,8 @@ def generate(env):
env['SMARTLINK'] = smart_link
env['LINK'] = "$SMARTLINK"
- env['LINKFLAGS'] = SCons.Util.CLVar('')
+ if 'LINKFLAGS' not in env:
+ env['LINKFLAGS'] = SCons.Util.CLVar('')
# __RPATH is only set to something ($_RPATH typically) on platforms that support it.
env['LINKCOM'] = '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
--
2.20.1

View File

@ -1,41 +0,0 @@
From fb07dc4b4fa178b0c424c5f400b18669abd8960e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Wed, 9 May 2018 17:04:49 +0200
Subject: [PATCH] posix: Support GENTOO_SCONS_ENV_PASSTHROUGH=1
Support GENTOO_SCONS_ENV_PASSTHROUGH=1 variable to override the default
of wiping the environment and resetting PATH to default, and instead
pass all variables through.
---
SCons/Platform/posix.py | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/SCons/Platform/posix.py b/SCons/Platform/posix.py
index 4c9f8f9ba..fbc81196d 100644
--- a/src/SCons/Platform/posix.py
+++ b/src/SCons/Platform/posix.py
@@ -82,9 +82,18 @@ def generate(env):
pspawn = piped_env_spawn
# Note that this means that 'escape' is no longer used
- if 'ENV' not in env:
- env['ENV'] = {}
- env['ENV']['PATH'] = '/usr/local/bin:/opt/bin:/bin:/usr/bin:/snap/bin'
+ # Force pass-through of environment variables in Gentoo builds
+ import os
+ if os.environ.get('GENTOO_SCONS_ENV_PASSTHROUGH', False):
+ new_env = os.environ.copy()
+ if 'ENV' in env:
+ new_env.update(env['ENV'])
+ env['ENV'] = new_env
+ else:
+ if 'ENV' not in env:
+ env['ENV'] = {}
+ env['ENV']['PATH'] = '/usr/local/bin:/opt/bin:/bin:/usr/bin:/snap/bin'
+
env['OBJPREFIX'] = ''
env['OBJSUFFIX'] = '.o'
env['SHOBJPREFIX'] = '$OBJPREFIX'
--
2.30.0

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>mgorny@gentoo.org</email>
<name>Michał Górny</name>
</maintainer>
<longdescription lang="en">
SCons is a make replacement providing a range of enhanced
features such as automated dependency generation and built in
compilation cache support. SCons rule sets are Python scripts so
as well as the features it provides itself SCons allows you to use
the full power of Python to control compilation.
</longdescription>
<upstream>
<remote-id type="sourceforge">scons</remote-id>
</upstream>
</pkgmetadata>

View File

@ -1,98 +0,0 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DISTUTILS_USE_SETUPTOOLS=rdepend
PYTHON_COMPAT=( python3_{8..9} )
PYTHON_REQ_USE="threads(+)"
inherit distutils-r1
DESCRIPTION="Extensible Python-based build utility"
HOMEPAGE="https://www.scons.org/"
SRC_URI="
https://downloads.sourceforge.net/project/scons/scons/${PV}/${P}.tar.gz
doc? (
https://www.scons.org/doc/${PV}/PDF/${PN}-user.pdf -> ${P}-user.pdf
https://www.scons.org/doc/${PV}/HTML/${PN}-user.html -> ${P}-user.html
)
test? ( https://github.com/scons/scons/archive/${PV}.tar.gz -> ${P}.gh.tar.gz )"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
IUSE="doc test"
RESTRICT="!test? ( test )"
BDEPEND="
test? (
dev-libs/libxml2[${PYTHON_USEDEP}]
dev-python/lxml[${PYTHON_USEDEP}]
)
"
S=${WORKDIR}/${P}/src
PATCHES=(
# support env passthrough for Gentoo ebuilds
"${FILESDIR}"/scons-4.1.0-env-passthrough.patch
# respect CC, CXX, C*FLAGS, LDFLAGS by default
"${FILESDIR}"/scons-4.0.0-respect-cc-etc-r1.patch
)
src_unpack() {
# use the git directory structure, but put pregenerated release
# inside src/ subdirectory to make our life easier
if use test; then
unpack "${P}.gh.tar.gz"
else
mkdir -p "${P}"/src || die
fi
tar -C "${P}"/src --strip-components=1 -xzf "${DISTDIR}/${P}.tar.gz" || die
}
src_prepare() {
# apply patches relatively to top directory
cd "${WORKDIR}/${P}" || die
distutils-r1_src_prepare
# manpage install is completely broken
sed -i -e '/build\/doc\/man/d' src/setup.cfg || die
if use test; then
local remove_tests=(
# TODO: does not respect PATH?
test/Clang
# broken
test/DVIPDF/DVIPDFFLAGS.py
test/Java/swig-dependencies.py
test/Java/multi-step.py
)
rm -r "${remove_tests[@]}" || die
fi
}
python_test() {
local -x COLUMNS=80
# set variable from escons() of scons-util.eclass to make env-passthrough patch work within test env
local -x GENTOO_SCONS_ENV_PASSTHROUGH=1
# unset some env variables to pass appropriate tests
unset AR AS ASFLAGS CC CXX CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
cd "${WORKDIR}/${P}" || die
"${EPYTHON}" runtest.py -a --passed \
-j "$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")"
# runtest.py script returns "0" if all tests are passed
# and returns "2" if there are any tests with "no result"
# (i.e. in case if some tools are not installed or it's Windows specific tests)
[[ ${?} == [02] ]] || die "Tests fail with ${EPYTHON}"
}
python_install_all() {
distutils-r1_python_install_all
doman *.1
use doc && dodoc "${DISTDIR}"/${P}-user.{pdf,html}
}

View File

@ -1,3 +1,2 @@
DIST strace-5.11.tar.xz 1926632 BLAKE2B df47612c0928466f8b5788c4a7dc74208fe76c6967d3219b0eb753131fba315e715626c2cd1ed56d3e8ba0eb9a338589a8cbd6205fe876123ac26fdf0fab8d31 SHA512 688bec8d620c7ca701561ed7479e42687cc30737f944b82201731d827775cd2864787ecca7c93ba149b06d5d654d9f6bd109a977f8138bab34339cd5930828f0 DIST strace-5.17.tar.xz 2281220 BLAKE2B 27e7dc19302c58144b0a7d8de41f717760b8e3cde4ab56892045727597bbfc894bf8f137aee476548c2d16d1e9c8005f931f31a5d2f8bfc4ce5565c2aa01f1ec SHA512 1b63cf7e6e339333b9d24fa20232409192abc815f2ebe2e336ef4acc039cd06c976b3c12e9ce993491a0e6b86c26b90ceba962f580e894b1ff5ab9863bdfcc44
DIST strace-5.12.tar.xz 2009060 BLAKE2B 9a7a07e5d2d38c8b456f54d0e1d7c776066b20327fa08d562e426a7096f708dffa00f0c2121683fa71f7029db958d450c5a6abf5ae5970dc02732f5aa7cef591 SHA512 289cf82da4c69270458953b45d09c8eb05a6624898d3ac493c3ec293cd5ad07205084ad0af021dab2be9c0dc53f0301816113a746d96c78780b79231a185e7c9 DIST strace-5.19.tar.xz 2353276 BLAKE2B 44b9a87f36e66481d8ac2107efbc389fa64c47b2ae7b1cc728241baa1c7d2d5d4d9410622763eb1247b415cad9afdd9f61552d2545388cadf5a33b568ed09af2 SHA512 1ea1c6e12d05bf145bc3c74f8d06b08dfc3eae3a5a21bfe8ab080053dc4c2da8a95be5956652ea62bb083462015a55f9bc1d1023919dcf2929a05211b7dde963
DIST strace-5.13.tar.xz 2040116 BLAKE2B a604342d68f504b42ff1cb4918aa9ced6575f589caeb62f53e0b125f24cfaf0423f1911f352f21ecea0d702197d65edc85d3e97ffca3561f619f9c4c80386cdc SHA512 ba8b0eae396fa2b762bf17cbcdcd84b0660b2a5d5e7e9caf098ef3414a87fd28d4140dd10136483f35904560e5044e40be2bf6117462868a360306d62887c8ed

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata> <pkgmetadata>
<maintainer type="project"> <maintainer type="project">
<email>base-system@gentoo.org</email> <email>base-system@gentoo.org</email>
@ -18,6 +18,7 @@
</use> </use>
<upstream> <upstream>
<remote-id type="github">strace/strace</remote-id> <remote-id type="github">strace/strace</remote-id>
<remote-id type="gitlab">strace/strace</remote-id>
<remote-id type="sourceforge">strace</remote-id> <remote-id type="sourceforge">strace</remote-id>
</upstream> </upstream>
</pkgmetadata> </pkgmetadata>

View File

@ -1,105 +0,0 @@
# 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
if [[ ${PV} == "9999" ]] ; then
EGIT_REPO_URI="https://github.com/strace/strace.git"
inherit git-r3 autotools
else
SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
fi
DESCRIPTION="A useful diagnostic, instructional, and debugging tool"
HOMEPAGE="https://strace.io/"
LICENSE="BSD"
SLOT="0"
IUSE="aio perl static unwind elfutils"
REQUIRED_USE="?? ( unwind elfutils )"
BDEPEND="
virtual/pkgconfig
"
LIB_DEPEND="
unwind? ( sys-libs/libunwind[static-libs(+)] )
elfutils? ( dev-libs/elfutils[static-libs(+)] )
"
# strace only uses the header from libaio to decode structs
DEPEND="
static? ( ${LIB_DEPEND} )
aio? ( >=dev-libs/libaio-0.3.106 )
sys-kernel/linux-headers
"
RDEPEND="
!static? ( ${LIB_DEPEND//\[static-libs(+)]} )
perl? ( dev-lang/perl )
"
PATCHES=(
"${FILESDIR}/${PN}-5.11-static.patch"
)
src_prepare() {
default
eautoreconf
if [[ ! -e configure ]] ; then
# git generation
sed /autoreconf/d -i bootstrap || die
./bootstrap || die
eautoreconf
[[ ! -e CREDITS ]] && cp CREDITS{.in,}
fi
filter-lfs-flags # configure handles this sanely
export ac_cv_header_libaio_h=$(usex aio)
use elibc_musl && export ac_cv_header_stdc=no
# Stub out the -k test since it's known to be flaky. #545812
sed -i '1iexit 77' tests*/strace-k.test || die
}
src_configure() {
# Set up the default build settings, and then use the names strace expects.
tc-export_build_env BUILD_{CC,CPP}
local v bv
for v in CC CPP {C,CPP,LD}FLAGS ; do
bv="BUILD_${v}"
export "${v}_FOR_BUILD=${!bv}"
done
# Don't require mpers support on non-multilib systems. #649560
local myeconfargs=(
--disable-gcc-Werror
--enable-mpers=check
$(use_enable static)
$(use_with unwind libunwind)
$(use_with elfutils libdw)
)
econf "${myeconfargs[@]}"
}
src_test() {
if has usersandbox ${FEATURES} ; then
ewarn "Test suite is known to fail with FEATURES=usersandbox -- skipping ..." #643044
return 0
fi
default
}
src_install() {
default
if use perl ; then
exeinto /usr/bin
doexe src/strace-graph
fi
dodoc CREDITS
}

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
@ -7,10 +7,10 @@ inherit autotools flag-o-matic toolchain-funcs
if [[ ${PV} == "9999" ]] ; then if [[ ${PV} == "9999" ]] ; then
EGIT_REPO_URI="https://github.com/strace/strace.git" EGIT_REPO_URI="https://github.com/strace/strace.git"
inherit git-r3 autotools inherit git-r3
else else
SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz" SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux" KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
fi fi
DESCRIPTION="A useful diagnostic, instructional, and debugging tool" DESCRIPTION="A useful diagnostic, instructional, and debugging tool"
@ -18,16 +18,14 @@ HOMEPAGE="https://strace.io/"
LICENSE="BSD" LICENSE="BSD"
SLOT="0" SLOT="0"
IUSE="aio perl static unwind elfutils" IUSE="aio perl selinux static unwind elfutils"
REQUIRED_USE="?? ( unwind elfutils )" REQUIRED_USE="?? ( unwind elfutils )"
BDEPEND=" BDEPEND="virtual/pkgconfig"
virtual/pkgconfig
"
LIB_DEPEND=" LIB_DEPEND="
unwind? ( sys-libs/libunwind[static-libs(+)] ) unwind? ( sys-libs/libunwind[static-libs(+)] )
elfutils? ( dev-libs/elfutils[static-libs(+)] ) elfutils? ( dev-libs/elfutils[static-libs(+)] )
selinux? ( sys-libs/libselinux[static-libs(+)] )
" "
# strace only uses the header from libaio to decode structs # strace only uses the header from libaio to decode structs
DEPEND=" DEPEND="
@ -57,12 +55,7 @@ src_prepare() {
[[ ! -e CREDITS ]] && cp CREDITS{.in,} [[ ! -e CREDITS ]] && cp CREDITS{.in,}
fi fi
filter-lfs-flags # configure handles this sanely # Stub out the -k test since it's known to be flaky. bug #545812
export ac_cv_header_libaio_h=$(usex aio)
use elibc_musl && export ac_cv_header_stdc=no
# Stub out the -k test since it's known to be flaky. #545812
sed -i '1iexit 77' tests*/strace-k.test || die sed -i '1iexit 77' tests*/strace-k.test || die
} }
@ -75,20 +68,29 @@ src_configure() {
export "${v}_FOR_BUILD=${!bv}" export "${v}_FOR_BUILD=${!bv}"
done done
# Don't require mpers support on non-multilib systems. #649560 filter-lfs-flags # configure handles this sanely
export ac_cv_header_libaio_h=$(usex aio)
use elibc_musl && export ac_cv_header_stdc=no
local myeconfargs=( local myeconfargs=(
--disable-gcc-Werror --disable-gcc-Werror
# Don't require mpers support on non-multilib systems. #649560
--enable-mpers=check --enable-mpers=check
$(use_enable static) $(use_enable static)
$(use_with unwind libunwind) $(use_with unwind libunwind)
$(use_with elfutils libdw) $(use_with elfutils libdw)
$(use_with selinux libselinux)
) )
econf "${myeconfargs[@]}" econf "${myeconfargs[@]}"
} }
src_test() { src_test() {
if has usersandbox ${FEATURES} ; then if has usersandbox ${FEATURES} ; then
ewarn "Test suite is known to fail with FEATURES=usersandbox -- skipping ..." #643044 # bug #643044
ewarn "Test suite is known to fail with FEATURES=usersandbox -- skipping ..."
return 0 return 0
fi fi
@ -97,6 +99,7 @@ src_test() {
src_install() { src_install() {
default default
if use perl ; then if use perl ; then
exeinto /usr/bin exeinto /usr/bin
doexe src/strace-graph doexe src/strace-graph

View File

@ -1,16 +1,16 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=8
inherit autotools flag-o-matic toolchain-funcs inherit autotools flag-o-matic toolchain-funcs
if [[ ${PV} == "9999" ]] ; then if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="https://github.com/strace/strace.git" EGIT_REPO_URI="https://github.com/strace/strace.git"
inherit git-r3 autotools inherit git-r3
else else
SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz" SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
fi fi
DESCRIPTION="A useful diagnostic, instructional, and debugging tool" DESCRIPTION="A useful diagnostic, instructional, and debugging tool"
@ -18,16 +18,14 @@ HOMEPAGE="https://strace.io/"
LICENSE="BSD" LICENSE="BSD"
SLOT="0" SLOT="0"
IUSE="aio perl static unwind elfutils" IUSE="aio perl selinux static unwind elfutils"
REQUIRED_USE="?? ( unwind elfutils )" REQUIRED_USE="?? ( unwind elfutils )"
BDEPEND=" BDEPEND="virtual/pkgconfig"
virtual/pkgconfig
"
LIB_DEPEND=" LIB_DEPEND="
unwind? ( sys-libs/libunwind[static-libs(+)] ) unwind? ( sys-libs/libunwind[static-libs(+)] )
elfutils? ( dev-libs/elfutils[static-libs(+)] ) elfutils? ( dev-libs/elfutils[static-libs(+)] )
selinux? ( sys-libs/libselinux[static-libs(+)] )
" "
# strace only uses the header from libaio to decode structs # strace only uses the header from libaio to decode structs
DEPEND=" DEPEND="
@ -57,12 +55,7 @@ src_prepare() {
[[ ! -e CREDITS ]] && cp CREDITS{.in,} [[ ! -e CREDITS ]] && cp CREDITS{.in,}
fi fi
filter-lfs-flags # configure handles this sanely # Stub out the -k test since it's known to be flaky. bug #545812
export ac_cv_header_libaio_h=$(usex aio)
use elibc_musl && export ac_cv_header_stdc=no
# Stub out the -k test since it's known to be flaky. #545812
sed -i '1iexit 77' tests*/strace-k.test || die sed -i '1iexit 77' tests*/strace-k.test || die
} }
@ -75,20 +68,29 @@ src_configure() {
export "${v}_FOR_BUILD=${!bv}" export "${v}_FOR_BUILD=${!bv}"
done done
# Don't require mpers support on non-multilib systems. #649560 filter-lfs-flags # configure handles this sanely
export ac_cv_header_libaio_h=$(usex aio)
use elibc_musl && export ac_cv_header_stdc=no
local myeconfargs=( local myeconfargs=(
--disable-gcc-Werror --disable-gcc-Werror
# Don't require mpers support on non-multilib systems. #649560
--enable-mpers=check --enable-mpers=check
$(use_enable static) $(use_enable static)
$(use_with unwind libunwind) $(use_with unwind libunwind)
$(use_with elfutils libdw) $(use_with elfutils libdw)
$(use_with selinux libselinux)
) )
econf "${myeconfargs[@]}" econf "${myeconfargs[@]}"
} }
src_test() { src_test() {
if has usersandbox ${FEATURES} ; then if has usersandbox ${FEATURES} ; then
ewarn "Test suite is known to fail with FEATURES=usersandbox -- skipping ..." #643044 # bug #643044
ewarn "Test suite is known to fail with FEATURES=usersandbox -- skipping ..."
return 0 return 0
fi fi
@ -97,9 +99,11 @@ src_test() {
src_install() { src_install() {
default default
if use perl ; then if use perl ; then
exeinto /usr/bin exeinto /usr/bin
doexe src/strace-graph doexe src/strace-graph
fi fi
dodoc CREDITS dodoc CREDITS
} }

View File

@ -1,16 +1,16 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=8
inherit autotools flag-o-matic toolchain-funcs inherit autotools edo flag-o-matic toolchain-funcs
if [[ ${PV} == "9999" ]] ; then if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="https://github.com/strace/strace.git" EGIT_REPO_URI="https://github.com/strace/strace.git"
inherit git-r3 autotools inherit git-r3
else else
SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz" SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
fi fi
DESCRIPTION="A useful diagnostic, instructional, and debugging tool" DESCRIPTION="A useful diagnostic, instructional, and debugging tool"
@ -18,16 +18,14 @@ HOMEPAGE="https://strace.io/"
LICENSE="BSD" LICENSE="BSD"
SLOT="0" SLOT="0"
IUSE="aio perl static unwind elfutils" IUSE="aio perl selinux static unwind elfutils"
REQUIRED_USE="?? ( unwind elfutils )" REQUIRED_USE="?? ( unwind elfutils )"
BDEPEND=" BDEPEND="virtual/pkgconfig"
virtual/pkgconfig
"
LIB_DEPEND=" LIB_DEPEND="
unwind? ( sys-libs/libunwind[static-libs(+)] ) unwind? ( sys-libs/libunwind[static-libs(+)] )
elfutils? ( dev-libs/elfutils[static-libs(+)] ) elfutils? ( dev-libs/elfutils[static-libs(+)] )
selinux? ( sys-libs/libselinux[static-libs(+)] )
" "
# strace only uses the header from libaio to decode structs # strace only uses the header from libaio to decode structs
DEPEND=" DEPEND="
@ -47,22 +45,16 @@ PATCHES=(
src_prepare() { src_prepare() {
default default
eautoreconf
if [[ ! -e configure ]] ; then if [[ ! -e configure ]] ; then
# git generation # git generation
sed /autoreconf/d -i bootstrap || die sed /autoreconf/d -i bootstrap || die
./bootstrap || die edo ./bootstrap
eautoreconf
[[ ! -e CREDITS ]] && cp CREDITS{.in,} [[ ! -e CREDITS ]] && cp CREDITS{.in,}
fi fi
filter-lfs-flags # configure handles this sanely eautoreconf
export ac_cv_header_libaio_h=$(usex aio) # Stub out the -k test since it's known to be flaky. bug #545812
use elibc_musl && export ac_cv_header_stdc=no
# Stub out the -k test since it's known to be flaky. #545812
sed -i '1iexit 77' tests*/strace-k.test || die sed -i '1iexit 77' tests*/strace-k.test || die
} }
@ -75,20 +67,29 @@ src_configure() {
export "${v}_FOR_BUILD=${!bv}" export "${v}_FOR_BUILD=${!bv}"
done done
# Don't require mpers support on non-multilib systems. #649560 filter-lfs-flags # configure handles this sanely
export ac_cv_header_libaio_h=$(usex aio)
use elibc_musl && export ac_cv_header_stdc=no
local myeconfargs=( local myeconfargs=(
--disable-gcc-Werror --disable-gcc-Werror
# Don't require mpers support on non-multilib systems. #649560
--enable-mpers=check --enable-mpers=check
$(use_enable static) $(use_enable static)
$(use_with unwind libunwind) $(use_with unwind libunwind)
$(use_with elfutils libdw) $(use_with elfutils libdw)
$(use_with selinux libselinux)
) )
econf "${myeconfargs[@]}" econf "${myeconfargs[@]}"
} }
src_test() { src_test() {
if has usersandbox ${FEATURES} ; then if has usersandbox ${FEATURES} ; then
ewarn "Test suite is known to fail with FEATURES=usersandbox -- skipping ..." #643044 # bug #643044
ewarn "Test suite is known to fail with FEATURES=usersandbox -- skipping ..."
return 0 return 0
fi fi
@ -97,9 +98,11 @@ src_test() {
src_install() { src_install() {
default default
if use perl ; then if use perl ; then
exeinto /usr/bin exeinto /usr/bin
doexe src/strace-graph doexe src/strace-graph
fi fi
dodoc CREDITS dodoc CREDITS
} }

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
# @ECLASS: bash-completion-r1.eclass # @ECLASS: bash-completion-r1.eclass
@ -28,12 +28,10 @@ _BASH_COMPLETION_R1_ECLASS=1
inherit toolchain-funcs inherit toolchain-funcs
# Flatcar: we still have some packages that use old EAPI, revert this case ${EAPI} in
# change when we update those packages. 5|6|7|8) ;;
#case ${EAPI} in *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
# 5|6|7|8) ;; esac
# *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
#esac
# @FUNCTION: _bash-completion-r1_get_bashdir # @FUNCTION: _bash-completion-r1_get_bashdir
# @INTERNAL # @INTERNAL
@ -71,7 +69,7 @@ _bash-completion-r1_get_bashcompdir() {
_bash-completion-r1_get_bashdir completionsdir /usr/share/bash-completion/completions _bash-completion-r1_get_bashdir completionsdir /usr/share/bash-completion/completions
} }
# @FUNCTION: _bash-completion-r1_get_helpersdir # @FUNCTION: _bash-completion-r1_get_bashhelpersdir
# @INTERNAL # @INTERNAL
# @DESCRIPTION: # @DESCRIPTION:
# Get unprefixed bash-completion helpers directory. # Get unprefixed bash-completion helpers directory.

View File

@ -1,15 +1,13 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
# Flatcar: Support EAPI 6.
# @ECLASS: cmake-multilib.eclass # @ECLASS: cmake-multilib.eclass
# @MAINTAINER: # @MAINTAINER:
# Michał Górny <mgorny@gentoo.org> # Michał Górny <mgorny@gentoo.org>
# @AUTHOR: # @AUTHOR:
# Author: Michał Górny <mgorny@gentoo.org> # Author: Michał Górny <mgorny@gentoo.org>
# @SUPPORTED_EAPIS: 6 7 8 # @SUPPORTED_EAPIS: 7 8
# @PROVIDES: cmake cmake-utils multilib-minimal # @PROVIDES: cmake multilib-minimal
# @BLURB: cmake wrapper for multilib builds # @BLURB: cmake wrapper for multilib builds
# @DESCRIPTION: # @DESCRIPTION:
# The cmake-multilib.eclass provides a glue between cmake.eclass(5) # The cmake-multilib.eclass provides a glue between cmake.eclass(5)
@ -22,31 +20,21 @@
# in multilib-minimal, yet they ought to call appropriate cmake # in multilib-minimal, yet they ought to call appropriate cmake
# phase rather than 'default'. # phase rather than 'default'.
[[ ${EAPI} == [67] ]] && : ${CMAKE_ECLASS:=cmake-utils} # @ECLASS_VARIABLE: CMAKE_ECLASS
# @ECLASS-VARIABLE: CMAKE_ECLASS # @DEPRECATED: none
# @PRE_INHERIT
# @DESCRIPTION: # @DESCRIPTION:
# Only "cmake" is supported in EAPI-8 and later. # Only "cmake" is supported.
# In EAPI-7, default is "cmake-utils" for compatibility. Specify "cmake" for
# ebuilds that ported to cmake.eclass already.
: ${CMAKE_ECLASS:=cmake} : ${CMAKE_ECLASS:=cmake}
# @ECLASS-VARIABLE: _CMAKE_ECLASS_IMPL
# @INTERNAL
# @DESCRIPTION:
# TODO: Cleanup once EAPI-7 support is gone.
_CMAKE_ECLASS_IMPL=cmake
case ${EAPI} in case ${EAPI} in
6|7|8) 7|8)
case ${CMAKE_ECLASS} in case ${CMAKE_ECLASS} in
cmake-utils|cmake) ;; cmake) ;;
*) *)
eerror "Unknown value for \${CMAKE_ECLASS}" eerror "Unknown value for \${CMAKE_ECLASS}"
die "Value ${CMAKE_ECLASS} is not supported" die "Value ${CMAKE_ECLASS} is not supported"
;; ;;
esac esac
_CMAKE_ECLASS_IMPL=${CMAKE_ECLASS}
;; ;;
*) die "${ECLASS}: EAPI=${EAPI:-0} is not supported" ;; *) die "${ECLASS}: EAPI=${EAPI:-0} is not supported" ;;
esac esac
@ -58,7 +46,7 @@ fi
if [[ -z ${_CMAKE_MULTILIB_ECLASS} ]]; then if [[ -z ${_CMAKE_MULTILIB_ECLASS} ]]; then
_CMAKE_MULTILIB_ECLASS=1 _CMAKE_MULTILIB_ECLASS=1
inherit ${_CMAKE_ECLASS_IMPL} multilib-minimal inherit cmake multilib-minimal
cmake-multilib_src_configure() { cmake-multilib_src_configure() {
local _cmake_args=( "${@}" ) local _cmake_args=( "${@}" )
@ -67,7 +55,7 @@ cmake-multilib_src_configure() {
} }
multilib_src_configure() { multilib_src_configure() {
${_CMAKE_ECLASS_IMPL}_src_configure "${_cmake_args[@]}" cmake_src_configure "${_cmake_args[@]}"
} }
cmake-multilib_src_compile() { cmake-multilib_src_compile() {
@ -77,7 +65,7 @@ cmake-multilib_src_compile() {
} }
multilib_src_compile() { multilib_src_compile() {
${_CMAKE_ECLASS_IMPL}_src_compile "${_cmake_args[@]}" cmake_src_compile "${_cmake_args[@]}"
} }
cmake-multilib_src_test() { cmake-multilib_src_test() {
@ -87,7 +75,7 @@ cmake-multilib_src_test() {
} }
multilib_src_test() { multilib_src_test() {
${_CMAKE_ECLASS_IMPL}_src_test "${_cmake_args[@]}" cmake_src_test "${_cmake_args[@]}"
} }
cmake-multilib_src_install() { cmake-multilib_src_install() {
@ -97,7 +85,7 @@ cmake-multilib_src_install() {
} }
multilib_src_install() { multilib_src_install() {
${_CMAKE_ECLASS_IMPL}_src_install "${_cmake_args[@]}" cmake_src_install "${_cmake_args[@]}"
} }
fi fi

View File

@ -1,849 +0,0 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: cmake-utils.eclass
# @MAINTAINER:
# kde@gentoo.org
# @AUTHOR:
# Tomáš Chvátal <scarabeus@gentoo.org>
# Maciej Mrozowski <reavertm@gentoo.org>
# (undisclosed contributors)
# Original author: Zephyrus (zephyrus@mirach.it)
# @SUPPORTED_EAPIS: 5 6 7
# @PROVIDES: ninja-utils
# @BLURB: common ebuild functions for cmake-based packages
# @DEPRECATED: cmake.eclass
# @DESCRIPTION:
# DEPRECATED: This no longer receives any changes. Everyone must port to cmake.eclass.
# The cmake-utils eclass makes creating ebuilds for cmake-based packages much easier.
# It provides all inherited features (DOCS, HTML_DOCS, PATCHES) along with out-of-source
# builds (default), in-source builds and an implementation of the well-known use_enable
# and use_with functions for CMake.
if [[ -z ${_CMAKE_UTILS_ECLASS} ]]; then
_CMAKE_UTILS_ECLASS=1
# @ECLASS-VARIABLE: BUILD_DIR
# @DESCRIPTION:
# Build directory where all cmake processed files should be generated.
# For in-source build it's fixed to ${CMAKE_USE_DIR}.
# For out-of-source build it can be overridden, by default it uses
# ${WORKDIR}/${P}_build.
#
# This variable has been called CMAKE_BUILD_DIR formerly.
# It is set under that name for compatibility.
# @ECLASS-VARIABLE: CMAKE_BINARY
# @DESCRIPTION:
# Eclass can use different cmake binary than the one provided in by system.
: ${CMAKE_BINARY:=cmake}
# @ECLASS-VARIABLE: CMAKE_BUILD_TYPE
# @DESCRIPTION:
# Set to override default CMAKE_BUILD_TYPE. Only useful for packages
# known to make use of "if (CMAKE_BUILD_TYPE MATCHES xxx)".
# If about to be set - needs to be set before invoking cmake-utils_src_configure.
# You usualy do *NOT* want nor need to set it as it pulls CMake default build-type
# specific compiler flags overriding make.conf.
: ${CMAKE_BUILD_TYPE:=Gentoo}
# @ECLASS-VARIABLE: CMAKE_IN_SOURCE_BUILD
# @DEFAULT_UNSET
# @DESCRIPTION:
# Set to enable in-source build.
# @ECLASS-VARIABLE: CMAKE_MAKEFILE_GENERATOR
# @DEFAULT_UNSET
# @DESCRIPTION:
# Specify a makefile generator to be used by cmake.
# At this point only "emake" and "ninja" are supported.
# In EAPI 7 and above, the default is set to "ninja",
# whereas in EAPIs below 7, it is set to "emake".
# @ECLASS-VARIABLE: CMAKE_MIN_VERSION
# @DESCRIPTION:
# Specify the minimum required CMake version.
: ${CMAKE_MIN_VERSION:=3.9.6}
# @ECLASS-VARIABLE: CMAKE_REMOVE_MODULES
# @DESCRIPTION:
# Do we want to remove anything? yes or whatever else for no
: ${CMAKE_REMOVE_MODULES:=yes}
# @ECLASS-VARIABLE: CMAKE_REMOVE_MODULES_LIST
# @DESCRIPTION:
# Space-separated list of CMake modules that will be removed in $S during src_prepare,
# in order to force packages to use the system version.
: ${CMAKE_REMOVE_MODULES_LIST:=FindBLAS FindLAPACK}
# @ECLASS-VARIABLE: CMAKE_USE_DIR
# @DESCRIPTION:
# Sets the directory where we are working with cmake.
# For example when application uses autotools and only one
# plugin needs to be done by cmake.
# By default it uses ${S}.
# @ECLASS-VARIABLE: CMAKE_VERBOSE
# @DESCRIPTION:
# Set to OFF to disable verbose messages during compilation
: ${CMAKE_VERBOSE:=ON}
# @ECLASS-VARIABLE: CMAKE_WARN_UNUSED_CLI
# @DESCRIPTION:
# Warn about variables that are declared on the command line
# but not used. Might give false-positives.
# "no" to disable (default) or anything else to enable.
# @ECLASS-VARIABLE: CMAKE_EXTRA_CACHE_FILE
# @USER_VARIABLE
# @DEFAULT_UNSET
# @DESCRIPTION:
# Specifies an extra cache file to pass to cmake. This is the analog of EXTRA_ECONF
# for econf and is needed to pass TRY_RUN results when cross-compiling.
# Should be set by user in a per-package basis in /etc/portage/package.env.
# @ECLASS-VARIABLE: CMAKE_UTILS_QA_SRC_DIR_READONLY
# @USER_VARIABLE
# @DEFAULT_UNSET
# @DESCRIPTION:
# After running cmake-utils_src_prepare, sets ${S} to read-only. This is
# a user flag and should under _no circumstances_ be set in the ebuild.
# Helps in improving QA of build systems that write to source tree.
case ${EAPI} in
5) : ${CMAKE_WARN_UNUSED_CLI:=no} ;;
6|7) : ${CMAKE_WARN_UNUSED_CLI:=yes} ;;
*) die "EAPI=${EAPI:-0} is not supported" ;;
esac
inherit toolchain-funcs ninja-utils flag-o-matic multiprocessing xdg-utils
case ${EAPI} in
[56])
: ${CMAKE_MAKEFILE_GENERATOR:=emake}
inherit eutils multilib
;;
*)
: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
;;
esac
EXPORT_FUNCTIONS src_prepare src_configure src_compile src_test src_install
if [[ ${WANT_CMAKE} ]]; then
if [[ ${EAPI} != [56] ]]; then
die "\${WANT_CMAKE} has been removed and is a no-op now"
else
eqawarn "\${WANT_CMAKE} has been removed and is a no-op now"
fi
fi
[[ ${PREFIX} ]] && die "\${PREFIX} has been removed and is a no-op now"
case ${CMAKE_MAKEFILE_GENERATOR} in
emake)
BDEPEND="sys-devel/make"
;;
ninja)
BDEPEND="dev-util/ninja"
;;
*)
eerror "Unknown value for \${CMAKE_MAKEFILE_GENERATOR}"
die "Value ${CMAKE_MAKEFILE_GENERATOR} is not supported"
;;
esac
if [[ ${PN} != cmake ]]; then
BDEPEND+=" >=dev-util/cmake-${CMAKE_MIN_VERSION}"
fi
case ${EAPI} in
7) ;;
*) DEPEND=" ${BDEPEND}" ;;
esac
# Internal functions used by cmake-utils_use_*
_cmake_use_me_now() {
debug-print-function ${FUNCNAME} "$@"
local arg=$2
[[ ! -z $3 ]] && arg=$3
[[ ${EAPI} == 5 ]] || die "${FUNCNAME[1]} is banned in EAPI 6 and later: use -D$1<related_CMake_variable>=\"\$(usex $2)\" instead"
local uper capitalised x
[[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]"
if [[ ! -z $3 ]]; then
# user specified the use name so use it
echo "-D$1$3=$(use $2 && echo ON || echo OFF)"
else
# use all various most used combinations
uper=$(echo ${2} | tr '[:lower:]' '[:upper:]')
capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g')
for x in $2 $uper $capitalised; do
echo "-D$1$x=$(use $2 && echo ON || echo OFF) "
done
fi
}
_cmake_use_me_now_inverted() {
debug-print-function ${FUNCNAME} "$@"
local arg=$2
[[ ! -z $3 ]] && arg=$3
if [[ ${EAPI} != 5 && "${FUNCNAME[1]}" != cmake-utils_use_find_package ]] ; then
die "${FUNCNAME[1]} is banned in EAPI 6 and later: use -D$1<related_CMake_variable>=\"\$(usex $2)\" instead"
fi
local uper capitalised x
[[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]"
if [[ ! -z $3 ]]; then
# user specified the use name so use it
echo "-D$1$3=$(use $2 && echo OFF || echo ON)"
else
# use all various most used combinations
uper=$(echo ${2} | tr '[:lower:]' '[:upper:]')
capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g')
for x in $2 $uper $capitalised; do
echo "-D$1$x=$(use $2 && echo OFF || echo ON) "
done
fi
}
# Determine using IN or OUT source build
_cmake_check_build_dir() {
: ${CMAKE_USE_DIR:=${S}}
if [[ -n ${CMAKE_IN_SOURCE_BUILD} ]]; then
# we build in source dir
BUILD_DIR="${CMAKE_USE_DIR}"
else
# Respect both the old variable and the new one, depending
# on which one was set by the ebuild.
if [[ ! ${BUILD_DIR} && ${CMAKE_BUILD_DIR} ]]; then
if [[ ${EAPI} != [56] ]]; then
eerror "The CMAKE_BUILD_DIR variable has been renamed to BUILD_DIR."
die "The ebuild must be migrated to BUILD_DIR."
else
eqawarn "The CMAKE_BUILD_DIR variable has been renamed to BUILD_DIR."
eqawarn "Please migrate the ebuild to use the new one."
fi
# In the next call, both variables will be set already
# and we'd have to know which one takes precedence.
_RESPECT_CMAKE_BUILD_DIR=1
fi
if [[ ${_RESPECT_CMAKE_BUILD_DIR} ]]; then
BUILD_DIR=${CMAKE_BUILD_DIR:-${WORKDIR}/${P}_build}
else
: ${BUILD_DIR:=${WORKDIR}/${P}_build}
fi
fi
# Backwards compatibility for getting the value.
[[ ${EAPI} == [56] ]] && CMAKE_BUILD_DIR=${BUILD_DIR}
mkdir -p "${BUILD_DIR}" || die
echo ">>> Working in BUILD_DIR: \"$BUILD_DIR\""
}
# Determine which generator to use
_cmake_generator_to_use() {
local generator_name
case ${CMAKE_MAKEFILE_GENERATOR} in
ninja)
# if ninja is enabled but not installed, the build could fail
# this could happen if ninja is manually enabled (eg. make.conf) but not installed
case ${EAPI} in
5|6)
if ! ROOT=/ has_version dev-util/ninja; then
die "CMAKE_MAKEFILE_GENERATOR is set to ninja, but ninja is not installed. Please install dev-util/ninja or unset CMAKE_MAKEFILE_GENERATOR."
fi
;;
*)
if ! has_version -b dev-util/ninja; then
die "CMAKE_MAKEFILE_GENERATOR is set to ninja, but ninja is not installed. Please install dev-util/ninja or unset CMAKE_MAKEFILE_GENERATOR."
fi
;;
esac
generator_name="Ninja"
;;
emake)
generator_name="Unix Makefiles"
;;
*)
eerror "Unknown value for \${CMAKE_MAKEFILE_GENERATOR}"
die "Value ${CMAKE_MAKEFILE_GENERATOR} is not supported"
;;
esac
echo ${generator_name}
}
# @FUNCTION: cmake_comment_add_subdirectory
# @USAGE: <subdirectory>
# @DESCRIPTION:
# Comment out one or more add_subdirectory calls in CMakeLists.txt in the current directory
cmake_comment_add_subdirectory() {
if [[ -z ${1} ]]; then
die "comment_add_subdirectory must be passed at least one directory name to comment"
fi
if [[ -e "CMakeLists.txt" ]]; then
local d
for d in $@; do
sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${d//\//\\/}[[:space:]]*)/I s/^/#DONOTCOMPILE /" \
-i CMakeLists.txt || die "failed to comment add_subdirectory(${d})"
done
fi
}
# @FUNCTION: comment_add_subdirectory
# @USAGE: <subdirectory>
# @DESCRIPTION:
# Comment out an add_subdirectory call in CMakeLists.txt in the current directory
# Banned in EAPI 6 and later - use cmake_comment_add_subdirectory instead.
comment_add_subdirectory() {
[[ ${EAPI} == 5 ]] || die "comment_add_subdirectory is banned in EAPI 6 and later - use cmake_comment_add_subdirectory instead"
cmake_comment_add_subdirectory "$@"
}
# @FUNCTION: cmake-utils_use_with
# @USAGE: <USE flag> [flag name]
# @DESCRIPTION:
# Based on use_with. See ebuild(5).
#
# `cmake-utils_use_with foo FOO` echoes -DWITH_FOO=ON if foo is enabled
# and -DWITH_FOO=OFF if it is disabled.
cmake-utils_use_with() { _cmake_use_me_now WITH_ "$@" ; }
# @FUNCTION: cmake-utils_use_enable
# @USAGE: <USE flag> [flag name]
# @DESCRIPTION:
# Based on use_enable. See ebuild(5).
#
# `cmake-utils_use_enable foo FOO` echoes -DENABLE_FOO=ON if foo is enabled
# and -DENABLE_FOO=OFF if it is disabled.
cmake-utils_use_enable() { _cmake_use_me_now ENABLE_ "$@" ; }
# @FUNCTION: cmake-utils_use_find_package
# @USAGE: <USE flag> <package name>
# @DESCRIPTION:
# Based on use_enable. See ebuild(5).
#
# `cmake-utils_use_find_package foo LibFoo` echoes -DCMAKE_DISABLE_FIND_PACKAGE_LibFoo=OFF
# if foo is enabled and -DCMAKE_DISABLE_FIND_PACKAGE_LibFoo=ON if it is disabled.
# This can be used to make find_package optional.
cmake-utils_use_find_package() {
if [[ ${EAPI} != 5 && "$#" != 2 ]] ; then
die "Usage: cmake-utils_use_find_package <USE flag> <package name>"
fi
_cmake_use_me_now_inverted CMAKE_DISABLE_FIND_PACKAGE_ "$@" ;
}
# @FUNCTION: cmake_use_find_package
# @USAGE: <USE flag> <package name>
# @DESCRIPTION:
# Alias for cmake-utils_use_find_package.
cmake_use_find_package() {
if [[ "$#" != 2 ]] ; then
die "Usage: cmake_use_find_package <USE flag> <package name>"
fi
cmake-utils_use_find_package "$@" ;
}
# @FUNCTION: cmake-utils_use_disable
# @USAGE: <USE flag> [flag name]
# @DESCRIPTION:
# Based on inversion of use_enable. See ebuild(5).
#
# `cmake-utils_use_enable foo FOO` echoes -DDISABLE_FOO=OFF if foo is enabled
# and -DDISABLE_FOO=ON if it is disabled.
cmake-utils_use_disable() { _cmake_use_me_now_inverted DISABLE_ "$@" ; }
# @FUNCTION: cmake-utils_use_no
# @USAGE: <USE flag> [flag name]
# @DESCRIPTION:
# Based on use_disable. See ebuild(5).
#
# `cmake-utils_use_no foo FOO` echoes -DNO_FOO=OFF if foo is enabled
# and -DNO_FOO=ON if it is disabled.
cmake-utils_use_no() { _cmake_use_me_now_inverted NO_ "$@" ; }
# @FUNCTION: cmake-utils_use_want
# @USAGE: <USE flag> [flag name]
# @DESCRIPTION:
# Based on use_enable. See ebuild(5).
#
# `cmake-utils_use_want foo FOO` echoes -DWANT_FOO=ON if foo is enabled
# and -DWANT_FOO=OFF if it is disabled.
cmake-utils_use_want() { _cmake_use_me_now WANT_ "$@" ; }
# @FUNCTION: cmake-utils_use_build
# @USAGE: <USE flag> [flag name]
# @DESCRIPTION:
# Based on use_enable. See ebuild(5).
#
# `cmake-utils_use_build foo FOO` echoes -DBUILD_FOO=ON if foo is enabled
# and -DBUILD_FOO=OFF if it is disabled.
cmake-utils_use_build() { _cmake_use_me_now BUILD_ "$@" ; }
# @FUNCTION: cmake-utils_use_has
# @USAGE: <USE flag> [flag name]
# @DESCRIPTION:
# Based on use_enable. See ebuild(5).
#
# `cmake-utils_use_has foo FOO` echoes -DHAVE_FOO=ON if foo is enabled
# and -DHAVE_FOO=OFF if it is disabled.
cmake-utils_use_has() { _cmake_use_me_now HAVE_ "$@" ; }
# @FUNCTION: cmake-utils_use_use
# @USAGE: <USE flag> [flag name]
# @DESCRIPTION:
# Based on use_enable. See ebuild(5).
#
# `cmake-utils_use_use foo FOO` echoes -DUSE_FOO=ON if foo is enabled
# and -DUSE_FOO=OFF if it is disabled.
cmake-utils_use_use() { _cmake_use_me_now USE_ "$@" ; }
# @FUNCTION: cmake-utils_use
# @USAGE: <USE flag> [flag name]
# @DESCRIPTION:
# Based on use_enable. See ebuild(5).
#
# `cmake-utils_use foo FOO` echoes -DFOO=ON if foo is enabled
# and -DFOO=OFF if it is disabled.
cmake-utils_use() { _cmake_use_me_now "" "$@" ; }
# @FUNCTION: cmake-utils_useno
# @USAGE: <USE flag> [flag name]
# @DESCRIPTION:
# Based on use_enable. See ebuild(5).
#
# `cmake-utils_useno foo NOFOO` echoes -DNOFOO=OFF if foo is enabled
# and -DNOFOO=ON if it is disabled.
cmake-utils_useno() { _cmake_use_me_now_inverted "" "$@" ; }
# Internal function for modifying hardcoded definitions.
# Removes dangerous definitions that override Gentoo settings.
_cmake_modify-cmakelists() {
debug-print-function ${FUNCNAME} "$@"
# Only edit the files once
grep -qs "<<< Gentoo configuration >>>" "${CMAKE_USE_DIR}"/CMakeLists.txt && return 0
# Comment out all set (<some_should_be_user_defined_variable> value)
find "${CMAKE_USE_DIR}" -name CMakeLists.txt -exec sed \
-e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_BUILD_TYPE\([[:space:]].*)\|)\)/I{s/^/#_cmake_modify_IGNORE /g}' \
-e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_COLOR_MAKEFILE[[:space:]].*)/I{s/^/#_cmake_modify_IGNORE /g}' \
-e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_INSTALL_PREFIX[[:space:]].*)/I{s/^/#_cmake_modify_IGNORE /g}' \
-e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_VERBOSE_MAKEFILE[[:space:]].*)/I{s/^/#_cmake_modify_IGNORE /g}' \
-i {} + || die "${LINENO}: failed to disable hardcoded settings"
local x
for x in $(find "${CMAKE_USE_DIR}" -name CMakeLists.txt -exec grep -l "^#_cmake_modify_IGNORE" {} +;); do
einfo "Hardcoded definition(s) removed in $(echo "${x}" | cut -c $((${#CMAKE_USE_DIR}+2))-):"
einfo "$(grep -se '^#_cmake_modify_IGNORE' ${x} | cut -c 22-99)"
done
# NOTE Append some useful summary here
cat >> "${CMAKE_USE_DIR}"/CMakeLists.txt <<- _EOF_ || die
MESSAGE(STATUS "<<< Gentoo configuration >>>
Build type \${CMAKE_BUILD_TYPE}
Install path \${CMAKE_INSTALL_PREFIX}
Compiler flags:
C \${CMAKE_C_FLAGS}
C++ \${CMAKE_CXX_FLAGS}
Linker flags:
Executable \${CMAKE_EXE_LINKER_FLAGS}
Module \${CMAKE_MODULE_LINKER_FLAGS}
Shared \${CMAKE_SHARED_LINKER_FLAGS}\n")
_EOF_
}
# temporary function for moving cmake cleanups from from src_configure -> src_prepare.
# bug #378850
_cmake_cleanup_cmake() {
: ${CMAKE_USE_DIR:=${S}}
if [[ "${CMAKE_REMOVE_MODULES}" == "yes" ]] ; then
local name
for name in ${CMAKE_REMOVE_MODULES_LIST} ; do
find "${S}" -name ${name}.cmake -exec rm -v {} + || die
done
fi
# check if CMakeLists.txt exist and if no then die
if [[ ! -e ${CMAKE_USE_DIR}/CMakeLists.txt ]] ; then
eerror "Unable to locate CMakeLists.txt under:"
eerror "\"${CMAKE_USE_DIR}/CMakeLists.txt\""
eerror "Consider not inheriting the cmake eclass."
die "FATAL: Unable to find CMakeLists.txt"
fi
# Remove dangerous things.
_cmake_modify-cmakelists
}
# @FUNCTION: cmake-utils_src_prepare
# @DESCRIPTION:
# Apply ebuild and user patches.
cmake-utils_src_prepare() {
debug-print-function ${FUNCNAME} "$@"
pushd "${S}" > /dev/null || die
if [[ ${EAPI} != 5 ]]; then
default_src_prepare
_cmake_cleanup_cmake
else
debug-print "$FUNCNAME: PATCHES=$PATCHES"
[[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"
debug-print "$FUNCNAME: applying user patches"
epatch_user
fi
popd > /dev/null || die
# make ${S} read-only in order to detect broken build-systems
if [[ ${CMAKE_UTILS_QA_SRC_DIR_READONLY} && ! ${CMAKE_IN_SOURCE_BUILD} ]]; then
chmod -R a-w "${S}"
fi
_CMAKE_UTILS_SRC_PREPARE_HAS_RUN=1
}
# @VARIABLE: mycmakeargs
# @DEFAULT_UNSET
# @DESCRIPTION:
# Optional cmake defines as a bash array. Should be defined before calling
# src_configure.
# @CODE
# src_configure() {
# local mycmakeargs=(
# $(cmake-utils_use_with openconnect)
# )
#
# cmake-utils_src_configure
# }
# @CODE
# @FUNCTION: cmake-utils_src_configure
# @DESCRIPTION:
# General function for configuring with cmake. Default behaviour is to start an
# out-of-source build.
cmake-utils_src_configure() {
debug-print-function ${FUNCNAME} "$@"
if [[ ! ${_CMAKE_UTILS_SRC_PREPARE_HAS_RUN} ]]; then
if [[ ${EAPI} != [56] ]]; then
die "FATAL: cmake-utils_src_prepare has not been run"
else
eqawarn "cmake-utils_src_prepare has not been run, please open a bug on https://bugs.gentoo.org/"
fi
fi
[[ ${EAPI} == 5 ]] && _cmake_cleanup_cmake
_cmake_check_build_dir
# Fix xdg collision with sandbox
xdg_environment_reset
# @SEE CMAKE_BUILD_TYPE
if [[ ${CMAKE_BUILD_TYPE} = Gentoo ]]; then
# Handle release builds
if ! has debug ${IUSE//+} || ! use debug; then
local CPPFLAGS=${CPPFLAGS}
append-cppflags -DNDEBUG
fi
fi
# Prepare Gentoo override rules (set valid compiler, append CPPFLAGS etc.)
local build_rules=${BUILD_DIR}/gentoo_rules.cmake
cat > "${build_rules}" <<- _EOF_ || die
SET (CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "ASM compile command" FORCE)
SET (CMAKE_ASM-ATT_COMPILE_OBJECT "<CMAKE_ASM-ATT_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c -x assembler <SOURCE>" CACHE STRING "ASM-ATT compile command" FORCE)
SET (CMAKE_ASM-ATT_LINK_FLAGS "-nostdlib" CACHE STRING "ASM-ATT link flags" FORCE)
SET (CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C compile command" FORCE)
SET (CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C++ compile command" FORCE)
SET (CMAKE_Fortran_COMPILE_OBJECT "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> ${FCFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "Fortran compile command" FORCE)
_EOF_
local myCC=$(tc-getCC) myCXX=$(tc-getCXX) myFC=$(tc-getFC)
# !!! IMPORTANT NOTE !!!
# Single slash below is intentional. CMake is weird and wants the
# CMAKE_*_VARIABLES split into two elements: the first one with
# compiler path, and the second one with all command-line options,
# space separated.
local toolchain_file=${BUILD_DIR}/gentoo_toolchain.cmake
cat > ${toolchain_file} <<- _EOF_ || die
SET (CMAKE_ASM_COMPILER "${myCC/ /;}")
SET (CMAKE_ASM-ATT_COMPILER "${myCC/ /;}")
SET (CMAKE_C_COMPILER "${myCC/ /;}")
SET (CMAKE_CXX_COMPILER "${myCXX/ /;}")
SET (CMAKE_Fortran_COMPILER "${myFC/ /;}")
SET (CMAKE_AR $(type -P $(tc-getAR)) CACHE FILEPATH "Archive manager" FORCE)
SET (CMAKE_RANLIB $(type -P $(tc-getRANLIB)) CACHE FILEPATH "Archive index generator" FORCE)
SET (CMAKE_SYSTEM_PROCESSOR "${CHOST%%-*}")
_EOF_
# We are using the C compiler for assembly by default.
local -x ASMFLAGS=${CFLAGS}
local -x PKG_CONFIG=$(tc-getPKG_CONFIG)
if tc-is-cross-compiler; then
local sysname
case "${KERNEL:-linux}" in
Cygwin) sysname="CYGWIN_NT-5.1" ;;
HPUX) sysname="HP-UX" ;;
linux) sysname="Linux" ;;
Winnt)
sysname="Windows"
cat >> "${toolchain_file}" <<- _EOF_ || die
SET (CMAKE_RC_COMPILER $(tc-getRC))
_EOF_
;;
*) sysname="${KERNEL}" ;;
esac
cat >> "${toolchain_file}" <<- _EOF_ || die
SET (CMAKE_SYSTEM_NAME "${sysname}")
_EOF_
if [ "${SYSROOT:-/}" != "/" ] ; then
# When cross-compiling with a sysroot (e.g. with crossdev's emerge wrappers)
# we need to tell cmake to use libs/headers from the sysroot but programs from / only.
cat >> "${toolchain_file}" <<- _EOF_ || die
SET (CMAKE_FIND_ROOT_PATH "${SYSROOT}")
SET (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
_EOF_
fi
fi
if use prefix-guest; then
cat >> "${build_rules}" <<- _EOF_ || die
# in Prefix we need rpath and must ensure cmake gets our default linker path
# right ... except for Darwin hosts
IF (NOT APPLE)
SET (CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE)
SET (CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH "${EPREFIX}/usr/${CHOST}/lib/gcc;${EPREFIX}/usr/${CHOST}/lib;${EPREFIX}/usr/$(get_libdir);${EPREFIX}/$(get_libdir)"
CACHE STRING "" FORCE)
ELSE ()
SET (CMAKE_PREFIX_PATH "${EPREFIX}/usr" CACHE STRING "" FORCE)
SET (CMAKE_MACOSX_RPATH ON CACHE BOOL "" FORCE)
SET (CMAKE_SKIP_BUILD_RPATH OFF CACHE BOOL "" FORCE)
SET (CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE)
SET (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE CACHE BOOL "" FORCE)
ENDIF (NOT APPLE)
_EOF_
fi
# Common configure parameters (invariants)
local common_config=${BUILD_DIR}/gentoo_common_config.cmake
local libdir=$(get_libdir)
cat > "${common_config}" <<- _EOF_ || die
SET (CMAKE_GENTOO_BUILD ON CACHE BOOL "Indicate Gentoo package build")
SET (LIB_SUFFIX ${libdir/lib} CACHE STRING "library path suffix" FORCE)
SET (CMAKE_INSTALL_LIBDIR ${libdir} CACHE PATH "Output directory for libraries")
SET (CMAKE_INSTALL_INFODIR "${EPREFIX}/usr/share/info" CACHE PATH "")
SET (CMAKE_INSTALL_MANDIR "${EPREFIX}/usr/share/man" CACHE PATH "")
SET (CMAKE_USER_MAKE_RULES_OVERRIDE "${build_rules}" CACHE FILEPATH "Gentoo override rules")
_EOF_
# See bug 689410
if [[ "${ARCH}" == riscv ]]; then
echo 'SET (CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX '"${libdir#lib}"' CACHE STRING "library search suffix" FORCE)' >> "${common_config}" || die
fi
[[ "${NOCOLOR}" = true || "${NOCOLOR}" = yes ]] && echo 'SET (CMAKE_COLOR_MAKEFILE OFF CACHE BOOL "pretty colors during make" FORCE)' >> "${common_config}"
if [[ ${EAPI} != [56] ]]; then
cat >> "${common_config}" <<- _EOF_ || die
SET (CMAKE_INSTALL_DOCDIR "${EPREFIX}/usr/share/doc/${PF}" CACHE PATH "")
SET (BUILD_SHARED_LIBS ON CACHE BOOL "")
_EOF_
fi
# Wipe the default optimization flags out of CMake
if [[ ${CMAKE_BUILD_TYPE} != Gentoo && ${EAPI} != 5 ]]; then
cat >> ${common_config} <<- _EOF_ || die
SET (CMAKE_ASM_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_ASM-ATT_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_Fortran_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_MODULE_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_SHARED_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_STATIC_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
_EOF_
fi
# Convert mycmakeargs to an array, for backwards compatibility
# Make the array a local variable since <=portage-2.1.6.x does not
# support global arrays (see bug #297255).
local mycmakeargstype=$(declare -p mycmakeargs 2>&-)
if [[ "${mycmakeargstype}" != "declare -a mycmakeargs="* ]]; then
if [[ -n "${mycmakeargstype}" ]] ; then
if [[ ${EAPI} == 5 ]]; then
eqawarn "Declaring mycmakeargs as a variable is deprecated. Please use an array instead."
else
die "Declaring mycmakeargs as a variable is banned in EAPI=${EAPI}. Please use an array instead."
fi
fi
local mycmakeargs_local=(${mycmakeargs})
else
local mycmakeargs_local=("${mycmakeargs[@]}")
fi
if [[ ${CMAKE_WARN_UNUSED_CLI} == no ]] ; then
local warn_unused_cli="--no-warn-unused-cli"
else
local warn_unused_cli=""
fi
# Common configure parameters (overridable)
# NOTE CMAKE_BUILD_TYPE can be only overridden via CMAKE_BUILD_TYPE eclass variable
# No -DCMAKE_BUILD_TYPE=xxx definitions will be in effect.
local cmakeargs=(
${warn_unused_cli}
-C "${common_config}"
-G "$(_cmake_generator_to_use)"
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr"
"${mycmakeargs_local[@]}"
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}"
$([[ ${EAPI} == 5 ]] && echo -DCMAKE_INSTALL_DO_STRIP=OFF)
-DCMAKE_TOOLCHAIN_FILE="${toolchain_file}"
"${MYCMAKEARGS}"
)
if [[ -n "${CMAKE_EXTRA_CACHE_FILE}" ]] ; then
cmakeargs+=( -C "${CMAKE_EXTRA_CACHE_FILE}" )
fi
pushd "${BUILD_DIR}" > /dev/null || die
debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: mycmakeargs is ${mycmakeargs_local[*]}"
echo "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}"
"${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}" || die "cmake failed"
popd > /dev/null || die
}
# @FUNCTION: cmake-utils_src_compile
# @DESCRIPTION:
# General function for compiling with cmake.
# Automatically detects the build type. All arguments are passed to emake.
cmake-utils_src_compile() {
debug-print-function ${FUNCNAME} "$@"
cmake-utils_src_make "$@"
}
# @FUNCTION: _cmake_ninja_src_make
# @INTERNAL
# @DESCRIPTION:
# Build the package using ninja generator
_cmake_ninja_src_make() {
debug-print-function ${FUNCNAME} "$@"
[[ -e build.ninja ]] || die "build.ninja not found. Error during configure stage."
eninja "$@"
}
# @FUNCTION: _cmake_emake_src_make
# @INTERNAL
# @DESCRIPTION:
# Build the package using make generator
_cmake_emake_src_make() {
debug-print-function ${FUNCNAME} "$@"
[[ -e Makefile ]] || die "Makefile not found. Error during configure stage."
if [[ "${CMAKE_VERBOSE}" != "OFF" ]]; then
emake VERBOSE=1 "$@" || die
else
emake "$@" || die
fi
}
# @FUNCTION: cmake-utils_src_make
# @DESCRIPTION:
# Function for building the package. Automatically detects the build type.
# All arguments are passed to emake.
cmake-utils_src_make() {
debug-print-function ${FUNCNAME} "$@"
_cmake_check_build_dir
pushd "${BUILD_DIR}" > /dev/null || die
_cmake_${CMAKE_MAKEFILE_GENERATOR}_src_make "$@"
popd > /dev/null || die
}
# @FUNCTION: cmake-utils_src_test
# @DESCRIPTION:
# Function for testing the package. Automatically detects the build type.
cmake-utils_src_test() {
debug-print-function ${FUNCNAME} "$@"
_cmake_check_build_dir
pushd "${BUILD_DIR}" > /dev/null || die
[[ -e CTestTestfile.cmake ]] || { echo "No tests found. Skipping."; return 0 ; }
[[ -n ${TEST_VERBOSE} ]] && myctestargs+=( --extra-verbose --output-on-failure )
set -- ctest -j "$(makeopts_jobs)" --test-load "$(makeopts_loadavg)" "${myctestargs[@]}" "$@"
echo "$@" >&2
if "$@" ; then
einfo "Tests succeeded."
popd > /dev/null || die
return 0
else
if [[ -n "${CMAKE_YES_I_WANT_TO_SEE_THE_TEST_LOG}" ]] ; then
# on request from Diego
eerror "Tests failed. Test log ${BUILD_DIR}/Testing/Temporary/LastTest.log follows:"
eerror "--START TEST LOG--------------------------------------------------------------"
cat "${BUILD_DIR}/Testing/Temporary/LastTest.log"
eerror "--END TEST LOG----------------------------------------------------------------"
die "Tests failed."
else
die "Tests failed. When you file a bug, please attach the following file: \n\t${BUILD_DIR}/Testing/Temporary/LastTest.log"
fi
# die might not die due to nonfatal
popd > /dev/null || die
return 1
fi
}
# @FUNCTION: cmake-utils_src_install
# @DESCRIPTION:
# Function for installing the package. Automatically detects the build type.
cmake-utils_src_install() {
debug-print-function ${FUNCNAME} "$@"
_cmake_check_build_dir
pushd "${BUILD_DIR}" > /dev/null || die
DESTDIR="${D}" ${CMAKE_MAKEFILE_GENERATOR} install "$@" || die "died running ${CMAKE_MAKEFILE_GENERATOR} install"
popd > /dev/null || die
pushd "${S}" > /dev/null || die
einstalldocs
popd > /dev/null || die
}
fi

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
# @ECLASS: cmake.eclass # @ECLASS: cmake.eclass
@ -28,7 +28,7 @@ _CMAKE_ECLASS=1
inherit flag-o-matic multiprocessing ninja-utils toolchain-funcs xdg-utils inherit flag-o-matic multiprocessing ninja-utils toolchain-funcs xdg-utils
# @ECLASS-VARIABLE: BUILD_DIR # @ECLASS_VARIABLE: BUILD_DIR
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# Build directory where all cmake processed files should be generated. # Build directory where all cmake processed files should be generated.
@ -38,13 +38,13 @@ inherit flag-o-matic multiprocessing ninja-utils toolchain-funcs xdg-utils
[[ ${EAPI} == 7 ]] && : ${BUILD_DIR:=${WORKDIR}/${P}_build} [[ ${EAPI} == 7 ]] && : ${BUILD_DIR:=${WORKDIR}/${P}_build}
# EAPI-8: set inside _cmake_check_build_dir # EAPI-8: set inside _cmake_check_build_dir
# @ECLASS-VARIABLE: CMAKE_BINARY # @ECLASS_VARIABLE: CMAKE_BINARY
# @DESCRIPTION: # @DESCRIPTION:
# Eclass can use different cmake binary than the one provided in by system. # Eclass can use different cmake binary than the one provided in by system.
: ${CMAKE_BINARY:=cmake} : ${CMAKE_BINARY:=cmake}
[[ ${EAPI} == 7 ]] && : ${CMAKE_BUILD_TYPE:=Gentoo} [[ ${EAPI} == 7 ]] && : ${CMAKE_BUILD_TYPE:=Gentoo}
# @ECLASS-VARIABLE: CMAKE_BUILD_TYPE # @ECLASS_VARIABLE: CMAKE_BUILD_TYPE
# @DESCRIPTION: # @DESCRIPTION:
# Set to override default CMAKE_BUILD_TYPE. Only useful for packages # Set to override default CMAKE_BUILD_TYPE. Only useful for packages
# known to make use of "if (CMAKE_BUILD_TYPE MATCHES xxx)". # known to make use of "if (CMAKE_BUILD_TYPE MATCHES xxx)".
@ -57,12 +57,12 @@ inherit flag-o-matic multiprocessing ninja-utils toolchain-funcs xdg-utils
# In EAPI 7, the default was non-standard build type of Gentoo. # In EAPI 7, the default was non-standard build type of Gentoo.
: ${CMAKE_BUILD_TYPE:=RelWithDebInfo} : ${CMAKE_BUILD_TYPE:=RelWithDebInfo}
# @ECLASS-VARIABLE: CMAKE_IN_SOURCE_BUILD # @ECLASS_VARIABLE: CMAKE_IN_SOURCE_BUILD
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# Set to enable in-source build. # Set to enable in-source build.
# @ECLASS-VARIABLE: CMAKE_MAKEFILE_GENERATOR # @ECLASS_VARIABLE: CMAKE_MAKEFILE_GENERATOR
# @PRE_INHERIT # @PRE_INHERIT
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
@ -71,7 +71,7 @@ inherit flag-o-matic multiprocessing ninja-utils toolchain-funcs xdg-utils
# The default is set to "ninja". # The default is set to "ninja".
: ${CMAKE_MAKEFILE_GENERATOR:=ninja} : ${CMAKE_MAKEFILE_GENERATOR:=ninja}
# @ECLASS-VARIABLE: CMAKE_REMOVE_MODULES_LIST # @ECLASS_VARIABLE: CMAKE_REMOVE_MODULES_LIST
# @PRE_INHERIT # @PRE_INHERIT
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
@ -90,25 +90,25 @@ else
fi fi
fi fi
# @ECLASS-VARIABLE: CMAKE_USE_DIR # @ECLASS_VARIABLE: CMAKE_USE_DIR
# @DESCRIPTION: # @DESCRIPTION:
# Sets the directory where we are working with cmake, for example when # Sets the directory where we are working with cmake, for example when
# application uses autotools and only one plugin needs to be done by cmake. # application uses autotools and only one plugin needs to be done by cmake.
# By default it uses current working directory (in EAPI-7: ${S}). # By default it uses current working directory (in EAPI-7: ${S}).
# @ECLASS-VARIABLE: CMAKE_VERBOSE # @ECLASS_VARIABLE: CMAKE_VERBOSE
# @DESCRIPTION: # @DESCRIPTION:
# Set to OFF to disable verbose messages during compilation # Set to OFF to disable verbose messages during compilation
: ${CMAKE_VERBOSE:=ON} : ${CMAKE_VERBOSE:=ON}
# @ECLASS-VARIABLE: CMAKE_WARN_UNUSED_CLI # @ECLASS_VARIABLE: CMAKE_WARN_UNUSED_CLI
# @DESCRIPTION: # @DESCRIPTION:
# Warn about variables that are declared on the command line # Warn about variables that are declared on the command line
# but not used. Might give false-positives. # but not used. Might give false-positives.
# "no" to disable (default) or anything else to enable. # "no" to disable (default) or anything else to enable.
: ${CMAKE_WARN_UNUSED_CLI:=yes} : ${CMAKE_WARN_UNUSED_CLI:=yes}
# @ECLASS-VARIABLE: CMAKE_EXTRA_CACHE_FILE # @ECLASS_VARIABLE: CMAKE_EXTRA_CACHE_FILE
# @USER_VARIABLE # @USER_VARIABLE
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
@ -116,7 +116,7 @@ fi
# for econf and is needed to pass TRY_RUN results when cross-compiling. # for econf and is needed to pass TRY_RUN results when cross-compiling.
# Should be set by user in a per-package basis in /etc/portage/package.env. # Should be set by user in a per-package basis in /etc/portage/package.env.
# @ECLASS-VARIABLE: CMAKE_QA_SRC_DIR_READONLY # @ECLASS_VARIABLE: CMAKE_QA_SRC_DIR_READONLY
# @USER_VARIABLE # @USER_VARIABLE
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
@ -136,7 +136,7 @@ case ${CMAKE_MAKEFILE_GENERATOR} in
BDEPEND="sys-devel/make" BDEPEND="sys-devel/make"
;; ;;
ninja) ninja)
BDEPEND="dev-util/ninja" BDEPEND="${NINJA_DEPEND}"
;; ;;
*) *)
eerror "Unknown value for \${CMAKE_MAKEFILE_GENERATOR}" eerror "Unknown value for \${CMAKE_MAKEFILE_GENERATOR}"
@ -363,13 +363,6 @@ cmake_src_prepare() {
die "FATAL: Unable to find CMakeLists.txt" die "FATAL: Unable to find CMakeLists.txt"
fi fi
# if ninja is enabled but not installed, the build could fail
# this could happen if ninja is manually enabled (eg. make.conf) but not installed
if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]] && ! has_version -b dev-util/ninja; then
eerror "CMAKE_MAKEFILE_GENERATOR is set to ninja, but ninja is not installed."
die "Please install dev-util/ninja or unset CMAKE_MAKEFILE_GENERATOR."
fi
local modules_list local modules_list
if [[ ${EAPI} == 7 && $(declare -p CMAKE_REMOVE_MODULES_LIST) != "declare -a"* ]]; then if [[ ${EAPI} == 7 && $(declare -p CMAKE_REMOVE_MODULES_LIST) != "declare -a"* ]]; then
modules_list=( ${CMAKE_REMOVE_MODULES_LIST} ) modules_list=( ${CMAKE_REMOVE_MODULES_LIST} )
@ -406,6 +399,12 @@ cmake_src_prepare() {
_CMAKE_SRC_PREPARE_HAS_RUN=1 _CMAKE_SRC_PREPARE_HAS_RUN=1
} }
# @VARIABLE: MYCMAKEARGS
# @DEFAULT_UNSET
# @DESCRIPTION:
# User-controlled environment variable containing arguments to be passed to
# cmake in cmake_src_configure.
# @FUNCTION: cmake_src_configure # @FUNCTION: cmake_src_configure
# @DESCRIPTION: # @DESCRIPTION:
# General function for configuring with cmake. Default behaviour is to start an # General function for configuring with cmake. Default behaviour is to start an
@ -593,9 +592,12 @@ cmake_src_configure() {
"${mycmakeargs_local[@]}" "${mycmakeargs_local[@]}"
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}"
-DCMAKE_TOOLCHAIN_FILE="${toolchain_file}" -DCMAKE_TOOLCHAIN_FILE="${toolchain_file}"
"${MYCMAKEARGS}"
) )
if [[ -n ${MYCMAKEARGS} ]] ; then
cmakeargs+=( "${MYCMAKEARGS}" )
fi
if [[ -n "${CMAKE_EXTRA_CACHE_FILE}" ]] ; then if [[ -n "${CMAKE_EXTRA_CACHE_FILE}" ]] ; then
cmakeargs+=( -C "${CMAKE_EXTRA_CACHE_FILE}" ) cmakeargs+=( -C "${CMAKE_EXTRA_CACHE_FILE}" )
fi fi
@ -665,7 +667,8 @@ cmake_src_test() {
[[ -n ${TEST_VERBOSE} ]] && myctestargs+=( --extra-verbose --output-on-failure ) [[ -n ${TEST_VERBOSE} ]] && myctestargs+=( --extra-verbose --output-on-failure )
set -- ctest -j "$(makeopts_jobs)" --test-load "$(makeopts_loadavg)" "${myctestargs[@]}" "$@" set -- ctest -j "$(makeopts_jobs "${MAKEOPTS}" 999)" \
--test-load "$(makeopts_loadavg)" "${myctestargs[@]}" "$@"
echo "$@" >&2 echo "$@" >&2
if "$@" ; then if "$@" ; then
einfo "Tests succeeded." einfo "Tests succeeded."
@ -695,11 +698,7 @@ cmake_src_test() {
cmake_src_install() { cmake_src_install() {
debug-print-function ${FUNCNAME} "$@" debug-print-function ${FUNCNAME} "$@"
_cmake_check_build_dir DESTDIR="${D}" cmake_build install "$@"
pushd "${BUILD_DIR}" > /dev/null || die
DESTDIR="${D}" ${CMAKE_MAKEFILE_GENERATOR} install "$@" ||
die "died running ${CMAKE_MAKEFILE_GENERATOR} install"
popd > /dev/null || die
if [[ ${EAPI} == 7 ]]; then if [[ ${EAPI} == 7 ]]; then
pushd "${S}" > /dev/null || die pushd "${S}" > /dev/null || die

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
# @ECLASS: elisp-common.eclass # @ECLASS: elisp-common.eclass
@ -10,7 +10,7 @@
# Mamoru Komachi <usata@gentoo.org> # Mamoru Komachi <usata@gentoo.org>
# Christian Faulhammer <fauli@gentoo.org> # Christian Faulhammer <fauli@gentoo.org>
# Ulrich Müller <ulm@gentoo.org> # Ulrich Müller <ulm@gentoo.org>
# @SUPPORTED_EAPIS: 5 6 7 8 # @SUPPORTED_EAPIS: 6 7 8
# @BLURB: Emacs-related installation utilities # @BLURB: Emacs-related installation utilities
# @DESCRIPTION: # @DESCRIPTION:
# #
@ -165,50 +165,50 @@
# Again, with optional Emacs support, you should prepend "use emacs &&" # Again, with optional Emacs support, you should prepend "use emacs &&"
# to above calls of elisp-site-regen(). # to above calls of elisp-site-regen().
case ${EAPI:-0} in case ${EAPI} in
5|6) inherit eapi7-ver ;; 6) inherit eapi7-ver ;;
7|8) ;; 7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;; *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac esac
# @ECLASS-VARIABLE: SITELISP # @ECLASS_VARIABLE: SITELISP
# @DESCRIPTION: # @DESCRIPTION:
# Directory where packages install Emacs Lisp files. # Directory where packages install Emacs Lisp files.
SITELISP=/usr/share/emacs/site-lisp SITELISP=/usr/share/emacs/site-lisp
# @ECLASS-VARIABLE: SITEETC # @ECLASS_VARIABLE: SITEETC
# @DESCRIPTION: # @DESCRIPTION:
# Directory where packages install miscellaneous (not Lisp) files. # Directory where packages install miscellaneous (not Lisp) files.
SITEETC=/usr/share/emacs/etc SITEETC=/usr/share/emacs/etc
# @ECLASS-VARIABLE: EMACSMODULES # @ECLASS_VARIABLE: EMACSMODULES
# @DESCRIPTION: # @DESCRIPTION:
# Directory where packages install dynamically loaded modules. # Directory where packages install dynamically loaded modules.
# May contain a @libdir@ token which will be replaced by $(get_libdir). # May contain a @libdir@ token which will be replaced by $(get_libdir).
EMACSMODULES=/usr/@libdir@/emacs/modules EMACSMODULES=/usr/@libdir@/emacs/modules
# @ECLASS-VARIABLE: EMACS # @ECLASS_VARIABLE: EMACS
# @DESCRIPTION: # @DESCRIPTION:
# Path of Emacs executable. # Path of Emacs executable.
EMACS=${EPREFIX}/usr/bin/emacs EMACS=${EPREFIX}/usr/bin/emacs
# @ECLASS-VARIABLE: EMACSFLAGS # @ECLASS_VARIABLE: EMACSFLAGS
# @DESCRIPTION: # @DESCRIPTION:
# Flags for executing Emacs in batch mode. # Flags for executing Emacs in batch mode.
# These work for Emacs versions 18-24, so don't change them. # These work for Emacs versions 18-24, so don't change them.
EMACSFLAGS="-batch -q --no-site-file" EMACSFLAGS="-batch -q --no-site-file"
# @ECLASS-VARIABLE: BYTECOMPFLAGS # @ECLASS_VARIABLE: BYTECOMPFLAGS
# @DESCRIPTION: # @DESCRIPTION:
# Emacs flags used for byte-compilation in elisp-compile(). # Emacs flags used for byte-compilation in elisp-compile().
BYTECOMPFLAGS="-L ." BYTECOMPFLAGS="-L ."
# @ECLASS-VARIABLE: NEED_EMACS # @ECLASS_VARIABLE: NEED_EMACS
# @DESCRIPTION: # @DESCRIPTION:
# The minimum Emacs version required for the package. # The minimum Emacs version required for the package.
: ${NEED_EMACS:=23.1} : ${NEED_EMACS:=23.1}
# @ECLASS-VARIABLE: _ELISP_EMACS_VERSION # @ECLASS_VARIABLE: _ELISP_EMACS_VERSION
# @INTERNAL # @INTERNAL
# @DESCRIPTION: # @DESCRIPTION:
# Cached value of Emacs version detected in elisp-check-emacs-version(). # Cached value of Emacs version detected in elisp-check-emacs-version().
@ -329,6 +329,7 @@ elisp-make-autoload-file() {
EOF EOF
${EMACS} ${EMACSFLAGS} \ ${EMACS} ${EMACSFLAGS} \
--eval "(require 'autoload)" \
--eval "(setq make-backup-files nil)" \ --eval "(setq make-backup-files nil)" \
--eval "(setq generated-autoload-file (expand-file-name \"${f}\"))" \ --eval "(setq generated-autoload-file (expand-file-name \"${f}\"))" \
-f batch-update-autoloads "${@-.}" -f batch-update-autoloads "${@-.}"
@ -360,10 +361,6 @@ elisp-install() {
elisp-modules-install() { elisp-modules-install() {
local subdir="$1" local subdir="$1"
shift shift
# Don't bother inheriting multilib.eclass for get_libdir(), but
# error out in old EAPIs that don't support it natively.
[[ ${EAPI} == 5 ]] \
&& die "${ECLASS}: Dynamic modules not supported in EAPI ${EAPI}"
ebegin "Installing dynamic modules for GNU Emacs support" ebegin "Installing dynamic modules for GNU Emacs support"
( # subshell to avoid pollution of calling environment ( # subshell to avoid pollution of calling environment
exeinto "${EMACSMODULES//@libdir@/$(get_libdir)}/${subdir}" exeinto "${EMACSMODULES//@libdir@/$(get_libdir)}/${subdir}"
@ -391,12 +388,7 @@ elisp-site-file-install() {
sf="${T}/${sf}" sf="${T}/${sf}"
ebegin "Installing site initialisation file for GNU Emacs" ebegin "Installing site initialisation file for GNU Emacs"
[[ $1 == "${sf}" ]] || cp "$1" "${sf}" [[ $1 == "${sf}" ]] || cp "$1" "${sf}"
if [[ ${EAPI} == 5 ]]; then
grep -q "@EMACSMODULES@" "${sf}" \
&& die "${ECLASS}: Dynamic modules not supported in EAPI ${EAPI}"
else
modules=${EMACSMODULES//@libdir@/$(get_libdir)} modules=${EMACSMODULES//@libdir@/$(get_libdir)}
fi
sed -i -e "1{:x;/^\$/{n;bx;};/^;.*${PN}/I!s:^:${header}\n\n:;1s:^:\n:;}" \ sed -i -e "1{:x;/^\$/{n;bx;};/^;.*${PN}/I!s:^:${header}\n\n:;1s:^:\n:;}" \
-e "s:@SITELISP@:${EPREFIX}${SITELISP}/${my_pn}:g" \ -e "s:@SITELISP@:${EPREFIX}${SITELISP}/${my_pn}:g" \
-e "s:@SITEETC@:${EPREFIX}${SITEETC}/${my_pn}:g" \ -e "s:@SITEETC@:${EPREFIX}${SITEETC}/${my_pn}:g" \

View File

@ -23,7 +23,7 @@ _GNOME_ORG_ECLASS=1
# versionator inherit kept for older EAPIs due to ebuilds (potentially) relying on it # versionator inherit kept for older EAPIs due to ebuilds (potentially) relying on it
[[ ${EAPI} == [56] ]] && inherit eapi7-ver versionator [[ ${EAPI} == [56] ]] && inherit eapi7-ver versionator
# @ECLASS-VARIABLE: GNOME_TARBALL_SUFFIX # @ECLASS_VARIABLE: GNOME_TARBALL_SUFFIX
# @PRE_INHERIT # @PRE_INHERIT
# @DESCRIPTION: # @DESCRIPTION:
# Most projects hosted on gnome.org mirrors provide tarballs as tar.bz2 or # Most projects hosted on gnome.org mirrors provide tarballs as tar.bz2 or
@ -41,13 +41,13 @@ if [[ ${GNOME_TARBALL_SUFFIX} == "xz" ]]; then
fi fi
fi fi
# @ECLASS-VARIABLE: GNOME_ORG_MODULE # @ECLASS_VARIABLE: GNOME_ORG_MODULE
# @DESCRIPTION: # @DESCRIPTION:
# Name of the module as hosted on gnome.org mirrors. # Name of the module as hosted on gnome.org mirrors.
# Leave unset if package name matches module name. # Leave unset if package name matches module name.
: ${GNOME_ORG_MODULE:=$PN} : ${GNOME_ORG_MODULE:=$PN}
# @ECLASS-VARIABLE: GNOME_ORG_PVP # @ECLASS_VARIABLE: GNOME_ORG_PVP
# @INTERNAL # @INTERNAL
# @DESCRIPTION: # @DESCRIPTION:
# Components of the version number that correspond to a 6 month release. # Components of the version number that correspond to a 6 month release.

View File

@ -29,13 +29,22 @@
# A Couple of env vars are available to effect usage of this eclass # A Couple of env vars are available to effect usage of this eclass
# These are as follows: # These are as follows:
# @ECLASS-VARIABLE: KERNEL_DIR
# @ECLASS_VARIABLE: CHECKCONFIG_DONOTHING
# @USER_VARIABLE
# @DEFAULT_UNSET
# @DESCRIPTION:
# Do not error out in check_extra_config if CONFIG settings are not met.
# This is a user flag and should under _no circumstances_ be set in the ebuild.
: ${CHECKCONFIG_DONOTHING:=""}
# @ECLASS_VARIABLE: KERNEL_DIR
# @DESCRIPTION: # @DESCRIPTION:
# A string containing the directory of the target kernel sources. The default value is # A string containing the directory of the target kernel sources. The default value is
# "/usr/src/linux" # "/usr/src/linux"
KERNEL_DIR="${KERNEL_DIR:-${ROOT%/}/usr/src/linux}" KERNEL_DIR="${KERNEL_DIR:-${ROOT%/}/usr/src/linux}"
# @ECLASS-VARIABLE: CONFIG_CHECK # @ECLASS_VARIABLE: CONFIG_CHECK
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# A string containing a list of .config options to check for before # A string containing a list of .config options to check for before
@ -58,7 +67,7 @@ KERNEL_DIR="${KERNEL_DIR:-${ROOT%/}/usr/src/linux}"
# This is to allow usage of binary kernels, and minimal systems without kernel # This is to allow usage of binary kernels, and minimal systems without kernel
# sources. # sources.
# @ECLASS-VARIABLE: ERROR_<CFG> # @ECLASS_VARIABLE: ERROR_<CFG>
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# A string containing the error message to display when the check against CONFIG_CHECK # A string containing the error message to display when the check against CONFIG_CHECK
@ -71,7 +80,7 @@ KERNEL_DIR="${KERNEL_DIR:-${ROOT%/}/usr/src/linux}"
# CONFIG_CHECK="~CFG" with WARNING_<CFG>="Warning Message" calls ewarn without dieing # CONFIG_CHECK="~CFG" with WARNING_<CFG>="Warning Message" calls ewarn without dieing
# @ECLASS-VARIABLE: KBUILD_OUTPUT # @ECLASS_VARIABLE: KBUILD_OUTPUT
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# A string passed on commandline, or set from the kernel makefile. It contains the directory # A string passed on commandline, or set from the kernel makefile. It contains the directory
@ -80,7 +89,7 @@ KERNEL_DIR="${KERNEL_DIR:-${ROOT%/}/usr/src/linux}"
# There are also a couple of variables which are set by this, and shouldn't be # There are also a couple of variables which are set by this, and shouldn't be
# set by hand. These are as follows: # set by hand. These are as follows:
# @ECLASS-VARIABLE: KERNEL_MAKEFILE # @ECLASS_VARIABLE: KERNEL_MAKEFILE
# @INTERNAL # @INTERNAL
# @DESCRIPTION: # @DESCRIPTION:
# According to upstream documentation, by default, when make looks for the makefile, it tries # According to upstream documentation, by default, when make looks for the makefile, it tries
@ -89,48 +98,58 @@ KERNEL_DIR="${KERNEL_DIR:-${ROOT%/}/usr/src/linux}"
# See https://www.gnu.org/software/make/manual/make.html # See https://www.gnu.org/software/make/manual/make.html
: ${KERNEL_MAKEFILE:=""} : ${KERNEL_MAKEFILE:=""}
# @ECLASS-VARIABLE: KV_FULL # @ECLASS_VARIABLE: KV_FULL
# @OUTPUT_VARIABLE # @OUTPUT_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# A read-only variable. It's a string containing the full kernel version. ie: 2.6.9-gentoo-johnm-r1 # A read-only variable. It's a string containing the full kernel version. ie: 2.6.9-gentoo-johnm-r1
# @ECLASS-VARIABLE: KV_MAJOR # @ECLASS_VARIABLE: KV_MAJOR
# @OUTPUT_VARIABLE # @OUTPUT_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# A read-only variable. It's an integer containing the kernel major version. ie: 2 # A read-only variable. It's an integer containing the kernel major version. ie: 2
# @ECLASS-VARIABLE: KV_MINOR # @ECLASS_VARIABLE: KV_MINOR
# @OUTPUT_VARIABLE # @OUTPUT_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# A read-only variable. It's an integer containing the kernel minor version. ie: 6 # A read-only variable. It's an integer containing the kernel minor version. ie: 6
# @ECLASS-VARIABLE: KV_PATCH # @ECLASS_VARIABLE: KV_PATCH
# @OUTPUT_VARIABLE # @OUTPUT_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# A read-only variable. It's an integer containing the kernel patch version. ie: 9 # A read-only variable. It's an integer containing the kernel patch version. ie: 9
# @ECLASS-VARIABLE: KV_EXTRA # @ECLASS_VARIABLE: KV_EXTRA
# @OUTPUT_VARIABLE # @OUTPUT_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# A read-only variable. It's a string containing the kernel EXTRAVERSION. ie: -gentoo # A read-only variable. It's a string containing the kernel EXTRAVERSION. ie: -gentoo
# @ECLASS-VARIABLE: KV_LOCAL # @ECLASS_VARIABLE: KV_LOCAL
# @OUTPUT_VARIABLE # @OUTPUT_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# A read-only variable. It's a string containing the kernel LOCALVERSION concatenation. ie: -johnm # A read-only variable. It's a string containing the kernel LOCALVERSION concatenation. ie: -johnm
# @ECLASS-VARIABLE: KV_DIR # @ECLASS_VARIABLE: KV_DIR
# @OUTPUT_VARIABLE # @OUTPUT_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# A read-only variable. It's a string containing the kernel source directory, will be null if # A read-only variable. It's a string containing the kernel source directory, will be null if
# KERNEL_DIR is invalid. # KERNEL_DIR is invalid.
# @ECLASS-VARIABLE: KV_OUT_DIR # @ECLASS_VARIABLE: KV_OUT_DIR
# @OUTPUT_VARIABLE # @OUTPUT_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# A read-only variable. It's a string containing the kernel object directory, will be KV_DIR unless # A read-only variable. It's a string containing the kernel object directory, will be KV_DIR unless
# KBUILD_OUTPUT is used. This should be used for referencing .config. # KBUILD_OUTPUT is used. This should be used for referencing .config.
# @ECLASS_VARIABLE: SKIP_KERNEL_CHECK
# @USER_VARIABLE
# @DEFAULT_UNSET
# @DESCRIPTION:
# Do not check for kernel sources or a running kernel version
# Main use-case is for chroots
# This is a user flag and should under _no circumstances_ be set in the ebuild.
: ${SKIP_KERNEL_CHECK:=""}
# And to ensure all the weirdness with crosscompile # And to ensure all the weirdness with crosscompile
inherit toolchain-funcs inherit toolchain-funcs
[[ ${EAPI:-0} == [0123456] ]] && inherit eapi7-ver [[ ${EAPI:-0} == [0123456] ]] && inherit eapi7-ver
@ -148,15 +167,15 @@ esac
# @DESCRIPTION: # @DESCRIPTION:
# Set the env ARCH to match what the kernel expects. # Set the env ARCH to match what the kernel expects.
set_arch_to_kernel() { export ARCH=$(tc-arch-kernel); } set_arch_to_kernel() { export ARCH=$(tc-arch-kernel); }
# @FUNCTION: set_arch_to_portage
# @DESCRIPTION:
# Set the env ARCH to match what portage expects.
set_arch_to_portage() { export ARCH=$(tc-arch); }
# qeinfo "Message" # @FUNCTION: set_arch_to_pkgmgr
# ------------------- # @DESCRIPTION:
# qeinfo is a quiet einfo call when EBUILD_PHASE # Set the env ARCH to match what the package manager expects.
# should not have visible output. set_arch_to_pkgmgr() { export ARCH=$(tc-arch); }
# @FUNCTION: qout
# @DESCRIPTION:
# qout <einfo | ewarn | eerror> is a quiet call when EBUILD_PHASE should not have visible output.
qout() { qout() {
local outputmsg type local outputmsg type
type=${1} type=${1}
@ -170,8 +189,21 @@ qout() {
[ -n "${outputmsg}" ] && ${type} "${outputmsg}" [ -n "${outputmsg}" ] && ${type} "${outputmsg}"
} }
# @FUNCTION: qeinfo
# @DESCRIPTION:
# qeinfo is a quiet einfo call when EBUILD_PHASE should not have visible output.
qeinfo() { qout einfo "${@}" ; } qeinfo() { qout einfo "${@}" ; }
# @FUNCTION: qewarn
# @DESCRIPTION:
# qewarn is a quiet ewarn call when EBUILD_PHASE
# should not have visible output.
qewarn() { qout ewarn "${@}" ; } qewarn() { qout ewarn "${@}" ; }
# @FUNCTION: qeerror
# @DESCRIPTION:
# qeerror is a quiet error call when EBUILD_PHASE
# should not have visible output.
qeerror() { qout eerror "${@}" ; } qeerror() { qout eerror "${@}" ; }
# File Functions # File Functions
@ -244,7 +276,7 @@ getfilevar_noexec() {
fi fi
} }
# @ECLASS-VARIABLE: _LINUX_CONFIG_EXISTS_DONE # @ECLASS_VARIABLE: _LINUX_CONFIG_EXISTS_DONE
# @INTERNAL # @INTERNAL
# @DESCRIPTION: # @DESCRIPTION:
# This is only set if one of the linux_config_*exists functions has been called. # This is only set if one of the linux_config_*exists functions has been called.
@ -253,6 +285,10 @@ getfilevar_noexec() {
# config is available at all. # config is available at all.
_LINUX_CONFIG_EXISTS_DONE= _LINUX_CONFIG_EXISTS_DONE=
# @FUNCTION: linux_config_qa_check
# @INTERNAL
# @DESCRIPTION:
# Helper funciton which returns an error before the function argument is run if no config exists
linux_config_qa_check() { linux_config_qa_check() {
local f="$1" local f="$1"
if [ -z "${_LINUX_CONFIG_EXISTS_DONE}" ]; then if [ -z "${_LINUX_CONFIG_EXISTS_DONE}" ]; then
@ -313,6 +349,9 @@ linux_config_path() {
# This function verifies that the current kernel is configured (it checks against the existence of .config) # This function verifies that the current kernel is configured (it checks against the existence of .config)
# otherwise it dies. # otherwise it dies.
require_configured_kernel() { require_configured_kernel() {
[[ -n ${SKIP_KERNEL_CHECK} ]] && return
if ! use kernel_linux; then if ! use kernel_linux; then
die "${FUNCNAME}() called on non-Linux system, please fix the ebuild" die "${FUNCNAME}() called on non-Linux system, please fix the ebuild"
fi fi
@ -335,6 +374,7 @@ require_configured_kernel() {
# If linux_config_exists returns false, the results of this are UNDEFINED. You # If linux_config_exists returns false, the results of this are UNDEFINED. You
# MUST call linux_config_exists first. # MUST call linux_config_exists first.
linux_chkconfig_present() { linux_chkconfig_present() {
[[ -n ${SKIP_KERNEL_CHECK} ]] && return
linux_config_qa_check linux_chkconfig_present linux_config_qa_check linux_chkconfig_present
[[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == [my] ]] [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == [my] ]]
} }
@ -347,6 +387,7 @@ linux_chkconfig_present() {
# If linux_config_exists returns false, the results of this are UNDEFINED. You # If linux_config_exists returns false, the results of this are UNDEFINED. You
# MUST call linux_config_exists first. # MUST call linux_config_exists first.
linux_chkconfig_module() { linux_chkconfig_module() {
[[ -n ${SKIP_KERNEL_CHECK} ]] && return
linux_config_qa_check linux_chkconfig_module linux_config_qa_check linux_chkconfig_module
[[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == m ]] [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == m ]]
} }
@ -359,6 +400,7 @@ linux_chkconfig_module() {
# If linux_config_exists returns false, the results of this are UNDEFINED. You # If linux_config_exists returns false, the results of this are UNDEFINED. You
# MUST call linux_config_exists first. # MUST call linux_config_exists first.
linux_chkconfig_builtin() { linux_chkconfig_builtin() {
[[ -n ${SKIP_KERNEL_CHECK} ]] && return
linux_config_qa_check linux_chkconfig_builtin linux_config_qa_check linux_chkconfig_builtin
[[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == y ]] [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == y ]]
} }
@ -371,6 +413,7 @@ linux_chkconfig_builtin() {
# If linux_config_exists returns false, the results of this are UNDEFINED. You # If linux_config_exists returns false, the results of this are UNDEFINED. You
# MUST call linux_config_exists first. # MUST call linux_config_exists first.
linux_chkconfig_string() { linux_chkconfig_string() {
[[ -n ${SKIP_KERNEL_CHECK} ]] && return
linux_config_qa_check linux_chkconfig_string linux_config_qa_check linux_chkconfig_string
getfilevar_noexec "CONFIG_$1" "$(linux_config_path)" getfilevar_noexec "CONFIG_$1" "$(linux_config_path)"
} }
@ -422,26 +465,9 @@ kernel_is() {
"${1:-${KV_MAJOR:-0}}.${2:-${KV_MINOR:-0}}.${3:-${KV_PATCH:-0}}" "${1:-${KV_MAJOR:-0}}.${2:-${KV_MINOR:-0}}.${3:-${KV_PATCH:-0}}"
} }
get_localversion() { # @FUNCTION: get_makefile_extract_function
local lv_list i x # @INTERNAL
# @DESCRIPTION:
local shopt_save=$(shopt -p nullglob)
shopt -s nullglob
local files=( ${1}/localversion* )
${shopt_save}
# ignore files with ~ in it.
for i in "${files[@]}"; do
[[ -n ${i//*~*} ]] && lv_list="${lv_list} ${i}"
done
for i in ${lv_list}; do
x="${x}$(<${i})"
done
x=${x/ /}
echo ${x}
}
# Check if the Makefile is valid for direct parsing. # Check if the Makefile is valid for direct parsing.
# Check status results: # Check status results:
# - PASS, use 'getfilevar' to extract values # - PASS, use 'getfilevar' to extract values
@ -450,6 +476,7 @@ get_localversion() {
# - make is not present # - make is not present
# - corruption exists in the kernel makefile # - corruption exists in the kernel makefile
get_makefile_extract_function() { get_makefile_extract_function() {
[[ -n ${SKIP_KERNEL_CHECK} ]] && return
local a='' b='' mkfunc='getfilevar' local a='' b='' mkfunc='getfilevar'
a="$(getfilevar VERSION ${KERNEL_MAKEFILE})" a="$(getfilevar VERSION ${KERNEL_MAKEFILE})"
b="$(getfilevar_noexec VERSION ${KERNEL_MAKEFILE})" b="$(getfilevar_noexec VERSION ${KERNEL_MAKEFILE})"
@ -457,7 +484,10 @@ get_makefile_extract_function() {
echo "${mkfunc}" echo "${mkfunc}"
} }
# internal variable, so we know to only print the warning once # @ECLASS_VARIABLE: get_version_warning_done
# @INTERNAL
# @DESCRIPTION:
# Internal variable, so we know to only print the warning once.
get_version_warning_done= get_version_warning_done=
# @FUNCTION: get_version # @FUNCTION: get_version
@ -477,6 +507,8 @@ get_version() {
local tmplocal local tmplocal
[[ -n ${SKIP_KERNEL_CHECK} ]] && return
# no need to execute this twice assuming KV_FULL is populated. # no need to execute this twice assuming KV_FULL is populated.
# we can force by unsetting KV_FULL # we can force by unsetting KV_FULL
[ -n "${KV_FULL}" ] && return 0 [ -n "${KV_FULL}" ] && return 0
@ -685,6 +717,9 @@ check_kernel_built() {
fi fi
# if we haven't determined the version yet, we need to # if we haven't determined the version yet, we need to
[[ -n ${SKIP_KERNEL_CHECK} ]] && return
require_configured_kernel require_configured_kernel
local versionh_path local versionh_path
@ -781,7 +816,7 @@ check_extra_config() {
require_configured_kernel require_configured_kernel
fi fi
einfo "Checking for suitable kernel configuration options..." ebegin "Checking for suitable kernel configuration options"
for config in ${CONFIG_CHECK} for config in ${CONFIG_CHECK}
do do
@ -857,6 +892,7 @@ check_extra_config() {
done done
if [[ ${hard_errors_count} -gt 0 ]]; then if [[ ${hard_errors_count} -gt 0 ]]; then
eend 1
eerror "Please check to make sure these options are set correctly." eerror "Please check to make sure these options are set correctly."
eerror "Failure to do so may cause unexpected problems." eerror "Failure to do so may cause unexpected problems."
eerror "Once you have satisfied these options, please try merging" eerror "Once you have satisfied these options, please try merging"
@ -864,6 +900,7 @@ check_extra_config() {
export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}" export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}"
die "Incorrect kernel configuration options" die "Incorrect kernel configuration options"
elif [[ ${soft_errors_count} -gt 0 ]]; then elif [[ ${soft_errors_count} -gt 0 ]]; then
eend 1
ewarn "Please check to make sure these options are set correctly." ewarn "Please check to make sure these options are set correctly."
ewarn "Failure to do so may cause unexpected problems." ewarn "Failure to do so may cause unexpected problems."
else else
@ -872,6 +909,9 @@ check_extra_config() {
export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}" export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}"
} }
# @FUNCTION: check_zlibinflate
# @DESCRIPTION:
# Function to make sure a ZLIB_INFLATE configuration has the required symbols.
check_zlibinflate() { check_zlibinflate() {
if ! use kernel_linux; then if ! use kernel_linux; then
die "${FUNCNAME}() called on non-Linux system, please fix the ebuild" die "${FUNCNAME}() called on non-Linux system, please fix the ebuild"
@ -955,7 +995,7 @@ linux-info_pkg_setup() {
linux-info_get_any_version linux-info_get_any_version
[ -n "${CONFIG_CHECK}" ] && check_extra_config; [[ -n "${CONFIG_CHECK}" && -z ${CHECKCONFIG_DONOTHING} ]] && check_extra_config;
} }
# @FUNCTION: kernel_get_makefile # @FUNCTION: kernel_get_makefile

View File

@ -19,14 +19,14 @@
# A Couple of env vars are available to effect usage of this eclass # A Couple of env vars are available to effect usage of this eclass
# These are as follows: # These are as follows:
# @ECLASS-VARIABLE: MODULES_OPTIONAL_USE # @ECLASS_VARIABLE: MODULES_OPTIONAL_USE
# @PRE_INHERIT # @PRE_INHERIT
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# A string containing the USE flag to use for making this eclass optional # A string containing the USE flag to use for making this eclass optional
# The recommended non-empty value is 'modules' # The recommended non-empty value is 'modules'
# @ECLASS-VARIABLE: MODULES_OPTIONAL_USE_IUSE_DEFAULT # @ECLASS_VARIABLE: MODULES_OPTIONAL_USE_IUSE_DEFAULT
# @PRE_INHERIT # @PRE_INHERIT
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
@ -34,29 +34,29 @@
# flag. Default value is unset (false). True represented by 1 or 'on', other # flag. Default value is unset (false). True represented by 1 or 'on', other
# values including unset treated as false. # values including unset treated as false.
# @ECLASS-VARIABLE: KERNEL_DIR # @ECLASS_VARIABLE: KERNEL_DIR
# @DESCRIPTION: # @DESCRIPTION:
# A string containing the directory of the target kernel sources. The default value is # A string containing the directory of the target kernel sources. The default value is
# "/usr/src/linux" # "/usr/src/linux"
: ${KERNEL_DIR:=/usr/src/linux} : ${KERNEL_DIR:=/usr/src/linux}
# @ECLASS-VARIABLE: ECONF_PARAMS # @ECLASS_VARIABLE: ECONF_PARAMS
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# It's a string containing the parameters to pass to econf. # It's a string containing the parameters to pass to econf.
# If this is not set, then econf isn't run. # If this is not set, then econf isn't run.
# @ECLASS-VARIABLE: BUILD_PARAMS # @ECLASS_VARIABLE: BUILD_PARAMS
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# It's a string with the parameters to pass to emake. # It's a string with the parameters to pass to emake.
# @ECLASS-VARIABLE: BUILD_TARGETS # @ECLASS_VARIABLE: BUILD_TARGETS
# @DESCRIPTION: # @DESCRIPTION:
# It's a string with the build targets to pass to make. The default value is "clean module" # It's a string with the build targets to pass to make. The default value is "clean module"
: ${BUILD_TARGETS:=clean module} : ${BUILD_TARGETS:=clean module}
# @ECLASS-VARIABLE: MODULE_NAMES # @ECLASS_VARIABLE: MODULE_NAMES
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# It's a string containing the modules to be built automatically using the default # It's a string containing the modules to be built automatically using the default
@ -101,14 +101,14 @@
# There is also support for automated modprobe.d file generation. # There is also support for automated modprobe.d file generation.
# This can be explicitly enabled by setting any of the following variables. # This can be explicitly enabled by setting any of the following variables.
# @ECLASS-VARIABLE: MODULESD_<modulename>_ENABLED # @ECLASS_VARIABLE: MODULESD_<modulename>_ENABLED
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# This is used to disable the modprobe.d file generation otherwise the file will be # This is used to disable the modprobe.d file generation otherwise the file will be
# always generated (unless no MODULESD_<modulename>_* variable is provided). Set to "no" to disable # always generated (unless no MODULESD_<modulename>_* variable is provided). Set to "no" to disable
# the generation of the file and the installation of the documentation. # the generation of the file and the installation of the documentation.
# @ECLASS-VARIABLE: MODULESD_<modulename>_EXAMPLES # @ECLASS_VARIABLE: MODULESD_<modulename>_EXAMPLES
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# This is a bash array containing a list of examples which should # This is a bash array containing a list of examples which should
@ -120,7 +120,7 @@
# #
# where array_component is "<modulename> options" (see modprobe.conf(5)) # where array_component is "<modulename> options" (see modprobe.conf(5))
# @ECLASS-VARIABLE: MODULESD_<modulename>_ALIASES # @ECLASS_VARIABLE: MODULESD_<modulename>_ALIASES
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# This is a bash array containing a list of associated aliases. # This is a bash array containing a list of associated aliases.
@ -131,20 +131,20 @@
# #
# where array_component is "wildcard <modulename>" (see modprobe.conf(5)) # where array_component is "wildcard <modulename>" (see modprobe.conf(5))
# @ECLASS-VARIABLE: MODULESD_<modulename>_ADDITIONS # @ECLASS_VARIABLE: MODULESD_<modulename>_ADDITIONS
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# This is a bash array containing a list of additional things to # This is a bash array containing a list of additional things to
# add to the bottom of the file. This can be absolutely anything. # add to the bottom of the file. This can be absolutely anything.
# Each entry is a new line. # Each entry is a new line.
# @ECLASS-VARIABLE: MODULESD_<modulename>_DOCS # @ECLASS_VARIABLE: MODULESD_<modulename>_DOCS
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# This is a string list which contains the full path to any associated # This is a string list which contains the full path to any associated
# documents for <modulename>. These files are installed in the live tree. # documents for <modulename>. These files are installed in the live tree.
# @ECLASS-VARIABLE: KV_OBJ # @ECLASS_VARIABLE: KV_OBJ
# @INTERNAL # @INTERNAL
# @DESCRIPTION: # @DESCRIPTION:
# It's a read-only variable. It contains the extension of the kernel modules. # It's a read-only variable. It contains the extension of the kernel modules.
@ -193,46 +193,6 @@ DEPEND="${RDEPEND}
# eclass utilities # eclass utilities
# ---------------------------------- # ----------------------------------
check_vermagic() {
debug-print-function ${FUNCNAME} $*
local curr_gcc_ver=$(gcc -dumpversion)
local tmpfile old_chost old_gcc_ver result=0
[ -n "${MODULES_OPTIONAL_USE}" ] && use !${MODULES_OPTIONAL_USE} && return
tmpfile=`find "${KV_DIR}/" -iname "*.o.cmd" -exec grep usr/lib/gcc {} \; -quit`
tmpfile=${tmpfile//*usr/lib}
tmpfile=${tmpfile//\/include*}
old_chost=${tmpfile//*gcc\/}
old_chost=${old_chost//\/*}
old_gcc_ver=${tmpfile//*\/}
if [[ -z ${old_gcc_ver} || -z ${old_chost} ]]; then
ewarn ""
ewarn "Unable to detect what version of GCC was used to compile"
ewarn "the kernel. Build will continue, but you may experience problems."
elif [[ ${curr_gcc_ver} != ${old_gcc_ver} ]]; then
ewarn ""
ewarn "The version of GCC you are using (${curr_gcc_ver}) does"
ewarn "not match the version of GCC used to compile the"
ewarn "kernel (${old_gcc_ver})."
result=1
elif [[ ${CHOST} != ${old_chost} ]]; then
ewarn ""
ewarn "The current CHOST (${CHOST}) does not match the chost"
ewarn "used when compiling the kernel (${old_chost})."
result=1
fi
if [[ ${result} -gt 0 ]]; then
ewarn ""
ewarn "Build will not continue, because you will experience problems."
ewarn "To fix this either change the version of GCC you wish to use"
ewarn "to match the kernel, or recompile the kernel first."
die "GCC Version Mismatch."
fi
}
# @FUNCTION: use_m # @FUNCTION: use_m
# @RETURN: true or false # @RETURN: true or false
# @DESCRIPTION: # @DESCRIPTION:
@ -267,11 +227,10 @@ convert_to_m() {
fi fi
} }
# internal function # @FUNCTION: update_depmod
# # @INTERNAL
# FUNCTION: update_depmod # @DESCRIPTION:
# DESCRIPTION: # Updates the modules.dep file for the current kernel.
# It updates the modules.dep file for the current kernel.
update_depmod() { update_depmod() {
debug-print-function ${FUNCNAME} $* debug-print-function ${FUNCNAME} $*
@ -292,11 +251,10 @@ update_depmod() {
fi fi
} }
# internal function # @FUNCTION: move_old_moduledb
# # @INTERNAL
# FUNCTION: move_old_moduledb # @DESCRIPTION:
# DESCRIPTION: # Updates the location of the database used by the module-rebuild utility.
# It updates the location of the database used by the module-rebuild utility.
move_old_moduledb() { move_old_moduledb() {
debug-print-function ${FUNCNAME} $* debug-print-function ${FUNCNAME} $*
@ -312,11 +270,9 @@ move_old_moduledb() {
fi fi
} }
# internal function # @FUNCTION: update_moduledb
# # @DESCRIPTION:
# FUNCTION: update_moduledb # Adds the package to the /var/lib/module-rebuild/moduledb database used by the module-rebuild utility.
# DESCRIPTION:
# It adds the package to the /var/lib/module-rebuild/moduledb database used by the module-rebuild utility.
update_moduledb() { update_moduledb() {
debug-print-function ${FUNCNAME} $* debug-print-function ${FUNCNAME} $*
@ -334,12 +290,9 @@ update_moduledb() {
fi fi
} }
# internal function # @FUNCTION: remove_moduledb
# # @DESCRIPTION:
# FUNCTION: remove_moduledb # Removes the package from the /var/lib/module-rebuild/moduledb database used by
# DESCRIPTION:
# It removes the package from the /var/lib/module-rebuild/moduledb database used by
# the module-rebuild utility.
remove_moduledb() { remove_moduledb() {
debug-print-function ${FUNCNAME} $* debug-print-function ${FUNCNAME} $*
@ -369,6 +322,10 @@ set_kvobj() {
# einfo "Using KV_OBJ=${KV_OBJ}" # einfo "Using KV_OBJ=${KV_OBJ}"
} }
# @FUNCTION: get-KERNEL_CC
# @RETURN: Name of the C compiler.
# @DESCRIPTION:
# Return name of the C compiler while honoring variables defined in ebuilds.
get-KERNEL_CC() { get-KERNEL_CC() {
debug-print-function ${FUNCNAME} $* debug-print-function ${FUNCNAME} $*
@ -389,12 +346,11 @@ get-KERNEL_CC() {
echo "${kernel_cc}" echo "${kernel_cc}"
} }
# internal function # @FUNCTION: generate_modulesd
# # @INTERNAL
# FUNCTION: # @USAGE: /path/to/the/modulename_without_extension
# USAGE: /path/to/the/modulename_without_extension # @RETURN: A file in /etc/modprobe.d
# RETURN: A file in /etc/modprobe.d # @DESCRIPTION:
# DESCRIPTION:
# This function will generate and install the neccessary modprobe.d file from the # This function will generate and install the neccessary modprobe.d file from the
# information contained in the modules exported parms. # information contained in the modules exported parms.
# (see the variables MODULESD_<modulename>_ENABLED, MODULESD_<modulename>_EXAMPLES, # (see the variables MODULESD_<modulename>_ENABLED, MODULESD_<modulename>_EXAMPLES,
@ -543,12 +499,11 @@ generate_modulesd() {
return 0 return 0
} }
# internal function # @FUNCTION: find_module_params
# # @USAGE: A string "NAME(LIBDIR:SRCDIR:OBJDIR)"
# FUNCTION: find_module_params # @INTERNAL
# USAGE: A string "NAME(LIBDIR:SRCDIR:OBJDIR)" # @RETURN: The string "modulename:NAME libdir:LIBDIR srcdir:SRCDIR objdir:OBJDIR"
# RETURN: The string "modulename:NAME libdir:LIBDIR srcdir:SRCDIR objdir:OBJDIR" # @DESCRIPTION:
# DESCRIPTION:
# Analyze the specification NAME(LIBDIR:SRCDIR:OBJDIR) of one module as described in MODULE_NAMES. # Analyze the specification NAME(LIBDIR:SRCDIR:OBJDIR) of one module as described in MODULE_NAMES.
find_module_params() { find_module_params() {
debug-print-function ${FUNCNAME} $* debug-print-function ${FUNCNAME} $*
@ -621,10 +576,6 @@ linux-mod_pkg_setup() {
strip_modulenames; strip_modulenames;
[[ -n ${MODULE_NAMES} ]] && check_modules_supported [[ -n ${MODULE_NAMES} ]] && check_modules_supported
set_kvobj; set_kvobj;
# Commented out with permission from johnm until a fixed version for arches
# who intentionally use different kernel and userland compilers can be
# introduced - Jason Wever <weeve@gentoo.org>, 23 Oct 2005
#check_vermagic;
} }
# @FUNCTION: linux-mod_pkg_setup_binary # @FUNCTION: linux-mod_pkg_setup_binary
@ -645,6 +596,9 @@ linux-mod_pkg_setup_binary() {
linux-info_pkg_setup; linux-info_pkg_setup;
} }
# @FUNCTION: strip_modulenames
# @DESCRIPTION:
# Remove modules from being built automatically using the default src_compile/src_install
strip_modulenames() { strip_modulenames() {
debug-print-function ${FUNCNAME} $* debug-print-function ${FUNCNAME} $*
@ -719,7 +673,7 @@ linux-mod_src_compile() {
fi fi
done done
set_arch_to_portage set_arch_to_pkgmgr
ABI="${myABI}" ABI="${myABI}"
} }
@ -757,7 +711,22 @@ linux-mod_src_install() {
einfo "Installing ${modulename} module" einfo "Installing ${modulename} module"
cd "${objdir}" || die "${objdir} does not exist" cd "${objdir}" || die "${objdir} does not exist"
insinto "${INSTALL_MOD_PATH}"/lib/modules/${KV_FULL}/${libdir} insinto "${INSTALL_MOD_PATH}"/lib/modules/${KV_FULL}/${libdir}
# check here for CONFIG_MODULE_COMPRESS_<compression option> (NONE, GZIP, XZ, ZSTD)
# and similarily compress the module being built if != NONE.
if linux_chkconfig_present MODULE_COMPRESS_XZ; then
xz ${modulename}.${KV_OBJ}
doins ${modulename}.${KV_OBJ}.xz || die "doins ${modulename}.${KV_OBJ}.xz failed"
elif linux_chkconfig_present MODULE_COMPRESS_GZIP; then
gzip ${modulename}.${KV_OBJ}
doins ${modulename}.${KV_OBJ}.gz || die "doins ${modulename}.${KV_OBJ}.gz failed"
elif linux_chkconfig_present MODULE_COMPRESS_ZSTD; then
zstd ${modulename}.${KV_OBJ}
doins ${modulename}.${KV_OBJ}.zst || die "doins ${modulename}.${KV_OBJ}.zst failed"
else
doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} failed" doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} failed"
fi
cd "${OLDPWD}" cd "${OLDPWD}"
generate_modulesd "${objdir}/${modulename}" generate_modulesd "${objdir}/${modulename}"

View File

@ -75,17 +75,17 @@ if [[ ! ${_LLVM_ECLASS} ]]; then
# are uninstalled # are uninstalled
DEPEND="!!sys-devel/llvm:0" DEPEND="!!sys-devel/llvm:0"
# @ECLASS-VARIABLE: LLVM_MAX_SLOT # @ECLASS_VARIABLE: LLVM_MAX_SLOT
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# Highest LLVM slot supported by the package. Needs to be set before # Highest LLVM slot supported by the package. Needs to be set before
# llvm_pkg_setup is called. If unset, no upper bound is assumed. # llvm_pkg_setup is called. If unset, no upper bound is assumed.
# @ECLASS-VARIABLE: _LLVM_KNOWN_SLOTS # @ECLASS_VARIABLE: _LLVM_KNOWN_SLOTS
# @INTERNAL # @INTERNAL
# @DESCRIPTION: # @DESCRIPTION:
# Correct values of LLVM slots, newest first. # Correct values of LLVM slots, newest first.
declare -g -r _LLVM_KNOWN_SLOTS=( {15..8} ) declare -g -r _LLVM_KNOWN_SLOTS=( {16..8} )
# @FUNCTION: get_llvm_prefix # @FUNCTION: get_llvm_prefix
# @USAGE: [-b|-d] [<max_slot>] # @USAGE: [-b|-d] [<max_slot>]

View File

@ -1,11 +1,11 @@
# Copyright 2017-2021 Gentoo Authors # Copyright 2017-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
# @ECLASS: meson.eclass # @ECLASS: meson.eclass
# @MAINTAINER: # @MAINTAINER:
# William Hubbs <williamh@gentoo.org> # William Hubbs <williamh@gentoo.org>
# Mike Gilbert <floppym@gentoo.org> # Mike Gilbert <floppym@gentoo.org>
# @SUPPORTED_EAPIS: 6 7 8 # @SUPPORTED_EAPIS: 7 8
# @BLURB: common ebuild functions for meson-based packages # @BLURB: common ebuild functions for meson-based packages
# @DESCRIPTION: # @DESCRIPTION:
# This eclass contains the default phase functions for packages which # This eclass contains the default phase functions for packages which
@ -35,36 +35,34 @@
# @CODE # @CODE
case ${EAPI} in case ${EAPI} in
6|7|8) ;; 7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;; *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac esac
if [[ -z ${_MESON_ECLASS} ]]; then if [[ -z ${_MESON_ECLASS} ]]; then
_MESON_ECLASS=1 _MESON_ECLASS=1
[[ ${EAPI} == 6 ]] && inherit eapi7-ver
inherit multiprocessing ninja-utils python-utils-r1 toolchain-funcs inherit multiprocessing ninja-utils python-utils-r1 toolchain-funcs
EXPORT_FUNCTIONS src_configure src_compile src_test src_install EXPORT_FUNCTIONS src_configure src_compile src_test src_install
_MESON_DEPEND=">=dev-util/meson-0.57.0 BDEPEND=">=dev-util/meson-0.62.2
>=dev-util/ninja-1.8.2 ${NINJA_DEPEND}
dev-util/meson-format-array dev-util/meson-format-array
" "
if [[ ${EAPI} == 6 ]]; then # @ECLASS_VARIABLE: BUILD_DIR
DEPEND=${_MESON_DEPEND}
else
BDEPEND=${_MESON_DEPEND}
fi
# @ECLASS-VARIABLE: BUILD_DIR
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# Build directory, location where all generated files should be placed. # Build directory, location where all generated files should be placed.
# If this isn't set, it defaults to ${WORKDIR}/${P}-build. # If this isn't set, it defaults to ${WORKDIR}/${P}-build.
# @ECLASS-VARIABLE: EMESON_SOURCE # @ECLASS_VARIABLE: EMESON_BUILDTYPE
# @DESCRIPTION:
# The buildtype value to pass to meson setup.
: ${EMESON_BUILDTYPE=plain}
# @ECLASS_VARIABLE: EMESON_SOURCE
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# The location of the source files for the project; this is the source # The location of the source files for the project; this is the source
@ -280,6 +278,8 @@ meson_feature() {
meson_src_configure() { meson_src_configure() {
debug-print-function ${FUNCNAME} "$@" debug-print-function ${FUNCNAME} "$@"
[[ -n "${NINJA_DEPEND}" ]] || ewarn "Unknown value '${NINJA}' for \${NINJA}"
local BUILD_CFLAGS=${BUILD_CFLAGS} local BUILD_CFLAGS=${BUILD_CFLAGS}
local BUILD_CPPFLAGS=${BUILD_CPPFLAGS} local BUILD_CPPFLAGS=${BUILD_CPPFLAGS}
local BUILD_CXXFLAGS=${BUILD_CXXFLAGS} local BUILD_CXXFLAGS=${BUILD_CXXFLAGS}
@ -310,7 +310,6 @@ meson_src_configure() {
local mesonargs=( local mesonargs=(
meson setup meson setup
--buildtype plain
--libdir "$(get_libdir)" --libdir "$(get_libdir)"
--localstatedir "${EPREFIX}/var/lib" --localstatedir "${EPREFIX}/var/lib"
--prefix "${EPREFIX}/usr" --prefix "${EPREFIX}/usr"
@ -319,8 +318,22 @@ meson_src_configure() {
--build.pkg-config-path "${BUILD_PKG_CONFIG_PATH}${BUILD_PKG_CONFIG_PATH:+:}${EPREFIX}/usr/share/pkgconfig" --build.pkg-config-path "${BUILD_PKG_CONFIG_PATH}${BUILD_PKG_CONFIG_PATH:+:}${EPREFIX}/usr/share/pkgconfig"
--pkg-config-path "${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}${EPREFIX}/usr/share/pkgconfig" --pkg-config-path "${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}${EPREFIX}/usr/share/pkgconfig"
--native-file "$(_meson_create_native_file)" --native-file "$(_meson_create_native_file)"
# gcc[pch] is masked in profiles due to consistent bugginess
# without forcing this off, some packages may fail too (like gjs,
# bug #839549), but in any case, we don't want to bother attempting
# this.
-Db_pch=false
# It's Gentoo policy to not have builds die on blanket -Werror, as it's
# an upstream development matter. bug #754279.
-Dwerror=false
) )
if [[ -n ${EMESON_BUILDTYPE} ]]; then
mesonargs+=( --buildtype "${EMESON_BUILDTYPE}" )
fi
if tc-is-cross-compiler; then if tc-is-cross-compiler; then
mesonargs+=( --cross-file "$(_meson_create_cross_file)" ) mesonargs+=( --cross-file "$(_meson_create_cross_file)" )
fi fi
@ -394,6 +407,7 @@ meson_src_test() {
debug-print-function ${FUNCNAME} "$@" debug-print-function ${FUNCNAME} "$@"
local mesontestargs=( local mesontestargs=(
--print-errorlogs
-C "${BUILD_DIR}" -C "${BUILD_DIR}"
--num-processes "$(makeopts_jobs "${MAKEOPTS}")" --num-processes "$(makeopts_jobs "${MAKEOPTS}")"
"$@" "$@"
@ -414,6 +428,7 @@ meson_install() {
local mesoninstallargs=( local mesoninstallargs=(
-C "${BUILD_DIR}" -C "${BUILD_DIR}"
--destdir "${D}" --destdir "${D}"
--no-rebuild
"$@" "$@"
) )

View File

@ -1,8 +1,6 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
# Flatcar: Support EAPI 4.
# @ECLASS: ninja-utils.eclass # @ECLASS: ninja-utils.eclass
# @MAINTAINER: # @MAINTAINER:
# Michał Górny <mgorny@gentoo.org> # Michał Górny <mgorny@gentoo.org>
@ -10,7 +8,7 @@
# @AUTHOR: # @AUTHOR:
# Michał Górny <mgorny@gentoo.org> # Michał Górny <mgorny@gentoo.org>
# Mike Gilbert <floppym@gentoo.org> # Mike Gilbert <floppym@gentoo.org>
# @SUPPORTED_EAPIS: 4 5 6 7 8 # @SUPPORTED_EAPIS: 5 6 7 8
# @BLURB: common bits to run dev-util/ninja builder # @BLURB: common bits to run dev-util/ninja builder
# @DESCRIPTION: # @DESCRIPTION:
# This eclass provides a single function -- eninja -- that can be used # This eclass provides a single function -- eninja -- that can be used
@ -21,14 +19,29 @@
# Meson). # Meson).
case ${EAPI} in case ${EAPI} in
4|5|6|7|8) ;; 5|6|7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;; *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac esac
if [[ -z ${_NINJA_UTILS_ECLASS} ]]; then if [[ -z ${_NINJA_UTILS_ECLASS} ]]; then
_NINJA_UTILS_ECLASS=1 _NINJA_UTILS_ECLASS=1
# @ECLASS-VARIABLE: NINJAOPTS # @ECLASS_VARIABLE: NINJA
# @PRE_INHERIT
# @DESCRIPTION:
# Specify a compatible ninja implementation to be used by eninja().
# At this point only "ninja" and "samu" are explicitly supported,
# but other values can be set where NINJA_DEPEND will then be set
# to a blank variable.
# The default is set to "ninja".
: ${NINJA:=ninja}
# @ECLASS_VARIABLE: NINJA_DEPEND
# @OUTPUT_VARIABLE
# @DESCRIPTION:
# Contains a set of build-time depenendencies based on the NINJA setting.
# @ECLASS_VARIABLE: NINJAOPTS
# @DEFAULT_UNSET # @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# The default set of options to pass to Ninja. Similar to MAKEOPTS, # The default set of options to pass to Ninja. Similar to MAKEOPTS,
@ -37,6 +50,18 @@ _NINJA_UTILS_ECLASS=1
inherit multiprocessing inherit multiprocessing
case "${NINJA}" in
ninja)
NINJA_DEPEND=">=dev-util/ninja-1.8.2"
;;
samu)
NINJA_DEPEND="dev-util/samurai"
;;
*)
NINJA_DEPEND=""
;;
esac
# @FUNCTION: eninja # @FUNCTION: eninja
# @USAGE: [<args>...] # @USAGE: [<args>...]
# @DESCRIPTION: # @DESCRIPTION:
@ -45,12 +70,13 @@ inherit multiprocessing
# with EAPI 6, it also supports being called via 'nonfatal'. # with EAPI 6, it also supports being called via 'nonfatal'.
eninja() { eninja() {
local nonfatal_args=() local nonfatal_args=()
[[ ${EAPI} != [45] ]] && nonfatal_args+=( -n ) [[ ${EAPI} != 5 ]] && nonfatal_args+=( -n )
if [[ -z ${NINJAOPTS+set} ]]; then if [[ -z ${NINJAOPTS+set} ]]; then
NINJAOPTS="-j$(makeopts_jobs) -l$(makeopts_loadavg "${MAKEOPTS}" 0)" NINJAOPTS="-j$(makeopts_jobs "${MAKEOPTS}" 999) -l$(makeopts_loadavg "${MAKEOPTS}" 0)"
fi fi
set -- ninja -v ${NINJAOPTS} "$@" [[ -n "${NINJA_DEPEND}" ]] || ewarn "Unknown value '${NINJA}' for \${NINJA}"
set -- "${NINJA}" -v ${NINJAOPTS} "$@"
echo "$@" >&2 echo "$@" >&2
"$@" || die "${nonfatal_args[@]}" "${*} failed" "$@" || die "${nonfatal_args[@]}" "${*} failed"
} }

View File

@ -1,23 +1,21 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
# Flatcar: Support EAPI 0, 4 and 5.
# @ECLASS: optfeature.eclass # @ECLASS: optfeature.eclass
# @MAINTAINER: # @MAINTAINER:
# base-system@gentoo.org # base-system@gentoo.org
# @SUPPORTED_EAPIS: 0 4 5 6 7 8 # @SUPPORTED_EAPIS: 7 8
# @BLURB: Advertise optional functionality that might be useful to users # @BLURB: Advertise optional functionality that might be useful to users
case ${EAPI:-0} in case ${EAPI} in
0|4|5|6|7|8) ;; 7|8) ;;
*) die "${ECLASS}: EAPI=${EAPI:-0} is not supported" ;; *) die "${ECLASS}: EAPI=${EAPI:-0} is not supported" ;;
esac esac
if [[ -z ${_OPTFEATURE_ECLASS} ]]; then if [[ -z ${_OPTFEATURE_ECLASS} ]]; then
_OPTFEATURE_ECLASS=1 _OPTFEATURE_ECLASS=1
# @ECLASS-VARIABLE: _OPTFEATURE_DEFAULT_HEADER # @ECLASS_VARIABLE: _OPTFEATURE_DEFAULT_HEADER
# @INTERNAL # @INTERNAL
# @DESCRIPTION: # @DESCRIPTION:
# Default header printed ahead of optfeature output. Can be overridden # Default header printed ahead of optfeature output. Can be overridden
@ -27,7 +25,7 @@ _OPTFEATURE_DEFAULT_HEADER="Install additional packages for optional runtime fea
readonly _OPTFEATURE_DEFAULT_HEADER readonly _OPTFEATURE_DEFAULT_HEADER
# @ECLASS-VARIABLE: _OPTFEATURE_HEADER # @ECLASS_VARIABLE: _OPTFEATURE_HEADER
# @INTERNAL # @INTERNAL
# @DESCRIPTION: # @DESCRIPTION:
# Default empty. Custom header printed ahead of optfeature output. # Default empty. Custom header printed ahead of optfeature output.
@ -36,7 +34,7 @@ readonly _OPTFEATURE_DEFAULT_HEADER
# dependencies are present. # dependencies are present.
_OPTFEATURE_HEADER= _OPTFEATURE_HEADER=
# @ECLASS-VARIABLE: _OPTFEATURE_DOHEADER # @ECLASS_VARIABLE: _OPTFEATURE_DOHEADER
# @INTERNAL # @INTERNAL
# @DESCRIPTION: # @DESCRIPTION:
# If true, print header ahead of the first optfeature output. # If true, print header ahead of the first optfeature output.

View File

@ -1,24 +1,23 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
# Flatcar: Support EAPI 4 and 5.
# @ECLASS: virtualx.eclass # @ECLASS: virtualx.eclass
# @MAINTAINER: # @MAINTAINER:
# x11@gentoo.org # x11@gentoo.org
# @AUTHOR: # @AUTHOR:
# Original author: Martin Schlemmer <azarah@gentoo.org> # Original author: Martin Schlemmer <azarah@gentoo.org>
# @SUPPORTED_EAPIS: 4 5 6 7 8 # @SUPPORTED_EAPIS: 6 7 8
# @BLURB: This eclass can be used for packages that need a working X environment to build. # @BLURB: This eclass can be used for packages that need a working X environment to build.
case ${EAPI} in case ${EAPI} in
4|5|6|7|8) ;; 6|7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} is not supported." ;; *) die "${ECLASS}: EAPI ${EAPI:-0} is not supported." ;;
esac esac
if [[ ! ${_VIRTUALX_ECLASS} ]]; then if [[ ! ${_VIRTUALX_ECLASS} ]]; then
_VIRTUALX_ECLASS=1 _VIRTUALX_ECLASS=1
# @ECLASS-VARIABLE: VIRTUALX_REQUIRED # @ECLASS_VARIABLE: VIRTUALX_REQUIRED
# @PRE_INHERIT # @PRE_INHERIT
# @DESCRIPTION: # @DESCRIPTION:
# Variable specifying the dependency on xorg-server and xhost. # Variable specifying the dependency on xorg-server and xhost.
@ -29,19 +28,19 @@ _VIRTUALX_ECLASS=1
# into "kde? ( )" and add kde into IUSE. # into "kde? ( )" and add kde into IUSE.
: ${VIRTUALX_REQUIRED:=test} : ${VIRTUALX_REQUIRED:=test}
# @ECLASS-VARIABLE: VIRTUALX_DEPEND # @ECLASS_VARIABLE: VIRTUALX_DEPEND
# @OUTPUT_VARIABLE # @OUTPUT_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# Standard dependencies string that is automatically added to BDEPEND # Standard dependencies string that is automatically added to BDEPEND
# (in EAPI-6: DEPEND) unless VIRTUALX_REQUIRED is set to "manual". # (in EAPI-6: DEPEND) unless VIRTUALX_REQUIRED is set to "manual".
# DEPRECATED: Pre-EAPI-8 you can specify the variable BEFORE inherit # DEPRECATED: Pre-EAPI-8 you can specify the variable BEFORE inherit
# to add more dependencies. # to add more dependencies.
[[ ${EAPI} != [4567] ]] && VIRTUALX_DEPEND="" [[ ${EAPI} != [67] ]] && VIRTUALX_DEPEND=""
VIRTUALX_DEPEND+=" VIRTUALX_DEPEND+="
x11-base/xorg-server[xvfb] x11-base/xorg-server[xvfb]
x11-apps/xhost x11-apps/xhost
" "
[[ ${EAPI} != [4567] ]] && readonly VIRTUALX_DEPEND [[ ${EAPI} != [67] ]] && readonly VIRTUALX_DEPEND
[[ ${VIRTUALX_COMMAND} ]] && die "VIRTUALX_COMMAND has been removed and is a no-op" [[ ${VIRTUALX_COMMAND} ]] && die "VIRTUALX_COMMAND has been removed and is a no-op"
@ -54,12 +53,12 @@ case ${VIRTUALX_REQUIRED} in
*) *)
BDEPEND="${VIRTUALX_REQUIRED}? ( ${VIRTUALX_DEPEND} )" BDEPEND="${VIRTUALX_REQUIRED}? ( ${VIRTUALX_DEPEND} )"
IUSE="${VIRTUALX_REQUIRED}" IUSE="${VIRTUALX_REQUIRED}"
[[ ${VIRTUALX_REQUIRED} == test ]] && [[ ${VIRTUALX_REQUIRED} == "test" ]] &&
RESTRICT+=" !test? ( test )" RESTRICT+=" !test? ( test )"
;; ;;
esac esac
[[ ${EAPI} == [456] ]] && DEPEND="${BDEPEND}" [[ ${EAPI} == 6 ]] && DEPEND="${BDEPEND}"
# @FUNCTION: virtx # @FUNCTION: virtx
@ -108,68 +107,37 @@ virtx() {
local i=0 local i=0
local retval=0 local retval=0
local OLD_SANDBOX_ON="${SANDBOX_ON}" local xvfbargs=( -screen 0 1280x1024x24 +extension RANDR )
local XVFB XHOST XDISPLAY
local xvfbargs="-screen 0 1280x1024x24 +extension RANDR"
XVFB=$(type -p Xvfb) || die
XHOST=$(type -p xhost) || die
debug-print "${FUNCNAME}: running Xvfb hack" debug-print "${FUNCNAME}: running Xvfb hack"
export XAUTHORITY= export XAUTHORITY=
# The following is derived from Mandrake's hack to allow
# compiling without the X display
einfo "Scanning for an open DISPLAY to start Xvfb ..." einfo "Starting Xvfb ..."
# If we are in a chrooted environment, and there is already a
# X server started outside of the chroot, Xvfb will fail to start
# on the same display (most cases this is :0 ), so make sure
# Xvfb is started, else bump the display number
#
# Azarah - 5 May 2002
# GNOME GDM may have started X on DISPLAY :0 with a
# lock file /tmp/.X1024-lock, therefore start the search at 1.
# Else a leftover /tmp/.X1-lock will prevent finding an available display.
XDISPLAY=$(i=1; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i})
debug-print "${FUNCNAME}: XDISPLAY=${XDISPLAY}"
# We really do not want SANDBOX enabled here debug-print "${FUNCNAME}: Xvfb -displayfd 1 ${xvfbargs[*]}"
export SANDBOX_ON="0" local logfile=${T}/Xvfb.log
local pidfile=${T}/Xvfb.pid
# NB: bash command substitution blocks until Xvfb prints fd to stdout
# and then closes the fd; only then it backgrounds properly
export DISPLAY=:$(
Xvfb -displayfd 1 "${xvfbargs[@]}" 2>"${logfile}" &
echo "$!" > "${pidfile}"
)
debug-print "${FUNCNAME}: ${XVFB} :${XDISPLAY} ${xvfbargs}" if [[ ${DISPLAY} == : ]]; then
${XVFB} :${XDISPLAY} ${xvfbargs} &>/dev/null & eerror "Xvfb failed to start, reprinting error log"
sleep 2 cat "${logfile}"
die "Xvfb failed to start"
local start=${XDISPLAY}
while [[ ! -f /tmp/.X${XDISPLAY}-lock ]]; do
# Stop trying after 15 tries
if ((XDISPLAY - start > 15)) ; then
eerror "'${XVFB} :${XDISPLAY} ${xvfbargs}' returns:"
echo
${XVFB} :${XDISPLAY} ${xvfbargs}
echo
eerror "If possible, correct the above error and try your emerge again."
die "Unable to start Xvfb"
fi fi
((XDISPLAY++))
debug-print "${FUNCNAME}: ${XVFB} :${XDISPLAY} ${xvfbargs}"
${XVFB} :${XDISPLAY} ${xvfbargs} &>/dev/null &
sleep 2
done
# Now enable SANDBOX again if needed. # Do not break on error, but setup $retval, as we need to kill Xvfb
export SANDBOX_ON="${OLD_SANDBOX_ON}" einfo "Xvfb started on DISPLAY=${DISPLAY}"
einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
export DISPLAY=:${XDISPLAY}
# Do not break on error, but setup $retval, as we need
# to kill Xvfb
debug-print "${FUNCNAME}: $@" debug-print "${FUNCNAME}: $@"
nonfatal "$@" nonfatal "$@"
retval=$? retval=$?
# Now kill Xvfb # Now kill Xvfb
kill $(cat /tmp/.X${XDISPLAY}-lock) kill "$(<"${pidfile}")"
# die if our command failed # die if our command failed
[[ ${retval} -ne 0 ]] && die "Failed to run '$@'" [[ ${retval} -ne 0 ]] && die "Failed to run '$@'"