summaryrefslogtreecommitdiffstats
path: root/NEWS
blob: 34d6ccc795895d779210ab927034f0d03065e17c (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
ProteanOS Development Kit version 3.0.0
---------------------------------------

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

This new major version of prokit has been in development since
2020-06-22.  Notable new features in this release include unified
installers (the separate "prokit installer-pc" and "prokit mkinitramfs"
being merged into "prokit install"), "prokit build" saving detailed
build logs, and the use of package archive section feeds.

New features:

  * "prokit install" is now a frontend for all installers.  The separate
    "prokit installer-pc" and "prokit mkinitramfs" commands have been
    removed and merged into "prokit install", which determines which
    backend to use for a requested platform.  The "pcramfs" backend now
    installs a system and packs it into a RAM-based file system, all in
    one command; it also removes all of the installed files that get
    packed into the RAM-based file system.
  * "prokit install" no longer supports installing to block devices
    platforms that are intended to run under chroot (such as ProteanOS's
    "dev" platform).
  * "prokit install" now determines the correct architecture for a
    requested platform.  The "-a" option is now only necessary if
    installing ProteanOS's "dev" platform for an architecture different
    from but compatible with the native architecture.
  * "prokit build" now passes an "-a" option, if supported, to opkg to
    install host-architecture non-coinstallable dependencies (such as
    library development packages) when cross building.
  * Newly installed ProteanOS systems now have feeds for sections
    "base", "boot", "lib", "share", and "util" listed in their opkg
    configuration (previously only "base").  Systems of profile "dev"
    additionally have "dev" and "libdev" section feeds.  A "src" section
    for architecture "src" and platform "all" has also been added.  The
    recommended way to add these section feeds to an existing system is
    to install a new system of the same architecture and platform and
    copy its opkg configuration into the old system.
  * In the ProteanOS profile, the "base-files" and "config-base"
    packages and their dependencies are installed.  Previously, all
    packages marked "Essential: yes" and their dependencies were
    installed, which was a long-standing misuse of the "Essential"
    field.
  * "prokit build" now saves logs of builds and prints detailed
    information about the build and its results.
  * "C" and "POSIX" locales have been added.  They are identical to the
    "en_US" locale.

Error handling and bug fixes:

  * "prokit shell", "prokit opkg", and "prokit build" now pass through
    relevant exit statuses.  "prokit build" also no longer tries to run
    opkbuild after opkg exits with an error.
  * If prokit received a signal while running a command under chroot, it
    could have failed to unmount a file system on a block device.  This
    has been improved.
  * An incompatibility with GNU Bash, Z shell, KornShell, MirBSD Korn
    Shell, and possibly others (except Almquist shell derivatives DASH
    and BusyBox ash) present since prokit version 2.0.0 has been fixed.
  * Installation commands no longer assume that the "cut" utility is
    usable within the root being installed.  ProteanOS's busybox
    1.32.0-1 manages "cut" and almost all other utility links using
    update-alternatives, so they aren't usable until after installation.
  * A potential infinite loop in the dependency solver has been fixed.
  * The dependency solver now solves dependencies of packages whose
    names contain ":" (such as coinstallable library development
    packages in ProteanOS).
  * The foreign installation service initialization script is now
    scheduled to run before any other initialization scripts on a newly
    installed system.

ProteanOS Development Kit version 2.0.1
---------------------------------------

Released: 2019-09-30

Bug fixes and minor changes:

  * An expansion of an undefined variable in a function called during
    "prokit build" has been fixed.
  * opkg-cert (executed by "prokit install" and "prokit installer-pc")
    no longer prints a wrong and confusing "Clock incorrect" message
    after the "Invalid certificate" message when a mirror has an expired
    certificate.
  * "prokit install" and "prokit installer-pc" in the ProteanOS profile
    now support FTP mirrors.

ProteanOS Development Kit version 2.0.0
---------------------------------------

Released: 2019-04-27

This major new release of prokit has been in development since
2014-10-13.  Major new features include automatic block device mounting;
new "prokit installer-pc" and "prokit mkinitramfs" commands; downloading
and storing gzip-compressed package feed index files; verifying package
feed index file signatures against a validated archive certificate; and
fetching lists of ProteanOS architectures, platforms, and archive
mirrors.

Security fix:

  * An unsafe "eval" command has been fixed.  Running prokit's "install"
    command with an untrusted "root" directory argument, as in the shell
    command `prokit install dev/trunk "root'; echo hello #"`, allows
    arbitrary code execution.  This is fixed by Git commit 1ce4ec3.
    This is considered a low-impact vulnerability, because running
    prokit's "install" command with untrusted arguments is an unlikely
    use case.

New dependencies:

  * prokit now requires OpenWrt's usign utility, which verifies ed25519
    signatures compatible with OpenBSD's signify utility.  An embedded
    copy of usign is included, which additionally requires CMake to
    build, or a system copy can be used instead.
  * prokit now requires gunzip, either sfdisk or fdisk, mke2fs, cpio,
    and xz from XZ Utils.

Command-line interface:

  * "prokit install", "prokit shell", "prokit opkg", and "prokit build"
    now accept either a block device file name or a directory name
    (previously only accepting the latter).  A block device is
    automatically mounted and unmounted on a mount point managed by
    prokit.
  * A new "prokit installer-pc" command has been added to install a PC
    system onto a block device.
  * A new "prokit mkinitramfs" command has been added to generate an
    initramfs containing an installed system.

System installation changes:

  * A basic "/etc/group" file is now generated on ProteanOS systems.
  * "prokit install" in the ProteanOS profile now only copies
    "/etc/resolv.conf" and "/etc/hostname" from the host system if the
    platform is "dev".  It also now does not enable system services on
    the "dev" platform.  On other platforms, it enables services and
    sets the hostname to "proteanos".
  * A list of valid ProteanOS architectures and platforms is no longer
    hardcoded.  This list could become outdated between prokit versions
    or even ProteanOS suites.
  * A list of ProteanOS package archive mirrors is no longer hardcoded.
    Instead, the list is fetched from the ProteanOS files site as
    needed.
  * ProteanOS package feed index files are now downloaded and stored in
    gzip-compressed form.
  * ProteanOS package feed index file signatures are now verified
    against the archive certificate, which in turn is validated against
    the root archive key.

Bug fixes:

  * "prokit install" now only throws a "Directory ... exists" error if
    the specified root directory is not empty.
  * Two bugs related to gzip-compressed package feed index files have
    been fixed.

Build system and code quality:

  * The build system now links all shell objects into the prokit
    executable instead of distributing shell modules that are linked
    into prokit at run time.
  * Git commit information is now shown in "prokit version" output and
    manual pages if built from a Git repository.
  * Various error conditions are now handled more cleanly.
  * Uses of the non-portable "%s" date format conversion specifier and
    "expr" command have been replaced.
  * The test suite is now based around the TAP protocol.
  * Code quality has been improved: eval commands are now safer against
    mistakes in input validation/escaping, echo commands have been
    replaced, errors are handled (making the shell "-e" option safe), an
    obselescent [ (test) command option has been removed, and commands
    are protected from variable arguments beginning with "-".

ProteanOS Development Kit version 1.1.0
---------------------------------------

Released: 2014-10-08

Changes in this release:

  * The previously missing prokit-install(8) manual page is now
    distributed and installed.
  * Some logic of "prokit install" has been simplified as ProteanOS
    packages now have the necessary data files and control fields.
  * "prokit build" now parses substvars files without errors.
  * The current working directory is bind mounted within the isolated
    file system environment and used as the working directory for the
    "prokit shell" and "prokit opkg" commands.
  * Compatibility with older versions of opkbuild has been dropped.
    Before running "prokit build", make sure your ProteanOS system has
    version 3.0.0~beta6-1 or later of the opkbuild package.
  * The list of mirrors has been updated.  Thanks to Morten 'Jobbe'
    Jakobsen for providing another mirror.
  * Session management has been added to allow multiple instances of
    prokit to run simultaneously.  The first instance started will mount
    the basic file systems, and the last instance exited will unmount
    them.  A mutex is used to eliminate race conditions on changes to
    the sessions pool.
  * Whitespace in arguments to "prokit shell" and "prokit build" is now
    preserved.
  * Signals are handled during active sessions with callbacks for the
    "prokit opkg" and "prokit build" commands, to ensure that the
    isolated file system environment is left in a clean state when a
    signal like SIGINT (Ctrl+C) is received.

ProteanOS Development Kit version 1.0.0
---------------------------------------

Released: 2014-09-02

Changes in this release:

  * A new "prokit opkg" command has been added.
  * A new "prokit build" command has been added.
  * "prokit shell" now accepts optional command arguments.
  * Manual pages for prokit commands that require superuser privileges
    have been moved to section 8.

ProteanOS Development Kit version 0.1.0
---------------------------------------

Released: 2014-08-26

This is the initial release of the ProteanOS Development Kit, in
development since 2013-10-22.

This is a preview release for testing, providing only the "install" and
"shell" action commands.  Currently, prokit approximately matches
miniprokit in features, though the latter is still recommended for
normal use.

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

Copyright (C) 2014, 2015, 2019-2021  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.