summaryrefslogtreecommitdiff
blob: a12b7730fe89f65be8ad624d3d50766b8d5e724d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

src_prepare_update_patchlevel_h() {
	# Copied and modified from debian:
	# Copyright 2011 Niko Tyni
	# This program is free software; you can redistribute it and/or modify
	# it under the same terms as Perl itself.
	local patchdir="${WORKDIR}/patches"
	local prefix

	[[ -f ${patchdir}/series ]] || return 0

while read patch
do
	patchname=$(echo $patch | sed 's/\.diff$//')
	< $patchdir/$patch sed -e '/^Subject:/ { N; s/\n / / }' | sed -n -e '

	# massage the patch headers
	s|^Bug: .*https\?://rt\.perl\.org/.*id=\(.*\).*|[perl #\1]|; tprepend;
	s|^Bug: .*https\?://rt\.cpan\.org/.*id=\(.*\).*|[rt.cpan.org #\1]|; tprepend;
	s|^Bug-Gentoo: ||; tprepend;
	s/^\(Subject\|Description\): //; tappend;
	s|^Origin: .*http://perl5\.git\.perl\.org/perl\.git/commit\(diff\)\?/\(.......\).*|[\2]|; tprepend;

	# post-process at the end of input
	$ { x;
		# include the version number in the patchlevel.h description (if available)
		s/List packaged patches/&'" for ${PF}(#${PATCH_VER})"'/;

		# escape any backslashes and double quotes
		s|\\|\\\\|g; s|"|\\"|g;

		# add a prefix
		s|^|\t,"'"$prefix$patchname"' - |;
		# newlines away
		s/\n/ /g; s/  */ /g;
		# add a suffix
		s/ *$/"/; p
	};
	# stop all processing
	d;
	# label: append to the hold space
	:append H; d;
	# label: prepend to the hold space
	:prepend x; H; d;
	'
done < "${WORKDIR}"/patches/series > "${S}"/patchlevel-gentoo.h
}

eblit-perl-src_prepare() {
	local patch
	EPATCH_OPTS+=" -p1"
	einfo "Applying patches from ${MY_P}-${PATCH_VER} ..."
	while read patch ; do
		EPATCH_SINGLE_MSG="  ${patch} ..."
		epatch "${WORKDIR}"/patches/${patch}
	done < "${WORKDIR}"/patches/series

	src_prepare_update_patchlevel_h

	# pod/perltoc.pod fails
	# lib/ExtUtils/t/Embed.t fails
	if ! tc-is-static-only ; then
		ln -s ${LIBPERL} libperl$(get_libname ${SHORT_PV}) || die
		ln -s ${LIBPERL} libperl$(get_libname ) || die
	fi
}