scancpan: fix detection of native module
authorFrancois Perrad <fperrad@gmail.com>
Sun, 6 Sep 2015 08:32:50 +0000 (10:32 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 20 Sep 2015 13:14:10 +0000 (15:14 +0200)
When a module is native or depends of a native module, it must be
disabled for static builds via its Config.in

We detect native modules by looking at the filenames listed in the
MANIFEST. If there is a file which looks like it contains code that
much be compiled (e.g. .c, .h and so on...), then we exclude that
module (and its dependencies) from static builds.

That's what we tried to do so far, but failed when there was a
comment on the same line as the filename in the manifest, like so:
    foo-bar.c # Bla bla bla

Fix that by detecting either endof-line (as currently done) or
end-of-string.

For an example of failed build of perl-html-parser, see
http://autobuild.buildroot.net/results/128/128671dfa23d843698a63220c2fac1f44e1d5845/

[Thomas: use better commit log proposed by Yann E. Morin.]

Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/perl-html-parser/Config.in
package/perl-libwww-perl/Config.in
package/perl-mime-base64/Config.in
package/perl-time-hires/Config.in
support/scripts/scancpan

index afdd5237bb12b35843871ad11ad58607cf8c996b..8a725f1dbd451ed4c9adb7c12b6f6a05cd3d4290 100644 (file)
@@ -1,8 +1,12 @@
 config BR2_PACKAGE_PERL_HTML_PARSER
        bool "perl-html-parser"
+       depends on !BR2_STATIC_LIBS
        select BR2_PACKAGE_PERL_HTML_TAGSET
        help
          The HTML-Parser distribution is is a collection of modules that parse
          and extract information from HTML documents
 
          http://github.com/gisle/html-parser
+
+comment "perl-html-parser needs a toolchain w/ dynamic library"
+       depends on BR2_STATIC_LIBS
index 3db0070a40fae0de672f8f1dbbb51334baca839c..fc46bf1dff6b58779eb50c003589127314f71e5b 100644 (file)
@@ -1,5 +1,6 @@
 config BR2_PACKAGE_PERL_LIBWWW_PERL
        bool "perl-libwww-perl"
+       depends on !BR2_STATIC_LIBS
        select BR2_PACKAGE_PERL_ENCODE_LOCALE
        select BR2_PACKAGE_PERL_FILE_LISTING
        select BR2_PACKAGE_PERL_HTML_PARSER
@@ -16,3 +17,6 @@ config BR2_PACKAGE_PERL_LIBWWW_PERL
          The World-Wide Web library for Perl
 
          https://metacpan.org/release/libwww-perl
+
+comment "perl-libwww-perl needs a toolchain w/ dynamic library"
+       depends on BR2_STATIC_LIBS
index 7e4858f2803b7383c50e7678bc386d5e2d97c8ab..22563dd5add2267524d4b97d9a58cfb998370278 100644 (file)
@@ -1,7 +1,11 @@
 config BR2_PACKAGE_PERL_MIME_BASE64
        bool "perl-mime-base64"
+       depends on !BR2_STATIC_LIBS
        help
          This package contains a base64 encoder/decoder and a quoted-printable
          encoder/decoder.
 
          http://github.com/gisle/mime-base64
+
+comment "perl-mime-base64 needs a toolchain w/ dynamic library"
+       depends on BR2_STATIC_LIBS
index e10c18a0d2d5a2778ced7810093c5cddbd502ca2..37bad71d857f431d0894be5e581adc42f0803775 100644 (file)
@@ -1,6 +1,10 @@
 config BR2_PACKAGE_PERL_TIME_HIRES
        bool "perl-time-hires"
+       depends on !BR2_STATIC_LIBS
        help
          High resolution alarm, sleep, gettimeofday, interval timers
 
          http://search.cpan.org/dist/Time-HiRes/HiRes.pm
+
+comment "perl-time-hires needs a toolchain w/ dynamic library"
+       depends on BR2_STATIC_LIBS
index 1121212594f67b5929a59fd21da543b84b376ae1..a33ec8bf46f87e8ae187f3f3ef4f4c5fe2f838f0 100755 (executable)
@@ -534,7 +534,7 @@ sub is_xs {
     # This heuristic determines if a module is a native extension, by searching
     # some file extension types in the MANIFEST of the distribution.
     # It was inspired by http://deps.cpantesters.org/static/purity.html
-    return $manifest =~ m/\.(swg|xs|c|h|i)\n/;
+    return $manifest =~ m/\.(swg|xs|c|h|i)[\n\s]/;
 }
 
 sub find_license_files {