打印

给ML提个建议!!!

给ML提个建议!!!

建议从现在开始使用xorg-x11。现在xorg-x11-6.8.0已经发布了, 是该转换到xorg-x11的时候了。补丁了可以在gentoo里找找。   
偷来的签名: [code:1] USE="-bitch -in-laws nice gorgeous smart" emerge girlfriend >>> china/suzhou/girlfriend merged [/code:1]

TOP

OK,不过我在其主页上看到的还是6.7.99.X的,没有正式发布。
業精于勤,荒于嬉

TOP

暂时先用着这个吧~

TOP

补丁地址:
http://dev.gentoo.org/~cyfred/distfiles/
另外gb18030补丁见附件
附件: 您所在的用户组无法下载或查看附件
偷来的签名: [code:1] USE="-bitch -in-laws nice gorgeous smart" emerge girlfriend >>> china/suzhou/girlfriend merged [/code:1]

TOP

这个或许有用:
[code:1]# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-base/xorg-x11/xorg-x11-6.8.0.ebuild,v 1.5 2004/09/09 08:30:43 seemant Exp $

# Set TDFX_RISKY to "yes" to get 16-bit, 1024x768 or higher on low-memory
# voodoo3 cards.

# Libraries which are now supplied in shared form that were not in the past
# include:  libFS.so, libGLw.so, libI810XvMC.so, libXRes.so, libXfontcache.so,
# libXinerama.so, libXss.so, libXvMC.so, libXxf86rush.so, libfontenc.so,
# libxkbfile.so, libxkbui.so

# TODO
# 11 August 2004 <spyderous@gentoo.org>
#   TARGET: patchset 0.2
#                Nothing yet =)

inherit eutils flag-o-matic gcc xfree

# 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="nostrip"

# IUSE="gatos" disabled because gatos is broken on ~4.4 now (31 Jan 2004)
IUSE="3dfx 3dnow bitmap-fonts cjk debug dlloader dmx doc insecure-drivers ipv6 mmx nls pam sdk sse static xprint"
# IUSE_INPUT_DEVICES="synaptics wacom"

FILES_VER="0.1"
PATCH_VER="0.1"
XCUR_VER="0.3.1"
#MGADRV_VER="1_3_0beta"
#VIADRV_VER="0.1"
XFSFT_ENC_VER="0.1"

S=${WORKDIR}/xc

HOMEPAGE="http://freedesktop.org/XOrg"

# Misc patches we may need to fetch ..
X_PATCHES="mirror://gentoo/${P}-patches-${PATCH_VER}.tar.bz2
        http://dev.gentoo.org/~cyfred/distfiles/${P}-patches-${PATCH_VER}.tar.bz2"

X_DRIVERS=""
#        mirror://gentoo/${P}-drivers-via-${VIADRV_VER}.tar.bz2"
# Latest Savage drivers:  http://www.probo.com/timr/savage40.html
# Latest SIS drivers:  http://www.winischhofer.net/

GENTOO_FILES="mirror://gentoo/${P}-files-${FILES_VER}.tar.bz2
        http://dev.gentoo.org/~cyfred/distfiles/${P}-files-${FILES_VER}.tar.bz2"

SRC_URI="mirror://gentoo/eurofonts-X11.tar.bz2
        http://dev.gentoo.org/~cyfred/xorg/${PN}/patchsets/${PV}/xfsft-encodings-${XFSFT_ENC_VER}.tar.bz2
        mirror://gentoo/gentoo-cursors-tad-${XCUR_VER}.tar.bz2
        nls? ( mirror://gentoo/gemini-koi8-u.tar.bz2 )
        ${GENTOO_FILES}
        ${X_DRIVERS}
        ${X_PATCHES}
        http://freedesktop.org/~xorg/X11R${PV}/src/X11R${PV}-src1.tar.gz
        http://freedesktop.org/~xorg/X11R${PV}/src//X11R${PV}-src2.tar.gz
        http://freedesktop.org/~xorg/X11R${PV}/src//X11R${PV}-src3.tar.gz
        http://freedesktop.org/~xorg/X11R${PV}/src//X11R${PV}-src4.tar.gz
        http://freedesktop.org/~xorg/X11R${PV}/src//X11R${PV}-src5.tar.gz
        doc? (
                http://freedesktop.org/~xorg/X11R${PV}/src//X11R${PV}-src6.tar.gz
                http://freedesktop.org/~xorg/X11R${PV}/src//X11R${PV}-src7.tar.gz
        )"

LICENSE="Adobe-X CID DEC DEC-2 IBM-X NVIDIA-X NetBSD SGI UCB-LBL XC-2
        bigelow-holmes-urw-gmbh-luxi christopher-g-demetriou national-semiconductor
        nokia tektronix the-open-group todd-c-miller x-truetype xfree86-1.0
        MIT SGI-B BSD FTL | GPL-2"
SLOT="0"
KEYWORDS="~x86 ~amd64 ~ppc"

# Need portage-2.0.50_pre9 for `use !foo`
DEPEND=">=sys-apps/baselayout-1.8.3
        >=sys-libs/ncurses-5.1
        >=sys-libs/zlib-1.1.3-r2
        >=sys-devel/flex-2.5.4a-r5
        >=dev-libs/expat-1.95.3
        >=media-libs/freetype-2.1.4
        >=media-libs/fontconfig-2.1-r1
        >=x11-base/opengl-update-1.7.2
        >=x11-misc/ttmkfdir-3.0.9-r2
        >=sys-apps/sed-4
        sys-apps/util-linux
        dev-lang/perl
        media-libs/libpng
        >=sys-apps/portage-2.0.50_pre9
        dmx? ( app-text/sgmltools-lite )
        !x11-base/xfree
        !virtual/xft
        !virtual/x11"
# x11-libs/xft -- blocked because of interference with xorg's

PDEPEND="x86? (
                        3dfx? ( >=media-libs/glide-v3-3.10 )
                        input_devices_synaptics? ( x11-misc/synaptics )
                        input_devices_wacom? ( x11-misc/linuxwacom )
                )
                alpha? (
                        3dfx? ( >=media-libs/glide-v3-3.10 )
                )
                x11-terms/xterm"

