Bug 6978 - Fails ABI check on QNX because perl cannot be found
Summary: Fails ABI check on QNX because perl cannot be found
Status: RESOLVED FIXED
Alias: None
Product: TALLOC
Classification: Unclassified
Component: libtalloc (show other bugs)
Version: unspecified
Hardware: x86 Other
: P3 normal
Target Milestone: ---
Assignee: Simo Sorce
QA Contact: Samba QA Contact
URL: http://build.samba.org/?function=View...
Keywords:
Depends on:
Blocks:
 
Reported: 2009-12-09 10:24 UTC by Matt Kraai (mail address dead)
Modified: 2011-10-26 13:20 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Matt Kraai (mail address dead) 2009-12-09 10:24:56 UTC
talloc's ABI check fails on my QNX system:

ABI checks:
./script/abi_checks.sh[62]: ./script/mksigs.pl: No such file or directory
exports check: OK
--- talloc.signatures	2009-10-14 08:31:04.000000000 -0700
+++ talloc.signatures.check	2009-12-07 20:05:38.000000000 -0800
@@ -1,62 +0,0 @@
-char *talloc_asprintf (const void *, const char *, ...);
-char *talloc_asprintf_append (char *, const char *, ...);
-char *talloc_asprintf_append_buffer (char *, const char *, ...);
-char *talloc_strdup (const void *, const char *);
-char *talloc_strdup_append (char *, const char *);
-char *talloc_strdup_append_buffer (char *, const char *);
-char *talloc_strndup (const void *, const char *, size_t);
-char *talloc_strndup_append (char *, const char *, size_t);
-char *talloc_strndup_append_buffer (char *, const char *, size_t);
-char *talloc_vasprintf (const void *, const char *, va_list);
-char *talloc_vasprintf_append (char *, const char *, va_list);
-char *talloc_vasprintf_append_buffer (char *, const char *, va_list);
-const char *talloc_get_name (const void *);
-const char *talloc_parent_name (const void *);
-const char *talloc_set_name (const void *, const char *, ...);
-int _talloc_free (void *, const char *);
-int talloc_increase_ref_count (const void *);
-int talloc_is_parent (const void *, const void *);
-int talloc_unlink (const void *, void *);
-int talloc_version_major (void);
-int talloc_version_minor (void);
-size_t talloc_get_size (const void *);
-size_t talloc_reference_count (const void *);
-size_t talloc_total_blocks (const void *);
-size_t talloc_total_size (const void *);
-void *_talloc (const void *, size_t);
-void *_talloc_array (const void *, size_t, unsigned int, const char *);
-void *_talloc_get_type_abort (const void *, const char *, const char *);
-void *_talloc_memdup (const void *, const void *, size_t, const char *);
-void *_talloc_move (const void *, const void *);
-void *_talloc_realloc (const void *, void *, size_t, const char *);
-void *_talloc_realloc_array (const void *, void *, size_t, unsigned int, const char *);
-void *_talloc_reference_loc (const void *, const void *, const char *);
-void *_talloc_steal_loc (const void *, const void *, const char *);
-void *_talloc_zero (const void *, size_t, const char *);
-void *_talloc_zero_array (const void *, size_t, unsigned int, const char *);
-void *talloc_autofree_context (void);
-void *talloc_check_name (const void *, const char *);
-void *talloc_find_parent_byname (const void *, const char *);
-void *talloc_init (const char *, ...);
-void *talloc_named (const void *, size_t, const char *, ...);
-void *talloc_named_const (const void *, size_t, const char *);
-void *talloc_parent (const void *);
-void *talloc_pool (const void *, size_t);
-void *talloc_realloc_fn (const void *, void *, size_t);
-void *talloc_reparent (const void *, const void *, const void *);
-void _talloc_set_destructor (const void *, int (*) (void *));
-void talloc_disable_null_tracking (void);
-void talloc_enable_leak_report (void);
-void talloc_enable_leak_report_full (void);
-void talloc_enable_null_tracking (void);
-void talloc_enable_null_tracking_no_autofree (void);
-void talloc_free_children (void *);
-void talloc_report (const void *, FILE *);
-void talloc_report_depth_cb (const void *, int, int, void (*) (const void *, int, int, int, void *), void *);
-void talloc_report_depth_file (const void *, int, int, FILE *);
-void talloc_report_full (const void *, FILE *);
-void talloc_set_abort_fn (void (*) (const char *));
-void talloc_set_log_fn (void (*) (const char *));
-void talloc_set_log_stderr (void);
-void talloc_set_name_const (const void *, const char *);
-void talloc_show_parents (const void *, FILE *);
WARNING: possible ABI change detected in signatures!
make: *** [abi_checks] Error 1

The shebang line of script/mksigs.pl contains /usr/bin/perl, which doesn't exist on my system.  Perl is installed as /usr/local/bin/perl.

This problem also appears to apply to tdb and tevent.
Comment 1 Simo Sorce 2009-12-09 10:32:45 UTC
Not sure how we would go fixing it.
/usr/bin/perl is the standard place afaik.
Comment 2 Matt Kraai (mail address dead) 2009-12-09 11:03:24 UTC
(In reply to comment #1)
> Not sure how we would go fixing it.
> /usr/bin/perl is the standard place afaik.

There seem to be at least two ways to do it:

 * Use the AC_SAMBA_PERL macro from m4/check_perl.m4 to find perl and then generate the script using the correct path.
 * Use "#! /usr/bin/env perl" on the shebang line.

Do you have a preference?
Comment 3 Stefan Metzmacher 2010-01-05 01:20:51 UTC
We should detect perl in configure
and then let make call $PERL script/mksigs.pl
Comment 4 Stefan Metzmacher 2011-10-26 13:20:29 UTC
talloc uses waf now