~lrn1986/stupidbuild/msys2-xc

« back to all changes in this revision

Viewing changes to src/msys/wget/pkgbuild.py

  • Committer: LRN
  • Date: 2015-03-25 16:02:51 UTC
  • Revision ID: lrn1986@gmail.com-20150325160251-hecdhgrbbfowxa91
Initial commit for the buildsystem rewrite

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python3
 
2
 
 
3
import sys
 
4
import subprocess
 
5
import os
 
6
 
 
7
from conf import *
 
8
 
 
9
sys.path.append (script_directory)
 
10
 
 
11
from build import cleanse_dir, check_tarball, get_tarball, link_tarball, unpack_tarball, patch, reconf, configure, make, split_debug, laremove, check, pack, symlinkify
 
12
 
 
13
def main ():
 
14
  cleanse_dir (source_directory, 'source')
 
15
  tarball_filename = os.path.join (download_directory, tarball)
 
16
  if not check_tarball (tarball_filename):
 
17
    if not get_tarball (tarball_uri, tarball_filename):
 
18
      return -1
 
19
  if not check_tarball (tarball_filename, cd):
 
20
    return -2
 
21
  link_tarball (tarball_filename, cd)
 
22
  if not unpack_tarball (tarball_filename, cd):
 
23
    return -3
 
24
  if not patch (patches_before_reconf, source_directory):
 
25
    return -4
 
26
 
 
27
  if not reconf (['autoreconf-2.69', '-fiv'], source_directory, {'AUTOPOINT': os.path.join (sysroot_directory + prefix, 'bin', 'autopoint'), 'gettext_datadir': os.path.join (sysroot_directory + prefix, 'share', 'gettext')}):
 
28
    return -5
 
29
 
 
30
  if not patch (patches_after_reconf, source_directory):
 
31
    return -6
 
32
 
 
33
  dash = target.find ('-')
 
34
  arch = target[:dash]
 
35
 
 
36
  cleanse_dir (build_directory, 'build')
 
37
 
 
38
  if not configure ([
 
39
      '--prefix=' + prefix,
 
40
      '--target=' + target,
 
41
      '--host=' + host,
 
42
      '--datarootdir=' + datarootdir,
 
43
      '--docdir=' + docdir,
 
44
      '--sbindir=' + sbindir,
 
45
      '--libexecdir=' + libexecdir,
 
46
      '--sysconfdir=' + sysconfdir,
 
47
      '--localstatedir=' + localstatedir,
 
48
      '--with-ssl=openssl',
 
49
      'am_cv_func_iconv_works=yes',
 
50
      'gl_cv_func_fcntl_f_dupfd_works=yes',
 
51
      'gl_cv_func_futimens_works=yes',
 
52
      'gl_cv_func_getopt_posix=yes',
 
53
      'gl_cv_func_mbrtowc_incomplete_state=yes',
 
54
      'gl_cv_func_mbrtowc_null_arg1=yes',
 
55
      'gl_cv_func_mbrtowc_null_arg2=yes',
 
56
      'gl_cv_func_mbrtowc_retval=yes',
 
57
      'gl_cv_func_mbrtowc_sanitycheck=yes',
 
58
      'gl_cv_func_memchr_works=yes',
 
59
      'gl_cv_func_mkdir_trailing_dot_works=yes',
 
60
      'gl_cv_func_mkdir_trailing_slash_works=yes',
 
61
      'gl_cv_func_open_slash=yes',
 
62
      'gl_cv_func_select_supports0=yes',
 
63
      'gl_cv_func_snprintf_retval_c99=yes',
 
64
      'gl_cv_func_snprintf_size1=yes',
 
65
      'gl_cv_func_stat_dir_slash=yes',
 
66
      'gl_cv_func_stat_file_slash=yes',
 
67
      'gl_cv_func_strchrnul_works=yes',
 
68
      'gl_cv_func_strerror_0_works=yes',
 
69
      'CFLAGS=' + CFLAGS,
 
70
      'CPPFLAGS=-I{}{}/include'.format (sysroot_directory, prefix),
 
71
      'CXXFLAGS=' + CFLAGS,
 
72
      'LDFLAGS=-L{}{}/lib'.format (sysroot_directory, prefix),
 
73
      'STRIP=true',
 
74
      ], source_directory, build_directory):
 
75
    return -7
 
76
 
 
77
  if not patch (patches_after_configure, source_directory):
 
78
    return -8
 
79
 
 
80
  if not patch (build_patches_after_configure, build_directory):
 
81
    return -9
 
82
 
 
83
  print ("Making")
 
84
  if not make ([], build_directory):
 
85
    return -10
 
86
 
 
87
  cleanse_dir (install_directory, 'install')
 
88
 
 
89
  print ("Installing")
 
90
  if not make (['install', 'DESTDIR={}'.format (install_directory)], build_directory):
 
91
    return -11
 
92
 
 
93
  if not os.path.exists (sysroot_directory) or not os.path.isdir (sysroot_directory):
 
94
    os.mkdir (sysroot_directory)
 
95
 
 
96
  print ("Installing into sysdir")
 
97
  if not make (['install', 'DESTDIR={}'.format (sysroot_directory)], build_directory):
 
98
    return -11
 
99
 
 
100
  if not check ():
 
101
    return -14
 
102
 
 
103
  if not laremove (install_directory):
 
104
    return -12
 
105
 
 
106
  if not laremove (sysroot_directory):
 
