summaryrefslogtreecommitdiffstats
path: root/NEWS
blob: 46c51d16324833aefa2cb25aed69e5fae9e473b3 (plain)
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
opkbuild version 4.2.2+dev
--------------------------

Released: ????-??-??

Utilities:

  * ob-gencontrol now automatically lists the binary package that
    provides source package documentation as a dependency (with version
    restrictions) of all other binary packages built from the same
    source package.

libopkbuild:

  * ProteanOS source package versions may now contain epochs.  This
    complies with the latest draft of SPF 2.0.
  * A new ob_clean_name() function has been added.
    ob_get_binary_packages() no longer complains about duplicate "clean"
    binary package names such as "libc-1" and "libc++.1".  This will
    allow SPF 2.0 to remove the restriction on "binary package clean
    names".

Build system:

  * The test suite summary is fixed, after being broken by GNU Automake
    since version 1.16.3.

opkbuild version 4.2.2
----------------------

Released: 2021-01-02

Utilities:

  * ob-buildopk now sets the modification time of the "control.tar.gz"
    and "data.tar.gz" files after compression rather than before,
    because BusyBox's gzip doesn't preserve modification times.
  * ob-buildenv now adds "-ffile-prefix-map" options to CFLAGS and
    CXXFLAGS.  It also now sets "TZ='UTC0'" and "LC_ALL='C'".
  * ob-gencontrol now reduces and normalizes binary package dependencies
    after substituting variables.  Otherwise, substitution variables may
    contain dependency restrictions or newline characters that are
    passed through to the binary package's control file.

libopkbuild:

  * ob_iso8601_gmtime() and ob_touch_t_gmtime() no longer trigger an
    infinite loop when passed times on January 1.  This time bomb broke
    ob-buildopk one day every year.

Locales:

  * "C" and "POSIX" locales have been added.  They are identical to the
    "en_US" locale.

opkbuild version 4.2.1
----------------------

Released: 2020-12-08

"Now winterized to prevent freezing in December!"

Utilities:

  * ob-gencontrol now strips newlines from "Build-Depends" fields
    instead of generating invalid control files.  All spacing of
    dependency control fields is now normalized using ob_parse_dep().

libopkbuild:

  * ob_iso8601_gmtime() and ob_touch_t_gmtime() no longer trigger an
    infinite loop when passed times in December.  This time bomb
    introduced in opkbuild version 4.1.1 broke ob-buildopk one month
    every year.

opkbuild version 4.2.0
----------------------

Released: 2020-07-10

The major new features in this version are the utilization of package
archive sections and the architecture qualification of the names of
coinstallable packages, both necessary for multiarch (and therefore
cross building) in ProteanOS.

Utilities:

  * ob-buildopk now correctly checks for the BusyBox tar reverse
    ordering bug.
  * ob-gencontrol now generates a "Format" field to indicate the source
    package format version.
  * ob-gencontrol now generates a "Section" field when defined for a
    binary package.
  * ob-genchanges now organizes source packages into section "src"
    instead of "base".
  * ob-genchanges now organizes binary packages into sections specified
    by "Section" field when present.
  * Names of packages in certain sections ("lib" on ProteanOS) are now
    qualified with their host architectures (in the form
    "<pkg>:<arch>"):
    - ob-installdocs qualifies names in package documentation
      directories.
    - ob-gencontrol qualifies names in "Package" fields.
    - ob-buildopk and ob-genchanges qualify names in "*.opk" file names.
  * ob-buildopk no longer sets the owner and group of all data files to
    0:0, as done since version 4.1.0.  This is not expected to change
    file owners or groups in any ProteanOS packages at this time,
    because:
    - oh-fixperms (used in most packages) also sets owners and groups
    - "build" makefile "install" targets are run with (fake) superuser
      privileges.
  * opkbuild now runs the "build" makefile's "install" target and all
    ob-* commands under the same (fake) superuser environment.  This was
    the behavior in versions 3.0.0-alpha1 through 3.0.0-beta7.  Since
    version 4.0.0, commands were run in separate (fake) superuser
    environments, which may not preserve superuser ownership of files.
  * Source package names are now prefixed with "src:" instead of "src-".
    pro-archman has supported this in its package name hashing since
    version 2.0.0.
  * With ob_get_binary_packages() becoming always pure (see below), all
    utilities now scan the file system for binary packages only once.

