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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY dhfirstname "Neil">
<!ENTITY dhsurname "Williams">
<!ENTITY dhusername "Neil Williams">
<!ENTITY dhemail "codehelp@debian.org">
<!ENTITY dhsection "1">
<!ENTITY dhtitle "perl-cross-staging User Manual">
<!ENTITY dhucpackage "PERL-CROSS-STAGING">
<!ENTITY dhpackage "perl-cross-staging">
]>
<refentry>
<refentryinfo>
<title>&dhtitle;</title>
<productname>&dhpackage;</productname>
<authorgroup>
<author>
<firstname>&dhfirstname;</firstname>
<surname>&dhsurname;</surname>
<contrib>Wrote this manpage for the Debian system.</contrib>
<address>
<email>&dhemail;</email>
</address>
</author>
</authorgroup>
<copyright>
<year>2012</year>
<holder>&dhusername;</holder>
</copyright>
<legalnotice>
<para>This manual page was written for the Debian system
(and may be used by others).</para>
<para>Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU General Public License,
Version 2 or (at your option) any later version published by
the Free Software Foundation.</para>
<para>On Debian systems, the complete text of the GNU General Public
License can be found in
<filename>/usr/share/common-licenses/GPL</filename>.</para>
</legalnotice>
</refentryinfo>
<refmeta>
<refentrytitle>&dhucpackage;</refentrytitle>
<manvolnum>&dhsection;</manvolnum>
</refmeta>
<refnamediv>
<refname>&dhpackage;</refname>
<refpurpose>Long term maintenance of cross-build support for the Debian configuration of perl</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>&dhpackage;</command>
</cmdsynopsis>
<para><command>&dhpackage;</command> takes no commands or options.</para>
</refsynopsisdiv>
<refsect1 id="description">
<title>DESCRIPTION</title>
<para><command>&dhpackage;</command> supports the long term maintenance
of cross-build support for the Debian configuration of perl.</para>
<para><command>&dhpackage;</command> assists in the producuction of
config files from the current perl build tree to update existing
perl-cross-debian support by staging native builds of perl patched
to support <command>&dhpackage;</command>.
</para>
<para>Config files generated by <command>&dhpackage;</command> need
substantial manual editing and updating before being usable for a
cross-build or inclusion into <command>perl-cross-debian</command>.
</para>
</refsect1>
<refsect1 id="updating">
<title>Updating cross config files</title>
<para>Each new version of perl introduces and rearranges the existing
config values and the config.h and config.sh files for each variant
need to be updated.
</para>
<para>Some sections simply need to be moved around within the file
for easier comparison, some sections will be new (and may need
adjustment if the new values are architecture-sensitive) and some
may need to be removed. Some values include the version string of
the perl version being built. Some values include the name of the
compiler or preprocessor. There are values which specify the original
build directory and these need to be replaced with PERL_BUILD_DIR:
</para>
<programlisting>
installarchlib='PERL_BUILD_DIR/debian/tmp/usr/lib/perl/5.16'
</programlisting>
<para>Missing values will be easiest to spot as these cause the
build to fail with invalid preprocessing directives.
</para>
<programlisting>
config.h:2229:3: error: invalid preprocessing directive #HAS_STATIC_INLINE
config.h:2766:3: error: invalid preprocessing directive #HAS_SOCKADDR_SA_LEN
config.h:2773:3: error: invalid preprocessing directive #HAS_SIN6_SCOPE_ID
config.h:3614:3: error: invalid preprocessing directive #HAS_PRCTL
config.h:3615:3: error: invalid preprocessing directive #HAS_PRCTL_SET_NAME
</programlisting>
<para>Probably the biggest problem is reorganisation of the files
which arises because the files are all generated, rather than edited.
This can easily lead to sections being added in one place of the file
and being repeated (with differing values) elsewhere. Use a comparison
tool like <command>meld</command> to push snippets in and out of the
staged files with usable previous/next search/find regexp support.
</para>
<para>Once one of the variant files has been updated, merge the
changes into the other staged variants before comparing those with
the files from the previous version of perl.</para>
<para>Old perl version strings also need to be updated.</para>
</refsect1>
<refsect1 id="architecture">
<title>Architecture</title>
<para>Typically, <command>&dhpackage;</command> is run for the native
architecture on the expectation that most of the updates to the staged
files will include changes for the cross architecture. e.g. updates for
5.16.2 were prepared by staging amd64 and porting the updates into
the cross architecture files for 5.14.2.
</para>
<para><command>&dhpackage;</command> does support attempting to stage
a cross build but this has not been tested. Please report success or
failure.</para>
</refsect1>
<refsect1 id="upstream">
<title>Upstream support</title>
<para>Note that work is ongoing to get perl cross-building upstream and
this is not complete. <command>&dhpackage;</command> will need changes
once this work is complete. The aim is to make it easier to obtain the
configuration value cache for architectures where real hardware or an
emulation model can be accessed over a network. This work takes place
at https://github.com/codehelp/perl/tree/jrobinson/configure-for-cross
which is intermittently pulled into the main cross-configure branch at
https://github.com/castaway/perl/tree/jrobinson/configure-for-cross
</para>
</refsect1>
<refsect1 id="bugs">
<title>BUGS</title>
<para>Currently <command>&dhpackage;</command> does not substitute the
working directory for PERL_BUILD_DIR in the .sh scripts - this is left
as one of the manual steps required before including the generated
files into <command>perl-cross-debian</command>.
</para>
</refsect1>
</refentry>
|