<pre style='margin:0'>
Aaron Madlon-Kay (amake) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/3ceb23013732a89800b6d15132d5e2751a14c536">https://github.com/macports/macports-ports/commit/3ceb23013732a89800b6d15132d5e2751a14c536</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 3ceb23013732a89800b6d15132d5e2751a14c536
</span>Author: Aaron Madlon-Kay <aaron@madlon-kay.com>
AuthorDate: Tue Feb 18 12:11:00 2025 +0900
<span style='display:block; white-space:pre;color:#404040;'> pub-1.0: new portgroup
</span>---
_resources/port1.0/group/pub-1.0.tcl | 115 +++++++++++++++++++++++++++++++++++
1 file changed, 115 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/pub-1.0.tcl b/_resources/port1.0/group/pub-1.0.tcl
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..929c6459576
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/pub-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,115 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; truncate-lines: t -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# This PortGroup supports the Dart pub build system
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Usage:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# PortGroup pub 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# pub.packages \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# foo 1.0.1 abcdef123456... \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# bar 2.5.0 fedcba654321...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# The pub.packages option expects a list with 3-tuples consisting of name,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# version, and sha256 checksum. Only sha256 is supported at this time as the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# checksum will be reused by pub internally.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# The list of packages and their checksums can be found in the pubspec.lock file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# in the upstream source code. The pub2port generator can be used to automate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# updates of this list for new releases.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/amake/pub2port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Dependencies on packages not published on pub.dev are currently unsupported.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup dart 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pub.home \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pub.get_args \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pub.packages
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default pub.home {${workpath}/.home/.pub-cache}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default pub.get_args {--offline --enforce-lockfile}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default pub.packages {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set pub_env {PUB_CACHE=${pub.home}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default build.env ${pub_env}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default test.env ${pub_env}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# The distfiles of the main port will also be stored in this directory, but this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# is the only way to allow reusing the same packages across multiple ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default dist_subdir {[expr {[llength ${pub.packages}] > 0 ? "pub-packages" : ${name}}]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default extract.only {[pub::disttagclean ${distfiles}]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+####################################################################################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Internal procedures
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+####################################################################################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+namespace eval pub {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Based on rust::disttagclean from cargo_fetch-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc pub::disttagclean {list} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$list eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return $list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach fname $list {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set name [getdistname ${fname}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set is_pkg no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach {pname pversion chksum} [option pub.packages] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set pubfile ${pname}-${pversion}.tar.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${name} eq ${pubfile}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set is_pkg yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {!${is_pkg}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend val ${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return $val
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc pub::handle_packages {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach {pname pversion chksum} [option pub.packages] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # The same package name can appear with multiple versions. Use a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # combination of crate name and checksum as unique identifier. As the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # :disttag cannot contain dots, the version number cannot be used.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set pubfile ${pname}-${pversion}.tar.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set pubtag pub-${pname}-${chksum}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ distfiles-append ${pubfile}:${pubtag}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ master_sites-append https://pub.dev/api/archives/:${pubtag}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ checksums-append ${pubfile} sha256 ${chksum}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+port::register_callback pub::handle_packages
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc pub::extract_package {pname pversion pubfile} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set targetdir "[option pub.home]/hosted/pub.dev/${pname}-${pversion}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file mkdir ${targetdir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set tar [findBinary tar ${portutil::autoconf::tar_path}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system -W ${targetdir} "${tar} -xf [shellescape [option distpath]/${pubfile}]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc pub::import_package {pname pversion chksum pubfile} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global pub.home
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pub::extract_package ${pname} ${pversion} ${pubfile}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set chkfile [open "${pub.home}/hosted-hashes/pub.dev/${pname}-${pversion}.sha256" "w"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts -nonewline ${chkfile} ${chksum}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ close ${chkfile}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[llength ${pub.packages}] > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file mkdir ${pub.home}/hosted/pub.dev ${pub.home}/hosted-hashes/pub.dev
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach {pname pversion chksum} [option pub.packages] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set pubfile ${pname}-${pversion}.tar.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pub::import_package ${pname} ${pversion} ${chksum} ${pubfile}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system -W ${worksrcpath} "PUB_CACHE=${pub.home} ${dart.bin} pub get ${pub.get_args}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span></pre><pre style='margin:0'>
</pre>