public inbox for gentoo-portage-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
@ 2018-03-15 19:22 Michał Górny
  2018-03-15 19:22 ` [gentoo-portage-dev] [PATCH 1/3] portage.package.ebuild.config: Move FEATURES=no* handling there Michał Górny
                   ` (5 more replies)
  0 siblings, 6 replies; 26+ messages in thread
From: Michał Górny @ 2018-03-15 19:22 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: Michał Górny

Hi,

Here are three of four INSTALL_MASK updates I've sent long time ago
which were not really reviewed. The fourth patch added support
for repo-defined install-mask.conf and I'll do that separately.

Those patches focus on smaller changes. What they change, in order:

1. Removes explicit file removal code for FEATURES=no*. Instead, those
   values are converted into additional INSTALL_MASK entries
   and handled directly via INSTALL_MASK processing.

2. Rework INSTALL_MASK to filter files while installing instead of
   pre-stripping them. In other words, before: INSTALL_MASK removes
   files from ${D} before merge. After: ${D} contains all the files,
   Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.

3. Adds support for exclusions in INSTALL_MASK. In other words, you
   can do stuff like:

     INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"

I have been using this via user patches since the last submission.
Guessing by 'git log', this means almost 2 years now.

--
Best regards,
Michał Górny

Michał Górny (3):
  portage.package.ebuild.config: Move FEATURES=no* handling there
  portage.dbapi.vartree: Move INSTALL_MASK handling into merging
  portage.dbapi.vartree: Support exclusions in INSTALL_MASK

 bin/misc-functions.sh                |  30 ----------
 pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
 pym/portage/package/ebuild/config.py |  11 ++++
 3 files changed, 77 insertions(+), 68 deletions(-)

-- 
2.16.2



^ permalink raw reply	[flat|nested] 26+ messages in thread

