summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChí-Thanh Christopher Nguyễn <chithanh@gentoo.org>2009-02-28 23:49:20 +0000
committerChí-Thanh Christopher Nguyễn <chithanh@gentoo.org>2009-02-28 23:49:20 +0000
commit223b927ab65b1c6b7289c26c7fdc2e7982686b39 (patch)
tree578efd851651cf4724c7ca3efac0a41dc67f74a8 /x11-base
parentx11-libs/libdrm_nouveau: new ebuild for bug 253705 (diff)
downloadsunrise-reviewed-223b927ab65b1c6b7289c26c7fdc2e7982686b39.tar.gz
sunrise-reviewed-223b927ab65b1c6b7289c26c7fdc2e7982686b39.tar.bz2
sunrise-reviewed-223b927ab65b1c6b7289c26c7fdc2e7982686b39.zip
x11-base/nouveau-drm: new ebuild for bug 253705
svn path=/sunrise/; revision=7977
Diffstat (limited to 'x11-base')
-rw-r--r--x11-base/nouveau-drm/ChangeLog8
-rw-r--r--x11-base/nouveau-drm/Manifest3
-rw-r--r--x11-base/nouveau-drm/metadata.xml5
-rw-r--r--x11-base/nouveau-drm/nouveau-drm-20090228.ebuild295
4 files changed, 311 insertions, 0 deletions
diff --git a/x11-base/nouveau-drm/ChangeLog b/x11-base/nouveau-drm/ChangeLog
new file mode 100644
index 000000000..2cdfe07c3
--- /dev/null
+++ b/x11-base/nouveau-drm/ChangeLog
@@ -0,0 +1,8 @@
+# ChangeLog for x11-base/nouveau-drm
+# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
+# $Header: $
+
+ 28 Feb 2009; Chi-Thanh Christopher Nguyen (chithead)
+ <chithanh@cs.tu-berlin.de> +nouveau-drm-20090228.ebuild, +metadata.xml:
+ new ebuild for bug 253705
+
diff --git a/x11-base/nouveau-drm/Manifest b/x11-base/nouveau-drm/Manifest
new file mode 100644
index 000000000..3e8672146
--- /dev/null
+++ b/x11-base/nouveau-drm/Manifest
@@ -0,0 +1,3 @@
+EBUILD nouveau-drm-20090228.ebuild 6698 RMD160 0c64b284757f160bd9f6dd92da567e9873017e7f SHA1 883b7c05bfa407bdb50b0d09123084134b80b1cd SHA256 9c7d018c0c31a6343de094d51175d1d8670f3890d1bc110720d6d16c5646417d
+MISC ChangeLog 279 RMD160 eb37fc35fd79105a856e7f078ef60e65e960deae SHA1 fc20119979c570f979ca11b9432576deba4ee7e3 SHA256 deda5f30ab80886420a34a8d78f07e62910f771ba58134f79b9ced406fdc847a
+MISC metadata.xml 170 RMD160 645927a396fdc21cdeb089fe42c5397332420ea6 SHA1 ac7f48a14fec325926f9ce1be8fbf1f311b4f2e4 SHA256 d797a2ec6f9dc516c9f9c1a758ee87ad3e8c43101b5dc76c2f872d5bd4639b42
diff --git a/x11-base/nouveau-drm/metadata.xml b/x11-base/nouveau-drm/metadata.xml
new file mode 100644
index 000000000..7e3286984
--- /dev/null
+++ b/x11-base/nouveau-drm/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>maintainer-wanted</herd>
+</pkgmetadata>
diff --git a/x11-base/nouveau-drm/nouveau-drm-20090228.ebuild b/x11-base/nouveau-drm/nouveau-drm-20090228.ebuild
new file mode 100644
index 000000000..8ece61b4d
--- /dev/null
+++ b/x11-base/nouveau-drm/nouveau-drm-20090228.ebuild
@@ -0,0 +1,295 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+WANT_AUTOCONF="latest"
+WANT_AUTOMAKE="1.7"
+
+#EGIT_BRANCH="vblank-rework"
+EGIT_TREE="3dcc742a9fdd909d3a7ebb2f634a6b2759c3dbd4"
+EGIT_REPO_URI="git://anongit.freedesktop.org/git/mesa/drm"
+
+inherit eutils x11 linux-mod autotools git
+
+IUSE="kernel_linux kernel_FreeBSD"
+
+# 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 ...
+# Tests require user intervention (see bug #236845)
+RESTRICT="strip test"
+
+S="${WORKDIR}/drm"
+
+DESCRIPTION="Nouveau DRM Kernel Modules for X11"
+HOMEPAGE="http://dri.sf.net"
+SRC_URI=""
+
+SLOT="0"
+LICENSE="X11"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="kernel_linux? ( virtual/linux-sources )
+ kernel_FreeBSD? ( sys-freebsd/freebsd-sources
+ sys-freebsd/freebsd-mk-defs )
+ !x11-base/x11-drm"
+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}"
+
+ cd "${S}"
+
+ # Substitute new directory under /lib/modules/${KV_FULL}
+ cd "${SRC_BUILD}"
+ sed -i -e "s:/kernel/drivers/char/drm:/${PN}:g" Makefile
+
+ cp "${S}"/tests/*.c ${SRC_BUILD}
+
+ 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".
+}
+
+src_install() {
+ einfo "Installing DRM..."
+ cd "${SRC_BUILD}"
+
+ src_install_os
+
+ dodoc "${S}/linux-core/README.drm"
+
+ dobin ../tests/dristat || die dobin failed
+ dobin ../tests/drmstat || die dobin failed
+}
+
+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=""
+ VIDCARDS="${VIDCARDS} nouveau.${KV_OBJ}"
+}
+
+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} | 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
+
+ # 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() {
+ 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}
+
+ 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() {
+ 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
+}