PROVIDE="virtual/x11
        virtual/opengl
        virtual/glu
        virtual/xft"

DESCRIPTION="An X11 implementation maintained by the X.Org Foundation"

HOSTCONF="config/cf/host.def"

cflag_setup() {
        # Set up CFLAGS
        filter-flags "-funroll-loops"

        ALLOWED_FLAGS="-fstack-protector -march -mcpu -O -O1 -O2 -O3 -pipe -fomit-frame-pointer -g -gstabs+ -gstabs -ggdb"
        # arch-specific section added by popular demand
        case "${ARCH}" in
                mips)        ALLOWED_FLAGS="${ALLOWED_FLAGS} -mips1 -mips2 -mips3 -mips4 -mabi" ;;
                # -fomit-frame-pointer known to break things and is pointless
                # according to ciaranm
                sparc)        filter-flags "-fomit-frame-pointer" ;;
                # gcc-3.3.2 causes invalid insn error
                hppa ) replace-cpu-flags 1.0 2.0 ;;
        esac

        # Recently there has been a lot of stability problem in Gentoo-land.  Many
        # things can be the cause to this, but I believe that it is due to gcc3
        # still having issues with optimizations, or with it not filtering bad
        # combinations (protecting the user maybe from themselves) yet.
        #
        # This can clearly be seen in large builds like glibc, where too aggressive
        # CFLAGS cause the tests to fail miserbly.
        #
        # Quote from Nick Jones <carpaski@gentoo.org>, who in my opinion
        # knows what he is talking about:
        #
        #   People really shouldn't force code-specific options on... It's a
        #   bad idea. The -march options aren't just to look pretty. They enable
        #   options that are sensible (and include sse,mmx,3dnow when appropriate).
        #
        # The next command strips CFLAGS and CXXFLAGS from nearly all flags.  If
        # you do not like it, comment it, but do not bugreport if you run into
        # problems.
        #
        # <azarah@gentoo.org> (13 Oct 2002)
        strip-flags
}

pkg_setup() {
        FILES_DIR="${WORKDIR}/files"
        PATCHDIR="${WORKDIR}/patch"
        EXCLUDED="${PATCHDIR}/excluded"

        # Set up CFLAG-related things
        cflag_setup

        # Set up CC variable, we use it later
        gcc-getCC

        # See bug #35468, circular pam-X11 dep
        if use pam && [ "`best_version x11-base/${PN}`" ]
        then
                einfo "Previous ${PN} installation detected"
                einfo "Enabling PAM features in ${PN}..."
        else
                einfo "Previous ${PN} installation NOT detected"
                einfo "Disabling PAM features in ${PN}..."
                einfo "You must remerge ${PN} to enable pam."
                einfo "See http://bugs.gentoo.org/show_bug.cgi?id=35468."
        fi

        if use static || use dlloader
        then
                # A static build disallows building the SDK.
                # See config/xf86.rules.
                # So does a DllModules YES (use dlloader) build (#50562)
                # The latter is pending a potential patch.
                if use sdk
                then
                        die "The static and dlloader USE flags are currently incompatible with the sdk USE flag."
                fi
        fi

        # on amd64 we need /usr/X11R6/lib64/X11/locale/lib to be a symlink
        # created by the emul lib ebuild in order for adobe acrobat, staroffice,
        # and a few other apps to work.
        use amd64 && get_libdir_override lib64
        # lib32 isnt a supported configuration (yet?)
        [ "${CONF_LIBDIR}" == "lib32" ] && get_libdir_override lib


        # Echo a message to the user about xprint and bitmap-fonts
        if ! use bitmap-fonts
        then
                ewarn "Please emerge this with USE=\"bitmap-fonts\" to enable"
                ewarn "75dpi and 100dpi fonts.  Your GTK+-1.2 fonts may look"
                ewarn "screwy otherwise"
        fi

        if ! use xprint
        then
                ewarn "Please emerge thie with USE=\"xprint\" to enable"
                ewarn "the Xprint extenstion -- Motif and motif apps will break"
                ewarn "without it."
        fi

        if ! use bitmap-fonts || ! use xprint
        then
                ebeep 5
                epause 10
        fi
}