* [gentoo-portage-dev] [PATCH 1/3] portage.package.ebuild.config: Move FEATURES=no* handling there
  2018-03-15 19:22 [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Michał Górny
@ 2018-03-15 19:22 ` Michał Górny
  2018-03-15 19:22 ` [gentoo-portage-dev] [PATCH 2/3] portage.dbapi.vartree: Move INSTALL_MASK handling into merging Michał Górny
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 26+ messages in thread
From: Michał Górny @ 2018-03-15 19:22 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: Michał Górny

Move the code responsible for adding additional paths to INSTALL_MASK
into portage.package.ebuild.config.
---
 bin/misc-functions.sh                | 13 -------------
 pym/portage/package/ebuild/config.py | 10 ++++++++++
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh
index 7643af7b5..6a5c2ea05 100755
--- a/bin/misc-functions.sh
+++ b/bin/misc-functions.sh
@@ -375,20 +375,7 @@ preinst_mask() {
 	# in there in case any tools were built with -pg in CFLAGS.
 	cd "${T}"
 
-	# remove man pages, info pages, docs if requested
-	local f
-	for f in man info doc; do
-		if has no${f} $FEATURES; then
-			INSTALL_MASK="${INSTALL_MASK} /usr/share/${f}"
-		fi
-	done
-
 	install_mask "${ED}" "${INSTALL_MASK}"
-
-	# remove share dir if unnessesary
-	if has nodoc $FEATURES || has noman $FEATURES || has noinfo $FEATURES; then
-		rmdir "${ED%/}/usr/share" &> /dev/null
-	fi
 }
 
 preinst_sfperms() {
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
index 3dc64a067..3f575fcaf 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -2465,6 +2465,16 @@ class config(object):
 		myflags.difference_update(self.usemask)
 		self.configlist[-1]["USE"]= " ".join(sorted(myflags))
 
+		# Prepare the final value of INSTALL_MASK
+		install_mask = self.get("INSTALL_MASK", '').split()
+		if 'nodoc' in self.features:
+			install_mask.append("/usr/share/doc")
+		if 'noinfo' in self.features:
+			install_mask.append("/usr/share/info")
+		if 'noman' in self.features:
+			install_mask.append("/usr/share/man")
+		self["INSTALL_MASK"] = ' '.join(install_mask)
+
 		if self.mycpv is None:
 			# Generate global USE_EXPAND variables settings that are
 			# consistent with USE, for display by emerge --info. For
-- 
2.16.2



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [gentoo-portage-dev] [PATCH 2/3] portage.dbapi.vartree: Move INSTALL_MASK handling into merging
  2018-03-15 19:22 [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Michał Górny
  2018-03-15 19:22 ` [gentoo-portage-dev] [PATCH 1/3] portage.package.ebuild.config: Move FEATURES=no* handling there Michał Górny
@ 2018-03-15 19:22 ` Michał Górny
  2018-03-15 19:22 ` [gentoo-portage-dev] [PATCH 3/3] portage.dbapi.vartree: Support exclusions in INSTALL_MASK Michał Górny
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 26+ messages in thread
From: Michał Górny @ 2018-03-15 19:22 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: Michał Górny

Introduce a new logic for INSTALL_MASK handling in merging code,
replacing the old code that removed matching files and directories
from imagedir in bash. The new code actually ignores matching files
on-the-fly while testing for file collisions and merging files.
The files are still written to CONTENTS, and output using "###" zing
to indicate being masked, yet are not actually merged to the filesystem.
---
 bin/misc-functions.sh                |  17 ------
 pym/portage/dbapi/vartree.py         | 102 ++++++++++++++++++++++-------------
 pym/portage/package/ebuild/config.py |   3 +-
 3 files changed, 66 insertions(+), 56 deletions(-)

diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh
index 6a5c2ea05..59391816b 100755
--- a/bin/misc-functions.sh
+++ b/bin/misc-functions.sh
@@ -361,23 +361,6 @@ install_mask() {
 	set -${shopts}
 }
 
-preinst_mask() {
-	if [ -z "${D}" ]; then
-		 eerror "${FUNCNAME}: D is unset"
-		 return 1
-	fi
-
-	if ! ___eapi_has_prefix_variables; then
-		local ED=${D}
-	fi
-
-	# Make sure $PWD is not ${D} so that we don't leave gmon.out files
-	# in there in case any tools were built with -pg in CFLAGS.
-	cd "${T}"
-
-	install_mask "${ED}" "${INSTALL_MASK}"
-}
-
 preinst_sfperms() {
 	if [ -z "${D}" ]; then
 		 eerror "${FUNCNAME}: D is unset"
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
index 8b1b77f7d..21904edca 100644
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@ -2491,7 +2491,7 @@ class dblink(object):
 								(statobj.st_dev, statobj.st_ino),
 								[]).append(relative_path)
 
-					if is_owned:
+					if is_owned and not self._is_install_masked(relative_path[1:]):
 						show_unmerge("---", unmerge_desc["replaced"], file_type, obj)
 						continue
 					elif relative_path in cfgfiledict:
@@ -3689,6 +3689,24 @@ class dblink(object):
 	def _emerge_log(self, msg):
 		emergelog(False, msg)
 
+	def _is_install_masked(self, relative_path):
+		ret = False
+		for pattern in self.settings.install_mask:
+			# absolute path pattern
+			if pattern.startswith('/'):
+				# match either exact path or one of parent dirs
+				# the latter is done via matching pattern/*
+				if (fnmatch.fnmatch(relative_path, pattern[1:])
+						or fnmatch.fnmatch(relative_path, pattern[1:] + '/*')):
+					ret = True
+					break
+			# filename
+			else:
+				if fnmatch.fnmatch(os.path.basename(relative_path), pattern):
+					ret = True
+					break
+		return ret
+
 	def treewalk(self, srcroot, destroot, inforoot, myebuild, cleanup=0,
 		mydbapi=None, prev_mtimes=None, counter=None):
 		"""
@@ -3848,16 +3866,6 @@ class dblink(object):
 					max_dblnk = dblnk
 			self._installed_instance = max_dblnk
 
-		# Apply INSTALL_MASK before collision-protect, since it may
-		# be useful to avoid collisions in some scenarios.
-		# We cannot detect if this is needed or not here as INSTALL_MASK can be
-		# modified by bashrc files.
-		phase = MiscFunctionsProcess(background=False,
-			commands=["preinst_mask"], phase="preinst",
-			scheduler=self._scheduler, settings=self.settings)
-		phase.start()
-		phase.wait()
-
 		# We check for unicode encoding issues after src_install. However,
 		# the check must be repeated here for binary packages (it's
 		# inexpensive since we call os.walk() here anyway).
@@ -3929,6 +3937,10 @@ class dblink(object):
 
 					relative_path = fpath[srcroot_len:]
 
+					# filter on INSTALL_MASK
+					if self._is_install_masked(relative_path):
+						continue
+
 					if line_ending_re.search(relative_path) is not None:
 						paths_with_newlines.append(relative_path)
 
@@ -4658,6 +4670,7 @@ class dblink(object):
 		while mergelist:
 
 			relative_path = mergelist.pop()
+			instmasked = self._is_install_masked(relative_path)
 			mysrc = join(srcroot, relative_path)
 			mydest = join(destroot, relative_path)
 			# myrealdest is mydest without the $ROOT prefix (makes a difference if ROOT!="/")
@@ -4744,7 +4757,7 @@ class dblink(object):
 				destmd5 = None
 
 			moveme = True
-			if protected:
+			if protected and not instmasked:
 				mydest, protected, moveme = self._protect(cfgfiledict,
 					protect_if_modified, mymd5, myto, mydest,
 					myrealdest, mydmode, destmd5, mydest_link)
@@ -4772,7 +4785,7 @@ class dblink(object):
 				# we can simply test for existence of this file to see if the target has been merged yet
 				myrealto = normalize_path(os.path.join(destroot, myabsto))
 				if mydmode is not None and stat.S_ISDIR(mydmode):
-					if not protected:
+					if not protected and not instmasked:
 						# we can't merge a symlink over a directory
 						newdest = self._new_backup_path(mydest)
 						msg = []
@@ -4792,26 +4805,32 @@ class dblink(object):
 					# it later.
 					secondhand.append(mysrc[len(srcroot):])
 					continue
-				# unlinking no longer necessary; "movefile" will overwrite symlinks atomically and correctly
-				if moveme:
-					zing = ">>>"
-					mymtime = movefile(mysrc, mydest, newmtime=thismtime,
-						sstat=mystat, mysettings=self.settings,
-						encoding=_encodings['merge'])
 
-				try:
-					self._merged_path(mydest, os.lstat(mydest))
-				except OSError:
-					pass
+				if instmasked:
+					zing = "###"
+					# pass mymtime through from initial stat
+				else:
+					# unlinking no longer necessary; "movefile" will overwrite symlinks atomically and correctly
+					if moveme:
+						zing = ">>>"
+						mymtime = movefile(mysrc, mydest, newmtime=thismtime,
+							sstat=mystat, mysettings=self.settings,
+							encoding=_encodings['merge'])
+
+					try:
+						self._merged_path(mydest, os.lstat(mydest))
+					except OSError:
+						pass
 
 				if mymtime != None:
-					# Use lexists, since if the target happens to be a broken
-					# symlink then that should trigger an independent warning.
-					if not (os.path.lexists(myrealto) or
-						os.path.lexists(join(srcroot, myabsto))):
-						self._eqawarn('preinst',
-							[_("QA Notice: Symbolic link /%s points to /%s which does not exist.")
-							% (relative_path, myabsto)])
+					if not instmasked:
+						# Use lexists, since if the target happens to be a broken
+						# symlink then that should trigger an independent warning.
+						if not (os.path.lexists(myrealto) or
+							os.path.lexists(join(srcroot, myabsto))):
+							self._eqawarn('preinst',
+								[_("QA Notice: Symbolic link /%s points to /%s which does not exist.")
+								% (relative_path, myabsto)])
 
 					showMessage("%s %s -> %s\n" % (zing, mydest, myto))
 					if sys.hexversion >= 0x3030000:
@@ -4826,7 +4845,9 @@ class dblink(object):
 					return 1
 			elif stat.S_ISDIR(mymode):
 				# we are merging a directory
-				if mydmode != None:
+				if instmasked:
+					showMessage("### %s/\n" % mydest)
+				elif mydmode != None:
 					# destination exists
 
 					if bsd_chflags:
@@ -4913,10 +4934,11 @@ class dblink(object):
 					os.chown(mydest, mystat[4], mystat[5])
 					showMessage(">>> %s/\n" % mydest)
 
-				try:
-					self._merged_path(mydest, os.lstat(mydest))
-				except OSError:
-					pass
+				if not instmasked:
+					try:
+						self._merged_path(mydest, os.lstat(mydest))
+					except OSError:
+						pass
 
 				outfile.write("dir "+myrealdest+"\n")
 				# recurse and merge this directory
@@ -4925,7 +4947,7 @@ class dblink(object):
 
 			elif stat.S_ISREG(mymode):
 				# we are merging a regular file
-				if not protected and \
+				if not protected and not instmasked and \
 					mydmode is not None and stat.S_ISDIR(mydmode):
 						# install of destination is blocked by an existing directory with the same name
 						newdest = self._new_backup_path(mydest)
@@ -4939,9 +4961,11 @@ class dblink(object):
 						self._eerror("preinst", msg)
 						mydest = newdest
 
+				if instmasked:
+					zing = "###"
 				# whether config protection or not, we merge the new file the
 				# same way.  Unless moveme=0 (blocking directory)
-				if moveme:
+				elif moveme:
 					# Create hardlinks only for source files that already exist
 					# as hardlinks (having identical st_dev and st_ino).
 					hardlink_key = (mystat.st_dev, mystat.st_ino)
@@ -4974,7 +4998,9 @@ class dblink(object):
 			else:
 				# we are merging a fifo or device node
 				zing = "!!!"
-				if mydmode is None:
+				if instmasked:
+					zing = "###"
+				elif mydmode is None:
 					# destination doesn't exist
 					if movefile(mysrc, mydest, newmtime=thismtime,
 						sstat=mystat, mysettings=self.settings,
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
index 3f575fcaf..d04baacf9 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -271,6 +271,7 @@ class config(object):
 			self.mycpv = clone.mycpv
 			self._setcpv_args_hash = clone._setcpv_args_hash
 			self._soname_provided = clone._soname_provided
+			self.install_mask = clone.install_mask
 
 			# immutable attributes (internal policy ensures lack of mutation)
 			self._locations_manager = clone._locations_manager
@@ -2473,7 +2474,7 @@ class config(object):
 			install_mask.append("/usr/share/info")
 		if 'noman' in self.features:
 			install_mask.append("/usr/share/man")
-		self["INSTALL_MASK"] = ' '.join(install_mask)
+		self.install_mask = tuple(install_mask)
 
 		if self.mycpv is None:
 			# Generate global USE_EXPAND variables settings that are
-- 
2.16.2



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [gentoo-portage-dev] [PATCH 3/3] portage.dbapi.vartree: Support exclusions in INSTALL_MASK
  2018-03-15 19:22 [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Michał Górny
  2018-03-15 19:22 ` [gentoo-portage-dev] [PATCH 1/3] portage.package.ebuild.config: Move FEATURES=no* handling there Michał Górny
  2018-03-15 19:22 ` [gentoo-portage-dev] [PATCH 2/3] portage.dbapi.vartree: Move INSTALL_MASK handling into merging Michał Górny
@ 2018-03-15 19:22 ` Michał Górny
  2018-03-15 21:02   ` Alec Warner
  2018-03-16  5:10 ` [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Zac Medico
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 26+ messages in thread
From: Michał Górny @ 2018-03-15 19:22 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: Michał Górny

Allow INSTALL_MASK patterns to start with '-' to indicate that
a specific match is to be excluded from being masked. In this case,
the last matching pattern determines whether the file is actually
filtered out or kept.
---
 pym/portage/dbapi/vartree.py | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
index 21904edca..16c246b11 100644
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@ -3692,19 +3692,21 @@ class dblink(object):
 	def _is_install_masked(self, relative_path):
 		ret = False
 		for pattern in self.settings.install_mask:
+			# if pattern starts with -, possibly exclude this path
+			pat_res = not pattern.startswith('-')
+			if not pat_res:
+				pattern = pattern[1:]
 			# absolute path pattern
 			if pattern.startswith('/'):
 				# match either exact path or one of parent dirs
 				# the latter is done via matching pattern/*
 				if (fnmatch.fnmatch(relative_path, pattern[1:])
 						or fnmatch.fnmatch(relative_path, pattern[1:] + '/*')):
-					ret = True
-					break
+					ret = pat_res
 			# filename
 			else:
 				if fnmatch.fnmatch(os.path.basename(relative_path), pattern):
-					ret = True
-					break
+					ret = pat_res
 		return ret
 
 	def treewalk(self, srcroot, destroot, inforoot, myebuild, cleanup=0,
-- 
2.16.2



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 3/3] portage.dbapi.vartree: Support exclusions in INSTALL_MASK
  2018-03-15 19:22 ` [gentoo-portage-dev] [PATCH 3/3] portage.dbapi.vartree: Support exclusions in INSTALL_MASK Michał Górny
@ 2018-03-15 21:02   ` Alec Warner
  2018-03-15 21:17     ` Michał Górny
  2018-03-15 21:44     ` Joakim Tjernlund
  0 siblings, 2 replies; 26+ messages in thread
From: Alec Warner @ 2018-03-15 21:02 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: Michał Górny

[-- Attachment #1: Type: text/plain, Size: 2323 bytes --]

On Thu, Mar 15, 2018 at 3:22 PM, Michał Górny <mgorny@gentoo.org> wrote:

> Allow INSTALL_MASK patterns to start with '-' to indicate that
> a specific match is to be excluded from being masked. In this case,
> the last matching pattern determines whether the file is actually
> filtered out or kept.
> ---
>  pym/portage/dbapi/vartree.py | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
> index 21904edca..16c246b11 100644
> --- a/pym/portage/dbapi/vartree.py
> +++ b/pym/portage/dbapi/vartree.py
> @@ -3692,19 +3692,21 @@ class dblink(object):
>         def _is_install_masked(self, relative_path):
>                 ret = False
>                 for pattern in self.settings.install_mask:
>
+                       # if pattern starts with -, possibly exclude this
> path
> +                       pat_res = not pattern.startswith('-')
> +                       if not pat_res:
> +                               pattern = pattern[1:]
>

Maybe consider:

pattern = pattern[1:] if pattern.startswith('-') else pattern

I'm not super keen on this pattern in python, but it seems doable here.


>                         # absolute path pattern
>                         if pattern.startswith('/'):
>                                 # match either exact path or one of parent
> dirs
>                                 # the latter is done via matching pattern/*
>                                 if (fnmatch.fnmatch(relative_path,
> pattern[1:])
>                                                 or
> fnmatch.fnmatch(relative_path, pattern[1:] + '/*')):
> -                                       ret = True
> -                                       break
> +                                       ret = pat_res
>                         # filename
>                         else:
>                                 if fnmatch.fnmatch(os.path.basename(relative_path),
> pattern):
> -                                       ret = True
> -                                       break
> +                                       ret = pat_res
>                 return ret
>
>         def treewalk(self, srcroot, destroot, inforoot, myebuild,
> cleanup=0,
> --
> 2.16.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 4660 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 3/3] portage.dbapi.vartree: Support exclusions in INSTALL_MASK
  2018-03-15 21:02   ` Alec Warner
@ 2018-03-15 21:17     ` Michał Górny
  2018-03-15 21:44     ` Joakim Tjernlund
  1 sibling, 0 replies; 26+ messages in thread
From: Michał Górny @ 2018-03-15 21:17 UTC (permalink / raw
  To: gentoo-portage-dev

W dniu czw, 15.03.2018 o godzinie 17∶02 -0400, użytkownik Alec Warner
napisał:
> On Thu, Mar 15, 2018 at 3:22 PM, Michał Górny <mgorny@gentoo.org> wrote:
> 
> > Allow INSTALL_MASK patterns to start with '-' to indicate that
> > a specific match is to be excluded from being masked. In this case,
> > the last matching pattern determines whether the file is actually
> > filtered out or kept.
> > ---
> >  pym/portage/dbapi/vartree.py | 10 ++++++----
> >  1 file changed, 6 insertions(+), 4 deletions(-)
> > 
> > diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
> > index 21904edca..16c246b11 100644
> > --- a/pym/portage/dbapi/vartree.py
> > +++ b/pym/portage/dbapi/vartree.py
> > @@ -3692,19 +3692,21 @@ class dblink(object):
> >         def _is_install_masked(self, relative_path):
> >                 ret = False
> >                 for pattern in self.settings.install_mask:
> > 
> 
> +                       # if pattern starts with -, possibly exclude this
> > path
> > +                       pat_res = not pattern.startswith('-')
> > +                       if not pat_res:
> > +                               pattern = pattern[1:]
> > 
> 
> Maybe consider:
> 
> pattern = pattern[1:] if pattern.startswith('-') else pattern
> 
> I'm not super keen on this pattern in python, but it seems doable here.

I still need pat_res to know whether it's '+' or '-'.

> 
> 
> >                         # absolute path pattern
> >                         if pattern.startswith('/'):
> >                                 # match either exact path or one of parent
> > dirs
> >                                 # the latter is done via matching pattern/*
> >                                 if (fnmatch.fnmatch(relative_path,
> > pattern[1:])
> >                                                 or
> > fnmatch.fnmatch(relative_path, pattern[1:] + '/*')):
> > -                                       ret = True
> > -                                       break
> > +                                       ret = pat_res
> >                         # filename
> >                         else:
> >                                 if fnmatch.fnmatch(os.path.basename(relative_path),
> > pattern):
> > -                                       ret = True
> > -                                       break
> > +                                       ret = pat_res
> >                 return ret
> > 
> >         def treewalk(self, srcroot, destroot, inforoot, myebuild,
> > cleanup=0,
> > --
> > 2.16.2
> > 
> > 
> > 

-- 
Best regards,
Michał Górny



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 3/3] portage.dbapi.vartree: Support exclusions in INSTALL_MASK
  2018-03-15 21:02   ` Alec Warner
  2018-03-15 21:17     ` Michał Górny
@ 2018-03-15 21:44     ` Joakim Tjernlund
  2018-03-16  7:50       ` Michał Górny
  1 sibling, 1 reply; 26+ messages in thread
From: Joakim Tjernlund @ 2018-03-15 21:44 UTC (permalink / raw
  To: gentoo-portage-dev@lists.gentoo.org; +Cc: mgorny@gentoo.org

On Thu, 2018-03-15 at 17:02 -0400, Alec Warner wrote:
> 
> 
> On Thu, Mar 15, 2018 at 3:22 PM, Michał Górny <mgorny@gentoo.org> wrote:
> > Allow INSTALL_MASK patterns to start with '-' to indicate that
> > a specific match is to be excluded from being masked. In this case,
> > the last matching pattern determines whether the file is actually
> > filtered out or kept.
> > ---

Yes, please ! I just needed this feature 2 hours ago.
I need the same for PKG_INSTALL_MASK 

I hope this allows me to do:
INSTALL_MASK="/usr/share/i18n/locales/* -/usr/share/i18n/locales/en_GB -/usr/share/i18n/locales/sv_SE"
to all in /usr/share/i18n/locales/* but /usr/share/i18n/locales/en_GB and /usr/share/i18n/locales/sv_SE
removed in usr/share/i18n/locales/ ?

 Jocke

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-15 19:22 [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Michał Górny
                   ` (2 preceding siblings ...)
  2018-03-15 19:22 ` [gentoo-portage-dev] [PATCH 3/3] portage.dbapi.vartree: Support exclusions in INSTALL_MASK Michał Górny
@ 2018-03-16  5:10 ` Zac Medico
  2018-03-16  8:31   ` Joakim Tjernlund
                     ` (2 more replies)
  2018-03-16  8:11 ` Joakim Tjernlund
  2018-03-19 22:59 ` Zac Medico
  5 siblings, 3 replies; 26+ messages in thread
From: Zac Medico @ 2018-03-16  5:10 UTC (permalink / raw
  To: gentoo-portage-dev, Michał Górny


[-- Attachment #1.1: Type: text/plain, Size: 2349 bytes --]

On 03/15/2018 12:22 PM, Michał Górny wrote:
> Hi,
> 
> Here are three of four INSTALL_MASK updates I've sent long time ago
> which were not really reviewed. The fourth patch added support
> for repo-defined install-mask.conf and I'll do that separately.
> 
> Those patches focus on smaller changes. What they change, in order:
> 
> 1. Removes explicit file removal code for FEATURES=no*. Instead, those
>    values are converted into additional INSTALL_MASK entries
>    and handled directly via INSTALL_MASK processing.
> 
> 2. Rework INSTALL_MASK to filter files while installing instead of
>    pre-stripping them. In other words, before: INSTALL_MASK removes
>    files from ${D} before merge. After: ${D} contains all the files,
>    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
> 
> 3. Adds support for exclusions in INSTALL_MASK. In other words, you
>    can do stuff like:
> 
>      INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"
> 
> I have been using this via user patches since the last submission.
> Guessing by 'git log', this means almost 2 years now.
> 
> --
> Best regards,
> Michał Górny
> 
> Michał Górny (3):
>   portage.package.ebuild.config: Move FEATURES=no* handling there
>   portage.dbapi.vartree: Move INSTALL_MASK handling into merging
>   portage.dbapi.vartree: Support exclusions in INSTALL_MASK
> 
>  bin/misc-functions.sh                |  30 ----------
>  pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
>  pym/portage/package/ebuild/config.py |  11 ++++
>  3 files changed, 77 insertions(+), 68 deletions(-)

I like this patch set but here are some important things that I want it
to do differently:

1) For the unmerge code, it needs to read the appropriate
/var/db/pkg/*/*/{PKG,}INSTALL_MASK file in order to account for the
{PKG,}INSTALL_MASK settings that existed when the package was built
(PKG_INSTALL_MASK) and merged (INSTALL_MASK). A binary package should
use the value of INSTALL_MASK that existed at build time.

2) In order to support bashrc {PKG,}INSTALL_MASK settings, we need to
write the values from the environment to
${PORTAGE_BUILDDIR}/build-info/{PKG,}INSTALL_MASK and read them from
there (we do this for many other variables including QA_PREBUILT).
-- 
Thanks,
Zac


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 224 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 3/3] portage.dbapi.vartree: Support exclusions in INSTALL_MASK
  2018-03-15 21:44     ` Joakim Tjernlund
@ 2018-03-16  7:50       ` Michał Górny
  2018-03-16  8:08         ` Joakim Tjernlund
  0 siblings, 1 reply; 26+ messages in thread
From: Michał Górny @ 2018-03-16  7:50 UTC (permalink / raw
  To: gentoo-portage-dev

W dniu czw, 15.03.2018 o godzinie 21∶44 +0000, użytkownik Joakim
Tjernlund napisał:
> On Thu, 2018-03-15 at 17:02 -0400, Alec Warner wrote:
> > 
> > 
> > On Thu, Mar 15, 2018 at 3:22 PM, Michał Górny <mgorny@gentoo.org> wrote:
> > > Allow INSTALL_MASK patterns to start with '-' to indicate that
> > > a specific match is to be excluded from being masked. In this case,
> > > the last matching pattern determines whether the file is actually
> > > filtered out or kept.
> > > ---
> 
> Yes, please ! I just needed this feature 2 hours ago.
> I need the same for PKG_INSTALL_MASK 
> 
> I hope this allows me to do:
> INSTALL_MASK="/usr/share/i18n/locales/* -/usr/share/i18n/locales/en_GB -/usr/share/i18n/locales/sv_SE"
> to all in /usr/share/i18n/locales/* but /usr/share/i18n/locales/en_GB and /usr/share/i18n/locales/sv_SE
> removed in usr/share/i18n/locales/ ?
> 

Yes, that is the intended use case.

-- 
Best regards,
Michał Górny



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 3/3] portage.dbapi.vartree: Support exclusions in INSTALL_MASK
  2018-03-16  7:50       ` Michał Górny
@ 2018-03-16  8:08         ` Joakim Tjernlund
  0 siblings, 0 replies; 26+ messages in thread
From: Joakim Tjernlund @ 2018-03-16  8:08 UTC (permalink / raw
  To: gentoo-portage-dev@lists.gentoo.org

On Fri, 2018-03-16 at 08:50 +0100, Michał Górny wrote:
> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> 
> 
> W dniu czw, 15.03.2018 o godzinie 21∶44 +0000, użytkownik Joakim
> Tjernlund napisał:
> > On Thu, 2018-03-15 at 17:02 -0400, Alec Warner wrote:
> > > 
> > > 
> > > On Thu, Mar 15, 2018 at 3:22 PM, Michał Górny <mgorny@gentoo.org> wrote:
> > > > Allow INSTALL_MASK patterns to start with '-' to indicate that
> > > > a specific match is to be excluded from being masked. In this case,
> > > > the last matching pattern determines whether the file is actually
> > > > filtered out or kept.
> > > > ---
> > 
> > Yes, please ! I just needed this feature 2 hours ago.
> > I need the same for PKG_INSTALL_MASK
> > 
> > I hope this allows me to do:
> > INSTALL_MASK="/usr/share/i18n/locales/* -/usr/share/i18n/locales/en_GB -/usr/share/i18n/locales/sv_SE"
> > to all in /usr/share/i18n/locales/* but /usr/share/i18n/locales/en_GB and /usr/share/i18n/locales/sv_SE
> > removed in usr/share/i18n/locales/ ?
> > 
> 
> Yes, that is the intended use case.

Thanks, while on the subject I had a similar idea for stripping:

Today one have to build all files in glibc with debug syms just to get debug syms for
perf/valgrind in ld.so so it would be great if one could specify that just some files
should have debug syms.

 Jocke

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-15 19:22 [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Michał Górny
                   ` (3 preceding siblings ...)
  2018-03-16  5:10 ` [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Zac Medico
@ 2018-03-16  8:11 ` Joakim Tjernlund
  2018-03-16  8:13   ` Michał Górny
  2018-03-19 22:59 ` Zac Medico
  5 siblings, 1 reply; 26+ messages in thread
From: Joakim Tjernlund @ 2018-03-16  8:11 UTC (permalink / raw
  To: gentoo-portage-dev@lists.gentoo.org; +Cc: mgorny@gentoo.org

On Thu, 2018-03-15 at 20:22 +0100, Michał Górny wrote:
> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> 
> 
> Hi,
> 
> Here are three of four INSTALL_MASK updates I've sent long time ago
> which were not really reviewed. The fourth patch added support
> for repo-defined install-mask.conf and I'll do that separately.
> 
> Those patches focus on smaller changes. What they change, in order:
> 
> 1. Removes explicit file removal code for FEATURES=no*. Instead, those
>    values are converted into additional INSTALL_MASK entries
>    and handled directly via INSTALL_MASK processing.
> 
> 2. Rework INSTALL_MASK to filter files while installing instead of
>    pre-stripping them. In other words, before: INSTALL_MASK removes
>    files from ${D} before merge. After: ${D} contains all the files,
>    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.

Will this also remove corresponding split debug files?
There would be little/no point in keeping debug syms if the binary has been
MASKed 

 Jocke

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-16  8:11 ` Joakim Tjernlund
@ 2018-03-16  8:13   ` Michał Górny
  2018-03-18  9:57     ` Joakim Tjernlund
  0 siblings, 1 reply; 26+ messages in thread
From: Michał Górny @ 2018-03-16  8:13 UTC (permalink / raw
  To: gentoo-portage-dev

W dniu pią, 16.03.2018 o godzinie 08∶11 +0000, użytkownik Joakim
Tjernlund napisał:
> On Thu, 2018-03-15 at 20:22 +0100, Michał Górny wrote:
> > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> > 
> > 
> > Hi,
> > 
> > Here are three of four INSTALL_MASK updates I've sent long time ago
> > which were not really reviewed. The fourth patch added support
> > for repo-defined install-mask.conf and I'll do that separately.
> > 
> > Those patches focus on smaller changes. What they change, in order:
> > 
> > 1. Removes explicit file removal code for FEATURES=no*. Instead, those
> >    values are converted into additional INSTALL_MASK entries
> >    and handled directly via INSTALL_MASK processing.
> > 
> > 2. Rework INSTALL_MASK to filter files while installing instead of
> >    pre-stripping them. In other words, before: INSTALL_MASK removes
> >    files from ${D} before merge. After: ${D} contains all the files,
> >    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
> 
> Will this also remove corresponding split debug files?
> There would be little/no point in keeping debug syms if the binary has been
> MASKed 
> 

Nope. Add both paths to INSTALL_MASK. Expecting it to do implicit magic
is a very bad idea.

-- 
Best regards,
Michał Górny



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-16  5:10 ` [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Zac Medico
@ 2018-03-16  8:31   ` Joakim Tjernlund
  2018-03-16 10:08   ` Michał Górny
  2018-03-18  9:03   ` Michał Górny
  2 siblings, 0 replies; 26+ messages in thread
From: Joakim Tjernlund @ 2018-03-16  8:31 UTC (permalink / raw
  To: mgorny@gentoo.org, gentoo-portage-dev@lists.gentoo.org

On Thu, 2018-03-15 at 22:10 -0700, Zac Medico wrote:
> On 03/15/2018 12:22 PM, Michał Górny wrote:
> > Hi,
> > 
> > Here are three of four INSTALL_MASK updates I've sent long time ago
> > which were not really reviewed. The fourth patch added support
> > for repo-defined install-mask.conf and I'll do that separately.
> > 
> > Those patches focus on smaller changes. What they change, in order:
> > 
> > 1. Removes explicit file removal code for FEATURES=no*. Instead, those
> >    values are converted into additional INSTALL_MASK entries
> >    and handled directly via INSTALL_MASK processing.
> > 
> > 2. Rework INSTALL_MASK to filter files while installing instead of
> >    pre-stripping them. In other words, before: INSTALL_MASK removes
> >    files from ${D} before merge. After: ${D} contains all the files,
> >    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
> > 
> > 3. Adds support for exclusions in INSTALL_MASK. In other words, you
> >    can do stuff like:
> > 
> >      INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"
> > 
> > I have been using this via user patches since the last submission.
> > Guessing by 'git log', this means almost 2 years now.
> > 
> > --
> > Best regards,
> > Michał Górny
> > 
> > Michał Górny (3):
> >   portage.package.ebuild.config: Move FEATURES=no* handling there
> >   portage.dbapi.vartree: Move INSTALL_MASK handling into merging
> >   portage.dbapi.vartree: Support exclusions in INSTALL_MASK
> > 
> >  bin/misc-functions.sh                |  30 ----------
> >  pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
> >  pym/portage/package/ebuild/config.py |  11 ++++
> >  3 files changed, 77 insertions(+), 68 deletions(-)
> 
> I like this patch set but here are some important things that I want it
> to do differently:
> 
> 1) For the unmerge code, it needs to read the appropriate
> /var/db/pkg/*/*/{PKG,}INSTALL_MASK file in order to account for the
> {PKG,}INSTALL_MASK settings that existed when the package was built
> (PKG_INSTALL_MASK) and merged (INSTALL_MASK). A binary package should
> use the value of INSTALL_MASK that existed at build time.

Why does unmerge code need to know PKG_INSTALL_MASK? The files are not
installed so nothing to filter ?
similarly for merge of binary pkgs I guess, PKG_INSTALL_MASKed files are not
in the binary packed so no need to something special in this case ?

> 
> 2) In order to support bashrc {PKG,}INSTALL_MASK settings, we need to
> write the values from the environment to
> ${PORTAGE_BUILDDIR}/build-info/{PKG,}INSTALL_MASK and read them from
> there (we do this for many other variables including QA_PREBUILT).

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-16  5:10 ` [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Zac Medico
  2018-03-16  8:31   ` Joakim Tjernlund
@ 2018-03-16 10:08   ` Michał Górny
  2018-03-16 17:07     ` Zac Medico
  2018-03-18  9:03   ` Michał Górny
  2 siblings, 1 reply; 26+ messages in thread
From: Michał Górny @ 2018-03-16 10:08 UTC (permalink / raw
  To: gentoo-portage-dev

W dniu czw, 15.03.2018 o godzinie 22∶10 -0700, użytkownik Zac Medico
napisał:
> On 03/15/2018 12:22 PM, Michał Górny wrote:
> > Hi,
> > 
> > Here are three of four INSTALL_MASK updates I've sent long time ago
> > which were not really reviewed. The fourth patch added support
> > for repo-defined install-mask.conf and I'll do that separately.
> > 
> > Those patches focus on smaller changes. What they change, in order:
> > 
> > 1. Removes explicit file removal code for FEATURES=no*. Instead, those
> >    values are converted into additional INSTALL_MASK entries
> >    and handled directly via INSTALL_MASK processing.
> > 
> > 2. Rework INSTALL_MASK to filter files while installing instead of
> >    pre-stripping them. In other words, before: INSTALL_MASK removes
> >    files from ${D} before merge. After: ${D} contains all the files,
> >    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
> > 
> > 3. Adds support for exclusions in INSTALL_MASK. In other words, you
> >    can do stuff like:
> > 
> >      INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"
> > 
> > I have been using this via user patches since the last submission.
> > Guessing by 'git log', this means almost 2 years now.
> > 
> > --
> > Best regards,
> > Michał Górny
> > 
> > Michał Górny (3):
> >   portage.package.ebuild.config: Move FEATURES=no* handling there
> >   portage.dbapi.vartree: Move INSTALL_MASK handling into merging
> >   portage.dbapi.vartree: Support exclusions in INSTALL_MASK
> > 
> >  bin/misc-functions.sh                |  30 ----------
> >  pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
> >  pym/portage/package/ebuild/config.py |  11 ++++
> >  3 files changed, 77 insertions(+), 68 deletions(-)
> 
> I like this patch set but here are some important things that I want it
> to do differently:
> 
> 1) For the unmerge code, it needs to read the appropriate
> /var/db/pkg/*/*/{PKG,}INSTALL_MASK file in order to account for the
> {PKG,}INSTALL_MASK settings that existed when the package was built
> (PKG_INSTALL_MASK) and merged (INSTALL_MASK). A binary package should
> use the value of INSTALL_MASK that existed at build time.

> 2) In order to support bashrc {PKG,}INSTALL_MASK settings, we need to
> write the values from the environment to
> ${PORTAGE_BUILDDIR}/build-info/{PKG,}INSTALL_MASK and read them from
> there (we do this for many other variables including QA_PREBUILT).

I presume bin/phase-functions.sh __dyn_install is where I'm supposed to
write them. Could you suggest where is the best place to read them back?
Should the merge code do that explicitly while handling INSTALL_MASK, or
should some of the config classes do that?

-- 
Best regards,
Michał Górny



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-16 10:08   ` Michał Górny
@ 2018-03-16 17:07     ` Zac Medico
  2018-03-16 21:13       ` Michał Górny
  0 siblings, 1 reply; 26+ messages in thread
From: Zac Medico @ 2018-03-16 17:07 UTC (permalink / raw
  To: gentoo-portage-dev, Michał Górny


[-- Attachment #1.1: Type: text/plain, Size: 3485 bytes --]

On 03/16/2018 03:08 AM, Michał Górny wrote:
> W dniu czw, 15.03.2018 o godzinie 22∶10 -0700, użytkownik Zac Medico
> napisał:
>> On 03/15/2018 12:22 PM, Michał Górny wrote:
>>> Hi,
>>>
>>> Here are three of four INSTALL_MASK updates I've sent long time ago
>>> which were not really reviewed. The fourth patch added support
>>> for repo-defined install-mask.conf and I'll do that separately.
>>>
>>> Those patches focus on smaller changes. What they change, in order:
>>>
>>> 1. Removes explicit file removal code for FEATURES=no*. Instead, those
>>>    values are converted into additional INSTALL_MASK entries
>>>    and handled directly via INSTALL_MASK processing.
>>>
>>> 2. Rework INSTALL_MASK to filter files while installing instead of
>>>    pre-stripping them. In other words, before: INSTALL_MASK removes
>>>    files from ${D} before merge. After: ${D} contains all the files,
>>>    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
>>>
>>> 3. Adds support for exclusions in INSTALL_MASK. In other words, you
>>>    can do stuff like:
>>>
>>>      INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"
>>>
>>> I have been using this via user patches since the last submission.
>>> Guessing by 'git log', this means almost 2 years now.
>>>
>>> --
>>> Best regards,
>>> Michał Górny
>>>
>>> Michał Górny (3):
>>>   portage.package.ebuild.config: Move FEATURES=no* handling there
>>>   portage.dbapi.vartree: Move INSTALL_MASK handling into merging
>>>   portage.dbapi.vartree: Support exclusions in INSTALL_MASK
>>>
>>>  bin/misc-functions.sh                |  30 ----------
>>>  pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
>>>  pym/portage/package/ebuild/config.py |  11 ++++
>>>  3 files changed, 77 insertions(+), 68 deletions(-)
>>
>> I like this patch set but here are some important things that I want it
>> to do differently:
>>
>> 1) For the unmerge code, it needs to read the appropriate
>> /var/db/pkg/*/*/{PKG,}INSTALL_MASK file in order to account for the
>> {PKG,}INSTALL_MASK settings that existed when the package was built
>> (PKG_INSTALL_MASK) and merged (INSTALL_MASK). A binary package should
>> use the value of INSTALL_MASK that existed at build time.
> 
>> 2) In order to support bashrc {PKG,}INSTALL_MASK settings, we need to
>> write the values from the environment to
>> ${PORTAGE_BUILDDIR}/build-info/{PKG,}INSTALL_MASK and read them from
>> there (we do this for many other variables including QA_PREBUILT).
> 
> I presume bin/phase-functions.sh __dyn_install is where I'm supposed to
> write them. Could you suggest where is the best place to read them back?

We can read them back just when they are needed.

PKG_INSTALL_MASK should be handled in the EbuildPhase class when
self.phase is "package". In order to preserve behavior, EbuildPhase will
have to create a temporary copy of ${D} and apply PKG_INSTALL_MASK to
it, for __dyn_package to use.

INSTALL_MASK should be handled in the dblink treewalk method like it is now.


> Should the merge code do that explicitly while handling INSTALL_MASK, or
> should some of the config classes do that?

The config class only needs to be involved if we want to expose some API
related to {PKG,}INSTALL_MASK there, but the config class is bloated
enough as it is so it's better to expose a helper class like the
ConfigProtect class.
-- 
Thanks,
Zac


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 224 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-16 17:07     ` Zac Medico
@ 2018-03-16 21:13       ` Michał Górny
  2018-03-16 21:25         ` Zac Medico
  0 siblings, 1 reply; 26+ messages in thread
From: Michał Górny @ 2018-03-16 21:13 UTC (permalink / raw
  To: gentoo-portage-dev

W dniu pią, 16.03.2018 o godzinie 10∶07 -0700, użytkownik Zac Medico
napisał:
> On 03/16/2018 03:08 AM, Michał Górny wrote:
> > W dniu czw, 15.03.2018 o godzinie 22∶10 -0700, użytkownik Zac Medico
> > napisał:
> > > On 03/15/2018 12:22 PM, Michał Górny wrote:
> > > > Hi,
> > > > 
> > > > Here are three of four INSTALL_MASK updates I've sent long time ago
> > > > which were not really reviewed. The fourth patch added support
> > > > for repo-defined install-mask.conf and I'll do that separately.
> > > > 
> > > > Those patches focus on smaller changes. What they change, in order:
> > > > 
> > > > 1. Removes explicit file removal code for FEATURES=no*. Instead, those
> > > >    values are converted into additional INSTALL_MASK entries
> > > >    and handled directly via INSTALL_MASK processing.
> > > > 
> > > > 2. Rework INSTALL_MASK to filter files while installing instead of
> > > >    pre-stripping them. In other words, before: INSTALL_MASK removes
> > > >    files from ${D} before merge. After: ${D} contains all the files,
> > > >    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
> > > > 
> > > > 3. Adds support for exclusions in INSTALL_MASK. In other words, you
> > > >    can do stuff like:
> > > > 
> > > >      INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"
> > > > 
> > > > I have been using this via user patches since the last submission.
> > > > Guessing by 'git log', this means almost 2 years now.
> > > > 
> > > > --
> > > > Best regards,
> > > > Michał Górny
> > > > 
> > > > Michał Górny (3):
> > > >   portage.package.ebuild.config: Move FEATURES=no* handling there
> > > >   portage.dbapi.vartree: Move INSTALL_MASK handling into merging
> > > >   portage.dbapi.vartree: Support exclusions in INSTALL_MASK
> > > > 
> > > >  bin/misc-functions.sh                |  30 ----------
> > > >  pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
> > > >  pym/portage/package/ebuild/config.py |  11 ++++
> > > >  3 files changed, 77 insertions(+), 68 deletions(-)
> > > 
> > > I like this patch set but here are some important things that I want it
> > > to do differently:
> > > 
> > > 1) For the unmerge code, it needs to read the appropriate
> > > /var/db/pkg/*/*/{PKG,}INSTALL_MASK file in order to account for the
> > > {PKG,}INSTALL_MASK settings that existed when the package was built
> > > (PKG_INSTALL_MASK) and merged (INSTALL_MASK). A binary package should
> > > use the value of INSTALL_MASK that existed at build time.
> > > 2) In order to support bashrc {PKG,}INSTALL_MASK settings, we need to
> > > write the values from the environment to
> > > ${PORTAGE_BUILDDIR}/build-info/{PKG,}INSTALL_MASK and read them from
> > > there (we do this for many other variables including QA_PREBUILT).
> > 
> > I presume bin/phase-functions.sh __dyn_install is where I'm supposed to
> > write them. Could you suggest where is the best place to read them back?
> 
> We can read them back just when they are needed.
> 
> PKG_INSTALL_MASK should be handled in the EbuildPhase class when
> self.phase is "package". In order to preserve behavior, EbuildPhase will
> have to create a temporary copy of ${D} and apply PKG_INSTALL_MASK to
> it, for __dyn_package to use.

But do I need to change anything for PKG_INSTALL_MASK? My original patch
did not touch that, so it can just continue happening as it is now.

> INSTALL_MASK should be handled in the dblink treewalk method like it is now.

But we also need to read it for unmerge, correct?

> > Should the merge code do that explicitly while handling INSTALL_MASK, or
> > should some of the config classes do that?
> 
> The config class only needs to be involved if we want to expose some API
> related to {PKG,}INSTALL_MASK there, but the config class is bloated
> enough as it is so it's better to expose a helper class like the
> ConfigProtect class.

-- 
Best regards,
Michał Górny



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-16 21:13       ` Michał Górny
@ 2018-03-16 21:25         ` Zac Medico
  0 siblings, 0 replies; 26+ messages in thread
From: Zac Medico @ 2018-03-16 21:25 UTC (permalink / raw
  To: gentoo-portage-dev, Michał Górny


[-- Attachment #1.1: Type: text/plain, Size: 4166 bytes --]

On 03/16/2018 02:13 PM, Michał Górny wrote:
> W dniu pią, 16.03.2018 o godzinie 10∶07 -0700, użytkownik Zac Medico
> napisał:
>> On 03/16/2018 03:08 AM, Michał Górny wrote:
>>> W dniu czw, 15.03.2018 o godzinie 22∶10 -0700, użytkownik Zac Medico
>>> napisał:
>>>> On 03/15/2018 12:22 PM, Michał Górny wrote:
>>>>> Hi,
>>>>>
>>>>> Here are three of four INSTALL_MASK updates I've sent long time ago
>>>>> which were not really reviewed. The fourth patch added support
>>>>> for repo-defined install-mask.conf and I'll do that separately.
>>>>>
>>>>> Those patches focus on smaller changes. What they change, in order:
>>>>>
>>>>> 1. Removes explicit file removal code for FEATURES=no*. Instead, those
>>>>>    values are converted into additional INSTALL_MASK entries
>>>>>    and handled directly via INSTALL_MASK processing.
>>>>>
>>>>> 2. Rework INSTALL_MASK to filter files while installing instead of
>>>>>    pre-stripping them. In other words, before: INSTALL_MASK removes
>>>>>    files from ${D} before merge. After: ${D} contains all the files,
>>>>>    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
>>>>>
>>>>> 3. Adds support for exclusions in INSTALL_MASK. In other words, you
>>>>>    can do stuff like:
>>>>>
>>>>>      INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"
>>>>>
>>>>> I have been using this via user patches since the last submission.
>>>>> Guessing by 'git log', this means almost 2 years now.
>>>>>
>>>>> --
>>>>> Best regards,
>>>>> Michał Górny
>>>>>
>>>>> Michał Górny (3):
>>>>>   portage.package.ebuild.config: Move FEATURES=no* handling there
>>>>>   portage.dbapi.vartree: Move INSTALL_MASK handling into merging
>>>>>   portage.dbapi.vartree: Support exclusions in INSTALL_MASK
>>>>>
>>>>>  bin/misc-functions.sh                |  30 ----------
>>>>>  pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
>>>>>  pym/portage/package/ebuild/config.py |  11 ++++
>>>>>  3 files changed, 77 insertions(+), 68 deletions(-)
>>>>
>>>> I like this patch set but here are some important things that I want it
>>>> to do differently:
>>>>
>>>> 1) For the unmerge code, it needs to read the appropriate
>>>> /var/db/pkg/*/*/{PKG,}INSTALL_MASK file in order to account for the
>>>> {PKG,}INSTALL_MASK settings that existed when the package was built
>>>> (PKG_INSTALL_MASK) and merged (INSTALL_MASK). A binary package should
>>>> use the value of INSTALL_MASK that existed at build time.
>>>> 2) In order to support bashrc {PKG,}INSTALL_MASK settings, we need to
>>>> write the values from the environment to
>>>> ${PORTAGE_BUILDDIR}/build-info/{PKG,}INSTALL_MASK and read them from
>>>> there (we do this for many other variables including QA_PREBUILT).
>>>
>>> I presume bin/phase-functions.sh __dyn_install is where I'm supposed to
>>> write them. Could you suggest where is the best place to read them back?
>>
>> We can read them back just when they are needed.
>>
>> PKG_INSTALL_MASK should be handled in the EbuildPhase class when
>> self.phase is "package". In order to preserve behavior, EbuildPhase will
>> have to create a temporary copy of ${D} and apply PKG_INSTALL_MASK to
>> it, for __dyn_package to use.
> 
> But do I need to change anything for PKG_INSTALL_MASK? My original patch
> did not touch that, so it can just continue happening as it is now.
> 
>> INSTALL_MASK should be handled in the dblink treewalk method like it is now.
> 
> But we also need to read it for unmerge, correct?

Oh right. We should load it in the dblink _match_contents or getcontents
method, since we need it for operation of the _match_contents method
which is called by isowner.

>>> Should the merge code do that explicitly while handling INSTALL_MASK, or
>>> should some of the config classes do that?
>>
>> The config class only needs to be involved if we want to expose some API
>> related to {PKG,}INSTALL_MASK there, but the config class is bloated
>> enough as it is so it's better to expose a helper class like the
>> ConfigProtect class.
> 


-- 
Thanks,
Zac


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 224 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-16  5:10 ` [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Zac Medico
  2018-03-16  8:31   ` Joakim Tjernlund
  2018-03-16 10:08   ` Michał Górny
@ 2018-03-18  9:03   ` Michał Górny
  2018-03-18 18:22     ` Zac Medico
  2018-03-19  6:27     ` Joakim Tjernlund
  2 siblings, 2 replies; 26+ messages in thread
From: Michał Górny @ 2018-03-18  9:03 UTC (permalink / raw
  To: gentoo-portage-dev

W dniu czw, 15.03.2018 o godzinie 22∶10 -0700, użytkownik Zac Medico
napisał:
>  A binary package should
> use the value of INSTALL_MASK that existed at build time.
> 

Wait a minute! This doesn't make any sense. The whole point of having
separate PKG_INSTALL_MASK and INSTALL_MASK is to be able to strip stuff
from more complete binary packages, not to force original restrictions
forever.

-- 
Best regards,
Michał Górny



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-16  8:13   ` Michał Górny
@ 2018-03-18  9:57     ` Joakim Tjernlund
  0 siblings, 0 replies; 26+ messages in thread
From: Joakim Tjernlund @ 2018-03-18  9:57 UTC (permalink / raw
  To: gentoo-portage-dev@lists.gentoo.org

On Fri, 2018-03-16 at 09:13 +0100, Michał Górny wrote:
> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> 
> 
> W dniu pią, 16.03.2018 o godzinie 08∶11 +0000, użytkownik Joakim
> Tjernlund napisał:
> > On Thu, 2018-03-15 at 20:22 +0100, Michał Górny wrote:
> > > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> > > 
> > > 
> > > Hi,
> > > 
> > > Here are three of four INSTALL_MASK updates I've sent long time ago
> > > which were not really reviewed. The fourth patch added support
> > > for repo-defined install-mask.conf and I'll do that separately.
> > > 
> > > Those patches focus on smaller changes. What they change, in order:
> > > 
> > > 1. Removes explicit file removal code for FEATURES=no*. Instead, those
> > >    values are converted into additional INSTALL_MASK entries
> > >    and handled directly via INSTALL_MASK processing.
> > > 
> > > 2. Rework INSTALL_MASK to filter files while installing instead of
> > >    pre-stripping them. In other words, before: INSTALL_MASK removes
> > >    files from ${D} before merge. After: ${D} contains all the files,
> > >    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
> > 
> > Will this also remove corresponding split debug files?
> > There would be little/no point in keeping debug syms if the binary has been
> > MASKed
> > 
> 
> Nope. Add both paths to INSTALL_MASK. Expecting it to do implicit magic
> is a very bad idea.

Maybe but it also makes senses to get rid of them. To me it is only a matter
of applying PKG_INSTALL_MASK before applying strip debug, does that make sense ?

 Jocke

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-18  9:03   ` Michał Górny
@ 2018-03-18 18:22     ` Zac Medico
  2018-03-19  6:27     ` Joakim Tjernlund
  1 sibling, 0 replies; 26+ messages in thread
From: Zac Medico @ 2018-03-18 18:22 UTC (permalink / raw
  To: gentoo-portage-dev, Michał Górny


[-- Attachment #1.1: Type: text/plain, Size: 953 bytes --]

On 03/18/2018 02:03 AM, Michał Górny wrote:
> W dniu czw, 15.03.2018 o godzinie 22∶10 -0700, użytkownik Zac Medico
> napisał:
>>  A binary package should
>> use the value of INSTALL_MASK that existed at build time.
>>
> 
> Wait a minute! This doesn't make any sense. The whole point of having
> separate PKG_INSTALL_MASK and INSTALL_MASK is to be able to strip stuff
> from more complete binary packages, not to force original restrictions
> forever.

Okay, we should apply latest INSTALL_MASK settings when installing a
binary package? That seems reasonable.

I want to respect settings embedded in the binary package whenever it
could be useful, since my intention if for binhost clients to be able to
treat the binhost as a single source of truth, so that binary packages
can be installed without dependency on source ebuild
repositories/profiles, as discussed here:

https://bugs.gentoo.org/644990
-- 
Thanks,
Zac


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 224 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-18  9:03   ` Michał Górny
  2018-03-18 18:22     ` Zac Medico
@ 2018-03-19  6:27     ` Joakim Tjernlund
  1 sibling, 0 replies; 26+ messages in thread
From: Joakim Tjernlund @ 2018-03-19  6:27 UTC (permalink / raw
  To: gentoo-portage-dev@lists.gentoo.org

On Sun, 2018-03-18 at 10:03 +0100, Michał Górny wrote:
> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> 
> 
> W dniu czw, 15.03.2018 o godzinie 22∶10 -0700, użytkownik Zac Medico
> napisał:
> >  A binary package should
> > use the value of INSTALL_MASK that existed at build time.
> > 
> 
> Wait a minute! This doesn't make any sense. The whole point of having
> separate PKG_INSTALL_MASK and INSTALL_MASK is to be able to strip stuff
> from more complete binary packages, not to force original restrictions
> forever.

These discussions also mentions PKG_INSTALL_MASK while the actual patches
only mention INSTALL_MASK. I am getting somewhat confused, does
the patches support PKG_INSTALL_MASK too or do you only intend to support
this new exclusion syntax in INSTALL_MASK?

    Jocke

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-15 19:22 [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Michał Górny
                   ` (4 preceding siblings ...)
  2018-03-16  8:11 ` Joakim Tjernlund
@ 2018-03-19 22:59 ` Zac Medico
  2018-03-23  0:52   ` Joakim Tjernlund
  5 siblings, 1 reply; 26+ messages in thread
From: Zac Medico @ 2018-03-19 22:59 UTC (permalink / raw
  To: gentoo-portage-dev, Michał Górny


[-- Attachment #1.1: Type: text/plain, Size: 2177 bytes --]

On 03/15/2018 12:22 PM, Michał Górny wrote:
> Hi,
> 
> Here are three of four INSTALL_MASK updates I've sent long time ago
> which were not really reviewed. The fourth patch added support
> for repo-defined install-mask.conf and I'll do that separately.
> 
> Those patches focus on smaller changes. What they change, in order:
> 
> 1. Removes explicit file removal code for FEATURES=no*. Instead, those
>    values are converted into additional INSTALL_MASK entries
>    and handled directly via INSTALL_MASK processing.
> 
> 2. Rework INSTALL_MASK to filter files while installing instead of
>    pre-stripping them. In other words, before: INSTALL_MASK removes
>    files from ${D} before merge. After: ${D} contains all the files,
>    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
> 
> 3. Adds support for exclusions in INSTALL_MASK. In other words, you
>    can do stuff like:
> 
>      INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"
> 
> I have been using this via user patches since the last submission.
> Guessing by 'git log', this means almost 2 years now.
> 
> --
> Best regards,
> Michał Górny
> 
> Michał Górny (3):
>   portage.package.ebuild.config: Move FEATURES=no* handling there
>   portage.dbapi.vartree: Move INSTALL_MASK handling into merging
>   portage.dbapi.vartree: Support exclusions in INSTALL_MASK
> 
>  bin/misc-functions.sh                |  30 ----------
>  pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
>  pym/portage/package/ebuild/config.py |  11 ++++
>  3 files changed, 77 insertions(+), 68 deletions(-)
> 

As mentioned in #gentoo-portage today, the rationale for including the
INSTALL_MASKed files in CONTENTS is to that we can detect collisions
that would have occurred had people not been using INSTALL_MASK.

Since people can use INSTALL_MASK to intentionally prevent collisions,
in cases where COLLISION_IGNORE is not appropriate (this is common
practice at my workplace), we'll need a new FEATURES setting to trigger
the new behavior where INSTALL_MASKed files still trigger file collisions.
-- 
Thanks,
Zac


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 224 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-19 22:59 ` Zac Medico
@ 2018-03-23  0:52   ` Joakim Tjernlund
  2018-03-23  1:09     ` Zac Medico
  2018-03-23  8:33     ` Michał Górny
  0 siblings, 2 replies; 26+ messages in thread
From: Joakim Tjernlund @ 2018-03-23  0:52 UTC (permalink / raw
  To: mgorny@gentoo.org, gentoo-portage-dev@lists.gentoo.org

On Mon, 2018-03-19 at 15:59 -0700, Zac Medico wrote:
> On 03/15/2018 12:22 PM, Michał Górny wrote:
> > Hi,
> > 
> > Here are three of four INSTALL_MASK updates I've sent long time ago
> > which were not really reviewed. The fourth patch added support
> > for repo-defined install-mask.conf and I'll do that separately.
> > 
> > Those patches focus on smaller changes. What they change, in order:
> > 
> > 1. Removes explicit file removal code for FEATURES=no*. Instead, those
> >    values are converted into additional INSTALL_MASK entries
> >    and handled directly via INSTALL_MASK processing.
> > 
> > 2. Rework INSTALL_MASK to filter files while installing instead of
> >    pre-stripping them. In other words, before: INSTALL_MASK removes
> >    files from ${D} before merge. After: ${D} contains all the files,
> >    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
> > 
> > 3. Adds support for exclusions in INSTALL_MASK. In other words, you
> >    can do stuff like:
> > 
> >      INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"
> > 
> > I have been using this via user patches since the last submission.
> > Guessing by 'git log', this means almost 2 years now.
> > 
> > --
> > Best regards,
> > Michał Górny
> > 
> > Michał Górny (3):
> >   portage.package.ebuild.config: Move FEATURES=no* handling there
> >   portage.dbapi.vartree: Move INSTALL_MASK handling into merging
> >   portage.dbapi.vartree: Support exclusions in INSTALL_MASK
> > 
> >  bin/misc-functions.sh                |  30 ----------
> >  pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
> >  pym/portage/package/ebuild/config.py |  11 ++++
> >  3 files changed, 77 insertions(+), 68 deletions(-)
> > 
> 
> As mentioned in #gentoo-portage today, the rationale for including the
> INSTALL_MASKed files in CONTENTS is to that we can detect collisions
> that would have occurred had people not been using INSTALL_MASK.
> 
> Since people can use INSTALL_MASK to intentionally prevent collisions,
> in cases where COLLISION_IGNORE is not appropriate (this is common
> practice at my workplace), we'll need a new FEATURES setting to trigger
> the new behavior where INSTALL_MASKed files still trigger file collisions.

Are we going to see this in Portage soon? And PKG_INSTALL_MASK too ?

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-23  0:52   ` Joakim Tjernlund
@ 2018-03-23  1:09     ` Zac Medico
  2018-03-23  8:33     ` Michał Górny
  1 sibling, 0 replies; 26+ messages in thread
From: Zac Medico @ 2018-03-23  1:09 UTC (permalink / raw
  To: gentoo-portage-dev, Joakim Tjernlund, mgorny@gentoo.org


[-- Attachment #1.1: Type: text/plain, Size: 2548 bytes --]

On 03/22/2018 05:52 PM, Joakim Tjernlund wrote:
> On Mon, 2018-03-19 at 15:59 -0700, Zac Medico wrote:
>> On 03/15/2018 12:22 PM, Michał Górny wrote:
>>> Hi,
>>>
>>> Here are three of four INSTALL_MASK updates I've sent long time ago
>>> which were not really reviewed. The fourth patch added support
>>> for repo-defined install-mask.conf and I'll do that separately.
>>>
>>> Those patches focus on smaller changes. What they change, in order:
>>>
>>> 1. Removes explicit file removal code for FEATURES=no*. Instead, those
>>>    values are converted into additional INSTALL_MASK entries
>>>    and handled directly via INSTALL_MASK processing.
>>>
>>> 2. Rework INSTALL_MASK to filter files while installing instead of
>>>    pre-stripping them. In other words, before: INSTALL_MASK removes
>>>    files from ${D} before merge. After: ${D} contains all the files,
>>>    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
>>>
>>> 3. Adds support for exclusions in INSTALL_MASK. In other words, you
>>>    can do stuff like:
>>>
>>>      INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"
>>>
>>> I have been using this via user patches since the last submission.
>>> Guessing by 'git log', this means almost 2 years now.
>>>
>>> --
>>> Best regards,
>>> Michał Górny
>>>
>>> Michał Górny (3):
>>>   portage.package.ebuild.config: Move FEATURES=no* handling there
>>>   portage.dbapi.vartree: Move INSTALL_MASK handling into merging
>>>   portage.dbapi.vartree: Support exclusions in INSTALL_MASK
>>>
>>>  bin/misc-functions.sh                |  30 ----------
>>>  pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
>>>  pym/portage/package/ebuild/config.py |  11 ++++
>>>  3 files changed, 77 insertions(+), 68 deletions(-)
>>>
>>
>> As mentioned in #gentoo-portage today, the rationale for including the
>> INSTALL_MASKed files in CONTENTS is to that we can detect collisions
>> that would have occurred had people not been using INSTALL_MASK.
>>
>> Since people can use INSTALL_MASK to intentionally prevent collisions,
>> in cases where COLLISION_IGNORE is not appropriate (this is common
>> practice at my workplace), we'll need a new FEATURES setting to trigger
>> the new behavior where INSTALL_MASKed files still trigger file collisions.
> 
> Are we going to see this in Portage soon? And PKG_INSTALL_MASK too ?

Yes, I'll clean up the patches an resubmit them. Bug filed:
https://bugs.gentoo.org/651214
-- 
Thanks,
Zac


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 224 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-23  0:52   ` Joakim Tjernlund
  2018-03-23  1:09     ` Zac Medico
@ 2018-03-23  8:33     ` Michał Górny
  2018-03-23  9:05       ` Joakim Tjernlund
  1 sibling, 1 reply; 26+ messages in thread
From: Michał Górny @ 2018-03-23  8:33 UTC (permalink / raw
  To: gentoo-portage-dev

W dniu pią, 23.03.2018 o godzinie 00∶52 +0000, użytkownik Joakim
Tjernlund napisał:
> On Mon, 2018-03-19 at 15:59 -0700, Zac Medico wrote:
> > On 03/15/2018 12:22 PM, Michał Górny wrote:
> > > Hi,
> > > 
> > > Here are three of four INSTALL_MASK updates I've sent long time ago
> > > which were not really reviewed. The fourth patch added support
> > > for repo-defined install-mask.conf and I'll do that separately.
> > > 
> > > Those patches focus on smaller changes. What they change, in order:
> > > 
> > > 1. Removes explicit file removal code for FEATURES=no*. Instead, those
> > >    values are converted into additional INSTALL_MASK entries
> > >    and handled directly via INSTALL_MASK processing.
> > > 
> > > 2. Rework INSTALL_MASK to filter files while installing instead of
> > >    pre-stripping them. In other words, before: INSTALL_MASK removes
> > >    files from ${D} before merge. After: ${D} contains all the files,
> > >    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
> > > 
> > > 3. Adds support for exclusions in INSTALL_MASK. In other words, you
> > >    can do stuff like:
> > > 
> > >      INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"
> > > 
> > > I have been using this via user patches since the last submission.
> > > Guessing by 'git log', this means almost 2 years now.
> > > 
> > > --
> > > Best regards,
> > > Michał Górny
> > > 
> > > Michał Górny (3):
> > >   portage.package.ebuild.config: Move FEATURES=no* handling there
> > >   portage.dbapi.vartree: Move INSTALL_MASK handling into merging
> > >   portage.dbapi.vartree: Support exclusions in INSTALL_MASK
> > > 
> > >  bin/misc-functions.sh                |  30 ----------
> > >  pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
> > >  pym/portage/package/ebuild/config.py |  11 ++++
> > >  3 files changed, 77 insertions(+), 68 deletions(-)
> > > 
> > 
> > As mentioned in #gentoo-portage today, the rationale for including the
> > INSTALL_MASKed files in CONTENTS is to that we can detect collisions
> > that would have occurred had people not been using INSTALL_MASK.
> > 
> > Since people can use INSTALL_MASK to intentionally prevent collisions,
> > in cases where COLLISION_IGNORE is not appropriate (this is common
> > practice at my workplace), we'll need a new FEATURES setting to trigger
> > the new behavior where INSTALL_MASKed files still trigger file collisions.
> 
> Are we going to see this in Portage soon? And PKG_INSTALL_MASK too ?

It's in sys-apps/portage-mgorny. Whatever's going to land in sys-
apps/portage, it's probably going to be half-broken to satisfy
somebody's colleague's corner case of misusing INSTALL_MASK.

-- 
Best regards,
Michał Górny



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit
  2018-03-23  8:33     ` Michał Górny
@ 2018-03-23  9:05       ` Joakim Tjernlund
  0 siblings, 0 replies; 26+ messages in thread
From: Joakim Tjernlund @ 2018-03-23  9:05 UTC (permalink / raw
  To: gentoo-portage-dev@lists.gentoo.org

On Fri, 2018-03-23 at 09:33 +0100, Michał Górny wrote:
> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> 
> 
> W dniu pią, 23.03.2018 o godzinie 00∶52 +0000, użytkownik Joakim
> Tjernlund napisał:
> > On Mon, 2018-03-19 at 15:59 -0700, Zac Medico wrote:
> > > On 03/15/2018 12:22 PM, Michał Górny wrote:
> > > > Hi,
> > > > 
> > > > Here are three of four INSTALL_MASK updates I've sent long time ago
> > > > which were not really reviewed. The fourth patch added support
> > > > for repo-defined install-mask.conf and I'll do that separately.
> > > > 
> > > > Those patches focus on smaller changes. What they change, in order:
> > > > 
> > > > 1. Removes explicit file removal code for FEATURES=no*. Instead, those
> > > >    values are converted into additional INSTALL_MASK entries
> > > >    and handled directly via INSTALL_MASK processing.
> > > > 
> > > > 2. Rework INSTALL_MASK to filter files while installing instead of
> > > >    pre-stripping them. In other words, before: INSTALL_MASK removes
> > > >    files from ${D} before merge. After: ${D} contains all the files,
> > > >    Portage just skip INSTALL_MASK-ed stuff, verbosely indicating that.
> > > > 
> > > > 3. Adds support for exclusions in INSTALL_MASK. In other words, you
> > > >    can do stuff like:
> > > > 
> > > >      INSTALL_MASK="/usr/share/locale -/usr/share/locale/en_US"
> > > > 
> > > > I have been using this via user patches since the last submission.
> > > > Guessing by 'git log', this means almost 2 years now.
> > > > 
> > > > --
> > > > Best regards,
> > > > Michał Górny
> > > > 
> > > > Michał Górny (3):
> > > >   portage.package.ebuild.config: Move FEATURES=no* handling there
> > > >   portage.dbapi.vartree: Move INSTALL_MASK handling into merging
> > > >   portage.dbapi.vartree: Support exclusions in INSTALL_MASK
> > > > 
> > > >  bin/misc-functions.sh                |  30 ----------
> > > >  pym/portage/dbapi/vartree.py         | 104 ++++++++++++++++++++++-------------
> > > >  pym/portage/package/ebuild/config.py |  11 ++++
> > > >  3 files changed, 77 insertions(+), 68 deletions(-)
> > > > 
> > > 
> > > As mentioned in #gentoo-portage today, the rationale for including the
> > > INSTALL_MASKed files in CONTENTS is to that we can detect collisions
> > > that would have occurred had people not been using INSTALL_MASK.
> > > 
> > > Since people can use INSTALL_MASK to intentionally prevent collisions,
> > > in cases where COLLISION_IGNORE is not appropriate (this is common
> > > practice at my workplace), we'll need a new FEATURES setting to trigger
> > > the new behavior where INSTALL_MASKed files still trigger file collisions.
> > 
> > Are we going to see this in Portage soon? And PKG_INSTALL_MASK too ?
> 
> It's in sys-apps/portage-mgorny. Whatever's going to land in sys-
> apps/portage, it's probably going to be half-broken to satisfy
> somebody's colleague's corner case of misusing INSTALL_MASK.

I looked and saw the INSTALL_MASK part but no mention of PKG_INSTALL_MASK(which is what I need)

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2018-03-23  9:05 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-15 19:22 [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Michał Górny
2018-03-15 19:22 ` [gentoo-portage-dev] [PATCH 1/3] portage.package.ebuild.config: Move FEATURES=no* handling there Michał Górny
2018-03-15 19:22 ` [gentoo-portage-dev] [PATCH 2/3] portage.dbapi.vartree: Move INSTALL_MASK handling into merging Michał Górny
2018-03-15 19:22 ` [gentoo-portage-dev] [PATCH 3/3] portage.dbapi.vartree: Support exclusions in INSTALL_MASK Michał Górny
2018-03-15 21:02   ` Alec Warner
2018-03-15 21:17     ` Michał Górny
2018-03-15 21:44     ` Joakim Tjernlund
2018-03-16  7:50       ` Michał Górny
2018-03-16  8:08         ` Joakim Tjernlund
2018-03-16  5:10 ` [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK refurbishing resubmit Zac Medico
2018-03-16  8:31   ` Joakim Tjernlund
2018-03-16 10:08   ` Michał Górny
2018-03-16 17:07     ` Zac Medico
2018-03-16 21:13       ` Michał Górny
2018-03-16 21:25         ` Zac Medico
2018-03-18  9:03   ` Michał Górny
2018-03-18 18:22     ` Zac Medico
2018-03-19  6:27     ` Joakim Tjernlund
2018-03-16  8:11 ` Joakim Tjernlund
2018-03-16  8:13   ` Michał Górny
2018-03-18  9:57     ` Joakim Tjernlund
2018-03-19 22:59 ` Zac Medico
2018-03-23  0:52   ` Joakim Tjernlund
2018-03-23  1:09     ` Zac Medico
2018-03-23  8:33     ` Michał Górny
2018-03-23  9:05       ` Joakim Tjernlund

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox