From Newsgroup: muc.lists.freebsd.ports
This is a multi-part message in MIME format.
--Multipart=_Sat__16_May_2026_10_01_31_+0900_GfZA4/TZ3tpNuCKi
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
On Fri, 15 May 2026 21:16:37 +0200
Gareth de Vaux <
ports@lordcow.org> wrote:
On Fri 2026-05-15 (20:36), Daniel Engberg wrote:
I'm going to guess that your tree has stray work-dirs left because of the bootstrapping which confuses the framework (these do not get removed by make
clean or clean-depends).
rm -rf /usr/ports/*/*/work && rm -rf /usr/ports/*/*/work-*
Great thanks, that worked :) I'd done 'portsclean -C' but that evidently doesn't
clean everything.
Do you habitally run `portsdb -Uu`? (If you're always running
`make index` at /usr/ports after updating ports tree, it can be
`portsdb -u`.) portsclean requires up-to-date INDEX.db to work.
So if any newly added ports were built without cleaning out
work*/, portsclean wouldn't notice it, thus, won't delete it.
And this can harm any ports depending upon it in some situations.
Another thing to mention is that unpatched portsclean doesn't
know how to handle flavored ports, thus, work-* like appeared
in the second `rm` command in Daniel's suggestion are always
ignored.
Attached is what I have for ports-mgmt/portupgrade-devel.
(Not perfect for FLAVOR supports and not fully adapted with
recent ports framework, though.)
Unfortunately, ports-mgmt/portupgrade{-devel} are unmaintained
(except for adapting upgraded default ruby) for too long time
and many proposed patches are NOT handled, thus, I've lost track
with from which PR (or suggestions on MLs or somewhere else)
I've obtained them. This is moslty because I needed to merge
multiple patches that applies to the same file.
And even on registered PRs, some are attached as patches,
but some are sugested in comments.
Anyway, portsclean is too handy and too useful to ignore,
thus, I'm continuously reporting non-ASCII characters
in MOVED to be removed or rewritten with ASCII only
to make portsdb happy. Unfortunately, I'm not enough familiar
with ruby to fix portsdb for allowing non-ASCII characters
in MOVED.
Regards.
--
Tomoaki AOKI <
junchoon@dec.sakura.ne.jp>
--Multipart=_Sat__16_May_2026_10_01_31_+0900_GfZA4/TZ3tpNuCKi
Content-Type: text/x-diff;
name="20260516_applied-to-ports-mgmt_portugprade-devel.diff" Content-Disposition: attachment;
filename="20260516_applied-to-ports-mgmt_portugprade-devel.diff" Content-Transfer-Encoding: 7bit
diff --git a/ports-mgmt/portupgrade-devel/files/extra-patch-bin_portsclean b/ports-mgmt/portupgrade-devel/files/extra-patch-bin_portsclean
new file mode 100644
index 000000000000..4dbad6842d4d
--- /dev/null
+++ b/ports-mgmt/portupgrade-devel/files/extra-patch-bin_portsclean
@@ -0,0 +1,18 @@
+--- bin/portsclean.orig 2018-03-09 19:59:29.000000000 +0100
++++ bin/portsclean 2018-08-12 19:06:56.356177000 +0200
+@@ -177,13 +177,13 @@
+ wrkdirprefix.gsub!(%r"/(?=/|$)", '')
+
+ if wrkdirprefix.empty?
+- puts "Cleaning out #{$ports_dir}/*/*/work..."
++ puts "Cleaning out #{$ports_dir}/*/*/work*..."
+
+ # Ruby's glob yields the given block everytime a new matching
+ # entry is found, so it doesn't overflow, and we don't have to
+ # wait until everything is found.
+
+- Dir.glob(File.join($ports_dir, "*/*/work")) do |dir|
++ Dir.glob(File.join($ports_dir, "*/*/work*")) do |dir|
+ delete_dir dir
+ end
+
diff --git a/ports-mgmt/portupgrade-devel/files/patch-bin_pkg__glob b/ports-mgmt/portupgrade-devel/files/patch-bin_pkg__glob
new file mode 100644
index 000000000000..adabd82330d6
--- /dev/null
+++ b/ports-mgmt/portupgrade-devel/files/patch-bin_pkg__glob
@@ -0,0 +1,11 @@
+--- bin/pkg_glob.orig 2018-10-10 16:03:41.664989000 +0900
++++ bin/pkg_glob 2018-10-10 16:23:44.589276000 +0900
+@@ -398,7 +398,7 @@ def deinstall_pkg(pkgname)
+
+ next if $noexecute
+
+- if system('/bin/cp', '-Rpf', file, dest)
++ if system('/bin/cp', '-pf', file, dest)
+ preserved_files << dest
+ else
+ STDERR.puts "Copy failed!"
diff --git a/ports-mgmt/portupgrade-devel/files/patch-bin_portsclean b/ports-mgmt/portupgrade-devel/files/patch-bin_portsclean
new file mode 100644
index 000000000000..cd85135da55b
--- /dev/null
+++ b/ports-mgmt/portupgrade-devel/files/patch-bin_portsclean
@@ -0,0 +1,26 @@
+--- bin/portsclean.orig 2024-02-29 19:03:26 UTC
++++ bin/portsclean
+@@ -177,12 +177,12 @@
+ wrkdirprefix.gsub!(%r"/(?=/|$)", '')
+
+ if wrkdirprefix.empty?
+- puts "Cleaning out #{$ports_dir}/*/*/work..."
++ puts "Cleaning out #{$ports_dir}/*/*/work*..."
+
+ # Ruby's glob yields the given block everytime a new matching
+ # entry is found, so it doesn't overflow, and we don't have to
+ # wait until everything is found.
+
+- Dir.glob(File.join($ports_dir, "*/*/work")) do |dir|
++ Dir.glob(File.join($ports_dir, "*/*/work*")) do |dir|
+ delete_dir dir
+ end
+@@ -282,7 +282,7 @@ def ldconfig_m(*dirs)
+ msg = " --> Running ldconfig -m"
+
+ dirs.each do |d|
+- dirs.delete(d) if ! (File.exists?(d) && File.stat(d).directory?)
++ dirs.delete(d) if ! (File.exist?(d) && File.stat(d).directory?)
+ end
+
+ case dirs.size
diff --git a/ports-mgmt/portupgrade-devel/files/patch-bin_portupgrade b/ports-mgmt/portupgrade-devel/files/patch-bin_portupgrade
new file mode 100644
index 000000000000..d2e31abfe199
--- /dev/null
+++ b/ports-mgmt/portupgrade-devel/files/patch-bin_portupgrade
@@ -0,0 +1,57 @@
+--- bin/portupgrade.orig 2018-04-24 15:55:20.997322000 +0200
++++ bin/portupgrade 2023-01-31 07:25:10.064426000 +0200
+@@ -199,6 +199,7 @@
+ $logfilename_format = nil
+ $make_args = ""
+ $make_env = []
++ $flavor = ""
+ $new = MYNAME == 'portinstall'
+ $noexecute = false
+ $noconfig = false
+@@ -1179,6 +1180,10 @@
+ make_env << 'env'
+ end
+
++ unless $flavor.empty?
++ make_env << 'FLAVOR=' + $flavor
++ end
++
+ unless is_new or $without_env_upgrade
+ make_env.concat(get_upgrade_env_vars($current_pkgname))
+ end
+@@ -1264,6 +1269,18 @@
+
+ oldpkgname = oldpkg.fullname
+ origin ||= oldpkg.origin
++# old flavor
++ $flavor = backquote!(PkgDB::command(:pkg), 'annotate', '-Sq', "#{oldpkgname}", 'flavor').chomp
++# new flavor
++ portdir = $portsdb.portdir(origin)
++ newflavor = `cd #{portdir} && make pretty-flavors-package-names | sed -ne 's!^\\([A-Za-z0-9_]*\\): *#{oldpkgname}$!\\1!p'`
++ newflavor.chomp!
++ if $flavor.empty? and !newflavor.empty?
++ $flavor = newflavor
++ progress_message "adding flavor #{oldpkgname} #{$flavor}" unless $flavor.empty?
++ else
++ progress_message "preserving flavor #{oldpkgname} #{$flavor}" unless $flavor.empty?
++ end
+
+ if origin && config_held?(origin)
+ if $force
+@@ -2195,12 +2195,12 @@
+
+ name = pkgname.sub(/-[^\-]+$/, '')
+
+- glob_pkgfile = name + '-*.t[bgx]z'
+- re_pkgfile = /^#{Regexp.quote(name)}-[^\-]+\.t[bgx]z$/
++ glob_pkgfile = name + '-*.pkg'
++ re_pkgfile = /^#{Regexp.quote(name)}-[^\-]+\.pkg$/
+
+ if latest_link = $portsdb.latest_link(origin)
+- glob_pkgfile = "{#{glob_pkgfile},#{latest_link}.t[bgx]z}"
+- re_pkgfile = /(?:#{re_pkgfile.source}|^#{Regexp.quote(latest_link)}\.t[bgx]z$)/
++ glob_pkgfile = "{#{glob_pkgfile},#{latest_link}.pkg}"
++ re_pkgfile = /(?:#{re_pkgfile.source}|^#{Regexp.quote(latest_link)}\.pkg$)/
+ end
+
+ pkglist = []
diff --git a/ports-mgmt/portupgrade-devel/files/patch-lib_pkgtools_pkgtools.rb b/ports-mgmt/portupgrade-devel/files/patch-lib_pkgtools_pkgtools.rb
new file mode 100644
index 000000000000..d1cf333def64
--- /dev/null
+++ b/ports-mgmt/portupgrade-devel/files/patch-lib_pkgtools_pkgtools.rb
@@ -0,0 +1,65 @@
+--- lib/pkgtools/pkgtools.rb.orig 2024-02-29 19:03:26 UTC
++++ lib/pkgtools/pkgtools.rb
+@@ -315,7 +315,7 @@ end
+ def yesno_str(yes)
+ if yes then 'yes' else 'no' end
+ end
+-
++
+ def prompt_yesno(message = "OK?", yes_by_default = false)
+ if $automatic
+ input = yesno_str(yes_by_default)
+@@ -524,7 +524,7 @@ def script_path
+ # If a fixed/custom script(1) is installed by the port, use that version.
+ # See #8
+ custom_script = "#{PREFIX}/libexec/pkgtools/script"
+- if File.exists?(custom_script)
++ if File.exist?(custom_script)
+ $script_path = custom_script
+ else
+ $script_path = '/usr/bin/script'
+@@ -533,7 +533,7 @@ def logged_command(file, args)
+ end
+
+ def logged_command(file, args)
+- if !file
++ if !file
+ args
+ else
+ [script_path(), '-qa', file, *args]
+@@ -780,7 +780,7 @@ def modify_pkgdep(pkgname, dep, newdep, neworigin = ni
+ if newdep == :add
+ keyword = $1
+ data = $2
+- if keyword == "pkgdep " &&
++ if keyword == "pkgdep " &&
+ data.sub(pkgver_re,'') == dep.sub(pkgver_re,'')
+ depends_lines << "@pkgdep #{dep}\n"
+ pkgdep_undeleted = true
+@@ -981,7 +981,7 @@ class PkgResult
+ def done?
+ @result == :done
+ end
+-
++
+ def ignored?
+ @result == :ignored
+ end
+@@ -1068,7 +1068,7 @@ class PkgResult
+
+ io.puts line
+ end
+-
++
+ def self.legend(long = false)
+ if long
+ [:done, :ignored, :skipped, :error]
+@@ -1102,7 +1102,7 @@ class PkgResultSet < SimpleDelegator
+
+ def summary
+ count = Hash.new(0)
+-
++
+ each do |result|
+ if result.done?
+ count[:done] += 1
--Multipart=_Sat__16_May_2026_10_01_31_+0900_GfZA4/TZ3tpNuCKi--
--
Posted automagically by a mail2news gateway at muc.de e.V.
Please direct questions, flames, donations, etc. to
news-admin@muc.de
--- Synchronet 3.22a-Linux NewsLink 1.2