host_def_setup() {
        HOSTCONF=config/cf/host.def

        ebegin "Setting up ${HOSTCONF}"
                cd ${S}; cp ${FILES_DIR}/site.def ${HOSTCONF} || die
                echo "#define XVendorString \"Gentoo Linux (The X.Org Foundation ${PV}, revision ${PR}-${PATCH_VER})\"" \
                        >> ${HOSTCONF}

                # Pending http://bugs.gentoo.org/show_bug.cgi?id=49038 and
                # http://freedesktop.org/cgi-bin/bugzilla/show_bug.cgi?id=600
                #
                # Makes ld bail at link time on undefined symbols
                # Suggested by Mike Harris <mharris@redhat.com>
                #echo "#define SharedLibraryLoadFlags  -shared -Wl,-z,defs" \
                #        >> ${HOSTCONF}

                # Enable i810 on x86_64 (RH #126687)
                echo "#define XF86ExtraCardDrivers i810" >> ${HOSTCONF}

                # FHS install locations for docs
                echo "#define ManDirectoryRoot /usr/share/man" >> ${HOSTCONF}
                echo "#define DocDir /usr/share/doc/${PF}" >> ${HOSTCONF}
                echo "#define FontDir /usr/share/fonts" >> ${HOSTCONF}

                # Make man4 and man7 stuff get 'x' suffix like everything else
                # Necessary so we can install to /usr/share/man without overwriting
                echo "#define DriverManDir \$(MANSOURCEPATH)4" >> ${HOSTCONF}
                echo "#define DriverManSuffix 4x /* use just one tab or cpp will die */" \
                        >> ${HOSTCONF}
                echo "#define MiscManDir \$(MANSOURCEPATH)7" >> ${HOSTCONF}
                echo "#define MiscManSuffix 7x /* use just one tab or cpp will die */" \
                        >> ${HOSTCONF}

                # Don't build xterm -- use external (#54051)
                echo "#define BuildXterm NO" >> ${HOSTCONF}

                # Xwrapper has been removed so we now need to use the set uid server
                # again, this mustve happened somewhere after 4.3.0 in the development.
                echo "#define InstallXserverSetUID YES" >> ${HOSTCONF}
                echo "#define BuildServersOnly NO" >> ${HOSTCONF}

                # Don't use /lib64 if $(get_libdir) != lib64
                # Replaces 0181_all_4.3.0-amd64-nolib64.patch
                if [ "$(get_libdir)" == "lib64" ] ; then
                        echo "#define HaveLib64 YES" >> ${HOSTCONF}
                else
                        echo "#define HaveLib64 NO" >> ${HOSTCONF}
                fi

                # Set location of DRM source to be installed
                echo "#define InstSrcDir ${ROOT}/usr/src/${PF}" >> ${HOSTCONF}

                # Bug #12775 .. fails with -Os.
                replace-flags "-Os" "-O2"

                if [ "`gcc-version`" != "2.95" ]
                then
                        # Should fix bug #4189.  gcc 3.x have problems with -march=pentium4
                        # and -march=athlon-tbird
                        # Seems fixed on 3.3 and higher

                        if [ "`gcc-major-version`" -eq "3" -a "`gcc-minor-version`" -le "2" ]
                        then
                                replace-cpu-flags "pentium3" "pentium4"
                                replace-cpu-flags "athlon-tbird" "athlon"
                        fi

                        # Try a fix for #49310, see #50931 for more info. <spyderous>
                        if [ "`is-flag -fomit-frame-pointer`" ]
                        then
                                replace-cpu-flags "i586" "k6" "k6-2" "k6-3"
                        fi

                        # Without this, modules breaks with gcc3
                        if [ "`gcc-version`" = "3.1" ]
                        then
                                append-flags "-fno-merge-constants"
                                append-flags "-fno-merge-constants"
                        fi
                fi

                if ( [ -e "${ROOT}/usr/src/linux" ] && \
                        [ ! `is_kernel "2" "2"` ] ) || \
                        [ "`uname -r | cut -d. -f1,2`" != "2.2" ]
                then
                        echo "#define HasLinuxInput YES" >> ${HOSTCONF}
                fi

                echo "#define CcCmd ${CC}" >> ${HOSTCONF}
                echo "#define OptimizedCDebugFlags ${CFLAGS} GccAliasingArgs" >> ${HOSTCONF}
                echo "#define OptimizedCplusplusDebugFlags ${CXXFLAGS} GccAliasingArgs" >> ${HOSTCONF}

                if use static
                then
                        echo "#define DoLoadableServer        NO" >>${HOSTCONF}
                else
                        if use dlloader ; then
                                einfo "Setting DoLoadableServer/MakeDllModules to YES."
                                echo "#define DoLoadableServer  YES" >> ${HOSTCONF}
                                echo "#define MakeDllModules    YES" >> ${HOSTCONF}
                        fi
                fi

                use_build debug XFree86Devel
                use_build debug BuildDebug
                use_build debug DebuggableLibraries

                if use !debug
                then
                        echo "#define ExtraXInputDrivers acecad" >> ${HOSTCONF}

                        # use less ram .. got this from Spider's makeedit.eclass :)
                        echo "#define GccWarningOptions -Wno-return-type -w" \
                                >> ${HOSTCONF}
                fi

                # Remove circular dep between pam and X11, bug #35468
                # If pam is in USE and we have X11, then we can enable PAM
#                if use pam && [ "`best_version x11-base/xorg-x11`" ]
                if [ "`best_version x11-base/xorg-x11`" ]
                then
                        # If you want to have optional pam support, do it properly ...
                        use_build pam HasPam
                        use_build pam HasPamMisc
                fi

                if use x86 || use alpha
                then
                        # build with glide3 support? (build the tdfx_dri.o module)
                        if use 3dfx
                        then
                                echo "#define HasGlide3 YES" >> ${HOSTCONF}
                        fi
#                         This won't work unless we can disable building the tdfx stuff
#                         entirely :/
#                        use_build 3dfx HasGlide3
                fi

                if use x86
                then
                        # optimize Mesa for architecture
                        use_build mmx HasMMXSupport
                        use_build mmx MesaUseMMX

                        use_build 3dnow Has3DNowSupport
                        use_build 3dnow MesaUse3DNow

                        use_build sse HasKatmaiSupport
                        use_build sse MesaUseKatmai
                        use_build sse HasSSESupport
                        use_build sse MesaUseSSE

                        # Compile the VIA driver
                        # echo "#define XF86ExtraCardDrivers via" >> ${HOSTCONF}
                fi

                if use hppa
                then
                        echo "#define DoLoadableServer NO" >> ${HOSTCONF}
                fi

                if use alpha
                then
                        echo "#define XF86CardDrivers mga nv tga s3virge sis rendition \
                                i740 tdfx cirrus tseng fbdev \
                                ati vga v4l glint" >> ${HOSTCONF}
                fi

                if use ppc
                then
                        echo "#define XF86CardDrivers mga glint s3virge sis savage trident \
                                chips tdfx fbdev ati DevelDrivers vga nv imstt \
                                XF86OSCardDrivers XF86ExtraCardDrivers" >> ${HOSTCONF}
                fi

                if use ppc64
                then
                        echo "#define MakeDllModules YES" >> ${HOSTCONF}
                        echo "#define XF86VgaHw YES" >> ${HOSTCONF}
                        echo "#define XF86FBDevHw YES" >> ${HOSTCONF}
                        echo "#define XF86CardDrivers fbdev v4l ati vga nv" >> ${HOSTCONF}
                fi

                if use sparc
                then
                        echo "#define XF86CardDrivers sunffb sunleo suncg6 suncg3 suncg14 \
                        suntcx sunbw2 glint mga tdfx ati savage vesa vga fbdev \
                        XF86OSCardDrivers XF86ExtraCardDrivers \
                        DevelDrivers" >> ${HOSTCONF}
                fi

                # The definitions for fontconfig
                echo "#define UseFontconfig YES" >> ${HOSTCONF}
                echo "#define HasFontconfig YES" >> ${HOSTCONF}

                # Use the xorg Xft2 lib
                echo "#define SharedLibXft YES" >> ${HOSTCONF}

                # with USE="X doc' circular dep w/ virtual/ghostscript
                # echo "#define HasGhostScript ${DOC}" >> ${HOSTCONF}
                # Caused issues, basic docs aren't installed
                use_build doc BuildLinuxDocText
                use_build doc BuildLinuxDocPS
                use_build doc BuildSpecsDocs
                use_build doc BuildHtmlManPages
                use_build doc InstallHardcopyDocs

                # enable Japanese docs, optionally
                use doc && use_build cjk InstallJapaneseDocs

                # Native Language Support Fonts
                use_build nls BuildCyrillicFonts
                use_build nls BuildArabicFonts
                use_build nls BuildGreekFonts
                use_build nls BuildHebrewFonts
                use_build nls BuildThaiFonts

                if use nls
                then
                        use_build cjk BuildCIDFonts
                        use_build cjk BuildJapaneseFonts
                        use_build cjk BuildKoreanFonts
                        use_build cjk BuildChineseFonts
                fi

                # Crappy bitmap fonts
                use_build bitmap-fonts Build75DpiFonts
                use_build bitmap-fonts Build100DpiFonts

                use_build dmx BuildDmx

                use_build insecure-drivers BuildDevelDRIDrivers

                if use ipv6
                then
                        # In case Gentoo ever works on a system with IPv6 sockets that don't
                        # also listen on IPv4 (see config/cf/X11.tmpl)
                        echo "#define PreferXdmcpIPv6 YES" >> ${HOSTCONF}
                fi

                use_build ipv6 BuildIPv6

                # Ajax is the man for getting this going for us
                echo "#define ProPoliceSupport YES" >> ${HOSTCONF}

                # Make xprint optional
                use_build xprint BuildXprint

        # End the host.def definitions here
        eend 0
}

