| 1 | #!/bin/bash |
|
|
| 2 | # Copyright 1999-2002 Gentoo Technologies, Inc. |
1 | # Copyright 1999-2003 Gentoo Technologies, Inc. |
| 3 | # Distributed under the terms of the GNU General Public License, v2 or later |
2 | # Distributed under the terms of the GNU General Public License v2 |
|
|
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.20 2003/02/16 04:26:21 vapier Exp $ |
|
|
4 | # |
| 4 | # Author: Martin Schlemmer <azarah@gentoo.org> |
5 | # Author: Martin Schlemmer <azarah@gentoo.org> |
| 5 | # $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.1 2002/06/05 22:53:11 azarah Exp $ |
6 | # |
| 6 | # This eclass patches ltmain.sh distributed with libtoolized packages with the |
7 | # This eclass patches ltmain.sh distributed with libtoolized packages with the |
| 7 | # relink and portage patch |
8 | # relink and portage patch |
|
|
9 | |
| 8 | ECLASS=libtool |
10 | ECLASS=libtool |
|
|
11 | INHERITED="$INHERITED $ECLASS" |
|
|
12 | |
| 9 | newdepend sys-devel/libtool |
13 | newdepend "!bootstrap? ( sys-devel/libtool )" |
| 10 | |
14 | |
| 11 | DESCRIPTION="Based on the ${ECLASS} eclass" |
15 | DESCRIPTION="Based on the ${ECLASS} eclass" |
| 12 | |
16 | |
|
|
17 | ELIBTOOL_VERSION=1.8.1 |
| 13 | |
18 | |
| 14 | elibtoolize() { |
19 | elibtoolize() { |
| 15 | |
20 | |
| 16 | local x="" |
21 | local x="" |
| 17 | local y="" |
22 | local y="" |
| 18 | local dopatch="no" |
23 | local dopatch="no" |
|
|
24 | local dotest="yes" |
|
|
25 | local dorelink="yes" |
|
|
26 | local dotmp="yes" |
|
|
27 | local doportage="yes" |
|
|
28 | local portage="no" |
|
|
29 | local reversedeps="no" |
|
|
30 | local removeinternaldep="no" |
|
|
31 | local deptoremove="" |
|
|
32 | local mylist="" |
| 19 | |
33 | |
| 20 | for x in $(find_ltmain) |
34 | mylist="$(find_ltmain)" |
|
|
35 | for x in ${*} |
|
|
36 | do |
|
|
37 | # Only apply portage patch, and dont "libtoolize --copy --force" |
|
|
38 | # if all patches fail. |
|
|
39 | if [ "${x}" = "--portage" ] |
|
|
40 | then |
|
|
41 | portage="yes" |
|
|
42 | fi |
|
|
43 | # Apply the reverse-deps patch |
|
|
44 | # |
|
|
45 | # http://bugzilla.gnome.org/show_bug.cgi?id=75635 |
|
|
46 | if [ "${x}" = "--reverse-deps" ] |
|
|
47 | then |
|
|
48 | reversedeps="yes" |
|
|
49 | fi |
|
|
50 | if [ `echo ${x} | grep "^--remove-internal-dep="` ] |
|
|
51 | then |
|
|
52 | removeinternaldep="yes" |
|
|
53 | deptoremove=`echo ${x} | sed -e 's/--remove-internal-dep=//'` |
|
|
54 | fi |
|
|
55 | # Only patch the ltmain.sh in ${S} |
|
|
56 | if [ "${x}" = "--shallow" ] |
|
|
57 | then |
|
|
58 | if [ -f ${S}/ltmain.sh ] |
|
|
59 | then |
|
|
60 | mylist="${S}" |
|
|
61 | else |
|
|
62 | mylist="" |
|
|
63 | fi |
|
|
64 | else |
|
|
65 | mylist="$(find_ltmain)" |
|
|
66 | fi |
|
|
67 | done |
|
|
68 | |
|
|
69 | for x in ${mylist} |
| 21 | do |
70 | do |
| 22 | cd ${x} |
71 | cd ${x} |
| 23 | einfo "Working directory: ${x}..." |
72 | einfo "Working directory: ${x}..." |
| 24 | dopatch="yes" |
73 | dopatch="yes" |
| 25 | |
74 | dotest="yes" |
|
|
75 | dorelink="yes" |
|
|
76 | dotmp="yes" |
|
|
77 | doportage="yes" |
|
|
78 | |
| 26 | for y in test_patch relink_patch portage_patch |
79 | for y in test_patch relink_patch tmp_patch portage_patch |
| 27 | do |
80 | do |
| 28 | if ! eval ${y} --test $>${T}/libtool.foo |
81 | if ! eval ${y} --test $>${T}/elibtool.log |
| 29 | then |
82 | then |
|
|
83 | case ${y} in |
|
|
84 | test_patch) |
|
|
85 | # non critical patch |
|
|
86 | dotest="no" |
|
|
87 | ;; |
|
|
88 | relink_patch) |
|
|
89 | # critical patch, but could be applied |
|
|
90 | if [ -z "$(grep -e "inst_prefix_dir" ltmain.sh)" ] && \ |
|
|
91 | [ "${portage}" = "no" ] |
|
|
92 | then |
|
|
93 | dopatch="no" |
|
|
94 | fi |
|
|
95 | dorelink="no" |
|
|
96 | ;; |
|
|
97 | tmp_patch) |
|
|
98 | # non critical patch |
|
|
99 | dotmp="no" |
|
|
100 | ;; |
|
|
101 | portage_patch) |
|
|
102 | # critical patch |
|
|
103 | if [ "${portage}" = "yes" ] |
|
|
104 | then |
|
|
105 | echo |
|
|
106 | eerror "Portage patch requested, but failed to apply!" |
|
|
107 | die |
|
|
108 | fi |
| 30 | dopatch="no" |
109 | dopatch="no" |
|
|
110 | doportage="no" |
|
|
111 | ;; |
|
|
112 | esac |
|
|
113 | fi |
|
|
114 | done |
|
|
115 | |
|
|
116 | # Only apply portage patch ... I think if other can apply, they should. |
|
|
117 | # if [ "${portage}" = "yes" ] |
|
|
118 | # then |
|
|
119 | # dotest="no" |
|
|
120 | # dorelink="no" |
|
|
121 | # dotmp="no" |
|
|
122 | # fi |
|
|
123 | |
|
|
124 | for y in test_patch relink_patch tmp_patch portage_patch |
|
|
125 | do |
|
|
126 | if [ "${dopatch}" = "yes" ] |
|
|
127 | then |
|
|
128 | case ${y} in |
|
|
129 | test_patch) |
|
|
130 | if [ "${dotest}" = "no" ] |
|
|
131 | then |
|
|
132 | continue |
|
|
133 | fi |
|
|
134 | ;; |
|
|
135 | relink_patch) |
|
|
136 | if [ "${dorelink}" = "no" ] |
|
|
137 | then |
|
|
138 | continue |
|
|
139 | fi |
|
|
140 | ;; |
|
|
141 | tmp_patch) |
|
|
142 | if [ "${dotmp}" = "no" ] |
|
|
143 | then |
|
|
144 | continue |
|
|
145 | fi |
|
|
146 | ;; |
|
|
147 | portage_patch) |
|
|
148 | if [ "${doportage}" = "no" ] |
|
|
149 | then |
|
|
150 | continue |
|
|
151 | fi |
|
|
152 | ;; |
|
|
153 | esac |
|
|
154 | |
|
|
155 | einfo "Applying libtool-${y/_patch/}.patch..." |
|
|
156 | eval ${y} $>${T}/elibtool.log |
|
|
157 | elif [ "${portage}" = "no" ] && [ "${reversedeps}" = "no" ] && [ "${removeinternaldep}" = "no" ] |
|
|
158 | then |
|
|
159 | # Sometimes ltmain.sh is in a subdirectory ... |
|
|
160 | if [ ! -f ${x}/configure.in -a ! -f ${x}/configure.ac ] |
|
|
161 | then |
|
|
162 | if [ -f ${x}/../configure.in -o -f ${x}/../configure.ac ] |
|
|
163 | then |
|
|
164 | cd ${x}/../ |
|
|
165 | fi |
|
|
166 | fi |
|
|
167 | |
|
|
168 | ewarn "Cannot apply any patch, running libtoolize..." |
|
|
169 | libtoolize --copy --force |
|
|
170 | cd ${x} |
| 31 | break |
171 | break |
| 32 | fi |
172 | fi |
| 33 | done |
173 | done |
| 34 | |
174 | |
| 35 | for y in test_patch relink_patch portage_patch |
|
|
| 36 | do |
|
|
| 37 | if [ "${dopatch}" = "yes" ] |
175 | if [ "${reversedeps}" = "yes" ] |
|
|
176 | then |
|
|
177 | if eval reversedeps_patch --test $>${T}/libtool.foo |
| 38 | then |
178 | then |
| 39 | einfo "Applying libtool-${y/_patch/}.patch..." |
179 | einfo "Applying libtool-reverse-deps.patch..." |
| 40 | eval ${y} $>${T}/libtool.foo |
180 | eval reversedeps_patch $>${T}/libtool.foo |
| 41 | else |
181 | else |
| 42 | libtoolize --copy --force |
182 | ewarn "Not applying libtool-reverse-deps.patch..." |
| 43 | break |
|
|
| 44 | fi |
183 | fi |
| 45 | done |
184 | fi |
|
|
185 | |
|
|
186 | if [ "${removeinternaldep}" = "yes" ] |
|
|
187 | then |
|
|
188 | if eval remove_internal_dep_patch $deptoremove --test $>${T}/libtool.foo |
|
|
189 | then |
|
|
190 | einfo "Applying remove-internal-dep.patch (removing $deptoremove)..." |
|
|
191 | eval remove_internal_dep_patch $deptoremove $>${T}/libtool.foo |
|
|
192 | else |
|
|
193 | ewarn "Not applying libtool-remove-internal-dep.patch..." |
|
|
194 | fi |
|
|
195 | fi |
| 46 | done |
196 | done |
|
|
197 | |
|
|
198 | if [ -f libtool ] |
|
|
199 | then |
|
|
200 | rm -f libtool |
|
|
201 | fi |
|
|
202 | |
|
|
203 | # We need to change the pwd back to $S, as we may be called in |
|
|
204 | # src_compile() |
|
|
205 | cd ${S} |
| 47 | } |
206 | } |
| 48 | |
207 | |
| 49 | # |
208 | # |
| 50 | # Returns all the directories containing ltmain.sh |
209 | # Returns all the directories containing ltmain.sh |
| 51 | # |
210 | # |
| … | |
… | |
| 79 | fi |
238 | fi |
| 80 | |
239 | |
| 81 | patch ${opts} -p0 <<-"ENDPATCH" |
240 | patch ${opts} -p0 <<-"ENDPATCH" |
| 82 | --- ltmain.sh.orig Wed Apr 3 01:19:37 2002 |
241 | --- ltmain.sh.orig Wed Apr 3 01:19:37 2002 |
| 83 | +++ ltmain.sh Sun May 26 19:50:52 2002 |
242 | +++ ltmain.sh Sun May 26 19:50:52 2002 |
| 84 | @@ -3940,9 +3940,39 @@ |
243 | @@ -3940,9 +3940,46 @@ |
| 85 | $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 |
244 | $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 |
| 86 | exit 1 |
245 | exit 1 |
| 87 | fi |
246 | fi |
| 88 | - newdependency_libs="$newdependency_libs $libdir/$name" |
247 | - newdependency_libs="$newdependency_libs $libdir/$name" |
| 89 | + # We do not want portage's install root ($D) present. Check only for |
248 | + # We do not want portage's install root ($D) present. Check only for |
| 90 | + # this if the .la is being installed. |
249 | + # this if the .la is being installed. |
| 91 | + if test "$installed" = yes; then |
250 | + if test "$installed" = yes && test "$D"; then |
| 92 | + mynewdependency_lib="`echo "$libdir/$name" |sed -e "s:${D}::g" -e 's://:/:g'`" |
251 | + eval mynewdependency_lib="`echo "$libdir/$name" |sed -e "s:$D::g" -e 's://:/:g'`" |
| 93 | + else |
252 | + else |
| 94 | + mynewdependency_lib="$libdir/$name" |
253 | + mynewdependency_lib="$libdir/$name" |
| 95 | + fi |
254 | + fi |
| 96 | + # Do not add duplicates |
255 | + # Do not add duplicates |
|
|
256 | + if test "$mynewdependency_lib"; then |
| 97 | + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`" |
257 | + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then |
| 98 | + then |
|
|
| 99 | + newdependency_libs="$newdependency_libs $mynewdependency_lib" |
258 | + newdependency_libs="$newdependency_libs $mynewdependency_lib" |
|
|
259 | + fi |
| 100 | + fi |
260 | + fi |
| 101 | + ;; |
261 | + ;; |
| 102 | + *) |
262 | + *) |
| 103 | + if test "$installed" = yes; then |
263 | + if test "$installed" = yes; then |
|
|
264 | + # Rather use S=WORKDIR if our version of portage supports it. |
|
|
265 | + # This is because some ebuild (gcc) do not use $S as buildroot. |
|
|
266 | + if test "$PWORKDIR"; then |
|
|
267 | + S="$PWORKDIR" |
|
|
268 | + fi |
| 104 | + # We do not want portage's build root ($S} present. |
269 | + # We do not want portage's build root ($S) present. |
| 105 | + if test -n "`echo $deplib |grep -e "${S}"`" |
270 | + if test -n "`echo $deplib |grep -e "$S"`" && test "$S"; then |
| 106 | + then |
271 | + mynewdependency_lib="" |
| 107 | + newdependency_libs="" |
|
|
| 108 | + # We do not want portage's install root ($D) present. |
272 | + # We do not want portage's install root ($D) present. |
| 109 | + elif test -n "`echo $deplib |grep -e "${D}"`" |
273 | + elif test -n "`echo $deplib |grep -e "$D"`" && test "$D"; then |
| 110 | + then |
|
|
| 111 | + mynewdependency_lib="`echo "$deplib" |sed -e "s:${D}::g" -e 's://:/:g'`" |
274 | + eval mynewdependency_lib="`echo "$deplib" |sed -e "s:$D::g" -e 's://:/:g'`" |
|
|
275 | + else |
|
|
276 | + mynewdependency_lib="$deplib" |
| 112 | + fi |
277 | + fi |
| 113 | + else |
278 | + else |
| 114 | + mynewdependency_lib="$deplib" |
279 | + mynewdependency_lib="$deplib" |
| 115 | + fi |
280 | + fi |
| 116 | + # Do not add duplicates |
281 | + # Do not add duplicates |
|
|
282 | + if test "$mynewdependency_lib"; then |
| 117 | + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`" |
283 | + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then |
| 118 | + then |
|
|
| 119 | + newdependency_libs="$newdependency_libs $mynewdependency_lib" |
284 | + newdependency_libs="$newdependency_libs $mynewdependency_lib" |
|
|
285 | + fi |
| 120 | + fi |
286 | + fi |
| 121 | ;; |
287 | ;; |
| 122 | - *) newdependency_libs="$newdependency_libs $deplib" ;; |
288 | - *) newdependency_libs="$newdependency_libs $deplib" ;; |
| 123 | esac |
289 | esac |
| 124 | done |
290 | done |
| … | |
… | |
| 126 | @@ -3975,6 +4005,10 @@ |
292 | @@ -3975,6 +4005,10 @@ |
| 127 | case $host,$output,$installed,$module,$dlname in |
293 | case $host,$output,$installed,$module,$dlname in |
| 128 | *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; |
294 | *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; |
| 129 | esac |
295 | esac |
| 130 | + # Do not add duplicates |
296 | + # Do not add duplicates |
| 131 | + if test "$installed" = yes; then |
297 | + if test "$installed" = yes && test "$D"; then |
| 132 | + install_libdir="`echo "$install_libdir" |sed -e "s:${D}::g" -e 's://:/:g'`" |
298 | + install_libdir="`echo "$install_libdir" |sed -e "s:$D::g" -e 's://:/:g'`" |
| 133 | + fi |
299 | + fi |
| 134 | $echo > $output "\ |
300 | $echo > $output "\ |
| 135 | # $outputname - a libtool library file |
301 | # $outputname - a libtool library file |
| 136 | # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP |
302 | # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP |
| 137 | ENDPATCH |
303 | ENDPATCH |
| … | |
… | |
| 248 | - continue |
414 | - continue |
| 249 | + exit 1 |
415 | + exit 1 |
| 250 | fi |
416 | fi |
| 251 | fi |
417 | fi |
| 252 | |
418 | |
|
|
419 | ENDPATCH |
|
|
420 | |
|
|
421 | retval=$? |
|
|
422 | |
|
|
423 | # This one dont apply clean to libtool-1.4.2a, so do it manually. |
|
|
424 | if [ "${1}" != "--test" ] && [ "${retval}" -eq 0 ] |
|
|
425 | then |
|
|
426 | cp ltmain.sh ltmain.sh.orig |
|
|
427 | sed -e 's:cd `pwd`; $SHELL $0 --mode=relink $libtool_args:cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@:' \ |
|
|
428 | ltmain.sh.orig > ltmain.sh |
|
|
429 | rm -f ltmain.sh.orig |
|
|
430 | fi |
|
|
431 | |
|
|
432 | return ${retval} |
|
|
433 | } |
|
|
434 | |
|
|
435 | tmp_patch() { |
|
|
436 | |
|
|
437 | local opts="" |
|
|
438 | |
|
|
439 | if [ "${1}" = "--test" ] |
|
|
440 | then |
|
|
441 | opts="--force --dry-run" |
|
|
442 | fi |
|
|
443 | |
|
|
444 | patch ${opts} -p0 <<-"ENDPATCH" |
|
|
445 | --- ltmain.sh Sun Aug 12 18:08:05 2001 |
|
|
446 | +++ ltmain-relinkable.sh Tue Aug 28 18:55:13 2001 |
| 253 | @@ -4782,7 +4829,11 @@ |
447 | @@ -4782,7 +4829,11 @@ |
| 254 | if test "$finalize" = yes && test -z "$run"; then |
448 | if test "$finalize" = yes && test -z "$run"; then |
| 255 | tmpdir="/tmp" |
449 | tmpdir="/tmp" |
| 256 | test -n "$TMPDIR" && tmpdir="$TMPDIR" |
450 | test -n "$TMPDIR" && tmpdir="$TMPDIR" |
| 257 | - tmpdir="$tmpdir/libtool-$$" |
451 | - tmpdir="$tmpdir/libtool-$$" |
| … | |
… | |
| 262 | + fi |
456 | + fi |
| 263 | if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : |
457 | if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : |
| 264 | else |
458 | else |
| 265 | $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 |
459 | $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 |
| 266 | ENDPATCH |
460 | ENDPATCH |
| 267 | |
|
|
| 268 | retval=$? |
|
|
| 269 | |
|
|
| 270 | # This one dont apply clean to libtool-1.4.2a, so do it manually. |
|
|
| 271 | if [ "${1}" != "--test" ] && [ "${retval}" -eq 0 ] |
|
|
| 272 | then |
|
|
| 273 | cp ltmain.sh ltmain.sh.orig |
|
|
| 274 | sed -e 's:cd `pwd`; $SHELL $0 --mode=relink $libtool_args:cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@:' \ |
|
|
| 275 | ltmain.sh.orig > ltmain.sh |
|
|
| 276 | rm -f ltmain.sh.orig |
|
|
| 277 | fi |
|
|
| 278 | |
|
|
| 279 | return ${retval} |
|
|
| 280 | } |
461 | } |
| 281 | |
462 | |
| 282 | test_patch() { |
463 | test_patch() { |
| 283 | |
464 | |
| 284 | local opts="" |
465 | local opts="" |
| … | |
… | |
| 581 | hardcode_libdirs= |
762 | hardcode_libdirs= |
| 582 | dep_rpath= |
763 | dep_rpath= |
| 583 | ENDPATCH |
764 | ENDPATCH |
| 584 | } |
765 | } |
| 585 | |
766 | |
|
|
767 | reversedeps_patch() { |
|
|
768 | |
|
|
769 | local opts="" |
|
|
770 | |
|
|
771 | if [ "${1}" = "--test" ] |
|
|
772 | then |
|
|
773 | opts="--force --dry-run" |
|
|
774 | fi |
|
|
775 | |
|
|
776 | patch ${opts} -p0 <<-"ENDPATCH" |
|
|
777 | --- ltmain.sh.orig Sat Mar 23 22:48:45 2002 |
|
|
778 | +++ ltmain.sh Sat Mar 23 22:45:38 2002 |
|
|
779 | @@ -1553,6 +1553,8 @@ |
|
|
780 | convenience="$convenience $ladir/$objdir/$old_library" |
|
|
781 | old_convenience="$old_convenience $ladir/$objdir/$old_library" |
|
|
782 | tmp_libs= |
|
|
783 | + # PKGW |
|
|
784 | + dependency_libs= |
|
|
785 | for deplib in $dependency_libs; do |
|
|
786 | deplibs="$deplib $deplibs" |
|
|
787 | case "$tmp_libs " in |
|
|
788 | @@ -1668,6 +1670,8 @@ |
|
|
789 | fi |
|
|
790 | |
|
|
791 | tmp_libs= |
|
|
792 | + #PKGW |
|
|
793 | + dependency_libs= |
|
|
794 | for deplib in $dependency_libs; do |
|
|
795 | case $deplib in |
|
|
796 | -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test |
|
|
797 | @@ -2081,7 +2085,7 @@ |
|
|
798 | -L*) |
|
|
799 | case " $tmp_libs " in |
|
|
800 | *" $deplib "*) ;; |
|
|
801 | - *) tmp_libs="$tmp_libs $deplib" ;; |
|
|
802 | + *) tmp_libs="$deplib $tmp_libs" ;; |
|
|
803 | esac |
|
|
804 | ;; |
|
|
805 | *) tmp_libs="$tmp_libs $deplib" ;; |
|
|
806 | ENDPATCH |
|
|
807 | } |
|
|
808 | |
|
|
809 | remove_internal_dep_patch() { |
|
|
810 | local opts="" |
|
|
811 | |
|
|
812 | if [ "${2}" = "--test" ] |
|
|
813 | then |
|
|
814 | opts="--force --dry-run" |
|
|
815 | fi |
|
|
816 | |
|
|
817 | patch ${opts} -p0 <<-ENDPATCH |
|
|
818 | --- ltmain.sh.orig 2002-11-01 19:56:50.000000000 -0600 |
|
|
819 | +++ ltmain.sh 2002-11-01 19:57:03.000000000 -0600 |
|
|
820 | @@ -4551,6 +4551,8 @@ |
|
|
821 | if test "\$installed" = yes && test "\$D"; then |
|
|
822 | install_libdir="\`echo "\$install_libdir" |sed -e "s:\$D::g" -e 's://:/:g'\`" |
|
|
823 | fi |
|
|
824 | + # Removing $1 from dependency_libs in .la |
|
|
825 | + dependency_libs=\`echo \$dependency_libs | \$Xsed -e 's%\([^ ]*lib${1}\.\(so\|la\|a\)\)\|\(-l${1}\)%%g'\` |
|
|
826 | \$echo > \$output "\\ |
|
|
827 | # \$outputname - a libtool library file |
|
|
828 | # Generated by \$PROGRAM - GNU \$PACKAGE \$VERSION\$TIMESTAMP |
|
|
829 | ENDPATCH |
|
|
830 | } |
|
|
831 | |