libopkbuild:

  * ob_get_source_parameter() now supports a "Format" field to get the
    source package formate version.
  * An optional "Section" control field has been added to source package
    format 2.x.
  * The modification time in manual pages is now parsed and formatted
    correctly.
  * New functions ob_validate_section() and ob_qualify_package_name()
    have been added.
  * ob_get_binary_packages() is now always pure (without side effects
    that would preclude use in a subshell environment).  Side effects
    have been factored out into a new internal function called by
    ob_init_package().

opkbuild version 4.1.4
----------------------

Released: 2019-08-04

The "this time it'll work" release.

Utilities:

  * ob-buildopk now correctly checks for the "touch" utility's "-h"
    option.  Apologies for the noise.

libopkbuild:

  * Validation of ProteanOS source package versions has been relaxed
    to allow for uploads of new upstream versions to non-trunk
    distributions (like tzdata 2019a-0+rs1~1) and extended to allow
    backports.  This complies with the latest draft of SPF 2.0.

opkbuild version 4.1.3
----------------------

Released: 2019-08-04

Utilities:

  * ob-buildopk now checks for a bug in BusyBox versions before 1.22.0
    that causes tar to add in reverse order entries listed on standard
    input with the -T option.  This bug causes packages to fail to
    install and uninstall cleanly due to data files being stored after
    the directories that contain them.  This bug was exposed by changes
    in opkbuild version 4.1.0.
  * ob-buildopk now checks for the "touch" utility's "-h" option at run
    time instead of configure checking for it at build time.  This will
    allow ob-buildopk to detect and make use of changes to BusyBox's
    configuration.

opkbuild version 4.1.2
----------------------

Released: 2019-06-24

Utilities:

  * ob-gencontrol now actually populates the source package field
    "Binary" added in version 4.1.0.
  * opkbuild now supports commands with arguments as arguments to the
    "-r" option, for example "-r 'env -i fakeroot'".

libopkbuild:

  * Binary package parameters are stored internally now with fewer
    conflicts.  Specifically, binary package names such as
    "libncurses.6" and "libncurses++.6" no longer conflict, because the
    non-alphanumeric parts of the names are different lengths.
  * An unbound variable that could cause ob_get_binary_parameter() to
    fail has been fixed.  The utilities called ob_get_binary_parameter()
    after setting a variable of the same name, so the bug went
    unnoticed.
  * ob_get_binary_parameter() is now covered by the test suite.

Build system:

  * configure now checks the shell for support for the "local" keyword
    and 64-bit arithmetic.

opkbuild version 4.1.1
----------------------

Released: 2019-06-18

Utilities:

  * ob-buildopk now uses the "touch" utility's "-t" option instead of
    "-d".  Both are required by POSIX, but BusyBox supports only the
    argument format of the former.

libopkbuild:

  * A new function ob_touch_t_gmtime() has been added.

opkbuild version 4.1.0
----------------------

Released: 2019-06-18

The "build-dependency hell and determinism" release.

Utilities:

  * opkbuild now sets the standardized "SOURCE_DATE_EPOCH" environment
    variable to assist in making builds reproducible.  See specification
    at <https://reproducible-builds.org/specs/source-date-epoch/>.
  * ob-buildopk now strives to build reproducible opk archives.
    Specifically, archive and member modification times are set to a
    package's changelog date, owners and groups are set to 0, and file
    ordering is now deterministic.  Setting modification times of
    symbolic links requires a "touch" utility that accepts the non-
    standard "-h" option (supported in BusyBox 1.22.0 and later);
    without it, packages with symbolic links won't be fully
    reproducible.
  * ob-gencontrol now generates source package control files with
    "Binary" and "Build-Depends" fields.
  * ob-installplatconf now supports platconf directories with upstream
    versions containing pattern matching notation (e.g. "foo_1.*").
    This complies with the latest draft of SPF 2.0.
  * ob-installplatconf is now covered by the test suite.

libopkbuild:

  * New functions ob_rfc822_mktime() and ob_iso8601_gmtime() have been
    added.
  * ob_set_source_substvar(), ob_set_binary_substvar(), and
    ob_substvars() are now covered by the test suite.
  * ob_get_system_path() with the "platconf" path_id now accepts a
    single "plat" argument.  The three-argument form is now deprecated.
  * ob_get_system_path() with the "buildflags" or "platconf" path_id now
    accepts an "OB_TEST_DATADIR" to override the data directory prefix.

