notbugAs an Amazon Associate I earn from qualifying purchases.
Want a good read? Try FreeBSD Mastery: Jails (IT Mastery Book 15)
Want a good monitor light? See my photosAll times are UTC
Ukraine
This referral link gives you 10% off a Fastmail.com account and gives me a discount on my Fastmail account.

Get notified when packages are built

A new feature has been added. FreshPorts already tracks package built by the FreeBSD project. This information is displayed on each port page. You can now get an email when FreshPorts notices a new package is available for something on one of your watch lists. However, you must opt into that. Click on Report Subscriptions on the right, and New Package Notification box, and click on Update.

Finally, under Watch Lists, click on ABI Package Subscriptions to select your ABI (e.g. FreeBSD:14:amd64) & package set (latest/quarterly) combination for a given watch list. This is what FreshPorts will look for.

non port: ports-mgmt/synth/Makefile

Number of commits found: 87

Sunday, 21 Jan 2024
21:42 Muhammad Moinur Rahman (bofh) search for other commits by this committer
ports-mgmt/synth: Sanitize MANPREFIX

Approved by:    portmgr (blanket)
commit hash: 56c53123b491bcfefb60a17a1dc1c07a0337c2cd commit hash: 56c53123b491bcfefb60a17a1dc1c07a0337c2cd commit hash: 56c53123b491bcfefb60a17a1dc1c07a0337c2cd commit hash: 56c53123b491bcfefb60a17a1dc1c07a0337c2cd 56c5312
Sunday, 31 Dec 2023
00:37 Muhammad Moinur Rahman (bofh) search for other commits by this committer
*/*: Sunset 12.4-RELEASE/12-STABLE from ports tree

- Remove all references to defunct ARCH arm
- Remove all references to defunct ARCH sparc64
- Remove x11-drivers/xf86-video-sunffb which requires defunct sparc64
  ARCH
- Remove sysutils/afbinit requires defunct sparc64 ARCH
- Remove all references to bktr driver
- Remove all references to defunct FreeBSD_12
- Remove all references to OSVERSION/OSREL corresponding to 12
- Remove conditionals in Mk/Uses/cabal.mk
- Remove sparc reference from Mk/Uses/qt-dist.mk
- Remove BROKEN_sparc64/NOT_FOR_ARCH=sparc64
- Remove BROKEN_FreeBSD_12* from:
- Remove OpenSSL patches from:
- Remove conditional flags for OSVERSION >= 1300000 to fixed flags.
  Also move conditional flags for non sparc64/arm ARCH to fixed flags.

Reviewed by:	brooks, jbeich, rene, salvadore
Differential Revision: https://reviews.freebsd.org/D42068
commit hash: bbab7f59e9630416397189df70ec133bdd690e38 commit hash: bbab7f59e9630416397189df70ec133bdd690e38 commit hash: bbab7f59e9630416397189df70ec133bdd690e38 commit hash: bbab7f59e9630416397189df70ec133bdd690e38 bbab7f5
Sunday, 23 Apr 2023
09:09 Gerald Pfeifer (gerald) search for other commits by this committer
*: Bump PORTREVISIONs for math/mpc update to 1.3.1
commit hash: 8d3e020ed032a8db00208994d0db646de7dc6f5b commit hash: 8d3e020ed032a8db00208994d0db646de7dc6f5b commit hash: 8d3e020ed032a8db00208994d0db646de7dc6f5b commit hash: 8d3e020ed032a8db00208994d0db646de7dc6f5b 8d3e020
Wednesday, 1 Feb 2023
19:36 Dima Panov (fluffy) search for other commits by this committer
ports-mgmt/synth: update to 2.13 release (+)

* Control the port scan environment (#212)
* Adjust umount to prevent ccache directory from getting wiped out (#199)

Release notes:	https://github.com/jrmarino/synth/releases/tag/v2.13
commit hash: d175c33935a0eabe5466f392241f4db5459e297d commit hash: d175c33935a0eabe5466f392241f4db5459e297d commit hash: d175c33935a0eabe5466f392241f4db5459e297d commit hash: d175c33935a0eabe5466f392241f4db5459e297d d175c33
Monday, 28 Nov 2022
11:12 Dima Panov (fluffy) search for other commits by this committer
ports-mgmt/synth: bump after devel/adacurses update, remove expiration mark
commit hash: 446d23794d8c7009680fcf369e14ee0c4ba07323 commit hash: 446d23794d8c7009680fcf369e14ee0c4ba07323 commit hash: 446d23794d8c7009680fcf369e14ee0c4ba07323 commit hash: 446d23794d8c7009680fcf369e14ee0c4ba07323 446d237
Friday, 30 Sep 2022
17:54 Alexey Dokuchaev (danfe) search for other commits by this committer
Ada ports and Synth: extend expiration till the end of the year

Requested by:	fluffy
commit hash: e0340ee0c521a3b5eb7251e6a1369f94cd1c21d4 commit hash: e0340ee0c521a3b5eb7251e6a1369f94cd1c21d4 commit hash: e0340ee0c521a3b5eb7251e6a1369f94cd1c21d4 commit hash: e0340ee0c521a3b5eb7251e6a1369f94cd1c21d4 e0340ee
Wednesday, 7 Sep 2022
21:10 Stefan E├čer (se) search for other commits by this committer
Add WWW entries to port Makefiles

It has been common practice to have one or more URLs at the end of the
ports' pkg-descr files, one per line and prefixed with "WWW:". These
URLs should point at a project website or other relevant resources.

Access to these URLs required processing of the pkg-descr files, and
they have often become stale over time. If more than one such URL was
present in a pkg-descr file, only the first one was tarnsfered into
the port INDEX, but for many ports only the last line did contain the
port specific URL to further information.

There have been several proposals to make a project URL available as
a macro in the ports' Makefiles, over time.

This commit implements such a proposal and moves one of the WWW: entries
of each pkg-descr file into the respective port's Makefile. A heuristic
attempts to identify the most relevant URL in case there is more than
one WWW: entry in some pkg-descr file. URLs that are not moved into the
Makefile are prefixed with "See also:" instead of "WWW:" in the pkg-descr
files in order to preserve them.

There are 1256 ports that had no WWW: entries in pkg-descr files. These
ports will not be touched in this commit.

The portlint port has been adjusted to expect a WWW entry in each port
Makefile, and to flag any remaining "WWW:" lines in pkg-descr files as
deprecated.

Approved by:		portmgr (tcberner)
commit hash: b7f05445c00f2625aa19b4154ebcbce5ed2daa52 commit hash: b7f05445c00f2625aa19b4154ebcbce5ed2daa52 commit hash: b7f05445c00f2625aa19b4154ebcbce5ed2daa52 commit hash: b7f05445c00f2625aa19b4154ebcbce5ed2daa52 b7f0544
Wednesday, 20 Jul 2022
14:22 Tobias C. Berner (tcberner) search for other commits by this committer
ports-mgmt: remove 'Created by' lines

A big Thank You to the original contributors of these ports:

  *  "Waitman Gobble" <uzimac@da3m0n8t3r.com>
  *  Akinori MUSHA aka knu <knu@idaemons.org>
  *  Alex Dupre <ale@FreeBSD.org>
  *  Alex Stangl <alex@stangl.us>
  *  Anders F Bjorklund <afb@users.sourceforge.net>
  *  Benjamin Lutz
  *  Brendan Molloy <brendan+freebsd@bbqsrc.net>
  *  Conrad J. Sabatier <conrads@cox.net>
  *  Edwin Groothuis (edwin@mavetju.org)
  *  Emanuel Haupt <ehaupt@FreeBSD.org>
  *  Gabriel Linder <linder.gabriel@gmail.com>
  *  Heiner <h.eichmann@gmx.de>
  *  Ilya A. Arkhipov <rum1cro@yandex.ru>
  *  John Marino <marino@FreeBSD.org>
  *  Jun-ichiro itojun Hagino <itojun@itojun.org>
  *  Kubilay Kocak <koobs@FreeBSD.org>
  *  Mamoru Sakaue / MwGhennndo
  *  Martin Kammerhofer
  *  Matthew Seaman
  *  Matthew Seaman <m.seaman@infracaninophile.co.uk>
  *  Matthias Andree <mandree@FreeBSD.org>
  *  Matthias Schmidt
  *  Pawel Pekala <pawel@FreeBSD.org>
  *  Philip M. Gollucci <pgollucci@p6m7g8.com>
  *  Philipp Wuensche <cryx-ports@h3q.com>
  *  Richard Gallamore <ultima@FreeBSD.org>
  *  Romain Tartiere <romain@FreeBSD.org>
  *  Romain Tartiere <romain@blogreen.org>
  *  Securedog <securedog@users.sourceforge.jp>
  *  Sergei Kolobov <sergei@kolobov.com>
  *  Shaun Amott <shaun@inerd.com>
  *  Stefan Walter <sw@gegenunendlich.de>
  *  Stephen Hurd <shurd@FreeBSD.org>
  *  Timothy Redaelli <drizzt@gufi.org>
  *  Tom Hukins <tom@FreeBSD.org>
  *  Vasil Dimov <vd@datamax.bg>
  *  Vladimir Chukharev
  *  Yanhui Shen <shen.elf@gmail.com>
  *  Zane C, Bowers <vvelox@vvelox.net>
  *  kmoore@FreeBSD.org

With hat:	portmgr
commit hash: 9c165b983562e903a35c424b209ae3305652c866 commit hash: 9c165b983562e903a35c424b209ae3305652c866 commit hash: 9c165b983562e903a35c424b209ae3305652c866 commit hash: 9c165b983562e903a35c424b209ae3305652c866 9c165b9
Friday, 1 Jul 2022
15:18 Rene Ladan (rene) search for other commits by this committer
cleanup: Expire gcc6-aux consumers on 2022-09-30

This entails:
- devel/adacurses/Makefile
- misc/ini_file_manager/Makefile
- ports-mgmt/synth/Makefile

The DEPRECATED is set via USES=ada
commit hash: a4a20a861459a1e85b7e1ae99242c1ba486ac475 commit hash: a4a20a861459a1e85b7e1ae99242c1ba486ac475 commit hash: a4a20a861459a1e85b7e1ae99242c1ba486ac475 commit hash: a4a20a861459a1e85b7e1ae99242c1ba486ac475 a4a20a8
Saturday, 24 Jul 2021
23:41 Dima Panov (fluffy) search for other commits by this committer
ports-mgmt/synth: update to  2.12 release

* Support pkg 1.17.0 new extension and compression
commit hash: c7bca5d5590c6f44af490bd8180e5497c70f6f88 commit hash: c7bca5d5590c6f44af490bd8180e5497c70f6f88 commit hash: c7bca5d5590c6f44af490bd8180e5497c70f6f88 commit hash: c7bca5d5590c6f44af490bd8180e5497c70f6f88 c7bca5d
Sunday, 9 May 2021
15:26 Dima Panov (fluffy) search for other commits by this committer
ports-mgmt/synth: Update to 2.11 release

This fixes https://github.com/jrmarino/synth/issues/193
(sys/sys/param.h in freebsd/main loses comment after __FreeBSD_version)

MFH:	2021Q2
commit hash: a53b9c858eb613ea9f1e79d0b31655d747cc5275 commit hash: a53b9c858eb613ea9f1e79d0b31655d747cc5275 commit hash: a53b9c858eb613ea9f1e79d0b31655d747cc5275 commit hash: a53b9c858eb613ea9f1e79d0b31655d747cc5275 a53b9c8
Saturday, 10 Apr 2021
19:36 Dima Panov (fluffy) search for other commits by this committer
ports-mgmt/synth: update to 2.10 release

While here, take maintainership
commit hash: 1daf9f81cfe67642ebb73731f19674ca71367faf commit hash: 1daf9f81cfe67642ebb73731f19674ca71367faf commit hash: 1daf9f81cfe67642ebb73731f19674ca71367faf commit hash: 1daf9f81cfe67642ebb73731f19674ca71367faf 1daf9f8
Friday, 9 Apr 2021
12:57 Eric Turgeon (ericbsd) search for other commits by this committer
abandoning ports-mgmt/synth and lang/gcc6-aux

I have not been using synth for a while and I not interested to maintain synth
and gcc6-aux anymore.
commit hash: 1ac03563983fe07a7d2d33f5214aea0e8e54a52e commit hash: 1ac03563983fe07a7d2d33f5214aea0e8e54a52e commit hash: 1ac03563983fe07a7d2d33f5214aea0e8e54a52e commit hash: 1ac03563983fe07a7d2d33f5214aea0e8e54a52e 1ac0356
Tuesday, 6 Apr 2021
14:31 Mathieu Arnold (mat) search for other commits by this committer
Remove # $FreeBSD$ from Makefiles.
commit hash: 305f148f482daf30dcf728039d03d019f88344eb commit hash: 305f148f482daf30dcf728039d03d019f88344eb commit hash: 305f148f482daf30dcf728039d03d019f88344eb commit hash: 305f148f482daf30dcf728039d03d019f88344eb 305f148
Tuesday, 3 Nov 2020
20:27 swills search for other commits by this committer
ports-mgmt/synth: allow using base ncurses

PR:		244142
Approved by:	ericbsd (maintainer)
Original commitRevision:554032 
Friday, 1 Feb 2019
21:44 ericbsd search for other commits by this committer
update ports-mgmt/synth to 2.08

PR:		235365
Submitted by:	Jonathan Chen
Approved by:	mentors (implicit)
Original commitRevision:491886 
Sunday, 2 Dec 2018
12:41 ericbsd search for other commits by this committer
update ports-mgmt/synth to 2.07

Approved by:	mentors (implicit)
Original commitRevision:486409 
Thursday, 27 Sep 2018
19:05 ericbsd search for other commits by this committer
Update ports-mgmt/synth to 2.06

Approved by:	wg (mentor)
Original commitRevision:480813 
Tuesday, 29 May 2018
15:38 ericbsd search for other commits by this committer
Update ports-mgmt/synth to 2.05

PR:		228573
Approved by:	wg (mentor)
Original commitRevision:471098 
Thursday, 10 May 2018
13:48 ericbsd search for other commits by this committer
Update ports/synth from 2.03 to 2.04

Approved by:	wg (mentor)
Original commitRevision:469543 
Wednesday, 2 May 2018
20:57 ericbsd search for other commits by this committer
Update ports-mgmt/synth to 2.03

Approved by:	wg (mentor)
Original commitRevision:468887 
Tuesday, 3 Apr 2018
12:45 ericbsd search for other commits by this committer
Update Eric Turgeon ports maintainer email

Approved by:	wg, bapt (mentors)
Original commitRevision:466342 
Saturday, 10 Mar 2018
17:46 gerald search for other commits by this committer
Bump PORTREVISIONs of all users of math/mpc that we just updated to
version 1.1.0 (via revision 464079).
Original commitRevision:464084 
Wednesday, 6 Dec 2017
11:57 tobik search for other commits by this committer
ports-mgmt/synth: Update to 2.02

- flavor fixes, repo build and package installs

PR:		224139
Submitted by:	Jonathan Chen <jonc@chen.org.nz>
Approved by:	ericturgeon.bsd@gmail.com (maintainer)
Original commitRevision:455644 
Monday, 4 Dec 2017
14:20 tobik search for other commits by this committer
ports-mgmt/synth: Update to 2.01

PR:		224075
Submitted by:	Jonathan Chen <jonc@chen.org.nz>
Approved by:	ericturgeon.bsd@gmail.com (maintainer)
Original commitRevision:455517 
Sunday, 3 Dec 2017
12:32 pi search for other commits by this committer
ports-mgmt/synth: update 1.71 -> 2.00, add FLAVOR support

PR:		224049
Approved by:	ericturgeon.bsd@gmail.com (maintainer)
Original commitRevision:455402 
Wednesday, 1 Nov 2017
13:45 tobik search for other commits by this committer
ports-mgmt/synth: Update to 1.71

PR:		223350
Submitted by:	Jonathan Chen <jonc@chen.org.nz>
Approved by:	ericturgeon.bsd@gmail.com (maintainer)
Original commitRevision:453287 
Tuesday, 10 Oct 2017
14:19 tobik search for other commits by this committer
ports-mgmt/synth: Build with watchdog monitor by default

Without WATCHDOG Synth will hang on the ports that stop building [1].

While here:
- Rename the double negative NOWATCHDOG option to WATCHDOG

[1] https://github.com/jrmarino/synth/issues/53#issuecomment-335425660

PR:		222900
Submitted by:	ericturgeon.bsd@gmail.com (maintainer)
MFH:		2017Q4
Original commitRevision:451704 
Tuesday, 25 Jul 2017
16:20 matthew search for other commits by this committer
Update to 1.70

Add NOWATCHDOG option

PR:		220812
Submitted by:	jonc@chen.org.nz
Approved by:	ericturgeon.bsd@gmail.com (maintainer)
Original commitRevision:446594 
Sunday, 2 Apr 2017
04:35 pi search for other commits by this committer
ports-mgmt/synth: update 1.68 -> 1.69

- FreeBSD/ARM* support

PR:		218253
Submitted by:	Jonathan Chen <jonc@chen.org.nz>
Approved by:	ericturgeon.bsd@gmail.com (maintainer)
Original commitRevision:437524 
Monday, 13 Feb 2017
21:28 mmokhi search for other commits by this committer
Pass maintainership by request to the reporter.

PR:		217075
Submitted by:	mmokhi
Reported by:	ericturgeon.bsd@gmail.com
Reviewed by:	feld, mat
Approved by:	feld (mentor)
Differential Revision:	https://reviews.freebsd.org/D9572
Original commitRevision:434055 
Saturday, 11 Feb 2017
12:42 rene search for other commits by this committer
Return ports maintained by John Marino to the pool, see r433827 for details
Original commitRevision:433856 
Monday, 30 Jan 2017
17:49 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.67a => 1.68

1) Create a platform-specific (FreeBSD/DF, NetBSD, Linux, Solaris) version
   of /etc/shells for the builders.  This resolves installation errors on
   packages that manipulate /etc/shells.

2) Give in and finally mount /usr/games if available.  This is a
   performance impact ultimately caused by removing the strfile
   application from ports with the faulty logic that the 400-line C
   program can't exist because it's in a non-standard location in base.
   The alternative is that Synth can't build any applications that
   require strfile from games, e.g. all fortune ports.  Thanks! <sarcasm/>
Original commitRevision:432860 
Thursday, 26 Jan 2017
15:24 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.67 => 1.67a

I forgot to bump the version internally, so v1.67 was showing v1.66 still
on the help screen.  Fix and re-release 1.67.
Original commitRevision:432515 
Wednesday, 25 Jan 2017
15:02 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.66 => 1.67

This version blocks TTY signals to and from background processes, allowing
lang/sbcl to build as well as avoiding disruption of an active ncurses
display by "you've got mail" message.

It also includes a minor duration time formatting fix on build logs and
the many-thousands-open-file-descriptor problem fix on purge-distfiles
command provided by 1.66_1 between releases.

There is also a change in the build order algorithm.  Previously the
categories were ordered alphabetically, but rather scanned in the order
that appears by walking the directory.  Now when the "nothing depends on
these ports" ports block starts building, it's in A-Z order by category/
portname whereas before ony the portname was ordered A-Z (the categories
were blocks in random order).  There is no real benefit to the reordering;
it's mainly to satisfy those bothered by disorder.
Original commitRevision:432419 
Friday, 20 Jan 2017
03:40 marino search for other commits by this committer
ports-mgmt/synth: Fix open file descriptor issue for purge-distfiles cmd

The purge-distfiles command reads the distinfo file of every port in the
tree, but unfortunately never closed the file descriptor when the scan
was complete.  This resulted in 26,000+ open file descriptors, possibly
exceeding the host server's FD limit.  (issue #70)
Original commitRevision:431930 
Monday, 9 Jan 2017
13:16 amdmi3 search for other commits by this committer
- Remove always-true/false conditions after FreeBSD 9, 10.1, 10.2 EOL

Approved by:	portmgr blanket
Original commitRevision:430947 
Wednesday, 14 Dec 2016
19:24 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.65 => 1.66

The primary reason for the creation of v1.66 is to provide support for
pkgsrc on FreeBSD, DragonFly, NetBSD and initial support for Linux and
Solaris.  It represents over 100 commits and was successful.  Along the
way, some improvements were made for the ports version.  A (likely
incomplete) list includes:

- Improve watchdog kill message by including inactive time for trigger
- Add SYNTHPROFILE variable and value to builders' mk.conf which can be
  used by custom local makefiles
- Force users to define TERM in environment if it is not present
- Ensure fetch(1) doesn't check for valid SSL certificates.  Since all
  downloads are hash-checked for authenticity, misconfigured SSL of a
  webserver is not a good reason to break fetching.
- New 6th log which documents why existing packages are obsolete (same
  as setting WHYFAIL in env.) "06_obsolete_packages.log"
- New SELFTEST environment command for test mode which forces new "test"
  phase to execute (for ports with regression tests)
- Updated man page
Original commitRevision:428587 
Tuesday, 8 Nov 2016
15:21 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.64 => 1.65

Skip new "base" category during ports scanning

  The new base category was never meant to be part of the build so the
  category makefile was intentionally left off so poudriere and friends
  would skip it.

  Unfortunately, this idea didn't account for Synth which has a different
  behavior: If no category makefile exists, *ALL* subdirectories are
  scanned instead of none of them.  (DPorts doesn't use category Makefiles
  because by definition all ports are valid; there are no "unhooked" ones)

  The proper solution would be to include a practically blank
  ports/head/base/Makefile to maintain consistency with the rest of
  the ports categories, but synth now actively excludes the base category.

Change name of 05 log

  The command output log name has changed from "05_abnormal_cmd.out" to
  "05_abnormal_command_output.log".  The former tended to be considered
  a binary file by webservers and would download rather than display.

Final tally added to end of main 00_last_results.log file

  At the end of a bulk run, the final tally (queue size, built, failed,
  skipped, ignored) would be displayed in curses mode.  This change adds
  the same useful information to the end the main bulk run log.
Original commitRevision:425748 
Thursday, 3 Nov 2016
18:17 marino search for other commits by this committer
ports-mgmt/synth: Republish v1.64 as v1.64a

I forgot the internally increment the version number so it was still
showing v1.63.  The version fix is the only difference from v1.64.
Original commitRevision:425267 
18:00 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.63 => 1.64

Change in hook behavior:

  Now the initial building of pkg(8) triggers a success or failure hook
  after building.  Before ports-mgmt/pkg was the only port that could
  never trigger these hooks.  The "bulk run start" hook is triggered
  afterwords as pkg(8) is a prerequisite to preparing the bulk run.

Fix potential bad unmount of /usr/src

  In the case where /usr/src exists, but the profiles uses a system root
  that is not "/" and doesn't have an "usr/src" subdirectory, an error
  would be emitted as the unmount of the non-existant mount failed.  This
  uncommon use case has been fixed.

Curses display builder "Elapsed" label changed to "Duration"

  This matches the format of the web-based report

DragonFly only: Support File(1) v2.0 version parsing

  The output of file(1) version on DragonFly will change with version 2.0.
  For example, what is now version 4.0.702 will be displayed as 4.7.2 on
  newer versions of file(1).  Moreover, the parsing for DragonFly 4.10+
  would not have worked.  Now both versions are supports and the double-
  digit minor versions are properly handled as well.
Original commitRevision:425265 
Friday, 21 Oct 2016
18:59 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.62 => 1.63

Fix web report regression caused by cleaning of history files.

  The history files were being removed too late.  Any ignored/skipped
  files erased after writing (but would return with first built/failed
  port).   If more than 500 ports were ignored+skipped, the web report
  would fail to show the history completely and would not recover. The
  old history files are now removed before the ignore/skip cascades.
Original commitRevision:424435 
Thursday, 20 Oct 2016
18:24 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.61 => 1.62

Cosmetic: curses display

  Capitalize "Swap" and "Skipped" field labels

Cosmetic: web report

  After the build completes, fade out the builders table in 2.5 seconds.
  Nobody needs to see a table showing all the builders in "shutdown" mode.

Bandwidth: json files

  A history.json file holds up to 500 log entries.  16 bytes of spaces were
  removed which reduces the history file size by 8000 bytes.  Spaces were
  also removed from summary.json which can account for 20%+ of the size.

Only rewrite history files upon change:

  The last history.json file was being written/rewritten every 3 seconds
  regardless if there were changes to it or not.  Now it's only written
  if it's changed since the previous write.  This might help reduce errors
  seen by in nginx access log which are thought to occur when file changes
  as the file is being served.
Original commitRevision:424344 
Tuesday, 18 Oct 2016
18:02 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.60 => 1.61

Address "[N] Fetch prebuilt packages" bug:

  Once the /usr/local/etc/pkg/repos/00_synth.conf file was created, there
  was a good change that fetching prebuilt packages would stop with a
  fetch error that the checksum didn't match.  This seems to be caused by
  pkg(8) using both the FreeBSD and the Synth repositories and often
  deferring to the latter.  This is incorrect behavior as only the FreeBSD
  repository should be used for prefetching.  This issue is hopefully
  resolved now.

Web report behavior change:

  Any existing ??_history.json files are now deleted at the start of
  each run.  They were only litter as the javascript did not pull in old
  files, so this change just removes them.

  While here, rename the "Elapsed" column on the builders table to
  "Duration" to match the history table lable and also adjust the widths
  of the origin and information columns on the history table.
Original commitRevision:424192 
Saturday, 15 Oct 2016
20:24 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.54 => 1.60

Major new feature: Web-based front-end

  A dynamic html report is now generated for each build.  The report is
  placed at <profile log directory>/Report/index.html.

  The report is updated 10 times per minute.  The entire build history
  is retained and is searchable, but that history is reset at the start
  of the next run.

  In addition, several fields are clickable and trigger a quick-filter
  on the history log including the "Built", "Failed", "Ignored",
  "Skipped", "No." column and "ID" column (see tiptool for action hint)
  and the "Total" field clears the search pattern quickly.

  An earlier but representative version of the web report can be seen at:
  https://github.com/jrmarino/synth#web-interface

  The Synth web report pulls 2 orders of magnitude less data than the
  equivalent poudriere report because the json data is split into
  multiple files limited to 500 ports each (e.g. the poudriere data file
  might be 1.8 Mb on a big bulk run polled every 8 seconds where as
  Synth only pulls the latest segment file (50kb avg) every 6 seconds.
  Synth also stops polling when the run is complete.

Minor enhancement: The log files were cleaned up

  The data/phase headers and footers were modified so that the build
  log appears a lot cleaner now (subjective of course).
Original commitRevision:424025 
Sunday, 9 Oct 2016
02:58 marino search for other commits by this committer
devel/adacurses: Prevent building with base ncurses headers

It turns out that the C source files were getting built with the headers
from the base ncurses.  The recent update in Synth's display exposed a
resulting problem with the add chtype routines, resulting in garbled
output.  Since adacurses is a static library, synth requires a revbump.
Original commitRevision:423563 
Friday, 7 Oct 2016
19:43 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.53 => 1.54

Handles remaining resizing exceptions and improves display handling.

Yesterday's work handled most of the common display exceptions, but others
were still possible.  Now all possible exceptions are handled.

Several improvements were made to the display:
  1) lines no longer wrap if the size width is resized too narrow; they
     get truncated as always intended
  2) Elements such as the elapse timer don't get displayed in the wrong
     place when the screen is too narrow (they just don't show)
  3) The dashes now get restored if the screen is sized small and then
     big again (or started small and then expanded).  In many cases those
     lines just never came back before.
  4) The "full" refresh frequency was increased a period of 30 seconds to
     a period of 4 seconds.  This has a side benefit to text-mode watchdog
     as well since that's the same timer for the log inspection.
  5) The history window height ranges from 10 to 50 rows.  If the xterm
     window starts small, the history will be 10 lines.  If it starts
     big, the number of lines will be dictated by the original size of
     the xterm window.  Making the screen small and then bigger again will
     reveal the full number of log lines.
Original commitRevision:423482 
Wednesday, 5 Oct 2016
18:09 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.52 => 1.53

Major bug fix: ncurses display resize hang fixed

  Until now, resizing the window why synth is running in ncurses mode
  caused synth to hang (it would finish the builds it was working on
  but the display wouldn't update and no new jobs would start).  This
  was due to an unhandled exception thown by ncurses binding as a result
  of the resize event, and now these are handled.

Minor fix: Ports with @info in pkg-plist now pass in test mode

  The mtree exclusion file was improved to allow these leftover info
  directories to be ignored (as is done in poudriere.  Before only
  info/dir was ignored, but the presence of "dir" prevented "info" from
  being removed by pkg(8) upon deinstallation.

enhancement: Augment text mode (requested)

  Now when a builder starts on a new package, the port origin will be
  shown in the running log (before only the completion was logged.)
Original commitRevision:423361 
Wednesday, 28 Sep 2016
16:08 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.51 => 1.52

Fix regression in text-mode caused by activation of watchdog.
The watchdog is checking the lengths of the build logs to figure out if
a builder has stalled.  It turns out that the logs were only being
inspected in ncurses display mode, so any port that took longer than
20 minutes to build would be aborted by the watchdog.

While here, bump the *BASE* time limit for the build phase from 20 to
25 minutes based on extreme causes (normally involving gcc or tex ports)
and also bump the check-plist phase limit from 3 minutes to 10 minutes.
Some ports have tens of thousands of files in them which takes a long
time to check under test mode, especially if the server is loaded.
Original commitRevision:422879 
Tuesday, 6 Sep 2016
17:02 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.50 => 1.51

This release changes the watchdog time limits from a fixed value to
one that is affected by the average load.  Using fixed values didn't
work well on extremely (and intentionally) loaded servers, e.g. an
overage load of 200 on an server with ncpu of 32.

The base times which were long to account for loading have been reduced,
and a multiplier of average-5 load / ncpu rounded to the nearest tenth
has been implemented (with 1.0 as the floor value).  For example, a 4-core
machine with an average 5-minute load of 6.0 will multiply the base
timeout by 1.5.  This approach worked well in an extreme test against the
entire ports tree.
Original commitRevision:421445 
Wednesday, 31 Aug 2016
17:20 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.43 => 1.50

This release improves robustness and activates the watchdog.
It leveraes the procctl functionality to ensure all processes spawned
from a builder are reaped, which in turn ensures that tmpfs mounts can
be dismounted.  Previously stuck processes could prevent those dismounts,
trapping them as new mounts get placed on top.

This also finally enables the watchdog that will kill runaway builds.
The watchdog has a specific time limit per build phase where it will
kill the build if the log doesn't grow over the previous X minutes.

No activity timeout limits per phase are:

  check_sanity    :   1 minute
  pkg_depends     :   3 minutes
  fetch           : 480 minutes
  checksum        : 480 minutes (fetches if required)
  extract_depends :   3 minutes
  extract         :  30 minutes
  patch_depends   :   3 minutes
  patch           :   3 minutes
  build_depends   :   5 minutes
  build           :  20 minutes
  run_depends     :  10 minutes
  stage           :  20 minutes
  check_plist     :   3 minutes
  pkg_package     : 120 minutes
  install_mtree   :   3 minutes
  install         :  10 minutes
  deinstall       :  10 minutes

A minor change regarding the swap display: If there is no swap installed,
it will now display "n/a" instead of "100%"
Original commitRevision:421174 
Thursday, 25 Aug 2016
17:23 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.42 => 1.43

This is a minor bug fix version.  Changes include:
 * Set close-on-exec operation mode on popen.  This is required to stop
   leaking file descriptors in highly concurrent modes (e.g. 32 builders).
   It's not supported on FreeBSD 9 or DragonFly 4.4 (and earlier) so this
   modification is removed for those platforms.
 * Remove procfs mount for lang/rust and lang/rust-nightly.  This was
   necessary for DragonFly, but rust has been fixed for DF 4.6 and later
 * Add a stage-QA exception for entries left /var/spool/*.  The presence
   of these are not an identication of a port issue
 * Sanitize synthexec to verify file descriptors 0 .. 2 are in use and
   automatically close any file descriptor > 2 before execv fork.
Original commitRevision:420867 
Friday, 22 Jul 2016
02:15 marino search for other commits by this committer
ports-mgmt/synth: Remove ineffective sed command from port makefile

At one point during development of last changeset, the default.gpr
file needed to have a LOCALBASE correction, but that's no longer true.
This line shouldn't have made it into the previous commit.
Original commitRevision:418907 
01:40 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.41 => 1.42

This is a bug fix version.  Changes include:
  * Fix potential exception seen with a large number of builders.  The
    height of the log area was determined by subtracting the height of
    the other two zones from the overall xterm height.  This allowed for
    the possibility of a negative height for the log area resulting in a
    thrown exception.  Now the log is defined to be at least 10 lines
    log, but ncurses will just truncate as necessary.
  * Detection of bad OPSYS value added.  There's a rare case where pkg
    can corrupt the configuration value of the Operating System.  If it
    happens on FreeBSD, Synth thinks it is running on DragonFly which
    causes all sorts of problems.  The corruption can't be auto-fixed,
    but Synth will gracefully abort with instructions on how to correct
    the issue.
  * Fix filtering of port-mgmt/pkg in list of ports.  Synth was designed
    to always skip building pkg and thus remove it from a given list of
    ports, but the filtering didn't work correctly resulting in an
    exception with a misleading message.
  * Redirect failed jail setup command output to a new log:
    /var/log/synth/05_abnormal_cmd.out.  Under normal operation, the
    log will be empty, but any abnormal output will now be sent there
    rather than corrupt the ncurses display as it before now.
  * Fix mount cleanup procedure.  The output of "df -h" was being
    sorted alphabetically which caused mounts-on-mounts (an exception
    condition that dillon has been getting with H2 testing) to fail
    during dismount.  The df output is already in the correct order so
    it only needs to be iterated in reverse without the pre-sort.

Change:
  * Synth now links curses statically so it should not pull in any
    additional packages when the Synth binary package is installed.

The only known bug is the curses display will freeze if running in an
xterm window that gets resized.  The cause is still unknown because in
theory Synth should correctly react to a window-resize event.  Some
people may have success with ^z followed by fg command, but it's best
to avoid resizing the window at all.
Original commitRevision:418906 
Monday, 20 Jun 2016
16:57 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.40 => 1.41

This release adds detection and handling of circular dependencies.
Two users that tried replacing OpenSSL with LibreSSL found out that
ftp/curl depends on itself when its built with GNUTLS.  That's because
Synth goes into an infinity dependency loop, runs out of stack space,
and crashes.

Now Synth can detect a circular dependency and abort gracefully and
informatively, e.g.

> synth status ftp/curl
ftp/curl scan aborted because a circular dependency on ftp/curl was detected.
... backtrace devel/cmake
... backtrace emulators/tpm-emulator
... backtrace security/trousers
... backtrace security/gnutls
... backtrace ftp/curl

While here, build synth with stack-checking on so out-of-stack situations
result in an exception and not an illegal instruction crash.
Original commitRevision:417168 
Sunday, 12 Jun 2016
09:37 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.34 => 1.40

This release brings a behavioral change to Synth.  The action of building
package repositories is much more conservative now; packages that would
fail sanity checks are only removed under the following commands:
  * synth prepare-system
  * synth upgrade-system
  * synth rebuild-repository
  * synth everything

That means the following commands will never result in built packages
being removed now:
  * synth install
  * synth build (followed by "yes" to rebuild repo question)
  * synth force (followed by "yes" to rebuild repo question)

Other changes/fixes:
  * The PORTSCAN.SEEK_FAILURE exception is usually a false positive and
    should be fixed now
  * Under test mode leftover check, all changes to /var/db between
    installation and deinstallation are ignored rather than being flagged
    as a failure (see databases/mysql56-server test failure)
  * Add support for DragonFly's /boot/modules.local (similar to FreeBSD's
    /boot/modules)
  * Bring in ports patch to use installed libraries instead of the bundled
    versions
Original commitRevision:416781 
Saturday, 30 Apr 2016
07:27 marino search for other commits by this committer
ports-mgmt/synth: Stop using bundled adacurses & IFM

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.
Original commitRevision:414334 
Tuesday, 19 Apr 2016
09:10 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.33 => 1.34

* 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.
Original commitRevision:413629 
Friday, 1 Apr 2016
14:16 mat search for other commits by this committer
Remove ${PORTSDIR}/ from dependencies, categories m, n, o, and p.

With hat:	portmgr
Sponsored by:	Absolight
Original commitRevision:412348 
Monday, 28 Mar 2016
10:09 marino search for other commits by this committer
ports-mgmt/synth: Fix regression

The empty-queue check was supposed to improve pre-fetch behavior,
but it negatively affected other use modes, so remove the check
for now.
Original commitRevision:412036 
Sunday, 27 Mar 2016
14:21 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.32 => 1.33

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.
Original commitRevision:411988 
Sunday, 20 Mar 2016
11:49 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.31 => 1.32

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
Original commitRevision:411437 
Thursday, 17 Mar 2016
10:45 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.30 => 1.31

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.
Original commitRevision:411270 
Thursday, 10 Mar 2016
13:25 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.22 => 1.30

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.
Original commitRevision:410750 
Wednesday, 9 Mar 2016
08:53 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.21 => 1.22

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.
Original commitRevision:410696 
Tuesday, 8 Mar 2016
08:23 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.20 => 1.21

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.
Original commitRevision:410606 
01:48 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.11 => 1.20

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.
Original commitRevision:410599 
Thursday, 3 Mar 2016
10:17 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.10 => 1.11

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).
Original commitRevision:410024 
Wednesday, 2 Mar 2016
19:42 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.03 => 1.10

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.
Original commitRevision:409957 
Monday, 29 Feb 2016
19:44 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.02 => 1.03

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]
Original commitRevision:409824 
Wednesday, 17 Feb 2016
18:24 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.01 => 1.02 (tty checked)

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
Original commitRevision:409059 
14:43 marino search for other commits by this committer
ports-mgmt/synth: Upgrade version 1.00 => 1.01 (echo fixed)

The echo and control-flow flags weren't being restored correctly in
general, and they weren't being restored at program exit.  The result
on PuTTY was that nothing would echo to the terminal after Synth
exited, but the new version fixes it.
Original commitRevision:409048 
Tuesday, 16 Feb 2016
23:12 marino search for other commits by this committer
ports-mgmt/synth: Release version 1.00

I'm pleased to finally issue the first release of Synth.  There were some
significant changes since the last release candidate:

* Rework piped command handling to fix command parsing
  Synth was using ada-util to execute external commands and receive the
  output.  Unfortunately, this implementation currently can not handle
  either extra whitespace nor can it support quoted values.  The author
  is going to fix this soon using popen and pclose for Unix, but I just
  implemented the functionality by binding to those functions myself.
* This was the only use of ada-util (I originally expected to use more
  of this library's functionality) so it's been dropped as a dependency.
  This reduces the stripped executable size by about 30%.
* The environment was prepopulated with UNAME_[x] variables.  This is
  required for Synth to support building packages for different releases
  or even architectures (e.g. building 10.2 packages on 11.0-CURRENT).
* Define OSREL in the builder's /etc/make.conf.  This seemed to be
  required for emulators/virtio-kmod which uses <pre> although it's not
  clear defining OSREL is necessary.
* Fix graceful shutdown handling in text mode.
  When the graceful shutdown key was changed from Escape to Control-Q, it
  stopped working in text mode (i.e. when it wasn't in curses).  I believe
  that's because the curses display uses the "raw" tty mode and lets all
  control characters through.  In text mode, Control-Q has a flow control
  functionality.  I wrote a routine to disable that flow control and give
  Synth access to control-Q keypress in all cases.
* The same routine disables TTY echoes when they are unwanted
* Fix "status-everything" dry-run issue where a graceful shutdown resulted
  in an unwanted "sorry" message.
* In test mode file system violation check, mark changes to /var/run
  during building to be excluded from checks.
* Add a guard that checks if Synth is launched when the current directory
  is <sysroot>/usr/local (or a subdirectory of it).  Synth will fail
  to mount everything in this case, so now it stops and tells the user
  to change directories and try again.
Original commitRevision:409022 
Friday, 12 Feb 2016
21:56 marino search for other commits by this committer
ports-mgmt/synth: Yet another release candidate

Unfortunately, there's been a bit too much change since 0.99_6 to
confidently release version 1.00, so another release candidate is
necessary.  Both new features and bug fixes were added.

New features:
  * Provide ability to define environment variables in a profile
    (/usr/local/etc/synth/<profile>-environment)
  * Support fetching by proxy using these environment variables
  * Add zsh and bash completion scripts
  * Accept port origins with trailing file separators (so people
    using completion scripts don't have to backtrack to remove them)
  * In text (non-curses) mode, output the current package build
    tally every 200 seconds (approximately)

Bug fixes:
  * Fix support for system roots that don't match host (e.g.
    ARCH, OSRELEASE, OSVERSION, etc
  * Fix ABI check for system roots that don't match host
  * Remove effect of system /etc/make.conf (originally seen when
    MAKE_JOBS_NUMBER was defined there and disabled synth)
Original commitRevision:408766 
Sunday, 7 Feb 2016
09:48 marino search for other commits by this committer
ports-mgmt/synth: bug fixes and feature for port developers

I had hoped that 0.99_5 would be bug-free and the basis for the first
release (1.00), but couple were found.  If use of 0.99_6 reveals no
further issues after a week or so, I'll re-release it as v1.00.

bugs fixed:
  * if the origin started with a directory separator, an exception would
    occur.  Now it properly labels it as an invalid origin.
  * The "extract" stage was labelled as "checksum".  Internally everything
    was fine, but on the display, the order was checksum, extract-depends,
    checksum instead of checksum, extract-depends, extract.
  * During one phase (build), the DEVELOPER flag was set unconditionally.
    This was a regression as it wasn't always the case.  This code was
    tweaked several times since 0.99_5 and now the DEVELOPER setting has
    been moved the builder's make.conf to ensure it's consistently
    present or absent (as needed).
  * It turns out that the ports tree scan is affected by the DEVELOPER
    flag.  It turns out the setting can affect the dependencies list so
    it needs to be set (or absent) appropriately to match how it will be
    on the builders.  The make.conf solution above solves this too.
  * There was "NO_BACKUP" set in the builders make.conf.  This line is
    for the DragonFly src builder and it's presence caused no harm, but
    it's been removed now.
  * Make ports makefile respect CFLAGS

new feature:
  * Provide ability to break into a build at a specific point and
    interact with it.
      -  Only available on "test" command
      -  Only active when one (1) port origin is given to "test" command
      -  Only active when ENTERAFTER is defined in environment as:
           > extract
           > patch
           > configure
           > build
           > stage
           > install
           > deinstall
      -  All dependencies are built first with typical display and
         DEVELOPER=1 set.  Afterwards, Synth converts to text mode and
         builds the specified port up to and including the phase specified
         by ENTERAFTER.  Then it launches a tcsh shell and gives control
         to the user at the builder's root directory
      -  The user ends the interactive session with the shell cmd "exit"
      -  Synth will clean up and exit (it will not try to continue the
         build due to possible corruption from the users)
   * This is a port developers tool.  The average user does not need it.
   * The average user might use "test" command to generate a log to submit
     as a FreeBSD Bugzilla PR attachment.
Original commitRevision:408354 
Thursday, 4 Feb 2016
14:26 marino search for other commits by this committer
ports-mgmt/synth: Fix end-run regression

A fairly recent change caused a regression after a build was complete.
Previously a "tally" or summary of the build would appear after the
ncurses screen was restored to the regular terminal mode.  It would
list how many ports were built, failed, etc.  After the regressin, it
just ended abruptly.

This commit restores the tally to show as it did previously.
Original commitRevision:408035 
Wednesday, 3 Feb 2016
19:55 marino search for other commits by this committer
ports-mgmt/synth: new feature, minor bug fixes and improvements

This is a minor update to synth, which includes:
  * Support for the WHYFAIL environment variable.  If this variable
    is defined (to any value) in the environment, Synth will turn on
    the "debug" mode for dependency and option sanity checks.  This
    mode will provide exact details on how the package failed the check.
  * README.md: editorial corrections, 3 images replaced to reflect current
    version of Synth
  * Man page: editorial correction, WHYFAIL documented, and the "Impulse"
    indicator was documented (in NOTES section)
  * Significantly improve ports scan error messages.  In particular,
    eliminate the 'bad value ""' messages that are caused by ports that
    are partially or completely missing.  Also propagate exception
    messages when helping.
  * Log 03 (ignored ports) did not list the actual ports, only the reason
    the port was ignored.  Fix bug to show category/port too.

Erratum on previous commit message: The "Graceful Shutdown" is initiated
with Control-Q, not Control-C!  The typo is doubly unfortunate because
Control-C will exit Synth without cleaning up the mounts.
Original commitRevision:407973 
Tuesday, 2 Feb 2016
21:47 marino search for other commits by this committer
build/synth: bug fixes, new features

WARNING: rebuild-repository command has changed action!  see below!

The follow changes have been made since v0.99_2:
  * Change the graceful shutdown key from "Escape" to Control-C.
    The former was easy to hit inadvertently (reported) and could be
    interfered with by terminal ANSI codes and/or mouse wheels.  The
    documentation has also been modified to reflect this change.
  * Fixed bug where installed packages that no longer had a port
    might cause the scan to fail rather than be ignored as advertised
  * New feature: SYNTHPROFILE environment variable
    When SYNTHPROFILE is set toTill be loaded rather than the default
    profile.  This is aimed for synth's use in scripts.
  * The "rebuild-repository" command has been renamed to "prepare-system".
    This is partly because the former command will be repurposed.
  * A new command assumed the name "rebuild-repository"; it performs a
    sanity check on all the built packages, removes the bad ones, and
    rebuilds the local Synth repository on command.  It is primarily for
    scripting use, but it has other legitimate uses.
  * Fix case where prefetching packages would try to update a non-existent
    local Synth directory.  As a consequence, prefetching is only done
    from a single external repository (the normal use case thought)
Original commitRevision:407849 
Thursday, 28 Jan 2016
09:29 marino search for other commits by this committer
ports-mgmt/synth: two minor but important bug fixes

1) Fixed false "fetched failed" messages that always appear after
   prebuilt packages are fetched
2) Fix bug where "synth configure" command would not run if any directories
   were invalid.  For new systems, /usr/ports/distfiles is always invalid
3) Following 2), greatly improve error message by saying exactly which
   directory is missing and which configuration letter it pertains to
4) If synth is configured to a non-existent /usr/ports/distfiles directory,
   also add a recommendation to consider a better location outside of the
   ports tree and remind them to set DISTDIR in /etc/make.conf too.
Original commitRevision:407404 
Wednesday, 27 Jan 2016
12:59 marino search for other commits by this committer
ports-mgmt/synth: minor fixes plus linprocfs fix

1) When using prefetch option, list the packages that failed to download
   rather than just say, "at least one failed to download"
2) sysutils/htop requires linprocfs but doesn't set USE_LINUX.  Set this
   port to mount linprocfs based on its origin
3) Fix linprocfs implementation, it was mounting out of order, basically
   resulting in that it was non-functional
4) Close all the logs in the case where no packages are built.  In that
   case, the logs were never modified.  Changes discarded?
Original commitRevision:407356 
Tuesday, 26 Jan 2016
00:22 marino search for other commits by this committer
ports-mgmt/synth: v0.99 (RC), fixes / use official pkgs feature

Now Synth has all the features envisioned for the first release.  This
edition add an option (off by default) to fetch prebuilt packages if
they are suitable (ABI, options, dependencies match).  This feature is
aimed at people that only want to build ports with customized options,
but for ports with default configurations, they are happy to use the
official packages.  The feature is not heavily tested yet.

Once this version is sufficently tested, Release 1.00 will follow.

Other changes since 0.98_5:
  * curses will redrawn itself (correctly now) every 30 seconds to
    fix any corruption that may have occured
  * Synth everything will build the repository without deleting packages
    now (this was disabled on the last update)
  * The repos directory for pkg is read from pkg config instead of using
    the hardcoded defaults
  * The man page has been updated with new feature descriptions
  * linprocfs is mounted for linux_base ports
  * The regression that prevented linux ports from building has been
    fixed.  It was caused by caching LINUX_OSVERSION, so this variable is
    no longer cached.
Original commitRevision:407249 
Sunday, 24 Jan 2016
09:42 marino search for other commits by this committer
ports-mgmt/synth: Finish test mode and various fixes

The following changes have been implemented:
  * The "test" command checks for file system violations between
    the configure and build targets (inclusive)
  * The "test" command hecks for leftover (extra), missing, and
    unexpectedly modified files and directories between the stage and
    deinstall targets (inclusive)
  * Fix bug where success system-upgrade was indicated as a failure
  * Bring in procfs mounts for x11-toolkits/gnustep-gui (only!)
    It appears to the be only port that needs it, but procfs appears to be
    pretty unstable, so we don't mount/dismount it unconditionally
  * Similarly, change linprocfs mounts/dismounts to only occur when when
    linux ports are building.  Linprocfs stability is unknown (and I can't
    test it on DF) so be conservative and use it as little as possible.
  * Fix bug on builders /etc/group file (some groups were missing)
  * Install /etc/master.passwd in builders, it is required for at least
    one port
  * Install /etc/rc.d and /etc/defaults/rc.conf in builders.  It is
    required for at least one port
  * Disable repository rebuild after synth-everything.  Twice it has
    removed all packages (over 23,000!) after a build, so there's a bug
    or missing safeguard there.
  * Watchdog status: Situation is better if scons ports are unwatched, but
    python3* freezes along with a handful of other ports.  It works 99% of
    the time, but not reliably enough yet to re-enable.
Original commitRevision:407093 
Monday, 18 Jan 2016
00:00 marino search for other commits by this committer
ports-mgmt/synth: disable hanging process watchdog due to scons

After setting the group process ID and then execv'ing into the
ports build target, any port using scons just locks up immediately
without any kind of message.  I assume it's a bug in scons but it
will take a while to resolve (probably requires a testcase case and
submitting upstream).   Since it caused a significant regression and
since normally users shouldn't hit hung processes often, I'm disabling
the feature for now.
Original commitRevision:406539 
Sunday, 17 Jan 2016
16:01 marino search for other commits by this committer
ports-mgmt/synth: hanging process watchdog and various fixes

The following changes have been implemented:
  * The builder command executer had been upgraded with a watchdog.  It
    does not monitor the overall time of a phase (things like fetch /
    checksum vary depending on the internet connection and the volume it
    needs to download ranges from bytes to gigabytes), but it does monitor
    log progress.  Each phase has a maximum amount of time allowed for the
    log to be static (measured in lines, not file size).  If the log is
    static for too long for that phase, the processes of the builder will
    be killed, and the builder log updated accordingly.
  * The load indicator was stuck at 0.00 for some named locales (only on
    FreeBSD) so this was resolved.
  * Ports tree scanning time was cut nearly in half by caching make
    variables on each builders make.conf
  * Support for /usr/lib/lib32 was added for FreeBSD
  * purge-distfiles command was improved by handling potential exceptions
    and fixing the case of 100-1023 Mb purged (range was too narrow)
  * Typos on man page fixed
  * The directory ${PORTSDIR}/packages are now ignored.  This is the
    default package location and any existing packages were getting
    treated as port directories.
  * Skip some additional questions/actions if a graceful shutdown was
    previously detected
Original commitRevision:406514 
Monday, 11 Jan 2016
21:33 marino search for other commits by this committer
ports-mgmt/synth: Fix potential installation problem

On DragonFly, $LOCALBASE/etc/pkg/repos always exists, so I forgot to
verify that.  On FreeBSD, it doesn't necessarily.  Make sure to create
this path if it's missing before trying to write 00_synth.conf there.
While here, add an error message if it still fails for any reason.
Original commitRevision:405812 
17:13 marino search for other commits by this committer
ports-mgmt/synth: Fix two significant bugs

The big one: FreeBSD distfiles are located by default inside the ports
tree (which is kind of insane).  I forgot this and people that did not
modify DISTDIR had this directory full of files, which synth interprets
as non-functioning ports.  Make directory scans skip this directory if
found to correct.

The smaller one: Synth was supposed to squawk if it couldn't find a
valid portsdir at the environment (PORTSDIR), /usr/dports, or /usr/ports.
The squawk didn't work.  Moreover, it wouldn't check PORTSDIR set at
/etc/make.conf.  This change makes synth check there after the env.
check (thank you for the hint, bapt@).  It also correctly squawks
without creating synth.ini when PORTSDIR isn't valid.
Original commitRevision:405790 
Sunday, 10 Jan 2016
21:18 marino search for other commits by this committer
Add new port: ports-mgmt/synth

Synth is a custom packge repository builder for FreeBSD and DragonFly.
It is intended to replace Portmaster, portupgrade, and poudriere for
the average user.  It is simple to learn (the powerful options are
limited in number) and user-friendly, but it is extremely fast due
to its parallel building capability.  It will "drop-in" on any system
as it leverages the stock pkg(8) facilities.  All ports are built
in a clean environment, so it is finally safe to build ports as
needed on a live system.  The default profile is the system itself, not
a new jail, which can be a valuable feature for some environments.

(more text on pkg-desc).
It's ready for wider testing now.
Original commitRevision:405749 

Number of commits found: 87