107
    return -13
 
108
 
 
109
  instprefix = install_directory + prefix
 
110
 
 
111
  rln = '{distr}-{name}.RELEASE_NOTES'.format (distr=distr, name=name)
 
112
  disdir = 'share/doc/MSYS2'
 
113
  rlndir = install_directory + prefix + '/' + disdir
 
114
  if os.path.exists (os.path.join (cd, rln)):
 
115
    try:
 
116
      os.makedirs (os.path.join (instprefix, disdir))
 
117
    except OSError:
 
118
      pass
 
119
    args = ['cp', '-f', os.path.join (cd, rln), os.path.join (rlndir, rln)]
 
120
    print ('" "'.join (args))
 
121
    r = subprocess.call (args)
 
122
    if r != 0:
 
123
      return r
 
124
 
 
125
  pkgdoc = 'share/doc/{name}/{version}'.format (name=name, version=version)
 
126
  try:
 
127
    os.makedirs (os.path.join (instprefix, pkgdoc))
 
128
  except OSError:
 
129
    pass
 
130
  for f in """
 
131
ChangeLog
 
132
AUTHORS
 
133
COPYING
 
134
NEWS
 
135
README
 
136
""".split ():
 
137
    cp_from = os.path.join (source_directory, f)
 
138
    cp_to = os.path.join (instprefix, pkgdoc, f)
 
139
    r = subprocess.call (['cp', '-rf', cp_from, cp_to])
 
140
    if r != 0:
 
141
      return r
 
142
 
 
143
  dash = target.find ('-')
 
144
  arch = target[:dash]
 
145
 
 
146
  if not split_debug (install_directory, target, prefix):
 
147
    return -12
 
148
 
 
149
  if not pack (cd, install_directory, [
 
150
    [
 
151
      'wget-{version}-{revision}-{distr}_{arch}-bin.tar.xz'.format (version=version, revision=revision, distr=distr, arch=arch),
 
152
      install_directory,
 
153
      '',
 
154
      [
 
155
        prefix[1:] + '/' + 'bin/wget.exe',
 
156
        'etc',
 
157
      ]
 
158
    ],
 
159
    [
 
160
      'wget-{version}-{revision}-{distr}_{arch}-dbg.tar.xz'.format (version=version, revision=revision, distr=distr, arch=arch),
 
161
      install_directory,
 
162
      '',
 
163
      [
 
164
        prefix[1:] + '/' + 'bin/wget.exe.dbg',
 
165
      ]
 
166
    ],
 
167
    [
 
168
      'wget-{version}-{revision}-{distr}_{arch}-lang.tar.xz'.format (version=version, revision=revision, distr=distr, arch=arch),
 
169
      install_directory,
 
170
      '',
 
171
      [
 
172
        prefix[1:] + '/' + 'share/locale',
 
173
      ]
 
174
    ],
 
175
    [
 
176
      'wget-{version}-{revision}-{distr}_{arch}-doc.tar.xz'.format (version=version, revision=revision, distr=distr, arch=arch),
 
177
      install_directory,
 
178
      '',
 
179
      [
 
180
        prefix[1:] + '/' + 'share/man',
 
181
        prefix[1:] + '/' + 'share/info/wget.info',
 
182
        prefix[1:] + '/' + disdir,
 
183
        prefix[1:] + '/' + pkgdoc,
 
184
      ]
 
185
    ],
 
186
    [
 
187
      'wget-{version}-{revision}-{distr}_{arch}-bld.tar.xz'.format (version=version, revision=revision, distr=distr, arch=arch),
 
188
      cd,
 
189
      '',
 
190
      [
 
191
        'pkgbuild.py',
 
192
        'conf.py',
 
193
        '{distr}-{name}.RELEASE_NOTES'.format (distr=distr, name=name),
 
194
        '{tarball}.sha512'.format (tarball=tarball),
 
195
      ] + [x[3:] for x,y in patches_before_reconf + patches_after_reconf + patches_after_configure + build_patches_after_configure]
 
196
    ],
 
197
    [
 
198
      'wget-{version}-{revision}-{distr}_{arch}-src.tar.xz'.format (version=version, revision=revision, distr=distr, arch=arch),
 
199
      cd,
 
200
      '',
 
201
      [
 
202
        'pkgbuild.py',
 
203
        'conf.py',
 
204
        '{distr}-{name}.RELEASE_NOTES'.format (distr=distr, name=name),
 
205
        '{tarball}.sha512'.format (tarball=tarball),
 
206
        '{tarball}'.format (tarball=tarball),
 
207
#        '--exclude=' + os.path.basename (source_directory) + '/.git',
 
208
#        os.path.basename (source_directory),
 
209
      ] + [x[3:] for x,y in patches_before_reconf + patches_after_reconf + patches_after_configure + build_patches_after_configure]
 
210
    ],
 
211
  ]):
 
212
    return -15
 
213
 
 
214
  if essential_directory is not None:
 
215
    p = subprocess.Popen (['tar', 'xJf', os.path.join (cd, 'wget-{version}-{revision}-{distr}_{arch}-bin.tar.xz'.format (version=version, revision=revision, distr=distr, arch=arch))], cwd=essential_directory)
 
216
    p.communicate ()
 
217
    if p.returncode != 0:
 
218
      return -16
 
219
 
 
220
  return 0
 
221
 
 
222
if __name__ == '__main__':
 
223
  sys.exit (main ())