From ae634a9a528581314ddefff28507f18611644add Mon Sep 17 00:00:00 2001 From: geos_one Date: Tue, 27 Jan 2009 19:41:08 +0000 Subject: [PATCH] add x11-drm git-svn-id: https://svn.disconnected-by-peer.at/svn/linamh/trunk/linamh@719 6952d904-891a-0410-993b-d76249ca496b --- attachment.cgi?id=179399 | 243 +++++++++++++++ media-sound/alsa-driver/Manifest | 2 + x11-apps/drm-progs/Manifest | 2 + x11-apps/drm-progs/drm-progs-99999999.ebuild | 48 +++ x11-base/x11-drm/Manifest | 1 + x11-base/x11-drm/x11-drm-99999999.ebuild | 301 +++++++++++++++++++ 6 files changed, 597 insertions(+) create mode 100644 attachment.cgi?id=179399 create mode 100644 x11-apps/drm-progs/Manifest create mode 100644 x11-apps/drm-progs/drm-progs-99999999.ebuild create mode 100644 x11-base/x11-drm/Manifest create mode 100644 x11-base/x11-drm/x11-drm-99999999.ebuild diff --git a/attachment.cgi?id=179399 b/attachment.cgi?id=179399 new file mode 100644 index 00000000..2dfac56f --- /dev/null +++ b/attachment.cgi?id=179399 @@ -0,0 +1,243 @@ +From cb52f7f18f0b5934a7a68c103934d3b817738435 Mon Sep 17 00:00:00 2001 +From: root +Date: Thu, 22 Jan 2009 19:23:40 -0500 +Subject: [PATCH] Various fixes for x11-drm, addition of x11-apps/drm-progs + +Upstream x11-drm has moved dristat/drmstat out of the linux-core Makefile. +This prompted the removal of the last useful bits of the Makefile patch in our +patchball. + +There are now no patches required to build these modules in a portage +environment, so the patchball is empty currently. As such, the logicused to +apply the patches has been changed. It now conditionally specifies a SRC_URI +only if PATCHVER is non-null, and will obviously not attempt to apply patches +if PATCHVER is null. + +On a related note, the dristat and drmstat programs are no longer installed by +this package. They have been added as a separate package in this commit. + +A minor fix to the MODULESD_... variables was made. It must strip the +.${KV_OBJ} from the module names, of course. + +A new package, x11-apps/drm-progs, has been added. This contains the dristat +and drmstat programs mentioned above, as well as a couple of modesetting tools. +--- + x11-apps/drm-progs/Manifest | 2 + + x11-apps/drm-progs/drm-progs-99999999.ebuild | 48 ++++++++++++++++++ + x11-base/x11-drm/Manifest | 3 +- + x11-base/x11-drm/x11-drm-99999999.ebuild | 70 +++++++------------------- + 4 files changed, 69 insertions(+), 54 deletions(-) + create mode 100644 x11-apps/drm-progs/Manifest + create mode 100644 x11-apps/drm-progs/drm-progs-99999999.ebuild + +diff --git a/x11-apps/drm-progs/Manifest b/x11-apps/drm-progs/Manifest +new file mode 100644 +index 0000000..9d976da +--- /dev/null ++++ b/x11-apps/drm-progs/Manifest +@@ -0,0 +1,2 @@ ++DIST drm-progs-99999999-use-system-libdrm.patch.bz2 1932 RMD160 521c875b29902cc58e0e36e539c16df7f938f6dc SHA1 b9327b1d3e657dbdb9e22378f5be92f5afc64498 SHA256 e1bb96ae5df54b39c9494af265a3a5d58f36c44b8036033344b41de8e3966dda ++EBUILD drm-progs-99999999.ebuild 991 RMD160 9352e60b491f22c8a80fa58f510f13720115b5d9 SHA1 b8d0c70b0277b8df50a5da22dc60df644840fd9a SHA256 755456929fc86f7ac8ee52ec4991d0fbb22a22cdc67dbc645893f5b60bbddfe0 +diff --git a/x11-apps/drm-progs/drm-progs-99999999.ebuild b/x11-apps/drm-progs/drm-progs-99999999.ebuild +new file mode 100644 +index 0000000..6ccd8bf +--- /dev/null ++++ b/x11-apps/drm-progs/drm-progs-99999999.ebuild +@@ -0,0 +1,48 @@ ++# Copyright 1999-2009 Gentoo Foundation ++# Distributed under the terms of the GNU General Public License v2 ++# $Header: $ ++ ++EGIT_REPO_URI="git://anongit.freedesktop.org/git/mesa/drm" ++ ++inherit eutils autotools git ++ ++DESCRIPTION="X11 DRM utilities and test programs" ++HOMEPAGE="http://dri.freedesktop.org/wiki/" ++SRC_URI="http://dev.gentoo.org/~battousai/distfiles/${P}-use-system-libdrm.patch.bz2" ++ ++LICENSE="X11" ++SLOT="0" ++ ++# Keywords inherited from x11-drm ebuild, where these used to be. ++KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~x86 ~x86-fbsd" ++ ++IUSE="" ++ ++DEPEND="x11-libs/libdrm" ++RDEPEND="${DEPEND}" ++ ++#S="${WORKDIR}/${P}" ++ ++src_unpack() { ++ git_src_unpack ++ ++ cd "${WORKDIR}" ++ unpack ${P}-use-system-libdrm.patch.bz2 ++ ++ cd "${S}" ++ epatch "${WORKDIR}"/${P}-use-system-libdrm.patch ++ ++ eautoreconf -v --install ++} ++ ++src_compile() { ++ econf || die "econf failed" ++ ++ cd "${S}"/tests ++ emake || die "emake failed" ++} ++ ++src_install() { ++ cd "${S}"/tests ++ dobin dristat drmstat modeprint/modeprint modetest/modetest || die ++} +diff --git a/x11-base/x11-drm/Manifest b/x11-base/x11-drm/Manifest +index 1b43af9..4e50a07 100644 +--- a/x11-base/x11-drm/Manifest ++++ b/x11-base/x11-drm/Manifest +@@ -1,2 +1 @@ +-DIST x11-drm-99999999-gentoo-0.2.tar.bz2 719 RMD160 e0a192afe05a3fccc48666e217bf35272085f1c8 SHA1 66ad6b116d95fee65603bbb33935639b7f664251 SHA256 3bdd5c05077b360095709c61b2346989afa1c217996f4e0854f1c8838021c8c0 +-EBUILD x11-drm-99999999.ebuild 7832 RMD160 1f522702f2e5413030529f71779c073e6bbcdcf2 SHA1 17053ea999a60c2c49e27e56631e80523b7e4be9 SHA256 d4dbfe1c2dfdb649575b27543fb1afaf03435d1c2edfa2ad3dfdee4036835090 ++EBUILD x11-drm-99999999.ebuild 6852 RMD160 8e3fbc5b82fa5dc2a5e4d532ab3a71f8ac8f847a SHA1 f281b1b8120526899fe098ae9fa3db5570078686 SHA256 4f1f65c210e0d49f9c9abe177f5204c40a03ffd4de09c1ae67ead50e4f5a3975 +diff --git a/x11-base/x11-drm/x11-drm-99999999.ebuild b/x11-base/x11-drm/x11-drm-99999999.ebuild +index be5c1d4..9d37468 100644 +--- a/x11-base/x11-drm/x11-drm-99999999.ebuild ++++ b/x11-base/x11-drm/x11-drm-99999999.ebuild +@@ -1,14 +1,11 @@ +-# Copyright 1999-2007 Gentoo Foundation ++# Copyright 1999-2009 Gentoo Foundation + # Distributed under the terms of the GNU General Public License v2 + # $Header: /var/cvsroot/gentoo-x86/x11-base/x11-drm/x11-drm-20070314.ebuild,v 1.2 2007/03/14 18:18:53 battousai Exp $ + +-WANT_AUTOCONF="latest" +-WANT_AUTOMAKE="1.7" +- + #EGIT_BRANCH="vblank-rework" + EGIT_REPO_URI="git://anongit.freedesktop.org/git/mesa/drm" + +-inherit eutils x11 linux-mod autotools git ++inherit eutils x11 linux-mod git + + IUSE_VIDEO_CARDS=" + video_cards_mach64 +@@ -28,13 +25,17 @@ IUSE="${IUSE_VIDEO_CARDS} kernel_FreeBSD kernel_linux" + RESTRICT="strip" + + S="${WORKDIR}/drm" +-PATCHVER="0.2" ++#PATCHVER="0.1" + PATCHDIR="${WORKDIR}/patch" + EXCLUDED="${WORKDIR}/excluded" + + DESCRIPTION="DRM Kernel Modules for X11" + HOMEPAGE="http://dri.sf.net" +-SRC_URI="http://dev.gentoo.org/~dberkholz/distfiles/${P}-gentoo-${PATCHVER}.tar.bz2" ++if [ -n "${PATCHVER}" ] ; then ++ SRC_URI="http://dev.gentoo.org/~dberkholz/distfiles/${P}-gentoo-${PATCHVER}.tar.bz2" ++else ++ SRC_URI="" ++fi + + SLOT="0" + LICENSE="X11" +@@ -62,40 +63,22 @@ src_unpack() { + git_src_unpack + cd "${WORKDIR}" + +- unpack ${P}-gentoo-${PATCHVER}.tar.bz2 +- +- cd "${S}" +- +- patch_prepare +- +- # Apply patches +- EPATCH_SUFFIX="patch" epatch ${PATCHDIR} ++ # Apply patches if there's a patchball version number provided. ++ if [ -n "${PATCHVER}" ] ++ then ++ unpack ${P}-gentoo-${PATCHVER}.tar.bz2 ++ cd "${S}" + +- # Substitute new directory under /lib/modules/${KV_FULL} +- cd "${SRC_BUILD}" +- sed -i -e "s:/kernel/drivers/char/drm:/${PN}:g" Makefile ++ patch_prepare + +- cp "${S}"/tests/*.c ${SRC_BUILD} ++ # Apply patches ++ EPATCH_SUFFIX="patch" epatch ${PATCHDIR} ++ fi + + src_unpack_os +- +- cd "${S}" +- eautoreconf -v --install + } + + src_compile() { +- unset LDFLAGS +- +- cd "${S}" +- # Building the programs. These are useful for developers and getting info from DRI and DRM. +- # +- # libdrm objects are needed for drmstat. +- econf \ +- --enable-static \ +- --disable-shared \ +- || die "libdrm configure failed." +- emake || die "libdrm build failed." +- + einfo "Building DRM in ${SRC_BUILD}..." + src_compile_os + einfo "DRM build finished". +@@ -108,9 +91,6 @@ src_install() { + src_install_os + + dodoc "${S}/linux-core/README.drm" +- +- dobin dristat +- dobin drmstat + } + + pkg_postinst() { +@@ -256,7 +236,7 @@ src_compile_linux() { + MODULE_NAMES="" + for i in drm.${KV_OBJ} ${VIDCARDS}; do + MODULE_NAMES="${MODULE_NAMES} ${i/.${KV_OBJ}}(${PN}:${SRC_BUILD})" +- i=$(echo ${i} | tr '[:lower:]' '[:upper:]') ++ i=$(echo ${i/.${KV_OBJ}} | tr '[:lower:]' '[:upper:]') + eval MODULESD_${i}_ENABLED="yes" + done + +@@ -271,11 +251,6 @@ src_compile_linux() { + then + ewarn "Please disable in-kernel DRM support to use this package." + fi +- +- # LINUXDIR is needed to allow Makefiles to find kernel release. +- cd "${SRC_BUILD}" +- emake LINUXDIR="${KERNEL_DIR}" dristat || die "Building dristat failed." +- emake LINUXDIR="${KERNEL_DIR}" drmstat || die "Building drmstat failed." + } + + src_compile_freebsd() { +@@ -290,15 +265,6 @@ src_compile_freebsd() { + KMODDIR="/boot/modules" \ + || die "pmake failed." + export CFLAGS=${svcflags}; export LDFLAGS=${svldflags} +- +- cd "${S}/tests" +- # -D_POSIX_SOURCE skips the definition of several stuff we need +- # for these two to compile +- sed -i -e "s/-D_POSIX_SOURCE//" Makefile +- emake dristat || die "Building dristat failed." +- emake drmstat || die "Building drmstat failed." +- # Move these where the linux stuff expects them +- mv dristat drmstat ${SRC_BUILD} + } + + die_error() { +-- +1.6.1 + diff --git a/media-sound/alsa-driver/Manifest b/media-sound/alsa-driver/Manifest index b949402e..ed3f39c1 100644 --- a/media-sound/alsa-driver/Manifest +++ b/media-sound/alsa-driver/Manifest @@ -1,5 +1,7 @@ AUX alsa-driver-1.0.18a-xa3530.patch 14509 RMD160 7b64bd5303d4e646957c1e49a53adfb012b3de8e SHA1 148a444560bb9473325147d44a6f813b084d4819 SHA256 6236e6e64d09284c13f16aaefb20e54e891d5b7f1d93cdb64cf5d6901f94761c DIST alsa-driver-1.0.18a.tar.bz2 2833780 RMD160 c06c0b68999802da80becb58ea86596f031fa406 SHA1 c8ca0d2f9093f697ee519c45c13dd7d166f6fb2a SHA256 31148e6722da1ffbbc96504a106ef2f9a06cfcc0843c3306996d4379abaff833 +DIST alsa-driver-1.0.19.tar.bz2 2896328 RMD160 cd86ccf8477f8f8be7887c332d33a4e4cfef2d9a SHA1 93305af07e9855c0c7ec01653e54c3253970da3f SHA256 10fb9b456cc38cdf6f708aac11c173d681b7edea4bb260e8d24a22f07ac76f8e EBUILD alsa-driver-1.0.18a.ebuild 7102 RMD160 c98c0db344be82006c042f6712509353330c0c4b SHA1 0c7e87d6d5e866799491cfcccb942c7fc4abc4ce SHA256 b6794884f489c519899effe18f359d3c3cbf2451123bf4d06bf5924d740bac52 +EBUILD alsa-driver-1.0.19.ebuild 7046 RMD160 f56f7ad0a03181b4e0bf0e602bfae4f70077314f SHA1 add059cc3af8bd8ed1ddbf1b9d1908d47a6d5310 SHA256 394f751ac6d99a4632c0b9e8d8ee14a9b279f701e76a765b9f38bfffce56cf96 MISC ChangeLog 208 RMD160 003078574917300431b50d37d745552017c0d7a7 SHA1 614cee3498109b457433b07023910da4c701c2d3 SHA256 f419c8b519d627394455689278a466bb81b3eb761aa29d32e2cf8f2fec7f21ed MISC metadata.xml 170 RMD160 645927a396fdc21cdeb089fe42c5397332420ea6 SHA1 ac7f48a14fec325926f9ce1be8fbf1f311b4f2e4 SHA256 d797a2ec6f9dc516c9f9c1a758ee87ad3e8c43101b5dc76c2f872d5bd4639b42 diff --git a/x11-apps/drm-progs/Manifest b/x11-apps/drm-progs/Manifest new file mode 100644 index 00000000..9d976da1 --- /dev/null +++ b/x11-apps/drm-progs/Manifest @@ -0,0 +1,2 @@ +DIST drm-progs-99999999-use-system-libdrm.patch.bz2 1932 RMD160 521c875b29902cc58e0e36e539c16df7f938f6dc SHA1 b9327b1d3e657dbdb9e22378f5be92f5afc64498 SHA256 e1bb96ae5df54b39c9494af265a3a5d58f36c44b8036033344b41de8e3966dda +EBUILD drm-progs-99999999.ebuild 991 RMD160 9352e60b491f22c8a80fa58f510f13720115b5d9 SHA1 b8d0c70b0277b8df50a5da22dc60df644840fd9a SHA256 755456929fc86f7ac8ee52ec4991d0fbb22a22cdc67dbc645893f5b60bbddfe0 diff --git a/x11-apps/drm-progs/drm-progs-99999999.ebuild b/x11-apps/drm-progs/drm-progs-99999999.ebuild new file mode 100644 index 00000000..6ccd8bf3 --- /dev/null +++ b/x11-apps/drm-progs/drm-progs-99999999.ebuild @@ -0,0 +1,48 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EGIT_REPO_URI="git://anongit.freedesktop.org/git/mesa/drm" + +inherit eutils autotools git + +DESCRIPTION="X11 DRM utilities and test programs" +HOMEPAGE="http://dri.freedesktop.org/wiki/" +SRC_URI="http://dev.gentoo.org/~battousai/distfiles/${P}-use-system-libdrm.patch.bz2" + +LICENSE="X11" +SLOT="0" + +# Keywords inherited from x11-drm ebuild, where these used to be. +KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~x86 ~x86-fbsd" + +IUSE="" + +DEPEND="x11-libs/libdrm" +RDEPEND="${DEPEND}" + +#S="${WORKDIR}/${P}" + +src_unpack() { + git_src_unpack + + cd "${WORKDIR}" + unpack ${P}-use-system-libdrm.patch.bz2 + + cd "${S}" + epatch "${WORKDIR}"/${P}-use-system-libdrm.patch + + eautoreconf -v --install +} + +src_compile() { + econf || die "econf failed" + + cd "${S}"/tests + emake || die "emake failed" +} + +src_install() { + cd "${S}"/tests + dobin dristat drmstat modeprint/modeprint modetest/modetest || die +} diff --git a/x11-base/x11-drm/Manifest b/x11-base/x11-drm/Manifest new file mode 100644 index 00000000..4e50a074 --- /dev/null +++ b/x11-base/x11-drm/Manifest @@ -0,0 +1 @@ +EBUILD x11-drm-99999999.ebuild 6852 RMD160 8e3fbc5b82fa5dc2a5e4d532ab3a71f8ac8f847a SHA1 f281b1b8120526899fe098ae9fa3db5570078686 SHA256 4f1f65c210e0d49f9c9abe177f5204c40a03ffd4de09c1ae67ead50e4f5a3975 diff --git a/x11-base/x11-drm/x11-drm-99999999.ebuild b/x11-base/x11-drm/x11-drm-99999999.ebuild new file mode 100644 index 00000000..9d374685 --- /dev/null +++ b/x11-base/x11-drm/x11-drm-99999999.ebuild @@ -0,0 +1,301 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/x11-base/x11-drm/x11-drm-20070314.ebuild,v 1.2 2007/03/14 18:18:53 battousai Exp $ + +#EGIT_BRANCH="vblank-rework" +EGIT_REPO_URI="git://anongit.freedesktop.org/git/mesa/drm" + +inherit eutils x11 linux-mod git + +IUSE_VIDEO_CARDS=" + video_cards_mach64 + video_cards_mga + video_cards_nv + video_cards_r128 + video_cards_radeon + video_cards_savage + video_cards_sis + video_cards_sunffb + video_cards_tdfx + video_cards_via" +IUSE="${IUSE_VIDEO_CARDS} kernel_FreeBSD kernel_linux" + +# Make sure Portage does _NOT_ strip symbols. We will do it later and make sure +# that only we only strip stuff that are safe to strip ... +RESTRICT="strip" + +S="${WORKDIR}/drm" +#PATCHVER="0.1" +PATCHDIR="${WORKDIR}/patch" +EXCLUDED="${WORKDIR}/excluded" + +DESCRIPTION="DRM Kernel Modules for X11" +HOMEPAGE="http://dri.sf.net" +if [ -n "${PATCHVER}" ] ; then + SRC_URI="http://dev.gentoo.org/~dberkholz/distfiles/${P}-gentoo-${PATCHVER}.tar.bz2" +else + SRC_URI="" +fi + +SLOT="0" +LICENSE="X11" +KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~x86 ~x86-fbsd" + +DEPEND="kernel_linux? ( virtual/linux-sources ) + kernel_FreeBSD? ( sys-freebsd/freebsd-sources + sys-freebsd/freebsd-mk-defs )" +RDEPEND="" + +pkg_setup() { + # Setup the kernel's stuff. + kernel_setup + + # Set video cards to build for. + set_vidcards + + # Determine which -core dir we build in. + get_drm_build_dir + + return 0 +} + +src_unpack() { + git_src_unpack + cd "${WORKDIR}" + + # Apply patches if there's a patchball version number provided. + if [ -n "${PATCHVER}" ] + then + unpack ${P}-gentoo-${PATCHVER}.tar.bz2 + cd "${S}" + + patch_prepare + + # Apply patches + EPATCH_SUFFIX="patch" epatch ${PATCHDIR} + fi + + src_unpack_os +} + +src_compile() { + einfo "Building DRM in ${SRC_BUILD}..." + src_compile_os + einfo "DRM build finished". +} + +src_install() { + einfo "Installing DRM..." + cd "${SRC_BUILD}" + + src_install_os + + dodoc "${S}/linux-core/README.drm" +} + +pkg_postinst() { + if use video_cards_sis + then + einfo "SiS direct rendering only works on 300 series chipsets." + einfo "SiS framebuffer also needs to be enabled in the kernel." + fi + + if use video_cards_mach64 + then + einfo "The Mach64 DRI driver is insecure." + einfo "Malicious clients can write to system memory." + einfo "For more information, see:" + einfo "http://dri.freedesktop.org/wiki/ATIMach64." + fi + + pkg_postinst_os +} + +# Functions used above are defined below: + +kernel_setup() { + if use kernel_FreeBSD + then + K_RV=${CHOST/*-freebsd/} + elif use kernel_linux + then + linux-mod_pkg_setup + + if kernel_is 2 4 + then + eerror "Upstream support for 2.4 kernels has been removed, so this package will no" + eerror "longer support them." + die "Please use in-kernel DRM or switch to a 2.6 kernel." + fi + + linux_chkconfig_builtin "DRM" && \ + die "Please disable or modularize DRM in the kernel config. (CONFIG_DRM = n or m)" + + CONFIG_CHECK="AGP" + ERROR_AGP="AGP support is not enabled in your kernel config (CONFIG_AGP)" + fi +} + +set_vidcards() { + VIDCARDS="" + + if [[ -n "${VIDEO_CARDS}" ]]; then + use video_cards_mach64 && \ + VIDCARDS="${VIDCARDS} mach64.${KV_OBJ}" + use video_cards_mga && \ + VIDCARDS="${VIDCARDS} mga.${KV_OBJ}" + use video_cards_nv && \ + VIDCARDS="${VIDCARDS} nv.${KV_OBJ} nouveau.${KV_OBJ}" + use video_cards_r128 && \ + VIDCARDS="${VIDCARDS} r128.${KV_OBJ}" + use video_cards_radeon && \ + VIDCARDS="${VIDCARDS} radeon.${KV_OBJ}" + use video_cards_savage && \ + VIDCARDS="${VIDCARDS} savage.${KV_OBJ}" + use video_cards_sis && \ + VIDCARDS="${VIDCARDS} sis.${KV_OBJ}" + use video_cards_via && \ + VIDCARDS="${VIDCARDS} via.${KV_OBJ}" + use video_cards_sunffb && \ + VIDCARDS="${VIDCARDS} ffb.${KV_OBJ}" + use video_cards_tdfx && \ + VIDCARDS="${VIDCARDS} tdfx.${KV_OBJ}" + fi +} + +get_drm_build_dir() { + if use kernel_FreeBSD + then + SRC_BUILD="${S}/bsd-core" + elif kernel_is 2 6 + then + SRC_BUILD="${S}/linux-core" + fi +} + +patch_prepare() { + # Handle exclusions based on the following... + # All trees (0**), Standard only (1**), Others (none right now) + # 2.4 vs. 2.6 kernels + if use kernel_linux + then + kernel_is 2 6 && mv -f "${PATCHDIR}"/*kernel-2.4* "${EXCLUDED}" + fi + + # There is only one tree being maintained now. No numeric exclusions need + # to be done based on DRM tree. +} + +src_unpack_linux() { + convert_to_m "${SRC_BUILD}"/Makefile +} + +src_unpack_freebsd() { + # Link in freebsd kernel. + ln -s "/usr/src/sys-${K_RV}" "${WORKDIR}/sys" + # SUBDIR variable gets to all Makefiles, we need it only in the main one. + SUBDIRS=${VIDCARDS//.ko} + sed -i -e "s:SUBDIR\ =.*:SUBDIR\ =\ drm ${SUBDIRS}:" "${SRC_BUILD}"/Makefile +} + +src_unpack_os() { + if use kernel_linux; then + src_unpack_linux + elif use kernel_FreeBSD + then + src_unpack_freebsd + fi +} + +src_compile_os() { + if use kernel_linux + then + src_compile_linux + elif use kernel_FreeBSD + then + src_compile_freebsd + fi +} + +src_install_os() { + if use kernel_linux + then + src_install_linux + elif use kernel_FreeBSD + then + src_install_freebsd + fi +} + +src_compile_linux() { + # remove leading and trailing space + VIDCARDS="${VIDCARDS% }" + VIDCARDS="${VIDCARDS# }" + + check_modules_supported + MODULE_NAMES="" + for i in drm.${KV_OBJ} ${VIDCARDS}; do + MODULE_NAMES="${MODULE_NAMES} ${i/.${KV_OBJ}}(${PN}:${SRC_BUILD})" + i=$(echo ${i/.${KV_OBJ}} | tr '[:lower:]' '[:upper:]') + eval MODULESD_${i}_ENABLED="yes" + done + + # This now uses an M= build system. Makefile does most of the work. + cd "${SRC_BUILD}" + unset ARCH + BUILD_TARGETS="modules" + BUILD_PARAMS="DRM_MODULES='${VIDCARDS}' LINUXDIR='${KERNEL_DIR}' M='${SRC_BUILD}'" + ECONF_PARAMS='' S="${SRC_BUILD}" linux-mod_src_compile + + if linux_chkconfig_present DRM + then + ewarn "Please disable in-kernel DRM support to use this package." + fi +} + +src_compile_freebsd() { + cd "${SRC_BUILD}" + # Environment CFLAGS overwrite kernel CFLAGS which is bad. + local svcflags=${CFLAGS}; local svldflags=${LDFLAGS} + unset CFLAGS; unset LDFLAGS + MAKE=make \ + emake \ + NO_WERROR= \ + SYSDIR="${WORKDIR}/sys" \ + KMODDIR="/boot/modules" \ + || die "pmake failed." + export CFLAGS=${svcflags}; export LDFLAGS=${svldflags} +} + +die_error() { + eerror "Portage could not build the DRM modules. If you see an ACCESS DENIED error," + eerror "this could mean that you were using an unsupported kernel build system." + eerror "Only 2.6 kernels at least as new as 2.6.6 are supported." + die "Unable to build DRM modules." +} + +src_install_linux() { + linux-mod_src_install + + # Strip binaries, leaving /lib/modules untouched (bug #24415) + strip_bins \/lib\/modules +} + +src_install_freebsd() { + cd "${SRC_BUILD}" + dodir "/boot/modules" + MAKE=make \ + emake \ + install \ + NO_WERROR= \ + DESTDIR="${D}" \ + KMODDIR="/boot/modules" \ + || die "Install failed." +} + +pkg_postinst_os() { + if use kernel_linux + then + linux-mod_pkg_postinst + fi +}