Skip to content

Instantly share code, notes, and snippets.

@jmroot
jmroot / mportkey.tcl
Created January 9, 2026 11:57
Print an arbitrary variable from a Portfile interpreter
#! /usr/bin/env port-tclsh
# usage: mportkey.tcl varname portname [variants]
lassign $argv varname portname variants
package require macports
mportinit
lassign [mportlookup $portname] portname portinfo
set variations [macports::_variants_to_variations $variants]
set mport [mportopen [dict get $portinfo porturl] [dict create subport $portname] $variations]
puts [_mportkey $mport $varname]
@jmroot
jmroot / deps_diff.tcl
Created November 2, 2025 20:32
Diff port dependencies
#! /usr/bin/env port-tclsh
package require macports
package require registry2
mportinit
set portname [lindex $argv 0]
set regref [lindex [registry::entry installed $portname] 0]
set requested_variants [$regref requested_variants]
@jmroot
jmroot / api-test.tcl
Created February 26, 2025 11:01
tcl-tls crash reproducer
#!/usr/bin/env port-tclsh
lappend auto_path {*}[glob -nocomplain -types d /opt/local/lib/tcltls*]
package require json
package require http
package require tls
set builds_url https://ports.macports.org/api/v1/builds/
@jmroot
jmroot / crash.txt
Created February 26, 2025 04:37
tcl-tls crash
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libboringssl.dylib 0x7ff8078da330 SSL_CTX_new + 192
1 tcltls.dylib 0x104fbb85a 0x104fb8000 + 14426
2 libtcl8.6.dylib 0x105084c3c TclNRRunCallbacks + 79
3 libtcl8.6.dylib 0x105085af4 TclEvalEx + 1921
4 libtcl8.6.dylib 0x105122ff5 Tcl_FSEvalFileEx + 633
5 libtcl8.6.dylib 0x105129b5b Tcl_MainEx + 1978
6 tclsh8.6 0x104f17a6a main + 39
7 dyld 0x7ff801f862cd start + 1805
@jmroot
jmroot / gist:1d5e7ec3d18cef5b8b998438f3fa762e
Created November 8, 2023 11:14
android-platform-tools
% port info
android-platform-tools @31.0.3 (java, devel)
Description: Platform-Tools for Google Android SDK (adb and fastboot)
Homepage: https://developer.android.com/studio/
Extract Dependencies: unzip
Platforms: darwin
License: BSD and MIT and NCSA and Apache-2 and GPL-2 and LGPL-2.1
Maintainers: Email: judaew@macports.org, GitHub: judaew
@jmroot
jmroot / gist:55bbbc6e1f7f0fc383132e9a4125708c
Created November 6, 2023 23:14
changing version in variant
testport1 has a variant defined like this:
variant oldversion {
version 1.0
}
% port info --version testport1
version: 2.0
% port info --version testport1 +oldversion
version: 1.0
% sudo port install testport1 +oldversion
@jmroot
jmroot / Portfile
Created November 6, 2023 20:37
android-platform-tools with subports for older CPUs
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
name android-platform-tools
version 34.0.5
categories java devel
installs_libs no
maintainers {judaew @judaew} openmaintainer
@jmroot
jmroot / has_archive.tcl
Created October 31, 2023 15:17
Check if a port has an archive available
#! /usr/bin/env port-tclsh
package require macports
mportinit
array set portinfo [lindex [mportlookup [lindex $argv 0]] 1]
set mport [mportopen $portinfo(porturl) [list subport $portinfo(name)] ""]
set available [[ditem_key $mport workername] eval [list _archive_available]]
if {$available} {
set status has
if {[catch {sysctl hw.optional.sse4_1} result] || $result == 0}]} {
depends_run-append port:whatever-installs-old-adb
notes-append "The current version of adb requires SSE 4.1, which is not\
supported by your CPU. An older version is provided at /path/to/adb"
}
@jmroot
jmroot / Portfile-osxphotos
Created September 7, 2023 08:19
Incomplete Portfile for osxphotos
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
PortGroup python 1.0
name osxphotos
version 0.63.0
categories graphics
platforms {darwin any}
supported_archs noarch