Build system:

  * configure now checks for fakeroot, touch (preferably with the "-h"
    option), tar (with the "-T" and "--no-recursion" options), and gzip.

Documentation:

  * The manual is now called "OPK Build System" instead of the ambiguous
    "Distribution Build System".

opkbuild version 4.0.2
----------------------

Released: 2019-04-03

The "bug fixes break my workflow" release.

Bug fixes and minor changes:

  * Recent versions of opkg (and opkg-lede) fix the previously reversed
    exit status of the check-versions subcommand.  ob-checkbuilddeps
    now detects whether the exit status is reversed, to support build
    dependency version comparisons with any version of opkg (or
    opkg-lede).
  * Plus signs are now allowed in ProteanOS source package upstream
    version strings, and minus signs are no longer allowed.  This
    complies with the latest draft of SPF 2.0.

opkbuild version 4.0.1
----------------------

Released: 2019-04-02

Bug fixes and minor changes:

  * Dates in manual pages are now generated correctly, regardless of the
    output formatting of the ls command at build time.
  * configure no longer checks for make.  This was needed for mksysconf,
    which was removed in version 4.0.0.
  * Substitution variables are now correctly set for binary packages
    with non-alphanumeric characters in their names.  Unsanitized data
    was passed to eval, however it was first validated to not contain
    characters such as whitespace and it was interpolated into a string
    that couldn't yield a command name that would normally exist on any
    system.

opkbuild version 4.0.0
----------------------

Released: 2019-03-18

This is a major new release of opkbuild.  Major user-facing changes
include xz decompression and binary package substitution variables.
There are also many behind-the-scenes improvements to code quality,
safety, and test suite coverage.

Trivia: Since opkbuild was part of opkhelper in versions up to and
including the incomplete and unreleased 2.0.0, and since version 3.0.0
never officially left "beta" status, version 4.0.0 is technically the
first released version of opkbuild in its seven-year history.

Utilities:

  * ob-unpacksource now supports decompression of xz-compressed upstream
    archives.
  * ob-gencontrol now substitutes variables from "<binpkg>.substvars"
    files in the build work area, enabling new use cases such as
    automatic shared library dependencies.
  * ob-applypatches now tracks and skips applied patches, instead of
    re-running the patch command and throwing an error.
  * Manual pages for all utilities have been updated/written and are now
    built and installed for the first time since opkhelper 1.0.0.
  * Utilities can now be run in-place without installation by setting
    libopkbuild's OB_LIB_BUILDDIR and OB_EXE_BUILDDIR environment
    variables to the "locale" directory in the build directory.
  * All utilities except ob-checkbuilddeps and ob-installplatconf are
    now covered by the test suite.

libopkbuild:

  * libopkbuild's "shared object version" has been bumped to 2 to
    reflect a new incompatible API.
  * libopkbuild now aborts the program, instead of just returning 125
    if any function is called with missing arguments.
  * The following functions have been removed from the libopkbuild API:
    - ob_match_arch() -- use ob_arch_is_concerned() instead
    - ob_match_plat() -- use ob_plat_is_concerned() instead
    - ob_parse_package_metadata() -- merged into ob_init_package()
    - ob_set_locale_path() -- set OB_LIB_BUILDDIR and/or OB_EXE_BUILDDIR
      environment variables to load localized messages from a build
      directory
    - ob_summarize_package_arch() -- was an unimplemented stub
    - ob_summarize_package_plat() -- was an unimplemented stub
    - ob_use() -- libopkbuild modules are now "linked" together into one
      library file, so this function is no longer needed
  * ob_set_substvar() has been renamed to ob_set_source_substvar(), a
    new function ob_set_binary_substvar() has been added, and
    ob_substvars() now has an optional "package" operand.
  * ob_parse_changelog() and ob_parse_control() now pass arguments to
    user callbacks instead of setting global variables.
  * Option letters have changed for ob_parse_dep(), ob_reduce_deps(),
    and ob_get_binary_packages().
  * All libopkbuild functions are now documented in manual pages
    generated from inline comments.
  * Test suite coverage has improved slightly.