patch_setup() {
        einfo "Excluding patches..."
                # These have been applied upstream
                patch_exclude 1770 1771 1772 1773

                # This patch is just plain broken. Results in random failures.
                patch_exclude 0120*parallel-make

                # Hardened patches (both broken)
                patch_exclude 9960_all_4.3.0-exec-shield-GNU
                patch_exclude 9961_all_4.3.0-libGL-exec-shield

                # this patch comments out the Xserver line in xdm's config
                # We only want it here
                if use !s390
                then
                        patch_exclude 7500
                fi

        #        if use !gatos
        #        then
                        patch_exclude 9841_all_4.3.0-gatos-mesa
        #        fi

                if use debug
                then
                        patch_exclude 5901*acecad-debug
                fi

                # TDFX_RISKY - 16-bit, 1024x768 or higher on low-memory voodoo3's
                if use 3dfx && [ "${TDFX_RISKY}" = "yes" ]
                then
                        patch_exclude 5850
                else
                        patch_exclude 5851
                fi
        einfo "Done excluding patches"
}

src_unpack() {

        # Unpack source and patches
        ebegin "Unpacking source"
#                unpack ${P}.tar.bz2
                unpack X11R${PV}-src{1,2,3,4,5}.tar.gz
        eend 0

        if use doc
        then
                ebegin "Unpacking documentation"
                        unpack X11R${PV}-src{6,7}.tar.gz
                eend 0
        fi

        ebegin "Unpacking Gentoo files and patches"
                unpack ${P}-files-${FILES_VER}.tar.bz2 > /dev/null
                unpack ${P}-patches-${PATCH_VER}.tar.bz2 > /dev/null
        eend 0

        # Unpack TaD's gentoo cursors
        ebegin "Unpacking Gentoo cursors"
                unpack gentoo-cursors-tad-${XCUR_VER}.tar.bz2 > /dev/null
        eend 0

        # Unpack extra fonts stuff from Mandrake
        ebegin "Unpacking fonts"
                if use nls
                then
                        unpack gemini-koi8-u.tar.bz2 > /dev/null
                fi
                unpack eurofonts-X11.tar.bz2 > /dev/null
                unpack xfsft-encodings-${XFSFT_ENC_VER}.tar.bz2 > /dev/null
        eend 0

        # Remove bum encoding
        rm -f ${WORKDIR}/usr/share/fonts/encodings/urdunaqsh-0.enc

        patch_setup

        # Bulk patching - based on patch name
        # Will create excluded stuff once it's needed
        cd ${WORKDIR}
        EPATCH_SUFFIX="patch" \
        epatch ${PATCHDIR}
        cd ${S}
       
        #Gentoo Linux Chinese Portage
        #http://gentoo.linuxsir.org
        use glc && epath ${FILESDIR}/xorg-x11-6.7.0-gb18030.patch

        host_def_setup

        cd ${S}
        if use doc
        then
                # These are not included anymore as they are obsolete
                for x in ${S}/programs/Xserver/hw/xfree86/{XF98Conf.cpp,XF98Config}
                do
                        if [ -f ${x} ]
                        then
                                cp ${x} ${x}.orig
                                grep -iv 'Load[[:space:]]*"\(pex5\|xie\)"' ${x}.orig > ${x}
                                rm -f ${x}.orig
                        fi
                done
        fi

}

src_compile() {

        # Set MAKEOPTS to have proper -j? option ..
        get_number_of_jobs

        # If a user defines the MAKE_OPTS variable in /etc/make.conf instead of
        # MAKEOPTS, they'll redefine an internal xorg Makefile variable and the
        # xorg build will silently die. This is tricky to track down, so I'm
        # adding a preemptive fix for this issue by making sure that MAKE_OPTS is
        # unset. (drobbins, 08 Mar 2003)
        unset MAKE_OPTS

        einfo "Building xorg-x11..."
        if use debug
        then
                FAST=1 makeg World WORLDOPTS="" || die
        else
                FAST=1 emake World WORLDOPTS="" || die
        fi

        if use nls
        then
                cd ${S}/nls
                make || die
                cd ${S}
        fi

}

