From owner-freebsd-ports@FreeBSD.ORG Sun Mar 30 21:13:25 2014 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4DE86D85 for ; Sun, 30 Mar 2014 21:13:25 +0000 (UTC) Received: from homiemail-a34.g.dreamhost.com (sub4.mail.dreamhost.com [69.163.253.135]) by mx1.freebsd.org (Postfix) with ESMTP id 28E0CB8B for ; Sun, 30 Mar 2014 21:13:24 +0000 (UTC) Received: from homiemail-a34.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a34.g.dreamhost.com (Postfix) with ESMTP id 744761005D for ; Sun, 30 Mar 2014 14:13:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=saltant.com; h=message-id :date:from:mime-version:to:subject:content-type; s=saltant.com; bh=UocUZ3birtWQOB5RSAbFgUsXLw8=; b=fpoCkiiPjqVhgRwnU7+dhBdiCeuR 0W3e1VpsHpsGy5CTQaAvVbqZbiChKozNBr7uPz6+fyOH5NzmW4zgTiugmm0EYmn7 DEahx3QtLdOHdoHrerx5h2ERmlSARkMBmoCmkKqFalaWpemDl+S2TXxdL1/74mmC VpkcyGRIpLcd1uY= Received: from dreck.saltant.net (dreck.saltant.net [72.78.188.150]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: john@saltant.com) by homiemail-a34.g.dreamhost.com (Postfix) with ESMTPSA id 3864710059 for ; Sun, 30 Mar 2014 14:13:18 -0700 (PDT) Message-ID: <533888EB.2060503@saltant.com> Date: Sun, 30 Mar 2014 17:13:15 -0400 From: "John W. O'Brien" Organization: Saltant Solutions User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: FreeBSD Ports Subject: Discover stored options different from port defaults/defines X-Enigmail-Version: 1.6 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="Qq8wlt8r93sV1uGiMjOlUN47d0aooSCeq" X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Mar 2014 21:13:25 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --Qq8wlt8r93sV1uGiMjOlUN47d0aooSCeq Content-Type: multipart/mixed; boundary="------------020709060304000201070301" This is a multi-part message in MIME format. --------------020709060304000201070301 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hello ports@, In the bad old days before poudriere and various improvements to OptionsNG came to town, when I was using portmaster* to handle upgrades, I cobbled together a configuration management practice that involved using rsync and git to store /var/db/ports in a repository. The usual workflow looked roughly like this: svn up /usr/ports portmaster -dga # handle changes to OPTIONS_DEFINE and its brethren here rsync -rpt --del --exclude distfiles /var/db/ports/ /path/to/repo cd /path/to/repo git commit -a -m "Store options that changed" A downside of this approach is that it couldn't distinguish between options I care about ("Always do this" and "Never do this") and options I don't care about ("Do what the maintainer thinks is best"). The only upstream changes that would bubble to the surface of their own accord were NEW_OPTIONS when OPTIONS_DEFINE changed. When I switched from portmaster to poudriere+pkgng, I migrated /var/db/ports to /usr/local/etc/poudriere.d/$jail-$ports-$set-options and that worked OK for a little while. However, this compounded the old problem in that now even NEW_OPTIONS would arrive silently. The first part of my solution to these problems is to store only the options that I know I care about. That is, I know I need to find out where a stored option disagrees with the default. I couldn't figure out how to use the stock tools to peel apart currently stored options from current default options, so I wrote a ``nondefaultconfig`` target for Mk/bsd.port.mk (see attached), set all the common options (DOCS, IPv6, etc) explicitly in /etc/make.conf using OPTIONS_SET/OPTIONS_UNSET, and ran the new target against all of my installed ports, replacing a subtree full of options files with a single, quite modest make.conf. To make this more generally-useful, it would need to behave more like NEW_OPTIONS. cd /usr/ports pkg info -aoq | sort | xargs -n1 make nondefaultconfig -C \ >> /usr/local/etc/poudriere.d/$jail-make.conf rm -fr /usr/local/etc/poudriere.d/$jail-$ports-$set-options At this point, any option not configured by $jail-make.conf will be allowed to vary according to the whims of the maintainer. The next part of the problem that I would like to solve is learning about options that I don't yet know I care about (OPTIONS_DEFINE gains a member), and secondarily to learn when an option is past caring (OPTIONS_DEFINE loses a member that I used to care about), so that I can update $jail-make.conf in an orderly fashion. I welcome any comments on my approach so far, or suggestions about how I might proceed. Regards, John * Made the bad old days less bad. --------------020709060304000201070301 Content-Type: text/plain; charset=UTF-8; name="patch-Mk__bsd.port.mk-nondefault.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch-Mk__bsd.port.mk-nondefault.txt" SW5kZXg6IE1rL2JzZC5wb3J0Lm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIE1rL2JzZC5wb3J0Lm1r CShyZXZpc2lvbiAzNDk1OTcpCisrKyBNay9ic2QucG9ydC5tawkod29ya2luZyBjb3B5KQpA QCAtNjA2MCw2ICs2MDYwLDI3IEBACiAuZW5kaWYKIC5lbmRpZiAjIGNvbmZpZy1jb25kaXRp b25hbAogCitOT05ERUZBVUxUX09QVElPTlNfU0VUPQorTk9OREVGQVVMVF9PUFRJT05TX1VO U0VUPQorLmZvciBvcHQgaW4gJHtBTExfT1BUSU9OU30KKy4gICBpZiBlbXB0eShPUFRJT05T X0RFRkFVTFQ6TSR7b3B0fSkgJiYgIWVtcHR5KFBPUlRfT1BUSU9OUzpNJHtvcHR9KSAmJiBl bXB0eShPUFRJT05TX1NFVDpNJHtvcHR9KQorTk9OREVGQVVMVF9PUFRJT05TX1NFVCs9JHtv cHR9CisuICAgZW5kaWYKKy4gICBpZiAhZW1wdHkoT1BUSU9OU19ERUZBVUxUOk0ke29wdH0p ICYmIGVtcHR5KFBPUlRfT1BUSU9OUzpNJHtvcHR9KSAmJiBlbXB0eShPUFRJT05TX1VOU0VU Ok0ke29wdH0pCitOT05ERUZBVUxUX09QVElPTlNfVU5TRVQrPSR7b3B0fQorLiAgIGVuZGlm CisuZW5kZm9yCisKKy5pZiAhdGFyZ2V0KG5vbmRlZmF1bHRjb25maWcpCitub25kZWZhdWx0 Y29uZmlnOgorLiAgIGlmICFlbXB0eShOT05ERUZBVUxUX09QVElPTlNfU0VUKQorCUAke0VD SE9fTVNHfSAiJHtPUFRJT05TX05BTUV9X1NFVD0JJHtOT05ERUZBVUxUX09QVElPTlNfU0VU fSIKKy4gICBlbmRpZgorLiAgIGlmICFlbXB0eShOT05ERUZBVUxUX09QVElPTlNfVU5TRVQp CisJQCR7RUNIT19NU0d9ICIke09QVElPTlNfTkFNRX1fVU5TRVQ9CSR7Tk9OREVGQVVMVF9P UFRJT05TX1VOU0VUfSIKKy4gICBlbmRpZgorLmVuZGlmICMgbm9uZGVmYXVsdGNvbmZpZwor CiAuaWYgIXRhcmdldChzaG93Y29uZmlnKQogLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2Jz ZC5vcHRpb25zLmRlc2MubWsiCiBNVUxUSV9FT0w9CTogeW91IGhhdmUgdG8gY2hvb3NlIGF0 IGxlYXN0IG9uZSBvZiB0aGVtCg== --------------020709060304000201070301-- --Qq8wlt8r93sV1uGiMjOlUN47d0aooSCeq Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.22 (Darwin) Comment: GPGTools - http://gpgtools.org iQEcBAEBCgAGBQJTOIjwAAoJEORay8JGGICYkdkH/3t6m9pS6EJoGB3PAdN3gNWg pFG+nA5Q2NKEK9U0a9grT9BndHN1wJQhD42R+e9w4qbPprT8zBRhUGjqvUFkxfTN UKAifDScS8VXmWpFvkuWUoKNydD+1gS0qn4VZV5e+2tEDO1eseknBWcvIPEmfu2V BD4ZJSWzbUYko1uzLrANq38o3b351D3VWMwzFk3FxAQ6ovZI6nRQAs4Buy3gCsbA 7BYSfkom1zzoNLxJ1JKwO2DdGcHh+yEWH37WBLtG17PzbG7vRrRkGezhXA0sWpu1 TYpJCPoYyCuPENjRy/IicFNHNgU4APGSlMcUnykPiFxSBtE0nkAE3qy7T5tLfIs= =Q0A5 -----END PGP SIGNATURE----- --Qq8wlt8r93sV1uGiMjOlUN47d0aooSCeq--