Build system:

  * The build system is now generated by GNU Autoconf and Automake.
  * libopkbuild is now distributed as a sort of shared library object,
    "linked" by the shld linker tool.  By default, it is installed into
    "/usr/local/share/sh/".
  * The test suite now uses the Test Anything Protocol and Automake's
    TAP driver.
  * The mksysconf tool (used to generate "proteanos_arch" and
    "proteanos_plat" system configuration files for testing opkbuild)
    has been removed.

Bug fixes and minor changes:

  * A bug in the option parsing of ob_parse_dep(), ob_reduce_deps(),
    ob_parse_version(), ob_parse_package_metadata(), and
    ob_get_binary_packages() that affects GNU Bash and possibly other
    shells has been fixed.
  * A bug in opkbuild that would ignore errors from the "build"
    makefile's "build" target has been fixed.
  * ob_set_substvar()'s (now ob_set_source_substvar()'s) return value on
    success has been fixed.
  * ob-gencontrol now drops trailing commas and spaces in dependencies.
  * ob-installdocs now correctly handles "docs" file lines with
    destinations omitted.
  * Underscores are no longer allowed in substitution variable names, in
    stricter compliance with SPF 2.0.
  * Code quality has been improved: eval commands are now safer against
    mistakes in input validation/escaping, echo commands have been
    replaced with printf and here-documents, errors are handled (making
    the shell "-e" option safe), no undefined variables are expanded
    (making the shell "-u" option safe), obselescent [ (test) command
    options have been replaced, commands are protected from variable
    arguments beginning with "-", and printf commands are protected
    against variable format strings that might contain "%".

Legal:

  * The minimum version of the GNU General Public License has been
    bumped to version 3.

opkbuild version 3.0.0-beta7
----------------------------

Released: 2014-10-25

Changes in this release:

  * parse_dep() now correctly parses the "<<" version relation operator.
    Previously, a version restriction like "(<< 1.21.1-12)" would be
    parsed into a relationship of " <" and version of "<1.21.1-12",
    resulting for example in the generation of a few uninstallable
    packages on ProteanOS.

opkbuild version 3.0.0-beta6
----------------------------

Released: 2014-09-23

Changes in this release:

  * ob-genchanges and ob-gencontrol now strip newline characters in the
    "Maintainer" field.
  * An "optstring" file is installed for use by prokit.
  * opkbuild's platform option is now -p.
  * opkbuild now supports -B and -P options to build only architecture-
    dependent and platform-dependent binary packages, respectively.

opkbuild version 3.0.0-beta5
----------------------------

Released: 2014-05-15

Changes in this release:

  * ob-checkbuilddeps now sets substitution variables for use in the
    "Build-Depends" field.
  * ob-checkbuilddeps now recognizes packages with a status of
    "install user installed".
  * ob_arch_is_concerned() and ob_plat_is_concerned() now correctly
    handle host values of "all" with negated values in package fields.
    These functions are also now covered by the test suite.

opkbuild version 3.0.0-beta4
----------------------------

Released: 2014-05-13

Changes in this release:

  * ob_match_plat() now checks for exact platform name matches.  This
    will be necessary to build the linux-libre source package for the
    dev platform without building linux-image and linux-sysmap binary
    packages.
  * ob-installplatconf now correctly installs configuration files
    without a "/" in their specified destinations.
  * ob-checkbuilddeps has been implemented.  opkbuild now uses its opkg
    dependency.  Package build dependency checking can be disabled using
    opkbuild's "-d" option.
  * The default architecture in mksysconf.in is now "amd64-linux-glibc".
  * NEWS now contains summaries of changes in each released version.
  * Tests data files are now distributed in released tar archives.

opkbuild version 3.0.0-beta3
----------------------------

Released: 2014-03-07

Changes in this release:

  * Make ob-genchanges only list .opk files that are built for the host
    architecture and platform.
  * Preserve file modification times, owners and groups, and modes in source
    packages.
  * Find packaging helpers at run time using helper configuration scripts
    instead of at build time with configure options.  As of version 3.0.0,
    opkhelper provides such a helper configuration script.

opkbuild version 3.0.0-beta2
----------------------------

Released: 2014-01-19

Changes in this release:


  * Fix minor issues in opkbuild and ob-applypatches that occur when updating
    the "source" targets of some packages.
  * Make ob-genchanges perform substitutions in package descriptions.
  * Make ob-installdocs support patterns in *.pkg/docs.

opkbuild version 3.0.0-beta1
----------------------------

Released: 2013-09-07

Changes in this release:

  * Fix ob-applypatches to work with BusyBox patch.
  * Implement ob-genchanges.
  * Remove _ob_local() and _ob_return() kludges and use the built-in local
    utility instead.

opkbuild version 3.0.0-alpha5
-----------------------------

Released: 2013-06-16

Changes in this release:

  * Escape single quotes in substitution variable values.
  * Exit on failure to parse package metadata.
  * Fix "Bad binary package name" warning when there are no binary package
    metadata directories.
  * Fix output of changelog parsing errors.
  * Set "Host-Arch" and "Host-Plat" substitution variables, which were recently
    added to the SPF 2.0 specification.
  * Make build system non-recursive and faster.
  * Centralize build system logic into the top-level input makefile to make the
    build system smaller and more easily maintainable.
  * Distribute the "mksysconf.in" input makefile.  Previously this was missing
    from the tar archives.
  * Better handle unrecognized options to configure.
  * Fix some issues with fakeroot option handling.

opkbuild version 3.0.0-alpha4
-----------------------------

Released: 2012-11-16

Changes in this release:

  * Make ob-unpacksource not consider a lack of sources to be an error.
  * Support the use of multiple build helpers.
  * Move _ob_dep_arch_is_concerned() and _ob_dep_plat_is_concerned() to the
    public API.
  * Support negation in binary package "Architecture" fields.
  * Optionally reduce platforms in ob_get_binary_packages().
  * Make ob-unpacksource work on tar archives without explicit entries for
    directories.
  * Don't print an error when there's no substvars file.
  * Set an "OPK_TOOL_PREFIX" environment variable (needed for packages that use
    kbuild).
  * Remove code related to the table of upstream build system architectures.
  * Replace testsetup.sh with a slightly better "mksysconf" makefile.
  * Add some error handling to opkbuild.
  * Reduce platforms for OPK_PACKAGES.

opkbuild version 3.0.0-alpha3
-----------------------------

Released: 2012-10-26

Changes in this release:

  * Fix the creation of source package documentation directories.
  * Fix license information in opkbuild and configure output messages and
    testsetup.sh source code.
  * Add the build helper directory to the beginning, rather than the end, of
    PATH.  This should prevent the unintended use of old versions of build
    helper utilities.
  * Fix and improve ob-installplatconf.
  * Reduce binary package relationship fields in ob-gencontrol.
  * Support substitution variables in control field values.
  * Fix quotes in the "install" target of man/Makefile.in.
  * Better support multiple invocations of ob-unpacksource and ob-installdocs.
  * Reduce platform specifiers in dependency strings.
  * Support comments in control files.

opkbuild version 3.0.0-alpha2
-----------------------------

Released: 2012-10-16

Changes in this release:

  * Don't rely on POSIX-conformant parsing of makefile comments.
  * Make ob-gencontrol write "Platform" and "Maintainer" fields.
  * Fix names of opk files written by ob-buildopk.
  * Get an "Uploader", not "Maintainer", field from SPF 2.0 changelogs.
  * Make testsetup.sh print informational and error messages.
  * Additionally license everything for use under the terms of the GNU GPL
    version 2.0.

opkbuild version 3.0.0-alpha1
-----------------------------

Released: 2012-10-11

Changes in this release:

  * Split the core distribution build system into its own package.
  * Provide a fairly well-designed library, libopkbuild, with an API that is
    to be stable and versioned.
  * Rewrite build system.
  * Internationalize messages.
  * Write unit tests for some library functions.
  * Support source package formats and distribution metadata through plugins.
  * Support SPF 2.0.
  * Heavily refactor utilities.
  * Set up package build helpers (currently only opkhelper-3.0).

Older Versions
--------------

opkbuild was split from opkhelper on 2012-09-04, after opkhelper
versions 1.0.0 and 2.0.0 (unreleased).

See "NEWS.opkhelper" for changes in released versions of opkhelper
before opkbuild was split into its own package.

Copyright Information
---------------------

Copyright (C) 2012-2014, 2018-2021, 2023  Patrick McDermott

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.  This file is offered as-is,
without any warranty.