diff options
-rw-r--r-- | dev-dotnet/dotnet-sdk/Manifest | 2 | ||||
-rw-r--r-- | dev-dotnet/dotnet-sdk/dotnet-sdk-8.0.101.ebuild | 172 | ||||
-rw-r--r-- | dev-dotnet/dotnet-sdk/files/dotnet-sdk-8.0.101-runtime-64.patch | 23 |
3 files changed, 197 insertions, 0 deletions
diff --git a/dev-dotnet/dotnet-sdk/Manifest b/dev-dotnet/dotnet-sdk/Manifest index 9529a5a6497a..9cc1b9d0d364 100644 --- a/dev-dotnet/dotnet-sdk/Manifest +++ b/dev-dotnet/dotnet-sdk/Manifest @@ -1 +1,3 @@ DIST dotnet-sdk-8.0.100-prepared-gentoo-amd64.tar.xz 1714535960 BLAKE2B fd6027b86168d8801b1d8a7bbb08e9c358918a7693b03fa4e7e43e2a58568a65d71e2c5907ec7c7a03b83685608cd16aa010706fb4d14cd44ab0f0669654c8c2 SHA512 75efdcf44383445bc81981e2077be03c7311db316e295aa7f960f50d65367cde9bd86351f345072feb827a569c8de4fa8c9829d92000d2cbeb312ee9ddc17b44 +DIST dotnet-sdk-8.0.101-prepared-gentoo-amd64.tar.xz 1734234148 BLAKE2B 6fe6b9db8e8399d741c1c7c4b09f7047519fc61e452cc5b319a7e8070acf75685d409741a6fec6f020355a1e003585832c4900dd852d0554d4a456cdb9876598 SHA512 f2f07c647c607d02fc19eb045fa98224636ea5ba79cf9b2b8c28a1c0cbc77cc57bf5886268e94684ddaf5e3895c6c82fa62db11d53d7b8ffd1d31a0371eb4613 +DIST dotnet-sdk-8.0.101-prepared-gentoo-musl-amd64.tar.xz 1736552596 BLAKE2B f533603b2d18aedb0c2715b0597973342cab0927f41215f93b6e139df7b666ad32d3cf92866388329d0a5ccd9b169c242a4d9179e03c14856f2572a1363d693b SHA512 0bf9c83fdd310425cb553b798357d0cb9a16608f1341f149a84acf66aa16ec4ff6f81d047c84c06f610d3a861e522c78005b63cec63f78e7e1eebdc80b8ec5a2 diff --git a/dev-dotnet/dotnet-sdk/dotnet-sdk-8.0.101.ebuild b/dev-dotnet/dotnet-sdk/dotnet-sdk-8.0.101.ebuild new file mode 100644 index 000000000000..7595aa29a8ac --- /dev/null +++ b/dev-dotnet/dotnet-sdk/dotnet-sdk-8.0.101.ebuild @@ -0,0 +1,172 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# Build the tarball: +# git clone --depth 1 -b v8.0.1 https://github.com/dotnet/dotnet dotnet-sdk-8.0.1 +# cd dotnet-sdk-8.0.1 +# git rev-parse HEAD +# ./prep.sh +# rm -fr .git +# cd .. +# tar -acf dotnet-sdk-8.0.101-prepared-gentoo-amd64.tar.xz dotnet-sdk-8.0.1 +# Upload dotnet-sdk-8.0.101-prepared-gentoo-amd64.tar.xz + +EAPI=8 + +COMMIT=b27976e5a6850466ee5b4ce24f91ee93bef645f7 +SDK_SLOT="$(ver_cut 1-2)" +RUNTIME_SLOT="${SDK_SLOT}.1" + +LLVM_MAX_SLOT=17 +PYTHON_COMPAT=( python3_{10..12} ) + +inherit check-reqs flag-o-matic llvm python-any-r1 + +DESCRIPTION=".NET is a free, cross-platform, open-source developer platform" +HOMEPAGE="https://dotnet.microsoft.com/ + https://github.com/dotnet/dotnet/" +SRC_URI=" +amd64? ( + elibc_glibc? ( https://dev.gentoo.org/~xgqt/distfiles/repackaged/${P}-prepared-gentoo-amd64.tar.xz ) + elibc_musl? ( https://dev.gentoo.org/~xgqt/distfiles/repackaged/${P}-prepared-gentoo-musl-amd64.tar.xz ) +) +" +S="${WORKDIR}/${PN}-${RUNTIME_SLOT}" + +LICENSE="MIT" +SLOT="${SDK_SLOT}/${RUNTIME_SLOT}" +KEYWORDS="~amd64" + +# STRIP="llvm-strip" corrupts some executables when using the patchelf hack. +# Be safe and restrict it for source-built too, bug https://bugs.gentoo.org/923430 +RESTRICT="splitdebug strip" + +CURRENT_NUGETS_DEPEND=" + ~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT} +" +EXTRA_NUGETS_DEPEND=" + ~dev-dotnet/dotnet-runtime-nugets-6.0.26 + ~dev-dotnet/dotnet-runtime-nugets-7.0.15 +" +NUGETS_DEPEND=" + ${CURRENT_NUGETS_DEPEND} + ${EXTRA_NUGETS_DEPEND} +" +RDEPEND=" + app-crypt/mit-krb5:0/0 + dev-libs/icu + dev-libs/openssl:= + dev-util/lttng-ust:0/2.12 + sys-libs/zlib:0/1 +" +BDEPEND=" + ${PYTHON_DEPS} + <sys-devel/clang-$(( LLVM_MAX_SLOT + 1 )) + dev-build/cmake + dev-vcs/git +" +IDEPEND=" + app-eselect/eselect-dotnet +" +PDEPEND=" + ${NUGETS_DEPEND} +" + +CHECKREQS_DISK_BUILD="20G" +PATCHES=( + "${FILESDIR}/${PN}-8.0.101-runtime-64.patch" +) + +# QA_PREBUILT="*" # TODO: Which binaries are created by dotnet itself? + +pkg_setup() { + check-reqs_pkg_setup + llvm_pkg_setup + python-any-r1_pkg_setup + + if [[ "${MERGE_TYPE}" != binary ]] ; then + if use elibc_glibc ; then + local locales + locales="$(locale -a)" + + if has en_US.utf8 ${locales} ; then + LC_ALL=en_US.utf8 + elif has en_US.UTF-8 ${locales} ; then + LC_ALL=en_US.UTF-8 + else + eerror "The locale en_US.utf8 or en_US.UTF-8 is not available." + eerror "Please generate en_US.UTF-8 before building ${CATEGORY}/${P}." + + die "Could not switch to the en_US.UTF-8 locale." + fi + else + LC_ALL=en_US.UTF-8 + fi + + export LC_ALL + einfo "Successfully switched to the ${LC_ALL} locale." + fi +} + +src_prepare() { + default + + filter-lto + + unset DOTNET_ROOT + unset NUGET_PACKAGES + + export DOTNET_CLI_TELEMETRY_OPTOUT=1 + export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 + export MSBUILDDISABLENODEREUSE=1 + export UseSharedCompilation=false + + local dotnet_sdk_tmp_directory="${WORKDIR}/dotnet-sdk-tmp" + mkdir -p "${dotnet_sdk_tmp_directory}" || die + + # This should fix the "PackageVersions.props" problem, + # see below, in src_compile. + sed -e "s|/tmp|${dotnet_sdk_tmp_directory}|g" -i build.sh || die +} + +src_compile() { + # Remove .NET leftover files that can be blocking the build. + # Keep this nonfatal! + local package_versions_path="/tmp/PackageVersions.props" + if [[ -f "${package_versions_path}" ]] ; then + rm "${package_versions_path}" || + ewarn "Failed to remove ${package_versions_path}, build may fail!" + fi + + # The "source_repository" should always be the same. + local source_repository="https://github.com/dotnet/dotnet" + + ebegin "Building the .NET SDK ${SDK_SLOT}" + local -a buildopts=( + --clean-while-building + --source-repository "${source_repository}" + --source-version "${COMMIT}" + ) + bash ./build.sh "${buildopts[@]}" + eend ${?} || die "build failed" +} + +src_install() { + local dest="/usr/$(get_libdir)/${PN}-${SDK_SLOT}" + dodir "${dest}" + + ebegin "Extracting the .NET SDK archive" + tar xzf artifacts/*/Release/${PN}-${SDK_SLOT}.*.tar.gz -C "${ED}/${dest}" + eend ${?} || die "extraction failed" + + fperms 0755 "${dest}" + dosym -r "${dest}/dotnet" "/usr/bin/dotnet-${SDK_SLOT}" +} + +pkg_postinst() { + eselect dotnet update ifunset +} + +pkg_postrm() { + eselect dotnet update ifunset +} diff --git a/dev-dotnet/dotnet-sdk/files/dotnet-sdk-8.0.101-runtime-64.patch b/dev-dotnet/dotnet-sdk/files/dotnet-sdk-8.0.101-runtime-64.patch new file mode 100644 index 000000000000..9a683a851c69 --- /dev/null +++ b/dev-dotnet/dotnet-sdk/files/dotnet-sdk-8.0.101-runtime-64.patch @@ -0,0 +1,23 @@ +--- a/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfounix.cpp +@@ -469,7 +469,7 @@ CrashInfo::ReadProcessMemory(void* address, void* buffer, size_t size, size_t* r + // performance optimization. + m_canUseProcVmReadSyscall = false; + assert(m_fdMem != -1); +- *read = pread64(m_fdMem, buffer, size, (off64_t)address); ++ *read = pread(m_fdMem, buffer, size, (off_t)address); + } + + if (*read == (size_t)-1) +--- a/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp ++++ b/src/runtime/src/coreclr/debug/createdump/crashinfo.cpp +@@ -760,7 +760,7 @@ CrashInfo::PageMappedToPhysicalMemory(uint64_t start) + } + + uint64_t pagemapOffset = (start / PAGE_SIZE) * sizeof(uint64_t); +- uint64_t seekResult = lseek64(m_fdPagemap, (off64_t) pagemapOffset, SEEK_SET); ++ uint64_t seekResult = lseek(m_fdPagemap, (off_t) pagemapOffset, SEEK_SET); + if (seekResult != pagemapOffset) + { + int seekErrno = errno; + |