/[gentoo-x86]/eclass/eutils.eclass
Gentoo

Diff of /eclass/eutils.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.1 Revision 1.2
1# Copyright 1999-2002 Gentoo Technologies, Inc. 1# Copyright 1999-2002 Gentoo Technologies, Inc.
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# Author: Martin Schlemmer <azarah@gentoo.org> 3# Author: Martin Schlemmer <azarah@gentoo.org>
4# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.1 2002/10/26 09:16:03 azarah Exp $ 4# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.2 2002/11/10 19:45:51 azarah Exp $
5# This eclass is for general purpose functions that most ebuilds 5# This eclass is for general purpose functions that most ebuilds
6# have to implement themselfs. 6# have to implement themselfs.
7# 7#
8# NB: If you add anything, please comment it! 8# NB: If you add anything, please comment it!
9 9
49END_LDSCRIPT 49END_LDSCRIPT
50 50
51 dosed "s:libxxx:$1:" /usr/lib/$1 51 dosed "s:libxxx:$1:" /usr/lib/$1
52} 52}
53 53
54
55# Default directory where patches are located
56EPATCH_SOURCE="${WORKDIR}/patch"
57# Default directory in which patches should be applied
58EPATCH_WORKDIR="${S}"
59# Default extension for patches
60EPATCH_SUFFIX="patch.bz2"
61# Default options for patch
62EPATCH_OPTS=""
63
64# This function is for bulk patching, or in theory for just one
65# or two patches.
66#
67# It should work with .bz2, .gz, .zip and plain text patches.
68# Currently all patches should be the same format.
69#
70# You do not have to specify '-p' option to patch, as it will
71# try with -p0 to -p5 until it succeed, or fail at -p5.
72#
73# Above EPATCH_* variables can be used to control various defaults,
74# bug they should be left as is to ensure an ebuild can rely on
75# them for.
76#
77# Patch/Patches should preferibly have the form of:
78#
79# ??_${ARCH}_foo.${EPATCH_SUFFIX}
80#
81# For example:
82#
83# 01_all_misc-fix.patch.bz2
84# 02_sparc_another-fix.patch.bz2
85#
86# This ensures that there are a set order, and you can have ARCH
87# specific patches.
88#
89# <azarah@gentoo.org> (10 Nov 2002)
90#
91epatch() {
92 local PIPE_CMD=""
93 local STDERR_TARGET="${T}/$$.out"
94
95 case ${EPATCH_SUFFIX##*\.} in
96 bz2)
97 PIPE_CMD="bzip2 -dc"
98 ;;
99 gz)
100 PIPE_CMD="gzip -dc"
101 ;;
102 zip)
103 PIPE_CMD="unzip -p"
104 ;;
105 *)
106 PIPE_CMD="cat"
107 ;;
108 esac
109
110 cd ${EPATCH_WORKDIR}
111 einfo "Applying various patches (bugfixes/updates)..."
112 for x in ${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}
113 do
114 # New ARCH dependant patch naming scheme...
115 #
116 # ???_arch_foo.patch
117 #
118 if [ -f ${x} ] && \
119 [ "${x/_all_}" != "${x}" -o "`eval echo \$\{x/_${ARCH}_\}`" != "${x}" ]
120 then
121 local count=0
122 local popts="${EPATCH_OPTS}"
123
124 einfo " ${x##*/}..."
125
126 > ${STDERR_TARGET}
127
128 # Allow for prefix to differ ... im lazy, so shoot me :/
129 while [ "${count}" -lt 5 ]
130 do
131 if eval ${PIPE_CMD} ${x} | patch ${popts} --dry-run -f -p${count} 2>&1 >> ${STDERR_TARGET}
132 then
133 eval ${PIPE_CMD} ${x} | patch ${popts} -p${count} 2>&1 >> ${STDERR_TARGET}
134 break
135 fi
136
137 count=$((count + 1))
138 done
139
140 if [ "${count}" -eq 5 ]
141 then
142 eerror "Failed Patch: ${x##*/}!"
143 eerror
144 eerror "Include in your bugreport the contents of:"
145 eerror
146 eerror " ${STDERR_TARGET}"
147 eerror
148 die "Failed Patch: ${x##*/}!"
149 fi
150 fi
151 done
152 eend 0 "Done with patching"
153}
154

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

  ViewVC Help
Powered by ViewVC 1.1.20