pkgconfig_install() {
        # This one needs to be in /usr/lib
        insinto /usr/$(get_libdir)/pkgconfig
        doins ${D}/usr/X11R6/$(get_libdir)/pkgconfig/*.pc
        # Now remove the invalid xft.pc, and co ...
        rm -rf ${D}/usr/X11R6/$(get_libdir)/pkgconfig
}

backward_compat_setup() {
        # Backwards compatibility for /usr/share move
        G_FONTDIRS="CID Speedo TTF Type1 encodings local misc util"
        if use bitmap-fonts
        then
                G_FONTDIRS="${G_FONTDIRS} 75dpi 100dpi"
        fi

        dodir /usr/X11R6/$(get_libdir)/X11/fonts/
        for G_FONTDIR in ${G_FONTDIRS}
        do
                dosym ${ROOT}/usr/share/fonts/${G_FONTDIR} /usr/X11R6/$(get_libdir)/X11/fonts/${G_FONTDIR}
        done

        dosym ${ROOT}/usr/share/man /usr/X11R6/man
        dosym ${ROOT}/usr/share/doc/${PF} /usr/X11R6/$(get_libdir)/X11/doc
}

compose_files_setup() {
        # Hack from Mandrake (update ours that just created Compose files for
        # all locales)
        for x in $(find ${D}/usr/X11R6/$(get_libdir)/X11/locale/ -mindepth 1 -type d)
        do
                # make empty Compose files for some locales
                # CJK must not have that file (otherwise XIM don't works some times)
                case `basename ${x}` in
                        C|microsoft-*|iso8859-*|koi8-*)
                                if [ ! -f ${x}/Compose ]
                                then
                                        touch ${x}/Compose
                                fi
                                ;;
                        ja*|ko*|zh*)
                                if [ -r ${x}/Compose ]
                                then
                                        rm -f ${x}/Compose
                                fi
                                ;;
                esac
        done

        # Another hack from Mandrake -- to fix dead + space for the us
        # international keyboard
        for i in ${D}/usr/X11R6/$(get_libdir)/X11/locale/*/Compose
        do
                sed -i \
                        -e 's/\(<dead_diaeresis> <space>\).*$/\1 : "\\"" quotedbl/' \
                        -e "s/\(<dead_acute> <space>\).*$/\1 : \"'\" apostrophe/" \
                        ${i}
        done
}

