Changes:
- rename install --from-root into install --recursive to avoid confusions
- cleanup old packages later which reduces the window when the filesystem is "unstable"
- fix issue with recursive deps when using pkg add
Changes:
- Fix a regression on systems wihtout utimensat(2)
- Revert a behaviour change with rootdir and repositories that
appeared to be more painful for users than helpful
- Fix pkg clean removing /var/cache/pkg if it is a symlink
- capsicumize pkg clean
- make pkg clean remove empty directories
Changes:
- Complete refactor of the package extraction:
* safer: ensure that only what is in the plist is actually extracted
* ensure the package can be properly on the filesystem before actually
replacing the files
* move atomicity to the package level meaning that in case of failure only
the non upgraded packages has to be proceed not the entire upgrade process
* in case of upgrade only extract the files that are unchanged
- Now pre install script failure can properly be catched and stoping the onging
process (at last!).
- New mechanism in the library events to allow frontend to know what they should
run in case of interruption
- handle ^C proprely and cleanup ongoing procedure
- lots of fixes of bugs reported by coverity
- finish implementation of the 'vital' feature
Now that the Ada Framework is based on GCC6 by default, it is no
longer required for Synth to bundle and build a local version of
devel/adacurses and misc/ini_file_manager.
Switch the port to normal BUILD_DEPENDS and remove the bundle
distfile information. No bump is required because these libraries
are statically linked into Synth, so there's no practical difference
between older and newer packages.
While there replace USE_SQLITE=x by USES=sqlite:x.
PR: 208971
Submitted by: mat
Exp-run by: antoine
With hat: portmgr
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D5951
* Incorporate prefetch partial-revert patch (1.33_1) and remove the
patch and files directory.
* Add lang/rust and lang/rust-nightly to the list of ports that require
procfs to build. This is only true for DragonFly. The plan is to
eliminate this requirement, but it's a bit tricky right now. Once
done, the rust ports will be removed from the list again.
* Move /var/db/fontconfig directory exception from post-build to all
stages. The doxygen port has shown that /var/db/fontconfig changes
during the build phase and this is legitimate.
* Drop the need for PORTSDIR in dependencies [1]
* Allow a trailing ':' in URLs [2]
* Check to make sure the value(s) of SUB_FILES is healthy [3]
* Expand variables on all sides of the dependency tuple [4]
(this last change is rather big, and thus bumping minor version)
PR: 208272 [1]
207843 [2]
207477 [3]
206061 [4]
Submitted by: amdmi3 [1]
Changes:
- pkg asks again for small operations (regression)
- fix pkg auto upgrade mechanism (regression test added)
- Update libucl to latest version which fixes an issue with empty pkg.conf (regression test added)
- pkg install on an already installed package returns 0 again this regression was introduced when fixing pkg lock (regression test added)
Changes:
- Update libucl to latest version which fixes an issue with empty pkg.conf (regression test added)
- pkg install on an already installed package returns 0 again this regression was introduced when fixing pkg lock (regression test added)
The MANIFEST files were obtained by
(a) verifying the signature on the 10.3-RELEASE announcement against
the GPG key in the FreeBSD documentation repository;
(b) downloading all of the bootonly.iso.xz ISOs;
(c) verifying those files against the hashes listed in the signed release
announcement; and
(d) extracting the MANIFEST files.
This release fixes regressions:
- detection of new version of pkg could fail
- if the all process operation would have an inpact of less than 1MB on the FS
then the action is proceed with out asking the user to acknowledge it
Changes:
- Support new "vital" notion: prevent from implicit deletion
- Improved support for OpenBSD/bitrig (still lacks some functions in libc)
- Improved ZSH completion
- Updated libucl
- Lots of fixes in error messages
- Fixed "pkg lock" handling
- Allow to specify "inline" respositories in pkg.conf
- ipv6 fixes
- Allow to restrict the accepted url schemes
- More commands supports "-q"
- Multiple bug fixes
- As usual multiple new bugs
- Improved support for shlibs dependency generation when packaging base via ALLOW_BASE_SHLIBES
Changes:
- Add a basic automatic resolution plan for unsatisiable SAT problems
- Fix regression in pkg info -R
- Add a mechanism to finding libs when packaging base
- Fix some warnings on arm
- Fix hardlink extraction with --rootdir
- Improved error reporting
- Update libucl
- Fixes on locked package handling
- Add ip_version in pkg -vv output
- Add !~ in pkg query (negated glob match)
- Implement "vital" packages: prevent a package from being manually removed
- Add support for arm hardfloat
- Multiple bug fixes
Prefetching option fix:
Until now, if the "prefetch suitable packages" option was enabled, it
could happen that "synth force" and "synth test" commands wouldn't do
anything. Moreover, even though it wouldn't build, it would delete the
existing package and refetch it because force/test always pre-deletes
existing packages.
Now, ports listed with "force" and "test" commands are always built,
even if suitable remote packages are available.
Improvements with test mode:
1) Changes to /var/tmp are now ignored. These are legal modifications
2) Access time modification to the builder mount are now ignored. This
was possible if changes to /tmp or /var propagates upward (legally).
3) A new environment variable is added for test command, "LOCK". If it
defined to any value, the builder's localbase will be remounted as
read-only during the configure and build phases. This is a
diagnostic tool to help pinpoint where ports are committing file
system violations by writing to localbase during these phases.
New notice to user regard CONSERVATIVE_UPGRADE:
At the end of the "synth rebuild-repository" command, Synth will probe
the host pkg(8) to see if it's configured with CONSERVATIVE_UPGRADE.
If so, Synth will emit a notice because chances are good that the
user built repository for the local system and may try to upgrade the
system with pkg(8), and in this case, they may wish to turn off the
CONSERVATIVE_UPGRADE setting.
prepare-system, upgrade-system package deletion bug:
These two commands had a serious logic flaw that resulted in newly-built
packages to be immediately deleted prior the pkg(8) repo command. (And
the obvious result of the system not getting updated without re-running
the same command.)
The cause was that the first package validity scan marked the package
for deletion, and this setting was never reset. The obsolete package
was correctly deleted and rebuilt, but then it was quickly deleted
again during the second package scan because the previous deletion mark
was still present. The fix was simple: Reset the deletion marks before
rebuilding the repository so the second scan proceeds accurately.
Test case provided by Wapcaplet in FreeBSD forums
Pkg(8) bug workaround:
The pkg rquery man page is incorrect. It lists the invocation of
pkg rquery as "-U -r reponame" but if it's invoked in that order, it
will squawk errors if any of the repositories are misconfigured. The
command must be "pkg rquery -r reponame -U" in order to limit pkg(8) to
a single repository.
The order sensitivity came into play with "synth upgrade-system" command
on a brand new system. The 00_synth.conf pkg(8) configuration file was
created but there were no repository files created yet, cause pkg(8) to
emit errors on Synth repo when checking the official FreeBSD package
repo. This resulted in no packages prefetching even though "synth status"
indicated some would be fetched. Rearranging the internal rquery
commands works around the misleading pkg(8) documentation (or bug?).
FreeBSD-specific system root validity check.
The $SYSROOT/boot directory doesn't have to be present, but if it is,
there must also be present $SYSROOT/boot/modules directory. Synth now
checks for this on FreeBSD and stops with an informative message when
the modules directory needs to be created by the root user.
This is an enhancement release that contains a bug fix.
Description of bug:
If synth is launched from mountpoint of the ports directory
(e.g. /usr/ports), it may malfunction with strange messages such
as "invalid origins" and printing strange symbols to the screen
along with parts of a directory.
As a result, Synth now detects this launch location (as it already
did with /usr/local) and refuses to run until the current directory
is changed outside of the ports tree.
Enhancement 1:
It is now possible to remove alternate profiles. When more than
one profile exists, a menu option "<" appears that provides the
user with an opportunity to remove one to all inactive profiles
from the configuration. The man page has been updated as well.
Enhancement 2:
Synth will automatically convert any directory inputs on the
configure command to the true path. For example, if somebody types
in "/usr/xports" for the ports directory, but that's just a
symbolic link to /vcs/freebsd-ports", the entry will automatically
convert to its true resolved path (e.g. /vcs/freebsd-ports). This
enables the cwd detection of the bug fix above to always work.
Two minor bug fixes:
* A specific check during test mode would emit a failure to stdout when
testing devel/py-setuptools27. It turns out that there's a file there
with a space in the filename. The filename was an argument for
/usr/bin//file and it wasn't escaped. The file in question had
parentheses too which the shell was trying to process. The fix was
to escape the filename in the /usr/bin/file command.
* The builders were mounting the source directory from "/usr/src", not
$sysroot/usr/src as intended. This potentially causes breakage when
the $sysroot reflects a different versions/release than the host
machine has (e.g. making FreeBSD 10.2 packages on FreeBSD 11-current).
Now the source directory mount is relative to profile's $sysroot.
With portest, you can create, update, patch and revert a port tree with
svn, git and portsnap. Portest can also do portlint testing, test a port
with port test, or poudriere, and also generate a list of ports a
patchfile(s) will modify. Portest is written in shell with minimal
dependencies mostly using FreeBSD-base
WWW: https://github.com/Ultima1252/portest
PR: 207810
Submitted by: Ultima1252@gmail.com
Fix distinfo for the offending ports.
lang/yorick's tag was moved, and the added patch was no longer needed.
PR: 207644
Submitted by: mat
Exp-run by by: antoine
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D4268
I knew the repository signing enhancements weren't fully tested, but it
was important to get the regressions fixed. I thought that if there were
any problems with the signing, people not using those features (e.g. 99%
of users) would not be affected. Unfortunately, that's not true.
Due to a simple boolean logic error, an inaccurate and harmless warning
about not finding the signature fingerprint will show every time the
repository is rebuild. This minor releases fixes that logic.
This was meant to be a pure enhancement release to support the signing
of the repository, but there were some regressions brought in with
version 1.1x and also some long standing bugs found.
Fixed:
* Regression: Interactive test mode
Changing the TERM setting to "dumb" semi-broke the interactive shell
when ENTERAFTER is used with the test command. The fix was to set
TERM back to cons25 in this particular case.
* Regression (serious): install command
The improvement in speed of package validation for the rebuilding of
the repository resulted in a new bug that caused the "synth install"
command to install every port in the repository. It was caused by
reusing a container that I thought was available, but it turns out
that the "install" command still needed it.
* Bug: handle exception that occurred when Synth asked a question
when no TTY was attached. Running a command like "force" would result
in a question, and if Synth was running in a cron job or having args
piped to it via xargs, no terminal would be available and Synth would
throw an exception. Now in this case, Synth just assumes answer to
question is "No" and ends gracefully.
* Bug: purge-distfiles command would delete everything if any error was
encountered. It should have just stopped, which it does now.
* Bug: purge-distfiles container had a bug which prevented all the
distfiles from being stored, which caused removal of good distfiles.
* Bug: purge-distfiles container didn't check for duplicates, resulting
in unhandled exceptions. Now fixed, purge-distfiles command works now.
enhancements:
* Show version information on status commands. On the display, a symbol
of "N" (New), "R" (result), or "U" (upgrade) shows next to each line.
Additionaly for "U", the old version and new version are shown. The
same information is shown in the log, but in addition the actual
version for "N" and "R" categories is also listed.
* Test mode: Add filters from poudriere to prevent false test failures
with leftover and modified files. Mostly it involves files that get
modified, but it's okay so the MD5 check failures need ignoring
* Support signing repository with local RSA keys. Adjust man page with
two new FILES (public key and private key) along with an example on
how to generate those files.
* Support signing repository with external signing command and
fingerprints. Adjust man page with two more new FILES and an example
of how configure this feature.
This fixes a regression in building ports that have dependences that
install kernel modules. When DTrace support was added by providing a
read-only mount of /boot to the builder, the kernel modules could no
longer be installed at /boot/modules by pkg(8).
Previously, although successful, module installs would have caused a file
system violation on test mode checks. Since /boot is now excluded from
checks (since DTrace support), leftovers in /boot/modules will not be
detected in test mode. The fix is too elaborate and FreeBSD-specific
to worry about (plus there's the philosophy question about why the ports
framework is even allowed to modify the base but that's out of scope).
This release addresses unacceptably long repository rebuild times for the
worst cases (FreeBSD [1], slow CPU, slow mechanical disk). Until now,
rebuilding the repository required a full tree scan (nearly 26k ports).
While I only saw around 4 minutes on a 4-year DragonFly machine equipped
with a SSD, others reported times exceeding 20 minutes.
This new method scans existing packages twice -- first to eliminate those
packages where the port was removed and also those with a mismatching
version (parallel). This sets up a second pass to serially and
recursively scan the ports of the remaining packages. That leads to the
final validation (same as previously done) and the actual repository
generation. Now the repository generation time is much shorter, but
corresponds to the number of build packages in the packages directory.
The long repository generation times were identified prior to the 1.0
release, but I targetted 1.1 for the enhancement.
bug fixes:
* cron operation fixed
The terminal is unset for cron jobs. The setting of TERM to "cons25"
in the environment caused a failure, but it's fixed by changing the
value to "dumb". Note that curses must be off in the profile invoked
by cron.
* dtrace building fixed [1]
On FreeBSD, /boot is now read-only null-mounted if it exists in the
profile's system root. This fixes building dtrace probes when the
option is set.
* fix muted pipe exit status
Pipes have to be read even when no output is expected in order to get
the correct exit status
* fix pipe child exit status
The previous implementation mixed child and parent exit statuses in
error; now they are isolated and returned correctly.
Enhancement:
If a muted pipe command fails, an appropriate error message is given
including which command failed. This helps identify the real error
instead of repercussions appearing later which mask the problem.
PR: 207361 [1]
Currently, the application is a MVP (Minimum Viable Product) which
provides only the following features: packages listing and searching,
installation and deinstallation of packages, and filtering based on
the package state.
WWW: https://github.com/culot/portal
Any attempt to alter echo and control flags when the standard input
stream is not connected to a tty will fail. Fix the resulting nuisance
messages by skipping these steps if a tty is not present.
Reported by kmoore@ on jenkins