commit: 4e08efb7ee592458fe84a1a7a716a06498bbc66c
parent a214a5a51575819aa5f5e4d729eba0d3b054c03d
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Wed, 17 Mar 2021 16:16:29 +0100
gstreamer-meson.eclass: Port _gstreamer_get_target_filename script to perl
Diffstat:
1 file changed, 27 insertions(+), 16 deletions(-)
diff --git a/eclass/gstreamer-meson.eclass b/eclass/gstreamer-meson.eclass
@@ -120,6 +120,7 @@ RDEPEND="
 BDEPEND="
 	>=sys-apps/sed-4
 	virtual/pkgconfig
+	virtual/perl-JSON-PP
 "
 
 # Export common multilib phases.
@@ -237,26 +238,36 @@ gstreamer_multilib_src_configure() {
 # @FUNCTION: _gstreamer_get_target_filename
 # @INTERNAL
 # @DESCRIPTION:
-# Extracts build and target filenames from meson-data for given submatch
+# Looks for first argument being present as a substring in install targets
+# Got ported from python to perl for greater language-stability
 _gstreamer_get_target_filename() {
-	cat >"${WORKDIR}/_gstreamer_get_target_filename.py" <<"EOF"
-import json
-import sys
-
-with open("meson-info/intro-targets.json", "r") as targets_file:
-	data = json.load(targets_file)
-
-for i in range(len(data)):
-	target = data[i]
-	if target['installed']:
-		if sys.argv[1] in target['filename'][0]:
-			print(target['filename'][0] + ':' + target['install_filename'][0])
+	cat >"${WORKDIR}/_gstreamer_get_target_filename.pl" <<"EOF"
+#!/usr/bin/env perl
+use strict;
+use utf8;
+use JSON::PP;
+
+open(my $targets_file, '<:encoding(UTF-8)', 'meson-info/intro-targets.json') || die $!;
+my $data = decode_json <$targets_file>;
+close($targets_file) || die $!;
+
+if(!$ARGV[0]) {
+	die "Requires a target as argument";
+}
+
+foreach my $target (@{$data}) {
+	if($target->{'installed'}
+		and (index($target->{'filename'}[0], $ARGV[0]) != -1)
+	) {
+		printf "%s:%s\n", $target->{'filename'}[0], $target->{'install_filename'}[0];
+	}
+}
 EOF
 
-	chmod +x "${WORKDIR}/_gstreamer_get_target_filename.py" || die
+	chmod +x "${WORKDIR}/_gstreamer_get_target_filename.pl" || die
 
-	${EPYTHON} "${WORKDIR}/_gstreamer_get_target_filename.py" $@ \
-		|| die "Failed to extract target filenames from meson-data"
+	perl "${WORKDIR}/_gstreamer_get_target_filename.pl" $@ \
+		|| die "Failed to extract target filenames from meson-info"
 }
 
 # @FUNCTION: gstreamer_multilib_src_compile