etc_files_install() {
        insinto /etc/X11

        # Install example config file
        newins ${S}/programs/Xserver/hw/xfree86/xorg.conf xorg.conf.example

        exeinto /etc/X11
        # new session management script
        doexe ${FILES_DIR}/chooser.sh
        # new display manager script
        doexe ${FILES_DIR}/startDM.sh
        exeinto /etc/X11/Sessions
        for x in ${FILES_DIR}/Sessions/*
        do
                [ -f ${x} ] && doexe ${x}
        done
        insinto /etc/env.d
        doins ${FILES_DIR}/10xorg
        insinto /etc/X11/xinit
        doins ${FILES_DIR}/xinitrc
        exeinto /etc/X11/xdm
        doexe ${FILES_DIR}/Xsession ${FILES_DIR}/Xsetup_0
        insinto /etc/X11/fs
        newins ${FILES_DIR}/xfs.config config
        if use pam
        then
                insinto /etc/pam.d
                newins ${FILES_DIR}/xdm.pamd xdm
                # Need to fix console permissions first
                newins ${FILES_DIR}/xserver.pamd xserver
        fi
        exeinto /etc/init.d
        newexe ${FILES_DIR}/xdm.start xdm
        newexe ${FILES_DIR}/xfs.start xfs
        insinto /etc/conf.d
        newins ${FILES_DIR}/xfs.conf.d xfs
}

setup_dynamic_libgl() {
        # next section is to setup the dynamic libGL stuff
        ebegin "Moving libGL and friends for dynamic switching"
                dodir /usr/$(get_libdir)/opengl/${PN}/{$(get_libdir),extensions,include}
                local x=""
                for x in ${D}/usr/X11R6/$(get_libdir)/libGL.so* \
                        ${D}/usr/X11R6/$(get_libdir)/libGL.la \
                        ${D}/usr/X11R6/$(get_libdir)/libGL.a \
                        ${D}/usr/X11R6/$(get_libdir)/libMesaGL.so
                do
                        if [ -f ${x} -o -L ${x} ]
                        then
                                # libGL.a cause problems with tuxracer, etc
                                mv -f ${x} ${D}/usr/$(get_libdir)/opengl/${PN}/$(get_libdir)
                        fi
                done
                for x in ${D}/usr/X11R6/$(get_libdir)/modules/extensions/libglx*
                do
                        if [ -f ${x} -o -L ${x} ]
                        then
                                mv -f ${x} ${D}/usr/$(get_libdir)/opengl/${PN}/extensions
                        fi
                done
                # glext.h added for #54984
                for x in ${D}/usr/X11R6/include/GL/{gl.h,glx.h,glxtokens.h,glext.h}
                do
                        if [ -f ${x} -o -L ${x} ]
                        then
                                mv -f ${x} ${D}/usr/$(get_libdir)/opengl/${PN}/include
                        fi
                done
                # Since we added glext.h and don't have new opengl-update yet, do this
                # Avoids circular opengl-update/xorg-x11 dependency
                dosym /usr/$(get_libdir)/opengl/${PN}/include/glext.h /usr/X11R6/include/GL/
                # Even if libdir isnt lib, we need a lib symlink for opengl-update and
                # friends. See bug 62990 for more info.
                if [ "$(get_libdir)" != "lib" ]
                then
                        dosym $(get_libdir) /usr/$(get_libdir)/opengl/${PN}/lib
                fi
        eend 0
}

strip_execs() {
        if use debug
        then
                ewarn "Debug build turned on by USE=debug"
                ewarn "NOT stripping binaries and libraries"
        else
                einfo "Stripping binaries and libraries..."
                # This bit I got from Redhat ... strip binaries and drivers ..
                # NOTE:  We do NOT want to strip the drivers, modules or DRI modules!
                for x in $(find ${D}/ -type f -perm +0111 -exec file {} \; | \
                           grep -v ' shared object,' | \
                           sed -n -e 's/^\(.*\):[  ]*ELF.*, not stripped/\1/p')
                do
                if [ -f ${x} ]
                        then
                                # Dont do the modules ...
                                if [ "${x/\/usr\/X11R6\/$(get_libdir)\/modules}" = "${x}" ]
                                then
                                        echo "`echo ${x} | sed -e "s|${D}||"`"
                                        strip ${x} || :
                                fi
                        fi
                done
                # Now do the libraries ...
                for x in ${D}/usr/{$(get_libdir),$(get_libdir)/opengl/${PN}/$(get_libdir)}/*.so.* \
                        ${D}/usr/X11R6/{$(get_libdir),$(get_libdir)/X11/locale/$(get_libdir)/common}/*.so.*
                do
                        if [ -f ${x} ]
                        then
                                echo "`echo ${x} | sed -e "s|${D}||"`"
                                strip --strip-debug ${x} || :
                        fi
                done
        fi
}

setup_config_files() {

        # Fix default config files after installing fonts to /usr/share/fonts
        sed -i "s:/usr/X11R6/$(get_libdir)/X11/fonts:${ROOT}usr/share/fonts:g" \
                ${D}/etc/X11/xorg.conf.example
        sed -i "s:/usr/X11R6/$(get_libdir)/X11/fonts:${ROOT}usr/share/fonts:g" \
                ${D}/etc/X11/fs/config

        # Work around upgrade problem where people have
        # Option "XkbRules" "xfree86" in their config file
        sed -i "s:^.*Option.*"XkbRules".*$::g" ${D}/etc/X11/xorg.conf.example
}

update_config_files() {
        # Fix any installed config files for installing fonts to /usr/share/fonts
        # This *needs* to be after all other installation so files aren't
        # overwritten.

        if [ "${ROOT}" = "/" ]
        then
                einfo "Preparing any installed configuration files for font move..."
                FILES="/etc/X11/xorg.conf
                        /etc/X11/XF86Config
                        /etc/X11/fs/config"
                #        /etc/fonts/fonts.conf
                #        /etc/fonts/local.conf

                for FILE in ${FILES}
                do
                        if [ -e ${FILE} ]
                        then
                                # New font paths
                                sed "s,/usr/X11R6/$(get_libdir)/X11/fonts,/usr/share/fonts,g" \
                                        ${ROOT}${FILE} > ${IMAGE}${FILE}

                                if [ "${FILE}" = "/etc/X11/xorg.conf" ]
                                then
                                        # "keyboard" driver is deprecated and will be removed,
                                        # switch to "kbd"
                                        sed -i 's~^\([ \t]*Driver[ \t]\+\)"keyboard"~\1"kbd"~' \
                                                ${IMAGE}${FILE}

                                        # Work around upgrade problem where people have
                                        # Option "XkbRules" "xfree86" in their config file
                                        sed -i "s:^.*Option.*\"XkbRules\".*$::g" \
                                                ${IMAGE}${FILE}
                                fi
                        fi
                done
        fi
}

src_install() {

        unset MAKE_OPTS

        einfo "Installing X.org X11..."
        # gcc3 related fix.  Do this during install, so that our
        # whole build will not be compiled without mmx instructions.
        if [ "`gcc-version`" != "2.95" ] && use x86
        then
                make install DESTDIR=${D} || \
                make CDEBUGFLAGS="${CDEBUGFLAGS} -mno-mmx" \
                        CXXDEBUGFLAGS="${CXXDEBUGFLAGS} -mno-mmx" \
                        install DESTDIR=${D} || die
        else
                make install DESTDIR=${D} || die
        fi

        if use sdk # || use gatos
        then
                einfo "Installing X.org X11 SDK..."
                make install.sdk DESTDIR=${D} || die
        fi

        pkgconfig_install

        einfo "Installing man pages..."
        make install.man DESTDIR=${D} || die
        einfo "Compressing man pages..."
        prepman /usr/X11R6

        if use nls
        then
                cd ${S}/nls
                make DESTDIR=${D} install || die
        fi

        backward_compat_setup

        # Fix permissions on locale/common/*.so
        for x in ${D}/usr/X11R6/$(get_libdir)/X11/locale/$(get_libdir)/common/*.so*
        do
                if [ -f ${x} ]
                then
                        fperms 0755 `echo ${x} | sed -e "s|${D}||"`
                fi
        done

        # Fix permissions on modules ...
        for x in $(find ${D}/usr/X11R6/$(get_libdir)/modules -name '*.o') \
                 $(find ${D}/usr/X11R6/$(get_libdir)/modules -name '*.so')
        do
                if [ -f ${x} ]
                then
                        fperms 0755 `echo ${x} | sed -e "s|${D}||"`
                fi
        done

        # We zap our CFLAGS in the host.def file, as hardcoded CFLAGS can
        # mess up other things that use xmkmf
        ebegin "Fixing $(get_libdir)/X11/config/host.def"
                cp ${D}/usr/X11R6/$(get_libdir)/X11/config/host.def ${T}
                awk '!/OptimizedCDebugFlags|OptimizedCplusplusDebugFlags|GccWarningOptions/ {print $0}' \
                        ${T}/host.def > ${D}/usr/X11R6/$(get_libdir)/X11/config/host.def
                # theoretically, /usr/X11R6/lib/X11/config is a possible candidate for
                # config file management. If we find that people really worry about imake
                # stuff, we may add it.  But for now, we leave the dir unprotected.
        eend 0

        # EURO support
        ebegin "Euro Support..."
                LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${D}/usr/X11R6/$(get_libdir)" \
                ${D}/usr/X11R6/bin/bdftopcf -t ${WORKDIR}/Xlat9-8x14.bdf | \
                        gzip -9 > ${D}/usr/share/fonts/misc/Xlat9-8x14-lat9.pcf.gz
                LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${D}/usr/X11R6/$(get_libdir)" \
                ${D}/usr/X11R6/bin/bdftopcf -t ${WORKDIR}/Xlat9-9x16.bdf | \
                        gzip -9 > ${D}/usr/share/fonts/misc/Xlat9-9x16-lat9.pcf.gz
                LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${D}/usr/X11R6/$(get_libdir)" \
                ${D}/usr/X11R6/bin/bdftopcf -t ${WORKDIR}/Xlat9-10x20.bdf | \
                        gzip -9 > ${D}/usr/share/fonts/misc/Xlat9-10x20-lat9.pcf.gz
        eend 0

        # Standard symlinks
        dodir /usr/{bin,include,$(get_libdir)}
        dosym ../X11R6/bin /usr/bin/X11
        dosym ../X11R6/include/X11 /usr/include/X11
        dosym ../X11R6/include/DPS /usr/include/DPS
        dosym ../X11R6/include/GL /usr/include/GL
        dosym ../X11R6/$(get_libdir)/X11 /usr/$(get_libdir)/X11
        dosym ../../usr/X11R6/$(get_libdir)/X11/xkb /etc/X11/xkb

        # Some critical directories
        keepdir /var/lib/xdm
        dosym ../../../var/lib/xdm /etc/X11/xdm/authdir

        # Remove invalid symlinks
        rm -f ${D}/usr/$(get_libdir)/libGL.*
        # Create required symlinks
        dosym libGL.so.1.2 /usr/X11R6/$(get_libdir)/libGL.so
        dosym libGL.so.1.2 /usr/X11R6/$(get_libdir)/libGL.so.1
        dosym libGL.so.1.2 /usr/X11R6/$(get_libdir)/libMesaGL.so
        # We move libGLU to /usr/lib now
        dosym libGLU.so.1.3 /usr/$(get_libdir)/libMesaGLU.so

        # .la files for libtool support
        insinto /usr/X11R6/$(get_libdir)
        doins ${FILES_DIR}/$(get_libdir)/*.la

        # Backwards compat, FHS, etc.
        dosym ../../usr/X11R6/bin/Xorg /etc/X11/X

        # Fix perms
        fperms 755 /usr/X11R6/$(get_libdir)/X11/xkb/geometry/sgi
        fperms 755 /usr/X11R6/bin/dga

        compose_files_setup

        # Yet more Mandrake
        ebegin "Encoding files for xfsft font server..."
                dodir /usr/share/fonts/encodings
                cp -a ${WORKDIR}/usr/share/fonts/encodings/* \
                        ${D}/usr/share/fonts/encodings

                for x in ${D}/usr/share/fonts/encodings/{.,large}/*.enc
                do
                        [ -f "${x}" ] && gzip -9 -f ${x}
                done
        eend 0

        if use nls
        then
                ebegin "gemini-koi8 fonts..."
                        cd ${WORKDIR}/ukr
                        gunzip *.Z
                        gzip -9 *.pcf
                        cd ${S}
                        cp -a ${WORKDIR}/ukr ${D}/usr/share/fonts
                eend 0
        fi

        etc_files_install

        # we want libGLU.so* in /usr/lib
        mv ${D}/usr/X11R6/$(get_libdir)/libGLU.* ${D}/usr/$(get_libdir)

        setup_dynamic_libgl

        # Make the core cursor the default.  People seem not to like whiteglass
        # for some reason.
        dosed 's:whiteglass:core:' /usr/share/cursors/${PN}/default/index.theme

        strip_execs

        # Install TaD's gentoo cursors
        insinto /usr/share/cursors/${PN}/gentoo/cursors
        doins ${WORKDIR}/cursors/gentoo/cursors/*
        insinto /usr/share/cursors/${PN}/gentoo-blue/cursors
        doins ${WORKDIR}/cursors/gentoo-blue/cursors/*
        insinto /usr/share/cursors/${PN}/gentoo-silver/cursors
        doins ${WORKDIR}/cursors/gentoo-silver/cursors/*

        # Remove xterm app-defaults, since we don't install xterm
#        rm ${D}/etc/X11/app-defaults/{UXTerm,XTerm,XTerm-color}

        # For Battoussai's gatos stuffs:
        if use sdk
        then
                insinto /usr/X11R6/$(get_libdir)/Server/include
                doins ${S}/extras/drm/shared/drm.h
        fi

        # Remove the /etc/rc.d nonsense -- not everyone is RedHat
        rm -rf ${D}/etc/rc.d

        setup_config_files

}

pkg_preinst() {

        update_config_files
        for G_FONTDIR in ${G_FONTDIRS}
        do
                # Get rid of deprecated directories so our symlinks in the same location
                # work -- users shouldn't be placing fonts here so that should be fine,
                # they should be using ~/.fonts or /usr/share/fonts. <spyderous>
                if [ -d ${ROOT}/usr/X11R6/$(get_libdir)/X11/fonts/${G_FONTDIR} ]
                then
                        # local directory is for sysadmin-added fonts, so save it
                        # Note: if we did this in src_install(), we would bring fonts from
                        # the build machine to the install machine rather than just moving
                        # fonts on the install machine.
                        if [ "${G_FONTDIR}" = "local" ]
                        then
                                mv ${ROOT}/usr/X11R6/$(get_libdir)/X11/fonts/${G_FONTDIR} \
                                        ${ROOT}/usr/share/fonts/
                        else
                                rm -rf ${ROOT}/usr/X11R6/$(get_libdir)/X11/fonts/${G_FONTDIR}
                        fi
                fi

                # clean out old fonts.* and encodings.dir files, as we
                # will regenerate them
                # Not Speedo or CID, as their fonts.scale files are "real"
                if [ "${G_FONTDIR}" != "CID" -a "${G_FONTDIR}" != "Speedo" ]
                then
                        find ${ROOT}/usr/share/fonts/${G_FONTDIR} -type f -name 'fonts.*' \
                                -exec rm -f {} \;
                        find ${ROOT}/usr/share/fonts/${G_FONTDIR} -type f -name 'encodings.dir' \
                                -exec rm -f {} \;
                fi
        done

        # No longer used by xorg-x11
        if [ -d ${ROOT}/usr/X11R6/$(get_libdir)/X11/fonts/truetype ]
        then
                rm -rf ${ROOT}/usr/X11R6/$(get_libdir)/X11/fonts/truetype
        fi

        if [ -L ${ROOT}/etc/X11/app-defaults ]
        then
                rm -f ${ROOT}/etc/X11/app-defaults
        fi

        if [ ! -L ${ROOT}/usr/X11R6/$(get_libdir)/X11/app-defaults ] && \
           [ -d ${ROOT}/usr/X11R6/$(get_libdir)/X11/app-defaults ]
        then
                if [ ! -d ${ROOT}/etc/X11/app-defaults ]
                then
                        mkdir -p ${ROOT}/etc/X11/app-defaults
                fi

                mv -f ${ROOT}/usr/X11R6/$(get_libdir)/X11/app-defaults ${ROOT}/etc/X11
        fi

        if [ -L ${ROOT}/usr/X11R6/$(get_libdir)/X11/xkb ]
        then
                rm -f ${ROOT}/usr/X11R6/$(get_libdir)/X11/xkb
        fi

        if [ ! -L ${ROOT}/etc/X11/xkb ] && \
           [ -d ${ROOT}/etc/X11/xkb ]
        then
                if [ ! -d ${ROOT}/usr/X11R6/$(get_libdir)/X11/xkb ]
                then
                        mkdir -p ${ROOT}/usr/X11R6/$(get_libdir)/X11
                fi

            mv -f ${ROOT}/etc/X11/xkb ${ROOT}/usr/X11R6/$(get_libdir)/X11
        fi

        # clean the dynamic libGL stuff's home to ensure
        # we don't have stale libs floating around
        if [ -d ${ROOT}/usr/$(get_libdir)/opengl/${PN} ]
        then
                rm -rf ${ROOT}/usr/$(get_libdir)/opengl/${PN}/*
        fi

        # make sure we do not have any stale files lying around
        # that could break things.
        rm -f ${ROOT}/usr/X11R6/$(get_libdir)/libGL*
}

font_setup() {
        # These cause ttmkfdir to segfault :/
        rm -f ${ROOT}/usr/share/fonts/encodings/iso8859-6.8x.enc.gz
        rm -f ${ROOT}/usr/share/fonts/encodings/iso8859-6.16.enc.gz
#        rm -f ${ROOT}/usr/share/fonts/encodings/large/cns11643-1.enc
#        rm -f ${ROOT}/usr/share/fonts/encodings/large/cns11643-2.enc
#        rm -f ${ROOT}/usr/share/fonts/encodings/large/cns11643-3.enc
#        rm -f ${ROOT}/usr/share/fonts/encodings/suneu-greek.enc

        # ********************************************************************
        #  A note about fonts and needed files:
        #
        #  1)  Create /usr/share/fonts/encodings/encodings.dir
        #
        #  2)  Create fonts.scale for TrueType fonts (need to do this before
        #      we create fonts.dir files, else fonts.dir files will be
        #      invalid for TrueType fonts...)
        #
        #  3)  Now Generate fonts.dir files.
        #
        #  CID fonts is a bit more involved, but as we do not install any,
        #  thus I am not going to bother.
        #
        #  <azarah@gentoo.org> (20 Oct 2002)
        #
        # ********************************************************************

        ebegin "Generating encodings.dir..."
                # Create the encodings.dir in /usr/share/fonts/encodings
                LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ROOT}/usr/X11R6/$(get_libdir)" \
                ${ROOT}/usr/X11R6/bin/mkfontdir -n \
                        -e ${ROOT}/usr/share/fonts/encodings \
                        -e ${ROOT}/usr/share/fonts/encodings/large \
                        -- ${ROOT}/usr/share/fonts/encodings

        eend 0

        if [ -x ${ROOT}/usr/X11R6/bin/ttmkfdir ]
        then
                ebegin "Creating fonts.scale files..."
                        for x in $(find ${ROOT}/usr/share/fonts/* -type d -maxdepth 1)
                        do
                                [ -z "$(ls ${x}/)" ] && continue
                                [ "$(ls ${x}/)" = "fonts.cache-1" ] && continue

                                # Only generate .scale files if truetype, opentype or type1
                                # fonts are present ...

                                # First truetype (ttf,ttc)
                                # NOTE: ttmkfdir does NOT work on type1 fonts (#53753)
                                # Also, there is no way to regenerate Speedo/CID fonts.scale
                                # <spyderous@gentoo.org> 2 August 2004
                                if [ "${x/encodings}" = "${x}" -a \
                                     -n "$(find ${x} -iname '*.tt[cf]' -print)" ]
                                then
                                        LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ROOT}/usr/X11R6/$(get_libdir)" \
                                        ${ROOT}/usr/X11R6/bin/ttmkfdir -x 2 \
                                                -e ${ROOT}/usr/share/fonts/encodings/encodings.dir \
                                                -o ${x}/fonts.scale -d ${x}
                                # Next type1 and opentype (pfa,pfb,otf,otc)
                                elif [ "${x/encodings}" = "${x}" -a \
                                        -n "$(find ${x} -iname '*.[po][ft][abcf]' -print)" ]
                                then
                                        LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ROOT}/usr/X11R6/$(get_libdir)" \
                                        ${ROOT}/usr/X11R6/bin/mkfontscale \
                                                -a ${ROOT}/usr/share/fonts/encodings/encodings.dir \
              &nbs