File: perl-cross-staging.1.xml

package info (click to toggle)
perl-cross-debian 0.0.5
  • links: PTS, VCS
  • area: main
  • in suites: buster, jessie, jessie-kfreebsd, stretch
  • size: 2,932 kB
  • ctags: 190
  • sloc: sh: 15,846; makefile: 1,269; ansic: 846; xml: 408; perl: 159
file content (142 lines) | stat: -rw-r--r-- 6,534 bytes parent folder | download | duplicates (2)
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>