Compare commits
14 Commits
d059121223
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
844067ee41 | ||
|
|
a6b68a0b99 | ||
|
|
a834a66cbf | ||
|
|
7f2ab0a62e | ||
|
|
f29ebb456f | ||
|
|
5fcf1e2d83 | ||
|
|
d76a5dce4b | ||
|
|
bc3689e565 | ||
|
|
00c32ca2ed | ||
|
|
d393e4551d | ||
|
|
8813f7e720 | ||
|
|
a91ecb0f1d | ||
|
|
6d238cb67e | ||
|
|
bdaeed24db |
40
audio/chuck/Makefile
Normal file
40
audio/chuck/Makefile
Normal file
@@ -0,0 +1,40 @@
|
||||
COMMENT = strongly-timed music programming language
|
||||
|
||||
DIST_TUPLE = github ccrma chuck chuck-1.5.5.7 .
|
||||
PKGNAME = chuck-1.5.5.7
|
||||
CATEGORIES = audio
|
||||
REVISION = 0
|
||||
|
||||
HOMEPAGE = https://chuck.stanford.edu/
|
||||
|
||||
# Dual-licensed: MIT or GPLv2+
|
||||
PERMIT_PACKAGE = Yes
|
||||
|
||||
WANTLIB += ${COMPILER_LIBCXX} c m pthread sndfile sndio
|
||||
|
||||
COMPILER = base-clang
|
||||
|
||||
LIB_DEPENDS = audio/libsndfile
|
||||
|
||||
BUILD_DEPENDS = devel/bison
|
||||
|
||||
USE_GMAKE = Yes
|
||||
|
||||
WRKDIST = ${WRKDIR}/chuck-chuck-1.5.5.7
|
||||
WRKSRC = ${WRKDIST}/src
|
||||
|
||||
MAKE_FILE = makefile
|
||||
ALL_TARGET = openbsd-sndio
|
||||
MAKE_FLAGS += CC="${CC}" CXX="${CXX}" YACC=${LOCALBASE}/bin/bison \
|
||||
CFLAGS="${CFLAGS} -I${WRKSRC} -I${WRKSRC}/core -I${WRKSRC}/core/lo -I${LOCALBASE}/include -D__OPENBSD_SNDIO__ -fno-strict-aliasing -D__CK_SNDFILE_NATIVE__ -D__DISABLE_HID__" \
|
||||
LDFLAGS="${LDFLAGS} -L${LOCALBASE}/lib -lsndio -lstdc++ -lm -lsndfile -lpthread"
|
||||
|
||||
NO_TEST = Yes
|
||||
|
||||
pre-build:
|
||||
${INSTALL} -m 644 ${FILESDIR}/makefile.sndio ${WRKSRC}/core/makefile.x/makefile.sndio
|
||||
|
||||
do-install:
|
||||
${INSTALL_PROGRAM} ${WRKSRC}/chuck ${PREFIX}/bin/chuck
|
||||
|
||||
.include <bsd.port.mk>
|
||||
2
audio/chuck/distinfo
Normal file
2
audio/chuck/distinfo
Normal file
@@ -0,0 +1,2 @@
|
||||
SHA256 (ccrma-chuck-chuck-1.5.5.7.tar.gz) = BWEe9laQNXvCcpXhcwFlBg0cFGTC1nXY1V+4sYwLbWk=
|
||||
SIZE (ccrma-chuck-chuck-1.5.5.7.tar.gz) = 22405823
|
||||
5
audio/chuck/files/makefile.sndio
Normal file
5
audio/chuck/files/makefile.sndio
Normal file
@@ -0,0 +1,5 @@
|
||||
# compiler flags
|
||||
CFLAGS+= -D__OPENBSD_SNDIO__ -fno-strict-aliasing -D__CK_SNDFILE_NATIVE__ -D__DISABLE_HID__ -I/usr/local/include
|
||||
|
||||
# linker / library flags
|
||||
LDFLAGS+= -lsndio -lstdc++ -lm -L/usr/local/lib -lsndfile -lpthread
|
||||
13
audio/chuck/patches/patch-src_core_chuck_compile_cpp
Normal file
13
audio/chuck/patches/patch-src_core_chuck_compile_cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
Index: src/core/chuck_compile.cpp
|
||||
--- src/core/chuck_compile.cpp.orig
|
||||
+++ src/core/chuck_compile.cpp
|
||||
@@ -1198,6 +1198,9 @@ t_CKBOOL Chuck_Compiler::bind( f_ck_query query_func,
|
||||
// commit what is in the type checker at this point
|
||||
env->global()->commit();
|
||||
|
||||
+ // preserve all operator overloads currently in registry | added 1.5.5.8 (ben)
|
||||
+ env->op_registry.preserve();
|
||||
+
|
||||
// pop indent level
|
||||
EM_poplog();
|
||||
|
||||
16
audio/chuck/patches/patch-src_core_chuck_cpp
Normal file
16
audio/chuck/patches/patch-src_core_chuck_cpp
Normal file
@@ -0,0 +1,16 @@
|
||||
Index: src/core/chuck.cpp
|
||||
--- src/core/chuck.cpp.orig
|
||||
+++ src/core/chuck.cpp
|
||||
@@ -1531,10 +1531,10 @@ void ChucK::globalCleanup()
|
||||
// midirw_detach();
|
||||
//#endif // __DISABLE_MIDI__
|
||||
|
||||
- #ifndef __ALTER_HID__
|
||||
+ #if !defined(__ALTER_HID__) && !defined(__DISABLE_HID__)
|
||||
// shutdown HID
|
||||
HidInManager::cleanup( 100 );
|
||||
- #endif // __ALTER_HID__
|
||||
+ #endif // __ALTER_HID__ && __DISABLE_HID__
|
||||
|
||||
#ifndef __DISABLE_SERIAL__
|
||||
// shutdown serial
|
||||
28
audio/chuck/patches/patch-src_core_chuck_def_h
Normal file
28
audio/chuck/patches/patch-src_core_chuck_def_h
Normal file
@@ -0,0 +1,28 @@
|
||||
Index: src/core/chuck_def.h
|
||||
--- src/core/chuck_def.h.orig
|
||||
+++ src/core/chuck_def.h
|
||||
@@ -49,7 +49,7 @@
|
||||
// 1.5.0.0 (ge) | moved to chuck.h for at-a-glance visibility
|
||||
// 1.5.2.0 (ge) | moved to chuck_def.h for chugins headers streamlining
|
||||
//-----------------------------------------------------------------------------
|
||||
-#define CHUCK_VERSION_STRING "1.5.5.7 (chai)"
|
||||
+#define CHUCK_VERSION_STRING "1.5.5.8-dev (chai)"
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -261,13 +261,13 @@ typedef struct { SAMPLE re ; SAMPLE im ; } t_CKCOMPLEX
|
||||
// platform: linux
|
||||
// related macros: __LINUX_ALSA__ __LINUX_PULSE__ __LINUX_OSS__ __LINUX_JACK__ __UNIX_JACK__
|
||||
//-------------------------------------------
|
||||
-#if defined(__linux__) || defined(__FreeBSD__)
|
||||
+#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
|
||||
//-------------------------------------------
|
||||
#ifndef __PLATFORM_LINUX__
|
||||
#define __PLATFORM_LINUX__
|
||||
#endif
|
||||
//-------------------------------------------
|
||||
-#endif // defined(__linux__) || defined(__FreeBSD__)
|
||||
+#endif // defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
|
||||
//-------------------------------------------
|
||||
|
||||
|
||||
11
audio/chuck/patches/patch-src_core_chuck_errmsg_h
Normal file
11
audio/chuck/patches/patch-src_core_chuck_errmsg_h
Normal file
@@ -0,0 +1,11 @@
|
||||
Index: src/core/chuck_errmsg.h
|
||||
--- src/core/chuck_errmsg.h.orig
|
||||
+++ src/core/chuck_errmsg.h
|
||||
@@ -37,6 +37,7 @@
|
||||
#define __CHUCK_ERRORMSG_H__
|
||||
|
||||
#include "chuck_def.h"
|
||||
+#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
15
audio/chuck/patches/patch-src_core_chuck_lang_cpp
Normal file
15
audio/chuck/patches/patch-src_core_chuck_lang_cpp
Normal file
@@ -0,0 +1,15 @@
|
||||
Index: src/core/chuck_lang.cpp
|
||||
--- src/core/chuck_lang.cpp.orig
|
||||
+++ src/core/chuck_lang.cpp
|
||||
@@ -3823,7 +3823,10 @@ static void typeGetTypes(
|
||||
for( t_CKINT i = 0; i < types.size(); i++ )
|
||||
{
|
||||
// check special
|
||||
- t_CKBOOL special = (types[i]->base_name.length()>0 && types[i]->base_name[0] == '@');
|
||||
+ // 1.5.5.8 (ge) account for "auto"
|
||||
+ t_CKBOOL special = (types[i]->base_name.length()>0 &&
|
||||
+ (types[i]->base_name[0] == '@' ||
|
||||
+ types[i]->xid == te_auto) );
|
||||
// if not requesting special types
|
||||
if( !isSpecial && (special == TRUE) ) continue;
|
||||
// check origin
|
||||
16
audio/chuck/patches/patch-src_core_lo_config_h
Normal file
16
audio/chuck/patches/patch-src_core_lo_config_h
Normal file
@@ -0,0 +1,16 @@
|
||||
Index: src/core/lo/config.h
|
||||
--- src/core/lo/config.h.orig
|
||||
+++ src/core/lo/config.h
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
-#if defined(__APPLE__) || defined(__linux__) || defined(__FreeBSD__)
|
||||
+#if defined(__APPLE__) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
|
||||
// 1.5.0.7 (ge) since this is in the lo/ sub-directory,
|
||||
// and does not include chuck_def.h, directly check platform macros
|
||||
// #if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__)
|
||||
@@ -205,4 +205,4 @@
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
/* #undef size_t */
|
||||
|
||||
-#endif // defined(__APPLE__) || defined(__linux__) || defined(__FreeBSD__)
|
||||
+#endif // defined(__APPLE__) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
|
||||
25
audio/chuck/patches/patch-src_core_makefile
Normal file
25
audio/chuck/patches/patch-src_core_makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
Index: src/core/makefile
|
||||
--- src/core/makefile.orig
|
||||
+++ src/core/makefile
|
||||
@@ -4,8 +4,8 @@ current:
|
||||
@echo " make linux-alsa, make linux-jack, make linux-pulse, linux-all,"
|
||||
@echo " make mac, make mac-ub, make cygwin, make win32, or make vanilla"
|
||||
|
||||
-.PHONY: mac mac-ub osx linux-all linux linux-pulse linux-jack linux-alsa vanilla cygwin osx-rl test
|
||||
-mac mac-ub osx linux-all linux linux-pulse linux-jack linux-alsa vanilla cygwin osx-rl: chuck-core
|
||||
+.PHONY: mac mac-ub osx linux-all linux linux-pulse linux-jack linux-alsa openbsd-sndio vanilla cygwin osx-rl test
|
||||
+mac mac-ub osx linux-all linux linux-pulse linux-jack linux-alsa openbsd-sndio vanilla cygwin osx-rl: chuck-core
|
||||
|
||||
win32:
|
||||
make -f makefile.win32
|
||||
@@ -75,6 +75,10 @@ endif
|
||||
|
||||
ifneq (,$(strip $(filter linux-alsa,$(MAKECMDGOALS))))
|
||||
include makefile.x/makefile.alsa
|
||||
+endif
|
||||
+
|
||||
+ifneq (,$(strip $(filter openbsd-sndio,$(MAKECMDGOALS))))
|
||||
+include makefile.x/makefile.sndio
|
||||
endif
|
||||
|
||||
ifneq (,$(strip $(filter vanilla,$(MAKECMDGOALS))))
|
||||
12
audio/chuck/patches/patch-src_core_makefile_x_makefile_jack
Normal file
12
audio/chuck/patches/patch-src_core_makefile_x_makefile_jack
Normal file
@@ -0,0 +1,12 @@
|
||||
Index: src/core/makefile.x/makefile.jack
|
||||
--- src/core/makefile.x/makefile.jack.orig
|
||||
+++ src/core/makefile.x/makefile.jack
|
||||
@@ -1,6 +1,6 @@
|
||||
# compiler flags
|
||||
-CFLAGS+= -D__UNIX_JACK__ -fno-strict-aliasing -D__CK_SNDFILE_NATIVE__
|
||||
+CFLAGS+= -D__UNIX_JACK__ -fno-strict-aliasing -D__CK_SNDFILE_NATIVE__ -D__DISABLE_HID__
|
||||
CFLAGS+= $(shell pkg-config --cflags jack)
|
||||
|
||||
# linker / library flags
|
||||
-LDFLAGS+= -lasound $(shell pkg-config --libs jack) -lstdc++ -ldl -lm -lsndfile -lpthread
|
||||
+LDFLAGS+= $(shell pkg-config --libs jack) -lstdc++ -lm -lsndfile -lpthread
|
||||
21
audio/chuck/patches/patch-src_core_ugen_stk_h
Normal file
21
audio/chuck/patches/patch-src_core_ugen_stk_h
Normal file
@@ -0,0 +1,21 @@
|
||||
Index: src/core/ugen_stk.h
|
||||
--- src/core/ugen_stk.h.orig
|
||||
+++ src/core/ugen_stk.h
|
||||
@@ -81,6 +81,17 @@ t_CKBOOL stk_detach( Chuck_Carrier * carrier );
|
||||
#if !defined(__STK_H)
|
||||
#define __STK_H
|
||||
|
||||
+// undef OpenBSD/BSD endian macros that clash with Stk member function names
|
||||
+#ifdef swap16
|
||||
+#undef swap16
|
||||
+#endif
|
||||
+#ifdef swap32
|
||||
+#undef swap32
|
||||
+#endif
|
||||
+#ifdef swap64
|
||||
+#undef swap64
|
||||
+#endif
|
||||
+
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
57
audio/chuck/patches/patch-src_core_ulib_math_cpp
Normal file
57
audio/chuck/patches/patch-src_core_ulib_math_cpp
Normal file
@@ -0,0 +1,57 @@
|
||||
Index: src/core/ulib_math.cpp
|
||||
--- src/core/ulib_math.cpp.orig
|
||||
+++ src/core/ulib_math.cpp
|
||||
@@ -581,6 +581,13 @@ DLL_QUERY libmath_query( Chuck_DL_Query * QUERY )
|
||||
QUERY->add_svar( QUERY, "complex", "j", TRUE, &g_i );
|
||||
QUERY->doc_var( QUERY, "The complex number sqrt(-1)." );
|
||||
|
||||
+ // spherical harmonics | (added) 1.5.5.8 by everett 2026
|
||||
+ QUERY->add_sfun( QUERY, sh_impl, "float[]", "sh" );
|
||||
+ QUERY->add_arg( QUERY, "int", "order" );
|
||||
+ QUERY->add_arg( QUERY, "float", "azimuth" );
|
||||
+ QUERY->add_arg( QUERY, "float", "zenith" );
|
||||
+ QUERY->doc_func(QUERY, "Returns an array of size (N+1)^2, containing ACN ordered spherical harmonics.");
|
||||
+
|
||||
// add examples
|
||||
// QUERY->add_ex( QUERY, "map.ck" );
|
||||
// QUERY->add_ex( QUERY, "math-help.ck" );
|
||||
@@ -1435,5 +1442,38 @@ CK_DLL_SFUN( map2_impl )
|
||||
|
||||
// std::cerr << v << " " << x1 << " " << y1 << " " << x2 << " " << y2 << std::endl;
|
||||
// remap
|
||||
- RETURN->v_float = x2 + (v-x1)/(y1-x1)*(y2-x2);
|
||||
+ RETURN->v_float = x2 + (v - x1) / (y1 - x1) * (y2 - x2);
|
||||
+}
|
||||
+
|
||||
+// spherical harmonics implementation | (added) 1.5.5.8 by everett 2026
|
||||
+CK_DLL_SFUN( sh_impl )
|
||||
+{
|
||||
+ t_CKINT order = GET_NEXT_INT(ARGS);
|
||||
+ t_CKFLOAT direction = GET_NEXT_FLOAT(ARGS);
|
||||
+ t_CKFLOAT elevation = GET_NEXT_FLOAT(ARGS);
|
||||
+ t_CKFLOAT * coord = new t_CKFLOAT[(order + 1) * (order + 1) + 1];
|
||||
+ if( order <= 5 )
|
||||
+ {
|
||||
+ t_CKUINT size = (order + 1) * (order + 1);
|
||||
+ // moved memory ownership to ck_SH emc 2/26 (memory was previously allocated by ck_SH() and deleted by sh_impl)
|
||||
+ ck_SH( coord,order, direction, elevation, 0 );
|
||||
+ // Create a float[] array
|
||||
+ Chuck_DL_Api::Object returnarray = API->object->create( SHRED, API->type->lookup(VM, "float[]"), false );
|
||||
+ Chuck_ArrayFloat * coordinatearray = (Chuck_ArrayFloat *)returnarray;
|
||||
+ for( t_CKINT i = 0; i < size; i++ )
|
||||
+ {
|
||||
+ API->object->array_float_push_back(coordinatearray, coord[i]);
|
||||
+ }
|
||||
+ // set return value
|
||||
+ RETURN->v_object = coordinatearray;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ // throw exception
|
||||
+ API->vm->throw_exception("Math.sh() : InvalidSHOrder", "only up to 5th order currently supported", nullptr);
|
||||
+ RETURN->v_int = 0;
|
||||
+ }
|
||||
+
|
||||
+ // clean up
|
||||
+ CK_SAFE_DELETE_ARRAY( coord );
|
||||
}
|
||||
13
audio/chuck/patches/patch-src_core_ulib_math_h
Normal file
13
audio/chuck/patches/patch-src_core_ulib_math_h
Normal file
@@ -0,0 +1,13 @@
|
||||
Index: src/core/ulib_math.h
|
||||
--- src/core/ulib_math.h.orig
|
||||
+++ src/core/ulib_math.h
|
||||
@@ -119,7 +119,7 @@ CK_DLL_SFUN( euclidean4d_impl );
|
||||
CK_DLL_SFUN( map_impl );
|
||||
CK_DLL_SFUN( map2_impl );
|
||||
|
||||
-
|
||||
-
|
||||
+// spherical harmonics | (added) 1.5.5.8 by everett 2026
|
||||
+CK_DLL_SFUN( sh_impl );
|
||||
|
||||
#endif
|
||||
65
audio/chuck/patches/patch-src_core_util_hid_cpp
Normal file
65
audio/chuck/patches/patch-src_core_util_hid_cpp
Normal file
@@ -0,0 +1,65 @@
|
||||
Index: src/core/util_hid.cpp
|
||||
--- src/core/util_hid.cpp.orig
|
||||
+++ src/core/util_hid.cpp
|
||||
@@ -6368,7 +6368,7 @@ int Keyboard_close( int js )
|
||||
|
||||
|
||||
|
||||
-#elif defined(__PLATFORM_LINUX__)
|
||||
+#elif defined(__PLATFORM_LINUX__) && !defined(__OpenBSD__) && !defined(__NetBSD__)
|
||||
/*****************************************************************************
|
||||
Linux general HID support
|
||||
*****************************************************************************/
|
||||
@@ -7805,6 +7805,34 @@ const char * Keyboard_name( int k )
|
||||
#endif
|
||||
|
||||
|
||||
+// OpenBSD/NetBSD: HID not supported; provide no-op stubs
|
||||
+#if (defined(__OpenBSD__) || defined(__NetBSD__)) && defined(__PLATFORM_LINUX__)
|
||||
+void Hid_init() {}
|
||||
+void Hid_quit() {}
|
||||
+void Joystick_init() {}
|
||||
+void Joystick_quit() {}
|
||||
+int Joystick_count() { return 0; }
|
||||
+int Joystick_open(int) { return -1; }
|
||||
+int Joystick_close(int) { return -1; }
|
||||
+const char * Joystick_name(int) { return NULL; }
|
||||
+void Keyboard_init() {}
|
||||
+void Keyboard_quit() {}
|
||||
+int Keyboard_count() { return 0; }
|
||||
+int Keyboard_open(int) { return -1; }
|
||||
+int Keyboard_close(int) { return -1; }
|
||||
+const char * Keyboard_name(int) { return NULL; }
|
||||
+void Mouse_init() {}
|
||||
+void Mouse_quit() {}
|
||||
+int Mouse_count() { return 0; }
|
||||
+int Mouse_open(int) { return -1; }
|
||||
+int Mouse_close(int) { return -1; }
|
||||
+const char * Mouse_name(int) { return NULL; }
|
||||
+void Hid_poll() {}
|
||||
+t_CKINT TiltSensor_setPollRate(t_CKINT) { return 0; }
|
||||
+t_CKINT TiltSensor_getPollRate() { return 0; }
|
||||
+#endif // OpenBSD/NetBSD stubs
|
||||
+
|
||||
+
|
||||
#ifdef __PLATFORM_WINDOWS__
|
||||
|
||||
// multiple monitors info:
|
||||
@@ -7904,7 +7932,7 @@ t_CKVEC2 ck_get_mouse_xy_normalize()
|
||||
|
||||
// t_CKFLOAT screenWidth = GetSystemMetrics( SM_CXVIRTUALSCREEN );
|
||||
// t_CKFLOAT screenHeight = GetSystemMetrics( SM_CYVIRTUALSCREEN );
|
||||
-#elif defined(__PLATFORM_LINUX__)
|
||||
+#elif defined(__PLATFORM_LINUX__) && !defined(__OpenBSD__) && !defined(__NetBSD__)
|
||||
|
||||
#if defined(__USE_X11__)
|
||||
// stuff to query
|
||||
@@ -7973,7 +8001,7 @@ t_CKVEC2 ck_get_mouse_xy_absolute()
|
||||
retval.x = pt.x;
|
||||
retval.y = pt.y;
|
||||
}
|
||||
-#elif defined(__PLATFORM_LINUX__)
|
||||
+#elif defined(__PLATFORM_LINUX__) && !defined(__OpenBSD__) && !defined(__NetBSD__)
|
||||
|
||||
#if defined(__USE_X11__)
|
||||
// stuff to query
|
||||
148
audio/chuck/patches/patch-src_core_util_math_cpp
Normal file
148
audio/chuck/patches/patch-src_core_util_math_cpp
Normal file
@@ -0,0 +1,148 @@
|
||||
Index: src/core/util_math.cpp
|
||||
--- src/core/util_math.cpp.orig
|
||||
+++ src/core/util_math.cpp
|
||||
@@ -368,5 +368,143 @@ t_CKFLOAT ck_vec3_magnitude( const t_CKVEC3 & v )
|
||||
//-----------------------------------------------------------------------------
|
||||
t_CKFLOAT ck_vec4_magnitude( const t_CKVEC4 & v )
|
||||
{
|
||||
- return ::sqrt( v.x*v.x + v.y*v.y + v.z*v.z + v.w*v.w );
|
||||
+ return ::sqrt( v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w );
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+//-----------------------------------------------------------------------------
|
||||
+// name: ck_factorial32()
|
||||
+// desc: factorial calculator function (for 32 bit)
|
||||
+// author: everett m. carpenter | 1.5.5.8
|
||||
+// modified for 32-bit (ge, nick)
|
||||
+//-----------------------------------------------------------------------------
|
||||
+t_CKINT ck_factorial32( t_CKINT n )
|
||||
+{
|
||||
+ // 12! is the largest factorial that can fit in a 32-bit integer
|
||||
+ if( n < 0 || n > 12 ) return -1;
|
||||
+
|
||||
+ t_CKINT result = 1;
|
||||
+ for( t_CKINT i = 1; i <= n; i++ )
|
||||
+ { result = i * result; }
|
||||
+
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+//-----------------------------------------------------------------------------
|
||||
+// name: ck_associated_legendre()
|
||||
+// desc: closed form associated legendre polynomials of some order l
|
||||
+// author: everett m. carpenter | 1.5.5.8
|
||||
+//-----------------------------------------------------------------------------
|
||||
+t_CKFLOAT ck_associated_legendre( const t_CKINT m, const t_CKINT l, const t_CKFLOAT x )
|
||||
+{
|
||||
+ // check bounds
|
||||
+ if (l < 0 || l > 5) return 0.0;
|
||||
+ if (abs(m) > l) return 0.0;
|
||||
+
|
||||
+ float x2 = x * x; // x^2
|
||||
+ float x3 = x2 * x; // x^3
|
||||
+ float x4 = x2 * x2; // x^4
|
||||
+ float cf = 1.0 - x2; // pops up in every associated legendre
|
||||
+ float sqrtcf = sqrt(cf);; // also pops up everywhere
|
||||
+ t_CKINT absm = abs(m); // assume m is positive, then apply -m case at end
|
||||
+ float result = 0.f;
|
||||
+ float flip = 1.f;
|
||||
+
|
||||
+ if (m < 0) flip = (float)(pow(-1.0, absm) * (ck_factorial32(l - absm) / ck_factorial32(l + absm)));
|
||||
+
|
||||
+ switch (l) // order and absm
|
||||
+ {
|
||||
+ case(0):
|
||||
+ { result = 1.0; break; }
|
||||
+ case(1):
|
||||
+ {
|
||||
+ if (absm == 0) { result = x; }
|
||||
+ else if (absm == 1) { result = -sqrtcf; }
|
||||
+ break;
|
||||
+ }
|
||||
+ case(2):
|
||||
+ {
|
||||
+ if (absm == 0) { result = 0.5 * (3.0 * x2 - 1); }
|
||||
+ else if (absm == 1) { result = -3.0 * x * sqrtcf; }
|
||||
+ else if (absm == 2) { result = 3.0 * cf; }
|
||||
+ break;
|
||||
+ }
|
||||
+ case(3):
|
||||
+ {
|
||||
+ if (absm == 0) { result = 0.5 * (5.0 * x3 - 3.0 * x); }
|
||||
+ else if (absm == 1) { result = 1.5 * (1.0 - 5.0 * x2) * sqrtcf; }
|
||||
+ else if (absm == 2) { result = 15.0 * x * cf; }
|
||||
+ else if (absm == 3) { result = -15.0 * sqrtcf * cf; }
|
||||
+ break;
|
||||
+ }
|
||||
+ case(4):
|
||||
+ {
|
||||
+ if (absm == 0) { result = 0.125 * (35.0 * x4 - 30.0 * x2 + 3.0); }
|
||||
+ else if (absm == 1) { result = -2.5 * (7.0 * x3 - 3.0 * x) * sqrtcf; }
|
||||
+ else if (absm == 2) { result = 7.5 * (7.0 * x2 - 1) * cf; }
|
||||
+ else if (absm == 3) { result = -105.0 * x * sqrtcf * cf; }
|
||||
+ else if (absm == 4) { result = 105.0 * cf * cf; }
|
||||
+ break;
|
||||
+ }
|
||||
+ case(5):
|
||||
+ {
|
||||
+ if (absm == 0) { result = 0.125 * (63.0 * x3 * x2 - 70 * x3 + 15 * x); }
|
||||
+ else if (absm == 1) { result = -1.875 * sqrtcf * (21.0 * x4 - 14 * x2 + 1); }
|
||||
+ else if (absm == 2) { result = 52.5 * x * cf * (3.0 * x2 - 1.0); }
|
||||
+ else if (absm == 3) { result = -52.5 * cf * sqrtcf * (9.0 * x2 - 1.0); }
|
||||
+ else if (absm == 4) { result = 945.0 * x * cf * cf; }
|
||||
+ else if (absm == 5) { result = -945.0 * sqrtcf * cf * cf; }
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return pow(-1.0, m) * result * flip;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+//-----------------------------------------------------------------------------
|
||||
+// name: ck_SN3D
|
||||
+// desc: normalization calculator for spherical harmonics
|
||||
+// author: everett m. carpenter | 1.5.5.8
|
||||
+//-----------------------------------------------------------------------------
|
||||
+t_CKFLOAT ck_SN3D( const t_CKUINT order, const t_CKINT degree ) // calculate SN3D value
|
||||
+{
|
||||
+ int d = (degree == 0) ? 1 : 0; // kronecker delta
|
||||
+ float ratio = static_cast<float>(ck_factorial32(order - abs(degree))) / static_cast<float>(ck_factorial32(order + abs(degree))); // ratio of factorials
|
||||
+ return sqrtf((2.f - d) * ratio);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+//-----------------------------------------------------------------------------
|
||||
+// name: ck_SH()
|
||||
+// desc: calculation of spherical harmonics according to some order and normalization
|
||||
+// author: everett m. carpenter | 1.5.5.8
|
||||
+//-----------------------------------------------------------------------------
|
||||
+void ck_SH( t_CKFLOAT * output, const t_CKUINT order_, const t_CKFLOAT azimuth_, const t_CKFLOAT zenith_, const t_CKBOOL n3d )
|
||||
+{
|
||||
+ float azimuth_shift = (azimuth_) * 0.01745329252; // degree 2 rad
|
||||
+ float zenith_shift = (90.f - zenith_) * 0.01745329252;
|
||||
+ float coszeni = cosf(zenith_shift);
|
||||
+ t_CKINT size = (order_ + 1) * (order_ + 1);
|
||||
+ for (int order = 0; order <= (int)order_; order++)
|
||||
+ {
|
||||
+ if (order == 0)
|
||||
+ output[0] = ck_SN3D(order, 0);
|
||||
+ for (int degree = -order; degree <= order; degree++)
|
||||
+ {
|
||||
+ float n = n3d ? sqrtf(2 * order + 1) * ck_SN3D(order, degree) : ck_SN3D(order, degree); // normalization term if n3d bool = TRUE, return N3D else SN3D
|
||||
+ float p = (ck_associated_legendre((int)abs(degree), (int)order, coszeni));
|
||||
+ float r = (degree < 0) ? sinf(abs(degree) * (azimuth_shift)) : cosf(degree * (azimuth_shift)); // degree positive? Re(exp(i*azimuth*degree)) degree negative? Im(exp(i*azimuth*degree))
|
||||
+ output[(order * order) + order + degree] = n * p * r;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
18
audio/chuck/patches/patch-src_core_util_math_h
Normal file
18
audio/chuck/patches/patch-src_core_util_math_h
Normal file
@@ -0,0 +1,18 @@
|
||||
Index: src/core/util_math.h
|
||||
--- src/core/util_math.h.orig
|
||||
+++ src/core/util_math.h
|
||||
@@ -112,8 +112,12 @@ t_CKFLOAT ck_vec2_phase( const t_CKVEC2 & v );
|
||||
t_CKFLOAT ck_vec3_magnitude( const t_CKVEC3 & v );
|
||||
// magnitude of vec4
|
||||
t_CKFLOAT ck_vec4_magnitude( const t_CKVEC4 & v );
|
||||
-
|
||||
-
|
||||
+// integer factorial (for up to 12! which is the largest factorial that can fit inside a 32-bit integer)
|
||||
+t_CKINT ck_factorial32( t_CKINT n );
|
||||
+// associated legendre for spherical harmonics | (added) 1.5.5.8 by everett 2026
|
||||
+t_CKFLOAT ck_associated_legendre( const t_CKINT m, const t_CKINT l, const t_CKFLOAT x );
|
||||
+// spherical harmonics | (added) 1.5.5.8 by everett 2026
|
||||
+void ck_SH( t_CKFLOAT* output, const t_CKUINT order_, const t_CKFLOAT azimuth_, const t_CKFLOAT zenith_, const t_CKBOOL n3d );
|
||||
|
||||
#if defined (__cplusplus) || defined(_cplusplus)
|
||||
}
|
||||
21
audio/chuck/patches/patch-src_core_util_network_c
Normal file
21
audio/chuck/patches/patch-src_core_util_network_c
Normal file
@@ -0,0 +1,21 @@
|
||||
Index: src/core/util_network.c
|
||||
--- src/core/util_network.c.orig
|
||||
+++ src/core/util_network.c
|
||||
@@ -173,7 +173,7 @@ t_CKBOOL ck_connect( ck_socket sock, const char * host
|
||||
t_CKINT ret;
|
||||
struct hostent * host;
|
||||
|
||||
-#ifdef __PLATFORM_WINDOWS__
|
||||
+#if defined( __PLATFORM_WINDOWS__ ) || defined( __ANDROID__ )
|
||||
memset( &sock->sock_in, 0, sizeof(struct sockaddr_in) );
|
||||
#else
|
||||
bzero( &sock->sock_in, sizeof(struct sockaddr_in) );
|
||||
@@ -218,7 +218,7 @@ t_CKBOOL ck_bind( ck_socket sock, int port )
|
||||
{
|
||||
int ret;
|
||||
|
||||
-#ifdef __PLATFORM_WINDOWS__
|
||||
+#if defined( __PLATFORM_WINDOWS__ ) || defined( __ANDROID__ )
|
||||
memset( &sock->sock_in, 0, sizeof(struct sockaddr_in) );
|
||||
#else
|
||||
bzero( &sock->sock_in, sizeof(struct sockaddr_in) );
|
||||
12
audio/chuck/patches/patch-src_core_util_platforms_cpp
Normal file
12
audio/chuck/patches/patch-src_core_util_platforms_cpp
Normal file
@@ -0,0 +1,12 @@
|
||||
Index: src/core/util_platforms.cpp
|
||||
--- src/core/util_platforms.cpp.orig
|
||||
+++ src/core/util_platforms.cpp
|
||||
@@ -461,7 +461,7 @@ int ck_gettimeofday( long * tv_sec, long * tv_usec, vo
|
||||
// timeval
|
||||
timeval tv;
|
||||
// call on through
|
||||
- int retval = gettimeofday( &tv, tzp );
|
||||
+ int retval = gettimeofday( &tv, (struct timezone *)tzp );
|
||||
// check it
|
||||
if( retval ) return retval;
|
||||
// set return values
|
||||
12
audio/chuck/patches/patch-src_core_util_platforms_h
Normal file
12
audio/chuck/patches/patch-src_core_util_platforms_h
Normal file
@@ -0,0 +1,12 @@
|
||||
Index: src/core/util_platforms.h
|
||||
--- src/core/util_platforms.h.orig
|
||||
+++ src/core/util_platforms.h
|
||||
@@ -102,7 +102,7 @@ int ck_gettimeofday( long * tv_sec, long * tv_usec, vo
|
||||
#define CHUCK_PLATFORM_STRING "android"
|
||||
#elif defined(__PLATFORM_CYGWIN__)
|
||||
#define CHUCK_PLATFORM_STRING "cygwin" // not sure if needed, as cygwin implies windows
|
||||
-#elif
|
||||
+#else
|
||||
#define CHUCK_PLATFORM_STRING "unknown"
|
||||
#endif
|
||||
|
||||
42
audio/chuck/patches/patch-src_core_util_string_cpp
Normal file
42
audio/chuck/patches/patch-src_core_util_string_cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
Index: src/core/util_string.cpp
|
||||
--- src/core/util_string.cpp.orig
|
||||
+++ src/core/util_string.cpp
|
||||
@@ -570,18 +570,26 @@ t_CKBOOL extract_args( const string & token,
|
||||
//-----------------------------------------------------------------------------
|
||||
#if !defined(__PLATFORM_WINDOWS__) && !defined(__EMSCRIPTEN__) && !defined(__ANDROID__) && !defined(__CHIP_MODE__)
|
||||
|
||||
+#include <glob.h>
|
||||
+#if !defined(__OpenBSD__) && !defined(__NetBSD__)
|
||||
#include <wordexp.h>
|
||||
+#endif
|
||||
//-----------------------------------------------------------------------------
|
||||
// name: expandTildePath()
|
||||
// desc: expand ~ path, does not care whether path is valid or not
|
||||
//-----------------------------------------------------------------------------
|
||||
std::string expandTildePath( const std::string & path )
|
||||
{
|
||||
+ std::string exp;
|
||||
+#if defined(__OpenBSD__) || defined(__NetBSD__)
|
||||
+ // wordexp not available; use glob with GLOB_TILDE for tilde expansion
|
||||
+ glob_t g;
|
||||
+ if( glob(path.c_str(), GLOB_TILDE | GLOB_NOCHECK, NULL, &g) == 0 && g.gl_pathc > 0 )
|
||||
+ exp = g.gl_pathv[0];
|
||||
+ globfree( &g );
|
||||
+#else
|
||||
// wordexp result
|
||||
wordexp_t we;
|
||||
- // the result
|
||||
- std::string exp;
|
||||
-
|
||||
// "perform shell-style word expansions"
|
||||
if( wordexp(path.c_str(), &we, 0 ) == 0 ) // success
|
||||
{
|
||||
@@ -594,7 +602,7 @@ std::string expandTildePath( const std::string & path
|
||||
// free up
|
||||
wordfree( &we );
|
||||
}
|
||||
-
|
||||
+#endif
|
||||
// if still empty for any reason, default to original
|
||||
if( exp == "" ) exp = path;
|
||||
|
||||
113
audio/chuck/patches/patch-src_core_util_thread_cpp
Normal file
113
audio/chuck/patches/patch-src_core_util_thread_cpp
Normal file
@@ -0,0 +1,113 @@
|
||||
Index: src/core/util_thread.cpp
|
||||
--- src/core/util_thread.cpp.orig
|
||||
+++ src/core/util_thread.cpp
|
||||
@@ -66,7 +66,8 @@ XThread::XThread( )
|
||||
//-----------------------------------------------------------------------------
|
||||
XThread::~XThread( )
|
||||
{
|
||||
-#if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__)
|
||||
+ // 1.5.5.8 (ben, ge) added emscripten since it uses POSIX
|
||||
+#if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
// can't self-terminate (much like the Terminator)
|
||||
bool is_self_thread = (thread == pthread_self());
|
||||
#elif defined(__PLATFORM_WINDOWS__)
|
||||
@@ -78,7 +79,8 @@ XThread::~XThread( )
|
||||
if( thread != 0 && !is_self_thread )
|
||||
{
|
||||
// TODO: find an alternative for Android?
|
||||
-#if defined(__PLATFORM_APPLE__) || ( defined(__PLATFORM_LINUX__) && !defined(__ANDROID__) ) || defined(__WINDOWS_PTHREAD__)
|
||||
+ // 1.5.5.8 (ben, ge) added emscripten since it uses POSIX
|
||||
+#if defined(__PLATFORM_APPLE__) || ( defined(__PLATFORM_LINUX__) && !defined(__ANDROID__) ) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
// log
|
||||
EM_log( CK_LOG_FINER, "cancelling thread [0x%x] from [0x%x]...", getID(thread), getID(pthread_self()) );
|
||||
pthread_cancel(thread);
|
||||
@@ -104,7 +106,8 @@ bool XThread::start( THREAD_FUNCTION routine, void * p
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
-#if ( defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) )
|
||||
+ // 1.5.5.8 (ben, ge) added emscripten since it uses POSIX
|
||||
+#if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
if( pthread_create( &thread, NULL, *routine, ptr ) == 0 )
|
||||
{
|
||||
EM_log( CK_LOG_FINER, "starting thread [0x%x] from [0x%x]...", thread, getID(pthread_self()) );
|
||||
@@ -134,7 +137,8 @@ bool XThread::wait( long milliseconds, bool cancel )
|
||||
bool result = false;
|
||||
|
||||
// TODO: find an alternative for Android?
|
||||
-#if( defined(__PLATFORM_APPLE__) || ( defined(__PLATFORM_LINUX__) && !defined(__ANDROID__) ) || defined(__WINDOWS_PTHREAD__) )
|
||||
+ // 1.5.5.8 (ben, ge) added emscripten since it uses POSIX
|
||||
+#if defined(__PLATFORM_APPLE__) || ( defined(__PLATFORM_LINUX__) && !defined(__ANDROID__) ) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
// cancel the thread?
|
||||
if( cancel ) pthread_cancel( thread );
|
||||
// wait for the thread to terminate
|
||||
@@ -164,7 +168,8 @@ bool XThread::wait( long milliseconds, bool cancel )
|
||||
void XThread :: test( )
|
||||
{
|
||||
// TODO: find an alternative for Android?
|
||||
-#if ( defined(__PLATFORM_APPLE__) || ( defined(__PLATFORM_LINUX__) && !defined(__ANDROID__) ) || defined(__WINDOWS_PTHREAD__) )
|
||||
+ // 1.5.5.8 (ben, ge) added emscripten since it uses POSIX
|
||||
+#if defined(__PLATFORM_APPLE__) || ( defined(__PLATFORM_LINUX__) && !defined(__ANDROID__) ) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
pthread_testcancel();
|
||||
#endif
|
||||
}
|
||||
@@ -178,7 +183,8 @@ void XThread :: test( )
|
||||
//-----------------------------------------------------------------------------
|
||||
t_CKUINT XThread::getID( THREAD_HANDLE t )
|
||||
{
|
||||
-#if ( defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) )
|
||||
+ // 1.5.5.8 (ben, ge) added emscripten since it uses POSIX
|
||||
+#if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
return (t_CKUINT)t;
|
||||
#elif defined(__PLATFORM_WINDOWS__)
|
||||
return (t_CKUINT)GetThreadId( (HANDLE)t );
|
||||
@@ -194,7 +200,8 @@ t_CKUINT XThread::getID( THREAD_HANDLE t )
|
||||
//-----------------------------------------------------------------------------
|
||||
XMutex::XMutex( )
|
||||
{
|
||||
-#if ( defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) )
|
||||
+ // 1.5.5.8 (ben, ge) added emscripten since it uses POSIX
|
||||
+#if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
pthread_mutex_init(&mutex, NULL);
|
||||
#elif defined(__PLATFORM_WINDOWS__)
|
||||
InitializeCriticalSection(&mutex);
|
||||
@@ -210,7 +217,8 @@ XMutex::XMutex( )
|
||||
//-----------------------------------------------------------------------------
|
||||
XMutex::~XMutex( )
|
||||
{
|
||||
-#if ( defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) )
|
||||
+ // 1.5.5.8 (ben, ge) added emscripten since it uses POSIX
|
||||
+#if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
pthread_mutex_destroy( &mutex );
|
||||
#elif defined(__PLATFORM_WINDOWS__)
|
||||
DeleteCriticalSection(&mutex);
|
||||
@@ -226,7 +234,8 @@ XMutex::~XMutex( )
|
||||
//-----------------------------------------------------------------------------
|
||||
void XMutex::acquire( )
|
||||
{
|
||||
-#if ( defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) )
|
||||
+ // 1.5.5.8 (ben, ge) added emscripten since it uses POSIX
|
||||
+#if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
pthread_mutex_lock(&mutex);
|
||||
#elif defined(__PLATFORM_WINDOWS__)
|
||||
EnterCriticalSection(&mutex);
|
||||
@@ -242,7 +251,8 @@ void XMutex::acquire( )
|
||||
//-----------------------------------------------------------------------------
|
||||
void XMutex::release( )
|
||||
{
|
||||
-#if ( defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) )
|
||||
+ // 1.5.5.8 (ben, ge) added emscripten since it uses POSIX
|
||||
+#if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
pthread_mutex_unlock(&mutex);
|
||||
#elif defined(__PLATFORM_WINDOWS__)
|
||||
LeaveCriticalSection(&mutex);
|
||||
@@ -440,7 +450,8 @@ void XWriteThread::flush_data_buffer()
|
||||
// name: write_cb()
|
||||
// desc: thread function
|
||||
//-----------------------------------------------------------------------------
|
||||
-#if ( defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) )
|
||||
+// 1.5.5.8 (ben, ge) added emscripten since it uses POSIX
|
||||
+#if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
void * XWriteThread::write_cb(void * _thiss)
|
||||
#elif defined(__PLATFORM_WINDOWS__)
|
||||
unsigned XWriteThread::write_cb(void * _thiss)
|
||||
22
audio/chuck/patches/patch-src_core_util_thread_h
Normal file
22
audio/chuck/patches/patch-src_core_util_thread_h
Normal file
@@ -0,0 +1,22 @@
|
||||
Index: src/core/util_thread.h
|
||||
--- src/core/util_thread.h.orig
|
||||
+++ src/core/util_thread.h
|
||||
@@ -44,7 +44,8 @@ class FastCircularBuffer;
|
||||
template<typename T> class CircularBuffer;
|
||||
|
||||
|
||||
-#if ( defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) )
|
||||
+#if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
+ // 1.5.5.8 (ben, ge) added emscripten above since it uses POSIX
|
||||
#include <pthread.h>
|
||||
#define THREAD_TYPE
|
||||
typedef pthread_t THREAD_HANDLE;
|
||||
@@ -188,7 +189,7 @@ class XWriteThread (private)
|
||||
void flush_data_buffer();
|
||||
|
||||
// callback
|
||||
-#if ( defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) )
|
||||
+#if defined(__PLATFORM_APPLE__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_EMSCRIPTEN__)
|
||||
static void * write_cb( void * _thiss );
|
||||
#elif defined(__PLATFORM_WINDOWS__)
|
||||
static unsigned THREAD_TYPE write_cb( void * _thiss );
|
||||
631
audio/chuck/patches/patch-src_host_RtAudio_RtAudio_cpp
Normal file
631
audio/chuck/patches/patch-src_host_RtAudio_RtAudio_cpp
Normal file
@@ -0,0 +1,631 @@
|
||||
Index: src/host/RtAudio/RtAudio.cpp
|
||||
--- src/host/RtAudio/RtAudio.cpp.orig
|
||||
+++ src/host/RtAudio/RtAudio.cpp
|
||||
@@ -109,6 +109,7 @@ const char* rtaudio_api_names[][2] = {
|
||||
{ "alsa" , "ALSA" },
|
||||
{ "pulse" , "Pulse" },
|
||||
{ "oss" , "OpenSoundSystem" },
|
||||
+ { "sndio" , "sndio" },
|
||||
{ "jack" , "Jack" },
|
||||
{ "core" , "CoreAudio" },
|
||||
{ "wasapi" , "WASAPI" },
|
||||
@@ -135,6 +136,9 @@ extern "C" const RtAudio::Api rtaudio_compiled_apis[]
|
||||
#if defined(__LINUX_OSS__)
|
||||
RtAudio::LINUX_OSS,
|
||||
#endif
|
||||
+#if defined(__OPENBSD_SNDIO__)
|
||||
+ RtAudio::OPENBSD_SNDIO,
|
||||
+#endif
|
||||
#if defined(__WINDOWS_ASIO__)
|
||||
RtAudio::WINDOWS_ASIO,
|
||||
#endif
|
||||
@@ -216,6 +220,10 @@ void RtAudio :: openRtApi( RtAudio::Api api )
|
||||
if ( api == LINUX_OSS )
|
||||
rtapi_ = new RtApiOss();
|
||||
#endif
|
||||
+#if defined(__OPENBSD_SNDIO__)
|
||||
+ if ( api == OPENBSD_SNDIO )
|
||||
+ rtapi_ = new RtApiSndio();
|
||||
+#endif
|
||||
#if defined(__WINDOWS_ASIO__)
|
||||
if ( api == WINDOWS_ASIO )
|
||||
rtapi_ = new RtApiAsio();
|
||||
@@ -10387,6 +10395,598 @@ static void *ossCallbackHandler( void *ptr )
|
||||
//******************** End of __LINUX_OSS__ *********************//
|
||||
#endif
|
||||
|
||||
+#if defined(__OPENBSD_SNDIO__)
|
||||
+
|
||||
+#include <sndio.h>
|
||||
+#include <poll.h>
|
||||
+#include <pthread.h>
|
||||
+#include <cerrno>
|
||||
+
|
||||
+static void *sndioCallbackHandler( void *ptr );
|
||||
+
|
||||
+struct SndioHandle {
|
||||
+ struct sio_hdl *handle;
|
||||
+ bool xrun[2]; // [0]=output underflow, [1]=input overflow
|
||||
+
|
||||
+ SndioHandle() : handle(nullptr) { xrun[0] = false; xrun[1] = false; }
|
||||
+};
|
||||
+
|
||||
+static void sndioXrunCb( void *arg )
|
||||
+{
|
||||
+ SndioHandle *h = (SndioHandle *) arg;
|
||||
+ h->xrun[0] = true;
|
||||
+ h->xrun[1] = true;
|
||||
+}
|
||||
+
|
||||
+RtApiSndio :: RtApiSndio() {}
|
||||
+
|
||||
+RtApiSndio :: ~RtApiSndio()
|
||||
+{
|
||||
+ if ( stream_.state != STREAM_CLOSED ) closeStream();
|
||||
+}
|
||||
+
|
||||
+unsigned int RtApiSndio :: getDeviceCount( void )
|
||||
+{
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+RtAudio::DeviceInfo RtApiSndio :: getDeviceInfo( unsigned int device )
|
||||
+{
|
||||
+ RtAudio::DeviceInfo info;
|
||||
+ info.probed = false;
|
||||
+
|
||||
+ if ( device != 0 ) {
|
||||
+ errorText_ = "RtApiSndio::getDeviceInfo: invalid device ID!";
|
||||
+ error( RTAUDIO_INVALID_DEVICE );
|
||||
+ return info;
|
||||
+ }
|
||||
+
|
||||
+ // Advertise default capabilities; actual negotiation happens in probeDeviceOpen.
|
||||
+ // We do not require sndiod to be running at probe time.
|
||||
+ info.name = "sndio default";
|
||||
+ info.outputChannels = 2;
|
||||
+ info.inputChannels = 2;
|
||||
+ info.duplexChannels = 2;
|
||||
+ info.isDefaultOutput = true;
|
||||
+ info.isDefaultInput = true;
|
||||
+
|
||||
+ // sndio accepts most standard sample rates
|
||||
+ static const unsigned int rates[] = {
|
||||
+ 8000, 11025, 16000, 22050, 32000, 44100, 48000, 88200, 96000, 0
|
||||
+ };
|
||||
+ for ( int i = 0; rates[i]; i++ ) {
|
||||
+ info.sampleRates.push_back( rates[i] );
|
||||
+ if ( rates[i] == 48000 )
|
||||
+ info.preferredSampleRate = 48000;
|
||||
+ }
|
||||
+
|
||||
+ info.nativeFormats = RTAUDIO_SINT16 | RTAUDIO_SINT32;
|
||||
+ info.probed = true;
|
||||
+ return info;
|
||||
+}
|
||||
+
|
||||
+bool RtApiSndio :: probeDeviceOpen( unsigned int device, StreamMode mode,
|
||||
+ unsigned int channels,
|
||||
+ unsigned int firstChannel,
|
||||
+ unsigned int sampleRate,
|
||||
+ RtAudioFormat format,
|
||||
+ unsigned int *bufferSize,
|
||||
+ RtAudio::StreamOptions *options )
|
||||
+{
|
||||
+ if ( device != 0 ) {
|
||||
+ errorText_ = "RtApiSndio::probeDeviceOpen: only device 0 is supported.";
|
||||
+ return FAILURE;
|
||||
+ }
|
||||
+ if ( firstChannel != 0 ) {
|
||||
+ errorText_ = "RtApiSndio::probeDeviceOpen: channel offset not supported.";
|
||||
+ return FAILURE;
|
||||
+ }
|
||||
+
|
||||
+ SndioHandle *handle = (SndioHandle *) stream_.apiHandle;
|
||||
+
|
||||
+ // When adding INPUT to an already-open OUTPUT stream (going duplex), reuse the
|
||||
+ // existing play-only sndio handle instead of closing and reopening as
|
||||
+ // SIO_PLAY|SIO_REC. sndiod's default sub-device ("-m play -s default") is
|
||||
+ // play-only: a duplex open succeeds but the record clock never ticks, so
|
||||
+ // sio_write stalls after the initial pre-fill. Keeping the play-only handle
|
||||
+ // lets the poll-with-timeout path in callbackEvent() substitute silence for
|
||||
+ // input without blocking. True duplex recording requires a sndiod sub-device
|
||||
+ // configured with "-m play,rec" or "-m rec".
|
||||
+ if ( mode == INPUT && stream_.mode == OUTPUT && handle && handle->handle ) {
|
||||
+ // Set up INPUT bookkeeping using the same format/params as OUTPUT.
|
||||
+ stream_.deviceFormat[INPUT] = stream_.deviceFormat[OUTPUT];
|
||||
+ stream_.nUserChannels[INPUT] = channels;
|
||||
+ stream_.nDeviceChannels[INPUT] = channels;
|
||||
+ stream_.deviceInterleaved[INPUT] = true;
|
||||
+
|
||||
+ stream_.doConvertBuffer[INPUT] = false;
|
||||
+ stream_.doByteSwap[INPUT] = false;
|
||||
+ if ( stream_.userFormat != stream_.deviceFormat[INPUT] )
|
||||
+ stream_.doConvertBuffer[INPUT] = true;
|
||||
+ if ( stream_.nUserChannels[INPUT] < stream_.nDeviceChannels[INPUT] )
|
||||
+ stream_.doConvertBuffer[INPUT] = true;
|
||||
+ if ( stream_.userInterleaved != stream_.deviceInterleaved[INPUT] &&
|
||||
+ stream_.nUserChannels[INPUT] > 1 )
|
||||
+ stream_.doConvertBuffer[INPUT] = true;
|
||||
+
|
||||
+ unsigned long bufBytes = stream_.nUserChannels[INPUT] * stream_.bufferSize *
|
||||
+ formatBytes( stream_.userFormat );
|
||||
+ stream_.userBuffer[INPUT] = (char *) calloc( bufBytes, 1 );
|
||||
+ if ( !stream_.userBuffer[INPUT] ) {
|
||||
+ errorText_ = "RtApiSndio::probeDeviceOpen: error allocating input buffer.";
|
||||
+ return FAILURE;
|
||||
+ }
|
||||
+
|
||||
+ if ( stream_.doConvertBuffer[INPUT] ) {
|
||||
+ unsigned long devBytes = stream_.nDeviceChannels[INPUT] *
|
||||
+ formatBytes( stream_.deviceFormat[INPUT] ) *
|
||||
+ stream_.bufferSize;
|
||||
+ if ( !stream_.deviceBuffer || devBytes >
|
||||
+ stream_.nDeviceChannels[OUTPUT] * formatBytes( stream_.deviceFormat[OUTPUT] )
|
||||
+ * stream_.bufferSize ) {
|
||||
+ if ( stream_.deviceBuffer ) free( stream_.deviceBuffer );
|
||||
+ stream_.deviceBuffer = (char *) calloc( devBytes, 1 );
|
||||
+ if ( !stream_.deviceBuffer ) {
|
||||
+ free( stream_.userBuffer[INPUT] );
|
||||
+ stream_.userBuffer[INPUT] = nullptr;
|
||||
+ errorText_ = "RtApiSndio::probeDeviceOpen: error allocating device buffer.";
|
||||
+ return FAILURE;
|
||||
+ }
|
||||
+ }
|
||||
+ setConvertInfo( INPUT, firstChannel );
|
||||
+ }
|
||||
+
|
||||
+ stream_.device[INPUT] = device;
|
||||
+ stream_.mode = DUPLEX;
|
||||
+ return SUCCESS;
|
||||
+ }
|
||||
+
|
||||
+ // Normal path: open a new sndio device handle.
|
||||
+ unsigned int sioMode = ( mode == OUTPUT ) ? SIO_PLAY : SIO_REC; struct sio_hdl *hdl = sio_open( SIO_DEVANY, sioMode, 0 ); if ( !hdl ) {
|
||||
+ errorText_ = "RtApiSndio::probeDeviceOpen: error opening sndio device.";
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ // Map RtAudio format to sndio encoding
|
||||
+ stream_.userFormat = format;
|
||||
+ {
|
||||
+ unsigned int bits, bps;
|
||||
+
|
||||
+ if ( format == RTAUDIO_SINT8 ) {
|
||||
+ bits = 8; bps = 1;
|
||||
+ stream_.deviceFormat[mode] = RTAUDIO_SINT8;
|
||||
+ } else if ( format == RTAUDIO_SINT16 ) {
|
||||
+ bits = 16; bps = 2;
|
||||
+ stream_.deviceFormat[mode] = RTAUDIO_SINT16;
|
||||
+ } else if ( format == RTAUDIO_SINT24 ) {
|
||||
+ bits = 24; bps = 4;
|
||||
+ stream_.deviceFormat[mode] = RTAUDIO_SINT24;
|
||||
+ } else if ( format == RTAUDIO_SINT32 ) {
|
||||
+ bits = 32; bps = 4;
|
||||
+ stream_.deviceFormat[mode] = RTAUDIO_SINT32;
|
||||
+ } else {
|
||||
+ // Float formats not natively supported: use SINT16, RtAudio converts
|
||||
+ bits = 16; bps = 2;
|
||||
+ stream_.deviceFormat[mode] = RTAUDIO_SINT16;
|
||||
+ }
|
||||
+
|
||||
+ struct sio_par par;
|
||||
+ sio_initpar( &par );
|
||||
+ par.bits = bits;
|
||||
+ par.bps = bps;
|
||||
+ par.sig = 1;
|
||||
+ par.le = SIO_LE_NATIVE;
|
||||
+ par.rate = sampleRate;
|
||||
+ par.round = *bufferSize;
|
||||
+ par.appbufsz = *bufferSize * 4;
|
||||
+ par.pchan = ( mode == OUTPUT ) ? channels : 0;
|
||||
+ par.rchan = ( mode == INPUT ) ? channels : 0; if ( !sio_setpar( hdl, &par ) ) {
|
||||
+ sio_close( hdl );
|
||||
+ errorText_ = "RtApiSndio::probeDeviceOpen: error setting stream parameters.";
|
||||
+ return FAILURE;
|
||||
+ } if ( !sio_getpar( hdl, &par ) ) {
|
||||
+ sio_close( hdl );
|
||||
+ errorText_ = "RtApiSndio::probeDeviceOpen: error getting stream parameters.";
|
||||
+ return FAILURE;
|
||||
+ }
|
||||
+
|
||||
+ if ( par.rate != sampleRate ) {
|
||||
+ sio_close( hdl );
|
||||
+ errorStream_ << "RtApiSndio::probeDeviceOpen: sample rate " << sampleRate
|
||||
+ << " not supported (got " << par.rate << ").";
|
||||
+ errorText_ = errorStream_.str();
|
||||
+ return FAILURE;
|
||||
+ }
|
||||
+
|
||||
+ *bufferSize = par.round;
|
||||
+ stream_.bufferSize = *bufferSize;
|
||||
+ stream_.nBuffers = par.appbufsz / par.round;
|
||||
+ stream_.sampleRate = sampleRate;
|
||||
+ } // end format/par scope
|
||||
+
|
||||
+ stream_.nUserChannels[mode] = channels;
|
||||
+ stream_.nDeviceChannels[mode] = channels;
|
||||
+
|
||||
+ stream_.userInterleaved = true;
|
||||
+ stream_.deviceInterleaved[mode] = true;
|
||||
+ if ( options && options->flags & RTAUDIO_NONINTERLEAVED )
|
||||
+ stream_.userInterleaved = false;
|
||||
+
|
||||
+ stream_.doConvertBuffer[mode] = false;
|
||||
+ stream_.doByteSwap[mode] = false;
|
||||
+ if ( stream_.userFormat != stream_.deviceFormat[mode] )
|
||||
+ stream_.doConvertBuffer[mode] = true;
|
||||
+ if ( stream_.nUserChannels[mode] < stream_.nDeviceChannels[mode] )
|
||||
+ stream_.doConvertBuffer[mode] = true;
|
||||
+ if ( stream_.userInterleaved != stream_.deviceInterleaved[mode] &&
|
||||
+ stream_.nUserChannels[mode] > 1 )
|
||||
+ stream_.doConvertBuffer[mode] = true;
|
||||
+
|
||||
+ // Allocate or reuse SndioHandle
|
||||
+ if ( !handle ) {
|
||||
+ try {
|
||||
+ handle = new SndioHandle;
|
||||
+ }
|
||||
+ catch ( std::bad_alloc& ) {
|
||||
+ sio_close( hdl );
|
||||
+ errorText_ = "RtApiSndio::probeDeviceOpen: error allocating SndioHandle.";
|
||||
+ goto error;
|
||||
+ }
|
||||
+ stream_.apiHandle = (void *) handle;
|
||||
+ }
|
||||
+ handle->handle = hdl;
|
||||
+ sio_onxrun( hdl, sndioXrunCb, handle );
|
||||
+
|
||||
+ // Allocate user buffer
|
||||
+ {
|
||||
+ unsigned long bufBytes = stream_.nUserChannels[mode] * *bufferSize *
|
||||
+ formatBytes( stream_.userFormat );
|
||||
+ stream_.userBuffer[mode] = (char *) calloc( bufBytes, 1 );
|
||||
+ if ( !stream_.userBuffer[mode] ) {
|
||||
+ errorText_ = "RtApiSndio::probeDeviceOpen: error allocating user buffer.";
|
||||
+ goto error;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if ( stream_.doConvertBuffer[mode] ) {
|
||||
+ bool makeBuffer = true;
|
||||
+ unsigned long bufBytes = stream_.nDeviceChannels[mode] *
|
||||
+ formatBytes( stream_.deviceFormat[mode] );
|
||||
+ if ( mode == INPUT ) {
|
||||
+ if ( stream_.mode == OUTPUT && stream_.deviceBuffer ) {
|
||||
+ unsigned long bytesOut = stream_.nDeviceChannels[0] *
|
||||
+ formatBytes( stream_.deviceFormat[0] );
|
||||
+ if ( bufBytes <= bytesOut ) makeBuffer = false;
|
||||
+ }
|
||||
+ }
|
||||
+ if ( makeBuffer ) {
|
||||
+ bufBytes *= *bufferSize;
|
||||
+ if ( stream_.deviceBuffer ) free( stream_.deviceBuffer );
|
||||
+ stream_.deviceBuffer = (char *) calloc( bufBytes, 1 );
|
||||
+ if ( !stream_.deviceBuffer ) {
|
||||
+ errorText_ = "RtApiSndio::probeDeviceOpen: error allocating device buffer.";
|
||||
+ goto error;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ stream_.device[mode] = device;
|
||||
+ stream_.state = STREAM_STOPPED;
|
||||
+
|
||||
+ if ( stream_.doConvertBuffer[mode] ) setConvertInfo( mode, firstChannel );
|
||||
+
|
||||
+ // Setup mode and callback thread
|
||||
+ if ( stream_.mode == OUTPUT && mode == INPUT ) {
|
||||
+ stream_.mode = DUPLEX;
|
||||
+ } else {
|
||||
+ stream_.mode = mode;
|
||||
+
|
||||
+ stream_.callbackInfo.object = (void *) this;
|
||||
+
|
||||
+ pthread_attr_t attr;
|
||||
+ pthread_attr_init( &attr );
|
||||
+ pthread_attr_setdetachstate( &attr, PTHREAD_CREATE_JOINABLE );
|
||||
+ pthread_attr_setschedpolicy( &attr, SCHED_OTHER );
|
||||
+
|
||||
+ stream_.callbackInfo.isRunning = true;
|
||||
+ int result = pthread_create( &stream_.callbackInfo.thread, &attr,
|
||||
+ sndioCallbackHandler, &stream_.callbackInfo );
|
||||
+ pthread_attr_destroy( &attr );
|
||||
+ if ( result ) {
|
||||
+ stream_.callbackInfo.isRunning = false;
|
||||
+ errorText_ = "RtApiSndio::probeDeviceOpen: error creating callback thread!";
|
||||
+ goto error;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return SUCCESS;
|
||||
+
|
||||
+ error:
|
||||
+ // If a callback thread is already running (e.g., from a prior OUTPUT pass
|
||||
+ // that succeeded before this INPUT/DUPLEX pass failed), stop it now so the
|
||||
+ // thread doesn't access the handle after we free it below.
|
||||
+ if ( stream_.callbackInfo.isRunning ) {
|
||||
+ stream_.callbackInfo.isRunning = false;
|
||||
+ // Thread spins in 5ms nanosleep when state != RUNNING; it will exit promptly.
|
||||
+ pthread_join( stream_.callbackInfo.thread, nullptr );
|
||||
+ }
|
||||
+ if ( handle ) {
|
||||
+ if ( handle->handle ) sio_close( handle->handle );
|
||||
+ delete handle;
|
||||
+ stream_.apiHandle = nullptr;
|
||||
+ }
|
||||
+ for ( int i = 0; i < 2; i++ ) {
|
||||
+ if ( stream_.userBuffer[i] ) {
|
||||
+ free( stream_.userBuffer[i] );
|
||||
+ stream_.userBuffer[i] = nullptr;
|
||||
+ }
|
||||
+ }
|
||||
+ if ( stream_.deviceBuffer ) {
|
||||
+ free( stream_.deviceBuffer );
|
||||
+ stream_.deviceBuffer = nullptr;
|
||||
+ }
|
||||
+ stream_.state = STREAM_CLOSED;
|
||||
+ return FAILURE;
|
||||
+}
|
||||
+
|
||||
+void RtApiSndio :: closeStream()
|
||||
+{
|
||||
+ if ( stream_.state == STREAM_CLOSED ) {
|
||||
+ errorText_ = "RtApiSndio::closeStream(): no open stream to close!";
|
||||
+ error( RTAUDIO_WARNING );
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ SndioHandle *handle = (SndioHandle *) stream_.apiHandle;
|
||||
+ stream_.callbackInfo.isRunning = false;
|
||||
+
|
||||
+ MUTEX_LOCK( &stream_.mutex );
|
||||
+ stream_.state = STREAM_CLOSED;
|
||||
+ MUTEX_UNLOCK( &stream_.mutex );
|
||||
+
|
||||
+ // Join FIRST: thread may be in poll/sio_write (up to 23ms timeout).
|
||||
+ // Only call sio_stop/sio_close after join; sio is not thread-safe.
|
||||
+ pthread_join( stream_.callbackInfo.thread, nullptr );
|
||||
+ if ( handle ) {
|
||||
+ if ( handle->handle ) {
|
||||
+ sio_stop( handle->handle );
|
||||
+ sio_close( handle->handle );
|
||||
+ }
|
||||
+ delete handle;
|
||||
+ stream_.apiHandle = nullptr;
|
||||
+ }
|
||||
+
|
||||
+ for ( int i = 0; i < 2; i++ ) {
|
||||
+ if ( stream_.userBuffer[i] ) {
|
||||
+ free( stream_.userBuffer[i] );
|
||||
+ stream_.userBuffer[i] = nullptr;
|
||||
+ }
|
||||
+ }
|
||||
+ if ( stream_.deviceBuffer ) {
|
||||
+ free( stream_.deviceBuffer );
|
||||
+ stream_.deviceBuffer = nullptr;
|
||||
+ }
|
||||
+
|
||||
+ clearStreamInfo();
|
||||
+}
|
||||
+
|
||||
+RtAudioErrorType RtApiSndio :: startStream()
|
||||
+{
|
||||
+ if ( stream_.state != STREAM_STOPPED ) {
|
||||
+ if ( stream_.state == STREAM_RUNNING )
|
||||
+ errorText_ = "RtApiSndio::startStream(): stream already running!";
|
||||
+ else
|
||||
+ errorText_ = "RtApiSndio::startStream(): stream is stopping or closed!";
|
||||
+ return error( RTAUDIO_WARNING );
|
||||
+ }
|
||||
+
|
||||
+ SndioHandle *handle = (SndioHandle *) stream_.apiHandle;
|
||||
+
|
||||
+ MUTEX_LOCK( &stream_.mutex ); if ( !sio_start( handle->handle ) ) {
|
||||
+ MUTEX_UNLOCK( &stream_.mutex );
|
||||
+ errorText_ = "RtApiSndio::startStream(): error starting sndio stream.";
|
||||
+ return error( RTAUDIO_SYSTEM_ERROR );
|
||||
+ } stream_.state = STREAM_RUNNING;
|
||||
+ MUTEX_UNLOCK( &stream_.mutex );
|
||||
+ return RTAUDIO_NO_ERROR;
|
||||
+}
|
||||
+
|
||||
+RtAudioErrorType RtApiSndio :: stopStream()
|
||||
+{
|
||||
+ if ( stream_.state != STREAM_RUNNING && stream_.state != STREAM_STOPPING ) {
|
||||
+ if ( stream_.state == STREAM_STOPPED )
|
||||
+ errorText_ = "RtApiSndio::stopStream(): stream already stopped!";
|
||||
+ else
|
||||
+ errorText_ = "RtApiSndio::stopStream(): stream is closed!";
|
||||
+ return error( RTAUDIO_WARNING );
|
||||
+ }
|
||||
+
|
||||
+ MUTEX_LOCK( &stream_.mutex );
|
||||
+
|
||||
+ if ( stream_.state == STREAM_STOPPED ) {
|
||||
+ MUTEX_UNLOCK( &stream_.mutex );
|
||||
+ return RTAUDIO_NO_ERROR;
|
||||
+ }
|
||||
+
|
||||
+ SndioHandle *handle = (SndioHandle *) stream_.apiHandle;
|
||||
+
|
||||
+ // Do NOT call sio_stop() here: stopStream() may be called from any thread,
|
||||
+ // including while the callback thread holds the sio handle in sio_write().
|
||||
+ // sio is not thread-safe; concurrent sio_stop()+sio_write() causes hangs.
|
||||
+ // Instead, just set state=STOPPED; closeStream() calls sio_stop() after
|
||||
+ // pthread_join() ensures no concurrent sio I/O.
|
||||
+ stream_.state = STREAM_STOPPED;
|
||||
+ MUTEX_UNLOCK( &stream_.mutex );
|
||||
+ return RTAUDIO_NO_ERROR;
|
||||
+}
|
||||
+
|
||||
+RtAudioErrorType RtApiSndio :: abortStream()
|
||||
+{
|
||||
+ if ( stream_.state != STREAM_RUNNING ) {
|
||||
+ if ( stream_.state == STREAM_STOPPED )
|
||||
+ errorText_ = "RtApiSndio::abortStream(): stream already stopped!";
|
||||
+ else
|
||||
+ errorText_ = "RtApiSndio::abortStream(): stream is stopping or closed!";
|
||||
+ return error( RTAUDIO_WARNING );
|
||||
+ }
|
||||
+
|
||||
+ MUTEX_LOCK( &stream_.mutex );
|
||||
+ // Same thread-safety rule as stopStream(): no sio_stop() here.
|
||||
+ // closeStream() will call sio_stop() after pthread_join().
|
||||
+ stream_.state = STREAM_STOPPED;
|
||||
+ MUTEX_UNLOCK( &stream_.mutex );
|
||||
+ return RTAUDIO_NO_ERROR;
|
||||
+}
|
||||
+
|
||||
+void RtApiSndio :: callbackEvent()
|
||||
+{
|
||||
+ SndioHandle *handle = (SndioHandle *) stream_.apiHandle;
|
||||
+
|
||||
+ if ( stream_.state == STREAM_STOPPED || stream_.state == STREAM_CLOSED ) {
|
||||
+ // Spin-wait briefly when stopped to avoid busy-looping
|
||||
+ struct timespec ts = { 0, 5000000 }; // 5 ms
|
||||
+ nanosleep( &ts, nullptr );
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if ( stream_.state != STREAM_RUNNING ) return;
|
||||
+
|
||||
+ // Invoke user callback
|
||||
+ int doStopStream = 0;
|
||||
+ RtAudioCallback callback = (RtAudioCallback) stream_.callbackInfo.callback;
|
||||
+ double streamTime = getStreamTime();
|
||||
+ RtAudioStreamStatus status = 0;
|
||||
+ if ( stream_.mode != INPUT && handle->xrun[0] ) {
|
||||
+ status |= RTAUDIO_OUTPUT_UNDERFLOW;
|
||||
+ handle->xrun[0] = false;
|
||||
+ }
|
||||
+ if ( stream_.mode != OUTPUT && handle->xrun[1] ) {
|
||||
+ status |= RTAUDIO_INPUT_OVERFLOW;
|
||||
+ handle->xrun[1] = false;
|
||||
+ }
|
||||
+
|
||||
+ { static int _cb_pre=0; if(++_cb_pre<=3) { fprintf(stderr,"[sndio-dbg] invoking user callback #%d\n",_cb_pre); fflush(stderr); } }
|
||||
+ doStopStream = callback( stream_.userBuffer[0], stream_.userBuffer[1],
|
||||
+ stream_.bufferSize, streamTime, status,
|
||||
+ stream_.callbackInfo.userData );
|
||||
+ if ( doStopStream == 2 ) {
|
||||
+ abortStream();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // Perform I/O outside the mutex so closeStream() can set state and call
|
||||
+ // sio_stop() to unblock a thread waiting in sio_read/sio_write.
|
||||
+ if ( stream_.state != STREAM_RUNNING ) {
|
||||
+ RtApi::tickStreamTime();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ {
|
||||
+ char *buffer;
|
||||
+ int samples;
|
||||
+ RtAudioFormat format;
|
||||
+ size_t nbytes, written;
|
||||
+
|
||||
+ if ( stream_.mode == OUTPUT || stream_.mode == DUPLEX ) {
|
||||
+ if ( stream_.doConvertBuffer[0] ) {
|
||||
+ buffer = stream_.deviceBuffer;
|
||||
+ convertBuffer( buffer, stream_.userBuffer[0], stream_.convertInfo[0] );
|
||||
+ samples = stream_.bufferSize * stream_.nDeviceChannels[0];
|
||||
+ format = stream_.deviceFormat[0];
|
||||
+ } else {
|
||||
+ buffer = stream_.userBuffer[0];
|
||||
+ samples = stream_.bufferSize * stream_.nUserChannels[0];
|
||||
+ format = stream_.userFormat;
|
||||
+ }
|
||||
+ if ( stream_.doByteSwap[0] )
|
||||
+ byteSwapBuffer( buffer, samples, format );
|
||||
+
|
||||
+ nbytes = samples * formatBytes( format );
|
||||
+
|
||||
+ // Use poll with a timeout so sio_write() cannot block indefinitely.
|
||||
+ // This is critical for clean shutdown: stopStream() calls sio_stop()
|
||||
+ // which stops the device clock, so POLLOUT may never fire again after
|
||||
+ // that point. Two buffer periods is plenty under normal operation.
|
||||
+ {
|
||||
+ int timeoutMs = (int)( 2000.0 * stream_.bufferSize / stream_.sampleRate ) + 10;
|
||||
+ struct pollfd pfd[8];
|
||||
+ { static int _cb_n=0; if(++_cb_n<=5||_cb_n%100==0) { fprintf(stderr,"[sndio-dbg] callbackEvent #%d pre-poll\n",_cb_n); fflush(stderr); } }
|
||||
+ int nfds = sio_pollfd( handle->handle, pfd, POLLOUT );
|
||||
+ int ready = ( nfds > 0 ) ? poll( pfd, nfds, timeoutMs ) : 0;
|
||||
+ written = 0;
|
||||
+ { static int _pb=0; if(++_pb<=10||_pb%50==0) { int rev = (ready>0)?sio_revents(handle->handle,pfd):0; fprintf(stderr,"[sndio-dbg] poll#%d nfds=%d ready=%d rev=0x%x POLLOUT=%d\n",_pb,nfds,ready,rev,!!(rev&POLLOUT)); fflush(stderr); } }
|
||||
+ if ( ready > 0 && ( sio_revents( handle->handle, pfd ) & POLLOUT ) )
|
||||
+ written = sio_write( handle->handle, buffer, nbytes );
|
||||
+ }
|
||||
+ if ( written != nbytes ) {
|
||||
+ handle->xrun[0] = true;
|
||||
+ errorText_ = "RtApiSndio::callbackEvent: audio write error.";
|
||||
+ error( RTAUDIO_WARNING );
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if ( stream_.mode == INPUT || stream_.mode == DUPLEX ) {
|
||||
+ if ( stream_.doConvertBuffer[1] ) {
|
||||
+ buffer = stream_.deviceBuffer;
|
||||
+ samples = stream_.bufferSize * stream_.nDeviceChannels[1];
|
||||
+ format = stream_.deviceFormat[1];
|
||||
+ } else {
|
||||
+ buffer = stream_.userBuffer[1];
|
||||
+ samples = stream_.bufferSize * stream_.nUserChannels[1];
|
||||
+ format = stream_.userFormat;
|
||||
+ }
|
||||
+
|
||||
+ nbytes = samples * formatBytes( format );
|
||||
+
|
||||
+ // Use poll with a timeout so we don't block forever on play-only devices.
|
||||
+ // Two buffer periods (in ms) is enough for normal operation.
|
||||
+ int timeoutMs = (int)( 2000.0 * stream_.bufferSize / stream_.sampleRate ) + 10;
|
||||
+ struct pollfd pfd[8];
|
||||
+ int nfds = sio_pollfd( handle->handle, pfd, POLLIN );
|
||||
+ int ready = ( nfds > 0 ) ? poll( pfd, nfds, timeoutMs ) : 0;
|
||||
+
|
||||
+ size_t got = 0;
|
||||
+ if ( ready > 0 && ( sio_revents( handle->handle, pfd ) & POLLIN ) )
|
||||
+ got = sio_read( handle->handle, buffer, nbytes );
|
||||
+
|
||||
+ if ( got != nbytes ) {
|
||||
+ if ( got == 0 )
|
||||
+ memset( buffer, 0, nbytes ); // play-only device: substitute silence
|
||||
+ else {
|
||||
+ handle->xrun[1] = true;
|
||||
+ errorText_ = "RtApiSndio::callbackEvent: audio read error.";
|
||||
+ error( RTAUDIO_WARNING );
|
||||
+ }
|
||||
+ }
|
||||
+ if ( got > 0 ) {
|
||||
+ if ( stream_.doByteSwap[1] )
|
||||
+ byteSwapBuffer( buffer, samples, format );
|
||||
+ if ( stream_.doConvertBuffer[1] )
|
||||
+ convertBuffer( stream_.userBuffer[1], stream_.deviceBuffer, stream_.convertInfo[1] );
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ RtApi::tickStreamTime();
|
||||
+ if ( doStopStream == 1 ) stopStream();
|
||||
+}
|
||||
+
|
||||
+static void *sndioCallbackHandler( void *ptr )
|
||||
+{
|
||||
+ CallbackInfo *info = (CallbackInfo *) ptr;
|
||||
+ RtApiSndio *object = (RtApiSndio *) info->object;
|
||||
+ bool *isRunning = &info->isRunning;
|
||||
+
|
||||
+ while ( *isRunning == true ) {
|
||||
+ pthread_testcancel();
|
||||
+ object->callbackEvent();
|
||||
+ }
|
||||
+
|
||||
+ pthread_exit( nullptr );
|
||||
+}
|
||||
+
|
||||
+//******************** End of __OPENBSD_SNDIO__ *********************//
|
||||
+#endif
|
||||
|
||||
// *************************************************** //
|
||||
//
|
||||
50
audio/chuck/patches/patch-src_host_RtAudio_RtAudio_h
Normal file
50
audio/chuck/patches/patch-src_host_RtAudio_RtAudio_h
Normal file
@@ -0,0 +1,50 @@
|
||||
Index: src/host/RtAudio/RtAudio.h
|
||||
--- src/host/RtAudio/RtAudio.h.orig
|
||||
+++ src/host/RtAudio/RtAudio.h
|
||||
@@ -255,6 +255,7 @@ class RTAUDIO_DLL_PUBLIC RtAudio
|
||||
LINUX_ALSA, /*!< The Advanced Linux Sound Architecture API. */
|
||||
LINUX_PULSE, /*!< The Linux PulseAudio API. */
|
||||
LINUX_OSS, /*!< The Linux Open Sound System API. */
|
||||
+ OPENBSD_SNDIO, /*!< The OpenBSD sndio API. */
|
||||
UNIX_JACK, /*!< The Jack Low-Latency Audio Server API. */
|
||||
MACOSX_CORE, /*!< Macintosh OS-X Core Audio API. */
|
||||
WINDOWS_WASAPI, /*!< The Microsoft WASAPI API. */
|
||||
@@ -1144,6 +1145,38 @@ class RtApiOss: public RtApi (public)
|
||||
private:
|
||||
|
||||
bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
|
||||
+ unsigned int firstChannel, unsigned int sampleRate,
|
||||
+ RtAudioFormat format, unsigned int *bufferSize,
|
||||
+ RtAudio::StreamOptions *options ) /* override */;
|
||||
+};
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+#if defined(__OPENBSD_SNDIO__)
|
||||
+
|
||||
+class RtApiSndio: public RtApi
|
||||
+{
|
||||
+public:
|
||||
+
|
||||
+ RtApiSndio();
|
||||
+ ~RtApiSndio();
|
||||
+ RtAudio::Api getCurrentApi() /* override */ { return RtAudio::OPENBSD_SNDIO; }
|
||||
+ unsigned int getDeviceCount( void ) /* override */;
|
||||
+ RtAudio::DeviceInfo getDeviceInfo( unsigned int device ) /* override */;
|
||||
+ void closeStream( void ) /* override */;
|
||||
+ RtAudioErrorType startStream( void ) /* override */;
|
||||
+ RtAudioErrorType stopStream( void ) /* override */;
|
||||
+ RtAudioErrorType abortStream( void ) /* override */;
|
||||
+
|
||||
+ // This function is intended for internal use only. It must be
|
||||
+ // public because it is called by the internal callback handler,
|
||||
+ // which is not a member of RtAudio. External use of this function
|
||||
+ // will most likely produce highly undesirable results!
|
||||
+ void callbackEvent( void );
|
||||
+
|
||||
+ private:
|
||||
+
|
||||
+ bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
|
||||
unsigned int firstChannel, unsigned int sampleRate,
|
||||
RtAudioFormat format, unsigned int *bufferSize,
|
||||
RtAudio::StreamOptions *options ) /* override */;
|
||||
31
audio/chuck/patches/patch-src_host_chuck_audio_cpp
Normal file
31
audio/chuck/patches/patch-src_host_chuck_audio_cpp
Normal file
@@ -0,0 +1,31 @@
|
||||
Index: src/host/chuck_audio.cpp
|
||||
--- src/host/chuck_audio.cpp.orig
|
||||
+++ src/host/chuck_audio.cpp
|
||||
@@ -147,6 +147,10 @@ static RtAudio::Api driverNameToApi( const char * driv
|
||||
if( driverLower == "oss" )
|
||||
api = RtAudio::LINUX_OSS;
|
||||
#endif
|
||||
+ #if defined(__OPENBSD_SNDIO__)
|
||||
+ if( driverLower == "sndio" )
|
||||
+ api = RtAudio::OPENBSD_SNDIO;
|
||||
+ #endif
|
||||
#if defined(__UNIX_JACK__)
|
||||
if( driverLower == "jack" )
|
||||
api = RtAudio::UNIX_JACK;
|
||||
@@ -184,6 +188,8 @@ static RtAudio::Api driverNameToApi( const char * driv
|
||||
api = RtAudio::LINUX_OSS;
|
||||
#elif defined(__PLATFORM_LINUX__) && defined(__UNIX_JACK__)
|
||||
api = RtAudio::UNIX_JACK;
|
||||
+ #elif defined(__OPENBSD_SNDIO__)
|
||||
+ api = RtAudio::OPENBSD_SNDIO;
|
||||
#elif defined(__MACOSX_CORE__)
|
||||
api = RtAudio::MACOSX_CORE;
|
||||
#endif
|
||||
@@ -206,6 +212,7 @@ static const char * apiToDriverName( RtAudio::Api api
|
||||
"ALSA",
|
||||
"Pulse",
|
||||
"OSS",
|
||||
+ "sndio",
|
||||
"Jack",
|
||||
"CoreAudio",
|
||||
"WASAPI",
|
||||
24
audio/chuck/patches/patch-src_host_chuck_main_cpp
Normal file
24
audio/chuck/patches/patch-src_host_chuck_main_cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
Index: src/host/chuck_main.cpp
|
||||
--- src/host/chuck_main.cpp.orig
|
||||
+++ src/host/chuck_main.cpp
|
||||
@@ -1213,7 +1213,9 @@ t_CKBOOL go( int argc, const char ** argv )
|
||||
#endif // __DISABLE_MIDI__
|
||||
|
||||
// probe HID devices
|
||||
+ #ifndef __DISABLE_HID__
|
||||
HidInManager::probeHidIn();
|
||||
+ #endif // __DISABLE_HID__
|
||||
|
||||
// restore log level
|
||||
the_chuck->setLogLevel( log_level );
|
||||
@@ -1493,8 +1495,10 @@ t_CKBOOL go( int argc, const char ** argv )
|
||||
|
||||
//------------------------- HID RELATED SETUP -----------------------------
|
||||
#ifndef __ALTER_HID__
|
||||
+ #ifndef __DISABLE_HID__
|
||||
// pre-load hid
|
||||
if( load_hid ) HidInManager::init();
|
||||
+ #endif // __DISABLE_HID__
|
||||
#endif // __ALTER_HID__
|
||||
|
||||
|
||||
42
audio/chuck/patches/patch-src_makefile
Normal file
42
audio/chuck/patches/patch-src_makefile
Normal file
@@ -0,0 +1,42 @@
|
||||
Index: src/makefile
|
||||
--- src/makefile.orig
|
||||
+++ src/makefile
|
||||
@@ -16,7 +16,7 @@ CK_HOST_DIR=host
|
||||
# where to find RtAudio
|
||||
RTAUDIO_DIR=RtAudio
|
||||
# chuck version
|
||||
-CK_VERSION=1.5.5.7
|
||||
+CK_VERSION=1.5.5.8-dev
|
||||
|
||||
|
||||
########################## DEFAULT MAKE TARGET ################################
|
||||
@@ -24,6 +24,7 @@ CK_VERSION=1.5.5.7
|
||||
current:
|
||||
@echo "[chuck build]: please use one of the following configurations:"
|
||||
@echo " make linux-alsa, make linux-jack, make linux-pulse, linux-all,"
|
||||
+ @echo " make openbsd-sndio,"
|
||||
@echo " make mac, make mac-ub, make web, make win32"
|
||||
|
||||
|
||||
@@ -80,8 +81,8 @@ host-web/webchuck/js/webchuck.js: $(EMSCRIPTENSRCS) $(
|
||||
# https://github.com/ccrma/chuck#readme
|
||||
|
||||
# make targets
|
||||
-.PHONY: mac mac-ub osx linux-all linux linux-pulse linux-jack linux-alsa test
|
||||
-mac mac-ub osx linux-all linux linux-pulse linux-jack linux-alsa: chuck
|
||||
+.PHONY: mac mac-ub osx linux-all linux linux-pulse linux-jack linux-alsa openbsd-sndio test
|
||||
+mac mac-ub osx linux-all linux linux-pulse linux-jack linux-alsa openbsd-sndio: chuck
|
||||
|
||||
win32:
|
||||
@echo "for Windows build, see visual-studio/chuck.sln"
|
||||
@@ -173,6 +174,10 @@ endif
|
||||
|
||||
ifneq (,$(strip $(filter linux-alsa,$(MAKECMDGOALS))))
|
||||
include $(CK_CORE_DIR)/makefile.x/makefile.alsa
|
||||
+endif
|
||||
+
|
||||
+ifneq (,$(strip $(filter openbsd-sndio,$(MAKECMDGOALS))))
|
||||
+include $(CK_CORE_DIR)/makefile.x/makefile.sndio
|
||||
endif
|
||||
|
||||
# ifneq (,$(strip $(filter cygwin,$(MAKECMDGOALS))))
|
||||
0
audio/chuck/peg
Normal file
0
audio/chuck/peg
Normal file
15
audio/chuck/pkg/DESCR
Normal file
15
audio/chuck/pkg/DESCR
Normal file
@@ -0,0 +1,15 @@
|
||||
ChucK is a strongly-timed, concurrent, and on-the-fly music programming
|
||||
language. It is compiled in real-time, on-the-fly, and allows code to be
|
||||
added and modified while the program is running, without stopping or
|
||||
restarting. It is used for synthesis, composition, performance, and
|
||||
analysis.
|
||||
|
||||
ChucK presents a unique time-based, concurrent programming model that's
|
||||
precise and expressive (with regards to time), dynamic (with regards to
|
||||
concurrency), and interactive (with regards to interface). It is open-source
|
||||
and freely available.
|
||||
|
||||
On OpenBSD, ChucK uses the JACK audio server for output. Start jackd (via
|
||||
sndio or another backend) before running chuck.
|
||||
|
||||
Website: https://chuck.stanford.edu/
|
||||
1
audio/chuck/pkg/PLIST
Normal file
1
audio/chuck/pkg/PLIST
Normal file
@@ -0,0 +1 @@
|
||||
bin/chuck
|
||||
33
books/openbsd-faq/Makefile
Normal file
33
books/openbsd-faq/Makefile
Normal file
@@ -0,0 +1,33 @@
|
||||
COMMENT = OpenBSD FAQ offline
|
||||
|
||||
GH_ACCOUNT = OpenBSD
|
||||
GH_PROJECT = www
|
||||
GH_COMMIT = 104daa6522e05f7c1780adab559ce5e7cd999d44
|
||||
DISTNAME = openbsd-faq-20231229
|
||||
PKGNAME = ${DISTNAME}
|
||||
|
||||
CATEGORIES = books
|
||||
|
||||
HOMEPAGE = https://www.openbsd.org/faq
|
||||
|
||||
# no maintainer OK needed to update
|
||||
MAINTAINER = Stefan Hagen <sh+ports@codevoid.de>
|
||||
|
||||
# ISC License
|
||||
PERMIT_PACKAGE = Yes
|
||||
|
||||
RUN_DEPENDS = www/lynx
|
||||
|
||||
NO_BUILD = Yes
|
||||
NO_TEST = Yes
|
||||
|
||||
DOCDIR = ${PREFIX}/share/doc/openbsd-faq
|
||||
|
||||
do-install:
|
||||
${INSTALL_DATA_DIR} ${DOCDIR}
|
||||
cp -r ${WRKSRC}/faq/* ${DOCDIR}/
|
||||
echo "#!/bin/sh" > ${PREFIX}/bin/openbsd-faq
|
||||
echo "lynx ${DOCDIR}/index.html" >> ${PREFIX}/bin/openbsd-faq
|
||||
chmod +x ${PREFIX}/bin/openbsd-faq
|
||||
|
||||
.include <bsd.port.mk>
|
||||
2
books/openbsd-faq/distinfo
Normal file
2
books/openbsd-faq/distinfo
Normal file
@@ -0,0 +1,2 @@
|
||||
SHA256 (openbsd-faq-20231229-104daa65.tar.gz) = QzWL9qb4PeN25dXN+YtuKFwgIXMA+TbXcBAqi37E+JQ=
|
||||
SIZE (openbsd-faq-20231229-104daa65.tar.gz) = 609669270
|
||||
4
books/openbsd-faq/pkg/DESCR
Normal file
4
books/openbsd-faq/pkg/DESCR
Normal file
@@ -0,0 +1,4 @@
|
||||
This package contains the OpenBSD FAQ. An up to date version is
|
||||
available online.
|
||||
|
||||
Hyperlinks pointing to online resource will not work while offline.
|
||||
97
books/openbsd-faq/pkg/PLIST
Normal file
97
books/openbsd-faq/pkg/PLIST
Normal file
@@ -0,0 +1,97 @@
|
||||
bin/openbsd-faq
|
||||
share/doc/openbsd-faq/
|
||||
share/doc/openbsd-faq/current.html
|
||||
share/doc/openbsd-faq/faq1.html
|
||||
share/doc/openbsd-faq/faq10.html
|
||||
share/doc/openbsd-faq/faq11.html
|
||||
share/doc/openbsd-faq/faq13.html
|
||||
share/doc/openbsd-faq/faq14.html
|
||||
share/doc/openbsd-faq/faq15.html
|
||||
share/doc/openbsd-faq/faq16.html
|
||||
share/doc/openbsd-faq/faq17.html
|
||||
share/doc/openbsd-faq/faq4.html
|
||||
share/doc/openbsd-faq/faq5.html
|
||||
share/doc/openbsd-faq/faq6.html
|
||||
share/doc/openbsd-faq/faq7.html
|
||||
share/doc/openbsd-faq/index.html
|
||||
share/doc/openbsd-faq/pf/
|
||||
share/doc/openbsd-faq/pf/anchors.html
|
||||
share/doc/openbsd-faq/pf/authpf.html
|
||||
share/doc/openbsd-faq/pf/carp.html
|
||||
share/doc/openbsd-faq/pf/config.html
|
||||
share/doc/openbsd-faq/pf/example1.html
|
||||
share/doc/openbsd-faq/pf/filter.html
|
||||
share/doc/openbsd-faq/pf/ftp.html
|
||||
share/doc/openbsd-faq/pf/index.html
|
||||
share/doc/openbsd-faq/pf/logging.html
|
||||
share/doc/openbsd-faq/pf/macros.html
|
||||
share/doc/openbsd-faq/pf/nat.html
|
||||
share/doc/openbsd-faq/pf/options.html
|
||||
share/doc/openbsd-faq/pf/perf.html
|
||||
share/doc/openbsd-faq/pf/pools.html
|
||||
share/doc/openbsd-faq/pf/rdr.html
|
||||
share/doc/openbsd-faq/pf/shortcuts.html
|
||||
share/doc/openbsd-faq/pf/tables.html
|
||||
share/doc/openbsd-faq/pf/tagging.html
|
||||
share/doc/openbsd-faq/ports/
|
||||
share/doc/openbsd-faq/ports/differences.html
|
||||
share/doc/openbsd-faq/ports/guide.html
|
||||
share/doc/openbsd-faq/ports/index.html
|
||||
share/doc/openbsd-faq/ports/ports.html
|
||||
share/doc/openbsd-faq/ports/specialtopics.html
|
||||
share/doc/openbsd-faq/ports/testing.html
|
||||
share/doc/openbsd-faq/upgrade35.html
|
||||
share/doc/openbsd-faq/upgrade36.html
|
||||
share/doc/openbsd-faq/upgrade37.html
|
||||
share/doc/openbsd-faq/upgrade38.html
|
||||
share/doc/openbsd-faq/upgrade38.patch
|
||||
share/doc/openbsd-faq/upgrade39.html
|
||||
share/doc/openbsd-faq/upgrade39.patch
|
||||
share/doc/openbsd-faq/upgrade40.html
|
||||
share/doc/openbsd-faq/upgrade40.patch
|
||||
share/doc/openbsd-faq/upgrade41.html
|
||||
share/doc/openbsd-faq/upgrade41.patch
|
||||
share/doc/openbsd-faq/upgrade42.html
|
||||
share/doc/openbsd-faq/upgrade42.patch
|
||||
share/doc/openbsd-faq/upgrade43.html
|
||||
share/doc/openbsd-faq/upgrade43.patch
|
||||
share/doc/openbsd-faq/upgrade44.html
|
||||
share/doc/openbsd-faq/upgrade44.patch
|
||||
share/doc/openbsd-faq/upgrade45.html
|
||||
share/doc/openbsd-faq/upgrade45.patch
|
||||
share/doc/openbsd-faq/upgrade46.html
|
||||
share/doc/openbsd-faq/upgrade46.patch
|
||||
share/doc/openbsd-faq/upgrade47.html
|
||||
share/doc/openbsd-faq/upgrade47.patch
|
||||
share/doc/openbsd-faq/upgrade48.html
|
||||
share/doc/openbsd-faq/upgrade48.patch
|
||||
share/doc/openbsd-faq/upgrade49.html
|
||||
share/doc/openbsd-faq/upgrade49.patch
|
||||
share/doc/openbsd-faq/upgrade50.html
|
||||
share/doc/openbsd-faq/upgrade50.patch
|
||||
share/doc/openbsd-faq/upgrade51.html
|
||||
share/doc/openbsd-faq/upgrade51.patch
|
||||
share/doc/openbsd-faq/upgrade52.html
|
||||
share/doc/openbsd-faq/upgrade52.patch
|
||||
share/doc/openbsd-faq/upgrade53.html
|
||||
share/doc/openbsd-faq/upgrade54.html
|
||||
share/doc/openbsd-faq/upgrade55.html
|
||||
share/doc/openbsd-faq/upgrade56.html
|
||||
share/doc/openbsd-faq/upgrade57.html
|
||||
share/doc/openbsd-faq/upgrade58.html
|
||||
share/doc/openbsd-faq/upgrade59.html
|
||||
share/doc/openbsd-faq/upgrade60.html
|
||||
share/doc/openbsd-faq/upgrade61.html
|
||||
share/doc/openbsd-faq/upgrade62.html
|
||||
share/doc/openbsd-faq/upgrade63.html
|
||||
share/doc/openbsd-faq/upgrade64.html
|
||||
share/doc/openbsd-faq/upgrade65.html
|
||||
share/doc/openbsd-faq/upgrade66.html
|
||||
share/doc/openbsd-faq/upgrade67.html
|
||||
share/doc/openbsd-faq/upgrade68.html
|
||||
share/doc/openbsd-faq/upgrade69.html
|
||||
share/doc/openbsd-faq/upgrade70.html
|
||||
share/doc/openbsd-faq/upgrade71.html
|
||||
share/doc/openbsd-faq/upgrade72.html
|
||||
share/doc/openbsd-faq/upgrade73.html
|
||||
share/doc/openbsd-faq/upgrade74.html
|
||||
88
devel/adb/Makefile
Normal file
88
devel/adb/Makefile
Normal file
@@ -0,0 +1,88 @@
|
||||
COMMENT = Android debugging tools
|
||||
|
||||
V = 35.0.2
|
||||
DISTNAME = android-tools-${V}
|
||||
PKGNAME = adb-${V}
|
||||
|
||||
CATEGORIES = devel
|
||||
|
||||
HOMEPAGE = https://developer.android.com/tools/help/adb.html
|
||||
|
||||
SITES = https://github.com/nmeum/android-tools/releases/download/${V}/
|
||||
|
||||
EXTRACT_SUFX = .tar.xz
|
||||
|
||||
# Apache License v2.0
|
||||
PERMIT_PACKAGE = Yes
|
||||
|
||||
WANTLIB = ${COMPILER_LIBCXX} absl_base absl_borrowed_fixup_buffer
|
||||
WANTLIB += absl_city absl_civil_time absl_cord absl_cord_internal
|
||||
WANTLIB += absl_cordz_functions absl_cordz_handle absl_cordz_info
|
||||
WANTLIB += absl_crc32c absl_crc_cord_state absl_crc_cpu_detect
|
||||
WANTLIB += absl_crc_internal absl_debugging_internal
|
||||
WANTLIB += absl_decode_rust_punycode absl_demangle_internal
|
||||
WANTLIB += absl_demangle_rust absl_die_if_null absl_examine_stack
|
||||
WANTLIB += absl_exponential_biased absl_flags_commandlineflag
|
||||
WANTLIB += absl_flags_commandlineflag_internal absl_flags_config
|
||||
WANTLIB += absl_flags_internal absl_flags_marshalling
|
||||
WANTLIB += absl_flags_private_handle_accessor absl_flags_program_name
|
||||
WANTLIB += absl_flags_reflection absl_graphcycles_internal absl_hash
|
||||
WANTLIB += absl_hashtablez_sampler absl_int128
|
||||
WANTLIB += absl_kernel_timeout_internal absl_leak_check absl_log_entry
|
||||
WANTLIB += absl_log_globals absl_log_initialize
|
||||
WANTLIB += absl_log_internal_check_op absl_log_internal_conditions
|
||||
WANTLIB += absl_log_internal_fnmatch absl_log_internal_format
|
||||
WANTLIB += absl_log_internal_globals absl_log_internal_log_sink_set
|
||||
WANTLIB += absl_log_internal_message absl_log_internal_nullguard
|
||||
WANTLIB += absl_log_internal_proto absl_log_internal_structured_proto
|
||||
WANTLIB += absl_log_severity absl_log_sink absl_malloc_internal
|
||||
WANTLIB += absl_random_distributions absl_random_internal_entropy_pool
|
||||
WANTLIB += absl_random_internal_platform absl_random_internal_randen
|
||||
WANTLIB += absl_random_internal_randen_hwaes
|
||||
WANTLIB += absl_random_internal_randen_hwaes_impl
|
||||
WANTLIB += absl_random_internal_randen_slow
|
||||
WANTLIB += absl_random_internal_seed_material
|
||||
WANTLIB += absl_random_seed_gen_exception absl_random_seed_sequences
|
||||
WANTLIB += absl_raw_hash_set absl_raw_logging_internal
|
||||
WANTLIB += absl_spinlock_wait absl_stacktrace absl_status absl_statusor
|
||||
WANTLIB += absl_str_format_internal absl_strerror absl_strings
|
||||
WANTLIB += absl_strings_internal absl_symbolize absl_synchronization
|
||||
WANTLIB += absl_throw_delegate absl_time absl_time_zone
|
||||
WANTLIB += absl_tracing_internal absl_utf8_for_code_point
|
||||
WANTLIB += absl_vlog_config_internal brotlicommon brotlidec brotlienc c
|
||||
WANTLIB += fmt lz4 m pcre2-8 protobuf pthread usb-1.0 utf8_validity z zstd
|
||||
|
||||
LIB_DEPENDS = archivers/brotli \
|
||||
archivers/lz4 \
|
||||
archivers/zstd \
|
||||
devel/fmt \
|
||||
devel/libusb1 \
|
||||
devel/pcre2 \
|
||||
devel/protobuf
|
||||
|
||||
MODULES = devel/cmake
|
||||
|
||||
BUILD_DEPENDS = lang/go
|
||||
|
||||
RUN_DEPENDS = lang/python/3
|
||||
|
||||
CONFIGURE_ARGS = -DANDROID_TOOLS_PATCH_VENDOR=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX=${PREFIX}
|
||||
|
||||
# Go (boringssl err_data_generate.go) needs a writable cache dir
|
||||
MAKE_ENV += GOCACHE=/tmp/adb-gocache
|
||||
|
||||
NO_TEST = Yes
|
||||
|
||||
# Copy OpenBSD compat stubs for Linux-specific headers not in the tarball.
|
||||
post-patch:
|
||||
mkdir -p ${WRKSRC}/vendor/compat/sys ${WRKSRC}/vendor/compat/linux
|
||||
cp ${FILESDIR}/compat-sysmacros.h ${WRKSRC}/vendor/compat/sys/sysmacros.h
|
||||
cp ${FILESDIR}/compat-capability.h ${WRKSRC}/vendor/compat/linux/capability.h
|
||||
cp ${FILESDIR}/compat-string.h ${WRKSRC}/vendor/compat/string.h
|
||||
cp ${FILESDIR}/fastboot_usb_libusb.cpp \
|
||||
${WRKSRC}/vendor/core/fastboot/usb_libusb.cpp
|
||||
cp ${FILESDIR}/adb_usb_openbsd.cpp \
|
||||
${WRKSRC}/vendor/adb/client/usb_openbsd.cpp
|
||||
|
||||
.include <bsd.port.mk>
|
||||
2
devel/adb/distinfo
Normal file
2
devel/adb/distinfo
Normal file
@@ -0,0 +1,2 @@
|
||||
SHA256 (android-tools-35.0.2.tar.xz) = 0sMiIoAxXzbYv6XALXYytH42W/4ud+maNWT7ZXbwQJc=
|
||||
SIZE (android-tools-35.0.2.tar.xz) = 18847376
|
||||
25
devel/adb/files/adb_usb_openbsd.cpp
Normal file
25
devel/adb/files/adb_usb_openbsd.cpp
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* OpenBSD stub implementations of the old-style adb USB API (usb_handle*).
|
||||
*
|
||||
* These are never called because should_use_libusb() always returns true on
|
||||
* OpenBSD, but the linker requires them to resolve symbols referenced from
|
||||
* adb/client/transport_usb.cpp.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0.
|
||||
*/
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "client/usb.h"
|
||||
|
||||
struct usb_handle {};
|
||||
|
||||
void usb_init() {}
|
||||
void usb_cleanup() {}
|
||||
|
||||
int usb_write(usb_handle*, const void*, int) { return -1; }
|
||||
int usb_read(usb_handle*, void*, int) { return -1; }
|
||||
int usb_close(usb_handle*) { return -1; }
|
||||
void usb_reset(usb_handle*) {}
|
||||
void usb_kick(usb_handle*) {}
|
||||
size_t usb_get_max_packet_size(usb_handle*) { return 512; }
|
||||
20
devel/adb/files/compat-capability.h
Normal file
20
devel/adb/files/compat-capability.h
Normal file
@@ -0,0 +1,20 @@
|
||||
/* OpenBSD stub for linux/capability.h */
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
typedef uint32_t __u32;
|
||||
#define _LINUX_CAPABILITY_VERSION_3 0x20080522
|
||||
#define _LINUX_CAPABILITY_U32S_3 2
|
||||
#define VFS_CAP_REVISION_1 0x01000000
|
||||
#define VFS_CAP_REVISION_2 0x02000000
|
||||
#define VFS_CAP_REVISION_3 0x03000000
|
||||
#define VFS_CAP_REVISION_MASK 0xff000000
|
||||
#define VFS_CAP_FLAGS_EFFECTIVE 0x000001
|
||||
struct vfs_cap_data {
|
||||
__u32 magic_etc;
|
||||
struct { __u32 permitted, inheritable; } data[2];
|
||||
};
|
||||
struct vfs_ns_cap_data {
|
||||
__u32 magic_etc;
|
||||
struct { __u32 permitted, inheritable; } data[2];
|
||||
__u32 rootid;
|
||||
};
|
||||
8
devel/adb/files/compat-string.h
Normal file
8
devel/adb/files/compat-string.h
Normal file
@@ -0,0 +1,8 @@
|
||||
/* OpenBSD compat: add mempcpy (GNU extension) via #include_next wrapper */
|
||||
#pragma once
|
||||
#include_next <string.h>
|
||||
#ifndef mempcpy
|
||||
static inline void *mempcpy(void *dst, const void *src, size_t n) {
|
||||
return (char *)memcpy(dst, src, n) + n;
|
||||
}
|
||||
#endif
|
||||
3
devel/adb/files/compat-sysmacros.h
Normal file
3
devel/adb/files/compat-sysmacros.h
Normal file
@@ -0,0 +1,3 @@
|
||||
/* OpenBSD stub: major/minor/makedev are in sys/types.h */
|
||||
#pragma once
|
||||
#include <sys/types.h>
|
||||
170
devel/adb/files/fastboot_usb_libusb.cpp
Normal file
170
devel/adb/files/fastboot_usb_libusb.cpp
Normal file
@@ -0,0 +1,170 @@
|
||||
/*
|
||||
* USB transport for fastboot using libusb-1.0.
|
||||
* Used on OpenBSD (and other platforms without Linux usbfs).
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
#include <libusb-1.0/libusb.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <memory>
|
||||
|
||||
#include <android-base/macros.h>
|
||||
#include "usb.h"
|
||||
|
||||
static libusb_context* g_ctx = nullptr;
|
||||
|
||||
class LibUsbTransport : public UsbTransport {
|
||||
public:
|
||||
LibUsbTransport(libusb_device_handle* h, uint8_t ep_in, uint8_t ep_out,
|
||||
int ifc_num, uint32_t ms_timeout)
|
||||
: handle_(h), ep_in_(ep_in), ep_out_(ep_out),
|
||||
ifc_num_(ifc_num), ms_timeout_(ms_timeout) {}
|
||||
~LibUsbTransport() override { Close(); }
|
||||
|
||||
ssize_t Read(void* data, size_t len) override {
|
||||
int transferred = 0;
|
||||
int r = libusb_bulk_transfer(handle_, ep_in_,
|
||||
reinterpret_cast<unsigned char*>(data),
|
||||
static_cast<int>(len), &transferred,
|
||||
ms_timeout_);
|
||||
if (r == 0 || r == LIBUSB_ERROR_TIMEOUT)
|
||||
return transferred;
|
||||
return -1;
|
||||
}
|
||||
|
||||
ssize_t Write(const void* data, size_t len) override {
|
||||
int transferred = 0;
|
||||
int r = libusb_bulk_transfer(handle_, ep_out_,
|
||||
const_cast<unsigned char*>(
|
||||
reinterpret_cast<const unsigned char*>(data)),
|
||||
static_cast<int>(len), &transferred,
|
||||
ms_timeout_);
|
||||
if (r == 0)
|
||||
return transferred;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int Close() override {
|
||||
if (handle_) {
|
||||
libusb_release_interface(handle_, ifc_num_);
|
||||
libusb_close(handle_);
|
||||
handle_ = nullptr;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Reset() override {
|
||||
if (handle_)
|
||||
return libusb_reset_device(handle_) ? -1 : 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
private:
|
||||
libusb_device_handle* handle_;
|
||||
uint8_t ep_in_, ep_out_;
|
||||
int ifc_num_;
|
||||
uint32_t ms_timeout_;
|
||||
DISALLOW_COPY_AND_ASSIGN(LibUsbTransport);
|
||||
};
|
||||
|
||||
std::unique_ptr<UsbTransport> usb_open(ifc_match_func callback,
|
||||
uint32_t timeout_ms) {
|
||||
if (!g_ctx) {
|
||||
if (libusb_init(&g_ctx) != 0)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
libusb_device** devs;
|
||||
ssize_t cnt = libusb_get_device_list(g_ctx, &devs);
|
||||
if (cnt < 0)
|
||||
return nullptr;
|
||||
|
||||
std::unique_ptr<UsbTransport> result;
|
||||
|
||||
for (ssize_t i = 0; i < cnt && !result; i++) {
|
||||
libusb_device* dev = devs[i];
|
||||
struct libusb_device_descriptor desc;
|
||||
|
||||
if (libusb_get_device_descriptor(dev, &desc) != 0)
|
||||
continue;
|
||||
|
||||
struct libusb_config_descriptor* config;
|
||||
if (libusb_get_active_config_descriptor(dev, &config) != 0)
|
||||
continue;
|
||||
|
||||
for (int j = 0; j < (int)config->bNumInterfaces && !result; j++) {
|
||||
const struct libusb_interface* ifc = &config->interface[j];
|
||||
for (int k = 0; k < ifc->num_altsetting && !result; k++) {
|
||||
const struct libusb_interface_descriptor* id = &ifc->altsetting[k];
|
||||
|
||||
usb_ifc_info info = {};
|
||||
info.dev_vendor = desc.idVendor;
|
||||
info.dev_product = desc.idProduct;
|
||||
info.dev_class = desc.bDeviceClass;
|
||||
info.dev_subclass = desc.bDeviceSubClass;
|
||||
info.dev_protocol = desc.bDeviceProtocol;
|
||||
info.ifc_class = id->bInterfaceClass;
|
||||
info.ifc_subclass = id->bInterfaceSubClass;
|
||||
info.ifc_protocol = id->bInterfaceProtocol;
|
||||
|
||||
uint8_t ep_in = 0, ep_out = 0;
|
||||
for (int e = 0; e < (int)id->bNumEndpoints; e++) {
|
||||
const struct libusb_endpoint_descriptor* ep = &id->endpoint[e];
|
||||
if ((ep->bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) !=
|
||||
LIBUSB_TRANSFER_TYPE_BULK)
|
||||
continue;
|
||||
if (ep->bEndpointAddress & LIBUSB_ENDPOINT_IN) {
|
||||
ep_in = ep->bEndpointAddress;
|
||||
info.has_bulk_in = 1;
|
||||
} else {
|
||||
ep_out = ep->bEndpointAddress;
|
||||
info.has_bulk_out = 1;
|
||||
}
|
||||
}
|
||||
|
||||
libusb_device_handle* h;
|
||||
if (libusb_open(dev, &h) != 0)
|
||||
continue;
|
||||
|
||||
info.writable = 1;
|
||||
if (desc.iSerialNumber) {
|
||||
libusb_get_string_descriptor_ascii(
|
||||
h, desc.iSerialNumber,
|
||||
reinterpret_cast<unsigned char*>(info.serial_number),
|
||||
sizeof(info.serial_number));
|
||||
}
|
||||
if (id->iInterface) {
|
||||
libusb_get_string_descriptor_ascii(
|
||||
h, id->iInterface,
|
||||
reinterpret_cast<unsigned char*>(info.interface),
|
||||
sizeof(info.interface));
|
||||
}
|
||||
snprintf(info.device_path, sizeof(info.device_path),
|
||||
"usb:%d:%d", libusb_get_bus_number(dev),
|
||||
libusb_get_device_address(dev));
|
||||
|
||||
if (callback(&info) == 0 && ep_in && ep_out) {
|
||||
if (libusb_claim_interface(h, id->bInterfaceNumber) == 0) {
|
||||
result = std::make_unique<LibUsbTransport>(
|
||||
h, ep_in, ep_out, id->bInterfaceNumber,
|
||||
timeout_ms);
|
||||
} else {
|
||||
libusb_close(h);
|
||||
}
|
||||
} else {
|
||||
libusb_close(h);
|
||||
}
|
||||
}
|
||||
}
|
||||
libusb_free_config_descriptor(config);
|
||||
}
|
||||
|
||||
libusb_free_device_list(devs, 1);
|
||||
return result;
|
||||
}
|
||||
22
devel/adb/patches/patch-vendor_CMakeLists_adb_txt
Normal file
22
devel/adb/patches/patch-vendor_CMakeLists_adb_txt
Normal file
@@ -0,0 +1,22 @@
|
||||
Index: vendor/CMakeLists.adb.txt
|
||||
--- vendor/CMakeLists.adb.txt.orig
|
||||
+++ vendor/CMakeLists.adb.txt
|
||||
@@ -43,6 +43,9 @@ set(libadb_SOURCES
|
||||
if(APPLE)
|
||||
list(APPEND libadb_SOURCES
|
||||
adb/client/usb_osx.cpp)
|
||||
+elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
+ list(APPEND libadb_SOURCES
|
||||
+ adb/client/usb_openbsd.cpp)
|
||||
else()
|
||||
list(APPEND libadb_SOURCES
|
||||
adb/client/usb_linux.cpp)
|
||||
@@ -129,7 +132,7 @@ set(libcutils_SOURCES
|
||||
core/libcutils/strlcpy.c
|
||||
core/libcutils/trace-host.cpp)
|
||||
|
||||
-if (NOT APPLE AND NOT WIN32)
|
||||
+if (NOT APPLE AND NOT WIN32 AND NOT (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD"))
|
||||
list(APPEND libcutils_SOURCES
|
||||
core/libcutils/canned_fs_config.cpp
|
||||
core/libcutils/fs_config.cpp)
|
||||
31
devel/adb/patches/patch-vendor_CMakeLists_fastboot_txt
Normal file
31
devel/adb/patches/patch-vendor_CMakeLists_fastboot_txt
Normal file
@@ -0,0 +1,31 @@
|
||||
Index: vendor/CMakeLists.fastboot.txt
|
||||
--- vendor/CMakeLists.fastboot.txt.orig
|
||||
+++ vendor/CMakeLists.fastboot.txt
|
||||
@@ -119,6 +119,9 @@ set(fastboot_SOURCES
|
||||
if(APPLE)
|
||||
list(APPEND fastboot_SOURCES
|
||||
core/fastboot/usb_osx.cpp)
|
||||
+elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
+ list(APPEND fastboot_SOURCES
|
||||
+ core/fastboot/usb_libusb.cpp)
|
||||
else()
|
||||
list(APPEND fastboot_SOURCES
|
||||
core/fastboot/usb_linux.cpp)
|
||||
@@ -136,10 +139,16 @@ target_compile_definitions(fastboot PRIVATE
|
||||
target_link_libraries(fastboot
|
||||
libsparse libzip libcutils liblog liblp libutil
|
||||
libbase libext4 libselinux libsepol libdiagnoseusb crypto
|
||||
- z PkgConfig::libpcre2-8 Threads::Threads dl)
|
||||
+ z PkgConfig::libpcre2-8 Threads::Threads)
|
||||
+if(NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
+ target_link_libraries(fastboot dl)
|
||||
+endif()
|
||||
|
||||
if(APPLE)
|
||||
target_link_libraries(fastboot
|
||||
"-framework CoreFoundation"
|
||||
"-framework IOKit")
|
||||
+endif()
|
||||
+if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
+ target_link_libraries(fastboot PkgConfig::libusb-1.0)
|
||||
endif()
|
||||
12
devel/adb/patches/patch-vendor_CMakeLists_mke2fs_txt
Normal file
12
devel/adb/patches/patch-vendor_CMakeLists_mke2fs_txt
Normal file
@@ -0,0 +1,12 @@
|
||||
Index: vendor/CMakeLists.mke2fs.txt
|
||||
--- vendor/CMakeLists.mke2fs.txt.orig
|
||||
+++ vendor/CMakeLists.mke2fs.txt
|
||||
@@ -130,7 +130,7 @@ target_include_directories("${ANDROID_MKE2FS_NAME}" PR
|
||||
e2fsprogs/lib)
|
||||
|
||||
# fails to build due to https://android-review.googlesource.com/c/platform/system/core/+/2760169
|
||||
-if(NOT APPLE)
|
||||
+if(NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
add_executable(e2fsdroid
|
||||
e2fsprogs/contrib/android/e2fsdroid.c
|
||||
e2fsprogs/contrib/android/basefs_allocator.c
|
||||
50
devel/adb/patches/patch-vendor_CMakeLists_txt
Normal file
50
devel/adb/patches/patch-vendor_CMakeLists_txt
Normal file
@@ -0,0 +1,50 @@
|
||||
Index: vendor/CMakeLists.txt
|
||||
--- vendor/CMakeLists.txt.orig
|
||||
+++ vendor/CMakeLists.txt
|
||||
@@ -16,6 +16,17 @@ if(APPLE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_DARWIN_C_SOURCE -D__DARWIN_C_LEVEL=__DARWIN_C_FULL")
|
||||
endif()
|
||||
|
||||
+if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_BSD_SOURCE")
|
||||
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_BSD_SOURCE")
|
||||
+ add_compile_definitions(off64_t=off_t lseek64=lseek ftruncate64=ftruncate
|
||||
+ pread64=pread pwrite64=pwrite mmap64=mmap)
|
||||
+ include_directories(BEFORE
|
||||
+ ${CMAKE_CURRENT_SOURCE_DIR}/compat
|
||||
+ ${CMAKE_CURRENT_SOURCE_DIR}/e2fsprogs/lib
|
||||
+ ${CMAKE_CURRENT_SOURCE_DIR}/e2fsprogs/lib/ext2fs)
|
||||
+endif()
|
||||
+
|
||||
# Different versions of clang require a different set of flags for -ftrivial-auto-var-init
|
||||
# Simplify this contruct once old clang version support is dropped
|
||||
include(CheckCXXCompilerFlag)
|
||||
@@ -105,7 +116,9 @@ include(CMakeLists.libandroidfw.txt)
|
||||
include(CMakeLists.adb.txt)
|
||||
include(CMakeLists.sparse.txt)
|
||||
include(CMakeLists.fastboot.txt)
|
||||
+if(NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
include(CMakeLists.f2fstools.txt)
|
||||
+endif()
|
||||
include(CMakeLists.mke2fs.txt)
|
||||
include(CMakeLists.partition.txt)
|
||||
include(CMakeLists.mkbootimg.txt)
|
||||
@@ -124,13 +137,15 @@ install(TARGETS
|
||||
lpflash
|
||||
lpmake
|
||||
lpunpack
|
||||
- make_f2fs
|
||||
- sload_f2fs
|
||||
simg2img
|
||||
ext2simg
|
||||
DESTINATION bin)
|
||||
|
||||
-if(NOT APPLE)
|
||||
+if(NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
+ install(TARGETS make_f2fs sload_f2fs DESTINATION bin)
|
||||
+endif()
|
||||
+
|
||||
+if(NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
install(TARGETS
|
||||
e2fsdroid
|
||||
DESTINATION bin)
|
||||
63
devel/adb/patches/patch-vendor_adb_client_usb_libusb_cpp
Normal file
63
devel/adb/patches/patch-vendor_adb_client_usb_libusb_cpp
Normal file
@@ -0,0 +1,63 @@
|
||||
Index: vendor/adb/client/usb_libusb.cpp
|
||||
--- vendor/adb/client/usb_libusb.cpp.orig
|
||||
+++ vendor/adb/client/usb_libusb.cpp
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
+#include <algorithm>
|
||||
#include <atomic>
|
||||
#include <chrono>
|
||||
#include <condition_variable>
|
||||
@@ -1042,7 +1043,50 @@ void usb_init() {
|
||||
LIBUSB_CLASS_PER_INTERFACE, hotplug_callback, nullptr, nullptr);
|
||||
|
||||
if (rc != LIBUSB_SUCCESS) {
|
||||
- LOG(FATAL) << "failed to register libusb hotplug callback";
|
||||
+ LOG(WARNING) << "libusb hotplug not supported (" << libusb_error_name(rc)
|
||||
+ << "), falling back to polling";
|
||||
+ // Spawn a polling thread to detect USB devices without hotplug.
|
||||
+ std::thread([]() {
|
||||
+ adb_thread_setname("libusb poll");
|
||||
+ std::vector<libusb_device*> known;
|
||||
+ for (;;) {
|
||||
+ libusb_device** list = nullptr;
|
||||
+ ssize_t n = libusb_get_device_list(nullptr, &list);
|
||||
+ if (n >= 0) {
|
||||
+ for (ssize_t i = 0; i < n; ++i) {
|
||||
+ libusb_device* dev = list[i];
|
||||
+ if (std::find(known.begin(), known.end(), dev) == known.end()) {
|
||||
+ libusb_ref_device(dev);
|
||||
+ device_connected(dev);
|
||||
+ known.push_back(dev);
|
||||
+ }
|
||||
+ }
|
||||
+ for (auto it = known.begin(); it != known.end(); ) {
|
||||
+ bool present = false;
|
||||
+ for (ssize_t i = 0; i < n; ++i) {
|
||||
+ if (list[i] == *it) { present = true; break; }
|
||||
+ }
|
||||
+ if (!present) {
|
||||
+ device_disconnected(*it);
|
||||
+ libusb_unref_device(*it);
|
||||
+ it = known.erase(it);
|
||||
+ } else {
|
||||
+ ++it;
|
||||
+ }
|
||||
+ }
|
||||
+ libusb_free_device_list(list, 1);
|
||||
+ adb_notify_device_scan_complete();
|
||||
+ }
|
||||
+ std::this_thread::sleep_for(std::chrono::seconds(1));
|
||||
+ }
|
||||
+ }).detach();
|
||||
+ std::thread([]() {
|
||||
+ adb_thread_setname("libusb");
|
||||
+ while (true) {
|
||||
+ libusb_handle_events(nullptr);
|
||||
+ }
|
||||
+ }).detach();
|
||||
+ return;
|
||||
}
|
||||
|
||||
// Spawn a thread for libusb_handle_events.
|
||||
25
devel/adb/patches/patch-vendor_adb_sysdeps_h
Normal file
25
devel/adb/patches/patch-vendor_adb_sysdeps_h
Normal file
@@ -0,0 +1,25 @@
|
||||
Index: vendor/adb/sysdeps.h
|
||||
--- vendor/adb/sysdeps.h.orig
|
||||
+++ vendor/adb/sysdeps.h
|
||||
@@ -409,6 +409,9 @@ size_t ParseCompleteUTF8(const char* first, const char
|
||||
#include <netinet/tcp.h>
|
||||
#include <poll.h>
|
||||
#include <pthread.h>
|
||||
+#ifdef __OpenBSD__
|
||||
+#include <pthread_np.h>
|
||||
+#endif
|
||||
#include <signal.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdint.h>
|
||||
@@ -652,6 +655,11 @@ inline int adb_socket_get_local_port(borrowed_fd fd) {
|
||||
static inline int adb_thread_setname(const std::string& name) {
|
||||
#ifdef __APPLE__
|
||||
return pthread_setname_np(name.c_str());
|
||||
+#elif defined(__OpenBSD__)
|
||||
+ char buf[16];
|
||||
+ strlcpy(buf, name.c_str(), sizeof(buf));
|
||||
+ pthread_set_name_np(pthread_self(), buf);
|
||||
+ return 0;
|
||||
#else
|
||||
// Both bionic and glibc's pthread_setname_np fails rather than truncating long strings.
|
||||
// glibc doesn't have strlcpy, so we have to fake it.
|
||||
@@ -0,0 +1,15 @@
|
||||
Index: vendor/core/libutils/include/utils/Condition.h
|
||||
--- vendor/core/libutils/include/utils/Condition.h.orig
|
||||
+++ vendor/core/libutils/include/utils/Condition.h
|
||||
@@ -103,9 +103,11 @@ inline Condition::Condition(int type) {
|
||||
pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
|
||||
#endif
|
||||
|
||||
+#ifndef __OpenBSD__
|
||||
if (type == SHARED) {
|
||||
pthread_condattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
|
||||
}
|
||||
+#endif
|
||||
|
||||
pthread_cond_init(&mCond, &attr);
|
||||
pthread_condattr_destroy(&attr);
|
||||
@@ -0,0 +1,13 @@
|
||||
Index: vendor/core/libutils/include/utils/Mutex.h
|
||||
--- vendor/core/libutils/include/utils/Mutex.h.orig
|
||||
+++ vendor/core/libutils/include/utils/Mutex.h
|
||||
@@ -169,7 +169,9 @@ inline Mutex::Mutex(int type, __attribute__((unused))
|
||||
if (type == SHARED) {
|
||||
pthread_mutexattr_t attr;
|
||||
pthread_mutexattr_init(&attr);
|
||||
+#ifndef __OpenBSD__
|
||||
pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
|
||||
+#endif
|
||||
pthread_mutex_init(&mMutex, &attr);
|
||||
pthread_mutexattr_destroy(&attr);
|
||||
} else {
|
||||
9
devel/adb/patches/patch-vendor_e2fsprogs_lib_config_h
Normal file
9
devel/adb/patches/patch-vendor_e2fsprogs_lib_config_h
Normal file
@@ -0,0 +1,9 @@
|
||||
Index: vendor/e2fsprogs/lib/config.h
|
||||
--- vendor/e2fsprogs/lib/config.h.orig
|
||||
+++ vendor/e2fsprogs/lib/config.h
|
||||
@@ -1,4 +1,4 @@
|
||||
-#ifndef __APPLE__
|
||||
+#if !defined(__APPLE__) && !defined(__OpenBSD__)
|
||||
#define HAVE_MALLOC_H 1
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
protobuf >= 22 returns absl::string_view from Descriptor::full_name();
|
||||
wrap in std::string() so operator+ resolves.
|
||||
|
||||
Index: vendor/extras/libjsonpb/parse/jsonpb.cpp
|
||||
--- vendor/extras/libjsonpb/parse/jsonpb.cpp.orig
|
||||
+++ vendor/extras/libjsonpb/parse/jsonpb.cpp
|
||||
@@ -33,7 +33,7 @@ using google::protobuf::util::TypeResolver;
|
||||
static constexpr char kTypeUrlPrefix[] = "type.googleapis.com";
|
||||
|
||||
std::string GetTypeUrl(const Message& message) {
|
||||
- return std::string(kTypeUrlPrefix) + "/" + message.GetDescriptor()->full_name();
|
||||
+ return std::string(kTypeUrlPrefix) + "/" + std::string(message.GetDescriptor()->full_name());
|
||||
}
|
||||
|
||||
ErrorOr<std::string> MessageToJsonString(const Message& message) {
|
||||
@@ -0,0 +1,15 @@
|
||||
Index: vendor/extras/partition_tools/lpdump.cc
|
||||
--- vendor/extras/partition_tools/lpdump.cc.orig
|
||||
+++ vendor/extras/partition_tools/lpdump.cc
|
||||
@@ -16,10 +16,10 @@
|
||||
|
||||
#include <getopt.h>
|
||||
#include <inttypes.h>
|
||||
+#include <sys/types.h>
|
||||
#include <sys/mount.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/statvfs.h>
|
||||
-#include <sys/types.h>
|
||||
#include <sysexits.h>
|
||||
#include <unistd.h>
|
||||
|
||||
62
devel/adb/patches/patch-vendor_libbase_file_cpp
Normal file
62
devel/adb/patches/patch-vendor_libbase_file_cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
Index: vendor/libbase/file.cpp
|
||||
--- vendor/libbase/file.cpp.orig
|
||||
+++ vendor/libbase/file.cpp
|
||||
@@ -26,6 +26,9 @@
|
||||
#include <sys/param.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
+#ifdef __OpenBSD__
|
||||
+#include <sys/sysctl.h>
|
||||
+#endif
|
||||
#include <unistd.h>
|
||||
|
||||
#include <memory>
|
||||
@@ -508,6 +511,48 @@ std::string GetExecutablePath() {
|
||||
return path;
|
||||
#elif defined(__EMSCRIPTEN__)
|
||||
abort();
|
||||
+#elif defined(__OpenBSD__)
|
||||
+ // Try /proc/curproc/file if procfs is mounted.
|
||||
+ {
|
||||
+ std::string path;
|
||||
+ if (android::base::Readlink("/proc/curproc/file", &path) && !path.empty()) {
|
||||
+ return path;
|
||||
+ }
|
||||
+ }
|
||||
+ // Fall back to sysctl(KERN_PROC_ARGV) to recover argv[0] and resolve it.
|
||||
+ {
|
||||
+ int mib[4] = {CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_ARGV};
|
||||
+ size_t len = 0;
|
||||
+ if (sysctl(mib, 4, nullptr, &len, nullptr, 0) != -1 && len > 0) {
|
||||
+ std::vector<char> buf(len);
|
||||
+ if (sysctl(mib, 4, buf.data(), &len, nullptr, 0) != -1) {
|
||||
+ char* argv0 = reinterpret_cast<char**>(buf.data())[0];
|
||||
+ if (argv0 != nullptr) {
|
||||
+ if (argv0[0] == '/') {
|
||||
+ return argv0; // Already absolute.
|
||||
+ }
|
||||
+ // Search PATH directories for argv0.
|
||||
+ if (const char* path_env = getenv("PATH")) {
|
||||
+ const char* p = path_env;
|
||||
+ while (*p) {
|
||||
+ const char* q = strchr(p, ':');
|
||||
+ size_t dirlen = q ? (size_t)(q - p) : strlen(p);
|
||||
+ std::string full(p, dirlen);
|
||||
+ full += '/';
|
||||
+ full += argv0;
|
||||
+ char resolved[PATH_MAX];
|
||||
+ if (realpath(full.c_str(), resolved) != nullptr) {
|
||||
+ return resolved;
|
||||
+ }
|
||||
+ p += dirlen;
|
||||
+ if (*p == ':') ++p;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return "";
|
||||
#else
|
||||
#error unknown OS
|
||||
#endif
|
||||
@@ -0,0 +1,15 @@
|
||||
Index: vendor/libbase/include/android-base/endian.h
|
||||
--- vendor/libbase/include/android-base/endian.h.orig
|
||||
+++ vendor/libbase/include/android-base/endian.h
|
||||
@@ -25,6 +25,11 @@
|
||||
|
||||
#include <sys/endian.h>
|
||||
|
||||
+#elif defined(__OpenBSD__)
|
||||
+#include <sys/endian.h>
|
||||
+#define htonq(x) htobe64(x)
|
||||
+#define ntohq(x) be64toh(x)
|
||||
+
|
||||
#elif defined(__GLIBC__) || defined(ANDROID_HOST_MUSL) || defined(__linux__)
|
||||
|
||||
/* glibc and musl's <endian.h> are like bionic's <sys/endian.h>. */
|
||||
@@ -0,0 +1,13 @@
|
||||
Index: vendor/libbase/include/android-base/off64_t.h
|
||||
--- vendor/libbase/include/android-base/off64_t.h.orig
|
||||
+++ vendor/libbase/include/android-base/off64_t.h
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
-#if defined(__APPLE__)
|
||||
-/** Mac OS has always had a 64-bit off_t, so it doesn't have off64_t. */
|
||||
+#if defined(__APPLE__) || defined(__OpenBSD__)
|
||||
+/** Mac OS and OpenBSD have always had a 64-bit off_t, so they don't have off64_t. */
|
||||
typedef off_t off64_t;
|
||||
#endif
|
||||
12
devel/adb/patches/patch-vendor_libbase_logging_cpp
Normal file
12
devel/adb/patches/patch-vendor_libbase_logging_cpp
Normal file
@@ -0,0 +1,12 @@
|
||||
Index: vendor/libbase/logging.cpp
|
||||
--- vendor/libbase/logging.cpp.orig
|
||||
+++ vendor/libbase/logging.cpp
|
||||
@@ -62,7 +62,7 @@ namespace android {
|
||||
namespace base {
|
||||
|
||||
// BSD-based systems like Android/macOS have getprogname(). Others need us to provide one.
|
||||
-#if !defined(__APPLE__) && !defined(__BIONIC__)
|
||||
+#if !defined(__APPLE__) && !defined(__BIONIC__) && !defined(__OpenBSD__)
|
||||
static const char* getprogname() {
|
||||
#ifdef _WIN32
|
||||
static bool first = true;
|
||||
12
devel/adb/patches/patch-vendor_libbase_threads_cpp
Normal file
12
devel/adb/patches/patch-vendor_libbase_threads_cpp
Normal file
@@ -0,0 +1,12 @@
|
||||
Index: vendor/libbase/threads.cpp
|
||||
--- vendor/libbase/threads.cpp.orig
|
||||
+++ vendor/libbase/threads.cpp
|
||||
@@ -37,6 +37,8 @@ uint64_t GetThreadId() {
|
||||
uint64_t tid;
|
||||
pthread_threadid_np(NULL, &tid);
|
||||
return tid;
|
||||
+#elif defined(__OpenBSD__)
|
||||
+ return (uint64_t)getthrid();
|
||||
#elif defined(__linux__)
|
||||
return syscall(__NR_gettid);
|
||||
#elif defined(_WIN32)
|
||||
@@ -0,0 +1,12 @@
|
||||
Index: vendor/logging/liblog/logger_write.cpp
|
||||
--- vendor/logging/liblog/logger_write.cpp.orig
|
||||
+++ vendor/logging/liblog/logger_write.cpp
|
||||
@@ -120,7 +120,7 @@ void __android_log_close() {
|
||||
}
|
||||
|
||||
// BSD-based systems like Android/macOS have getprogname(). Others need us to provide one.
|
||||
-#if !defined(__APPLE__) && !defined(__BIONIC__)
|
||||
+#if !defined(__APPLE__) && !defined(__BIONIC__) && !defined(__OpenBSD__)
|
||||
static const char* getprogname() {
|
||||
#ifdef _WIN32
|
||||
static bool first = true;
|
||||
@@ -0,0 +1,13 @@
|
||||
Index: vendor/selinux/libselinux/src/label_file.h
|
||||
--- vendor/selinux/libselinux/src/label_file.h.orig
|
||||
+++ vendor/selinux/libselinux/src/label_file.h
|
||||
@@ -6,7 +6,9 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <sys/stat.h>
|
||||
+#ifndef __OpenBSD__
|
||||
#include <sys/xattr.h>
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* regex.h/c were introduced to hold all dependencies on the regular
|
||||
@@ -0,0 +1,29 @@
|
||||
Index: vendor/selinux/libsepol/src/private.h
|
||||
--- vendor/selinux/libsepol/src/private.h.orig
|
||||
+++ vendor/selinux/libsepol/src/private.h
|
||||
@@ -5,7 +5,7 @@
|
||||
#include <sepol/policydb/policydb.h>
|
||||
|
||||
|
||||
-#ifdef __APPLE__
|
||||
+#if defined(__APPLE__) || defined(__OpenBSD__)
|
||||
#include <sys/types.h>
|
||||
#include <machine/endian.h>
|
||||
#else
|
||||
@@ -13,9 +13,15 @@
|
||||
#include <endian.h>
|
||||
#endif
|
||||
|
||||
+#ifdef __OpenBSD__
|
||||
+#define bswap_16 bswap16
|
||||
+#define bswap_32 bswap32
|
||||
+#define bswap_64 bswap64
|
||||
+#endif
|
||||
+
|
||||
#include <errno.h>
|
||||
|
||||
-#ifdef __APPLE__
|
||||
+#if defined(__APPLE__) || defined(__OpenBSD__)
|
||||
#define __BYTE_ORDER BYTE_ORDER
|
||||
#define __LITTLE_ENDIAN LITTLE_ENDIAN
|
||||
#endif
|
||||
2
devel/adb/pkg/DESCR
Normal file
2
devel/adb/pkg/DESCR
Normal file
@@ -0,0 +1,2 @@
|
||||
Android Debug Bridge (adb) is a command line tool for communicating with Android
|
||||
emulators and devices.
|
||||
30
devel/adb/pkg/PLIST
Normal file
30
devel/adb/pkg/PLIST
Normal file
@@ -0,0 +1,30 @@
|
||||
@bin bin/adb
|
||||
@bin bin/append2simg
|
||||
bin/avbtool
|
||||
@bin bin/ext2simg
|
||||
@bin bin/fastboot
|
||||
@bin bin/img2simg
|
||||
@bin bin/lpadd
|
||||
@bin bin/lpdump
|
||||
@bin bin/lpflash
|
||||
@bin bin/lpmake
|
||||
@bin bin/lpunpack
|
||||
bin/mkbootimg
|
||||
bin/mkdtboimg
|
||||
@bin bin/mke2fs.android
|
||||
bin/repack_bootimg
|
||||
@bin bin/simg2img
|
||||
bin/unpack_bootimg
|
||||
@man man/man1/adb.1
|
||||
share/android-tools/
|
||||
share/android-tools/completions/
|
||||
share/android-tools/completions/adb
|
||||
share/android-tools/completions/fastboot
|
||||
share/android-tools/mkbootimg/
|
||||
share/android-tools/mkbootimg/gki/
|
||||
share/android-tools/mkbootimg/gki/generate_gki_certificate.py
|
||||
share/android-tools/mkbootimg/mkbootimg.py
|
||||
share/bash-completion/
|
||||
share/bash-completion/completions/
|
||||
share/bash-completion/completions/adb
|
||||
share/bash-completion/completions/fastboot
|
||||
29
devel/aichat/Makefile
Normal file
29
devel/aichat/Makefile
Normal file
@@ -0,0 +1,29 @@
|
||||
COMMENT = all-in-one AI powered CLI chat tool
|
||||
|
||||
GH_ACCOUNT = sigoden
|
||||
GH_PROJECT = aichat
|
||||
GH_TAGNAME = v0.30.0
|
||||
|
||||
CATEGORIES = devel
|
||||
|
||||
HOMEPAGE = https://github.com/sigoden/aichat
|
||||
|
||||
MAINTAINER = Stefan Hagen <sh+ports@codevoid.de>
|
||||
|
||||
# MIT
|
||||
PERMIT_PACKAGE = Yes
|
||||
|
||||
WANTLIB += ${MODCARGO_WANTLIB} m onig
|
||||
|
||||
MODULES = devel/cargo
|
||||
|
||||
LIB_DEPENDS = textproc/oniguruma
|
||||
|
||||
CONFIGURE_STYLE = cargo
|
||||
SEPARATE_BUILD = Yes
|
||||
|
||||
NO_TEST = Yes
|
||||
|
||||
.include "crates.inc"
|
||||
|
||||
.include <bsd.port.mk>
|
||||
467
devel/aichat/crates.inc
Normal file
467
devel/aichat/crates.inc
Normal file
@@ -0,0 +1,467 @@
|
||||
# run: make modcargo-gen-crates-licenses
|
||||
MODCARGO_CRATES += addr2line 0.24.2
|
||||
MODCARGO_CRATES += adler2 2.0.1
|
||||
MODCARGO_CRATES += ahash 0.8.12
|
||||
MODCARGO_CRATES += aho-corasick 1.1.3
|
||||
MODCARGO_CRATES += allocator-api2 0.2.21
|
||||
MODCARGO_CRATES += android-tzdata 0.1.1
|
||||
MODCARGO_CRATES += android_system_properties 0.1.5
|
||||
MODCARGO_CRATES += anndists 0.1.3
|
||||
MODCARGO_CRATES += ansi_colours 1.2.3
|
||||
MODCARGO_CRATES += anstream 0.6.19
|
||||
MODCARGO_CRATES += anstyle 1.0.11
|
||||
MODCARGO_CRATES += anstyle-parse 0.2.7
|
||||
MODCARGO_CRATES += anstyle-query 1.1.3
|
||||
MODCARGO_CRATES += anstyle-wincon 3.0.9
|
||||
MODCARGO_CRATES += anyhow 1.0.98
|
||||
MODCARGO_CRATES += arboard 3.6.0
|
||||
MODCARGO_CRATES += async-recursion 1.1.1
|
||||
MODCARGO_CRATES += async-trait 0.1.88
|
||||
MODCARGO_CRATES += atomic-waker 1.1.2
|
||||
MODCARGO_CRATES += autocfg 1.5.0
|
||||
MODCARGO_CRATES += aws-smithy-eventstream 0.60.9
|
||||
MODCARGO_CRATES += aws-smithy-types 1.3.2
|
||||
MODCARGO_CRATES += backtrace 0.3.75
|
||||
MODCARGO_CRATES += base64 0.22.1
|
||||
MODCARGO_CRATES += base64-simd 0.8.0
|
||||
MODCARGO_CRATES += bincode 1.3.3
|
||||
MODCARGO_CRATES += bincode 2.0.1
|
||||
MODCARGO_CRATES += bit-set 0.8.0
|
||||
MODCARGO_CRATES += bit-vec 0.8.0
|
||||
MODCARGO_CRATES += bitflags 1.3.2
|
||||
MODCARGO_CRATES += bitflags 2.9.1
|
||||
MODCARGO_CRATES += block-buffer 0.10.4
|
||||
MODCARGO_CRATES += bm25 2.3.0
|
||||
MODCARGO_CRATES += bumpalo 3.19.0
|
||||
MODCARGO_CRATES += bytemuck 1.23.1
|
||||
MODCARGO_CRATES += byteorder 1.5.0
|
||||
MODCARGO_CRATES += bytes 1.10.1
|
||||
MODCARGO_CRATES += bytes-utils 0.1.4
|
||||
MODCARGO_CRATES += cached 0.55.1
|
||||
MODCARGO_CRATES += cached_proc_macro 0.24.0
|
||||
MODCARGO_CRATES += cached_proc_macro_types 0.1.1
|
||||
MODCARGO_CRATES += cc 1.2.28
|
||||
MODCARGO_CRATES += cfg-if 1.0.1
|
||||
MODCARGO_CRATES += cfg_aliases 0.2.1
|
||||
MODCARGO_CRATES += chrono 0.4.41
|
||||
MODCARGO_CRATES += clap 4.5.40
|
||||
MODCARGO_CRATES += clap_builder 4.5.40
|
||||
MODCARGO_CRATES += clap_derive 4.5.40
|
||||
MODCARGO_CRATES += clap_lex 0.7.5
|
||||
MODCARGO_CRATES += clipboard-win 5.4.0
|
||||
MODCARGO_CRATES += colorchoice 1.0.4
|
||||
MODCARGO_CRATES += combine 4.6.7
|
||||
MODCARGO_CRATES += core-foundation 0.10.1
|
||||
MODCARGO_CRATES += core-foundation-sys 0.8.7
|
||||
MODCARGO_CRATES += cpu-time 1.0.0
|
||||
MODCARGO_CRATES += cpufeatures 0.2.17
|
||||
MODCARGO_CRATES += crc32fast 1.4.2
|
||||
MODCARGO_CRATES += crossbeam-deque 0.8.6
|
||||
MODCARGO_CRATES += crossbeam-epoch 0.9.18
|
||||
MODCARGO_CRATES += crossbeam-utils 0.8.21
|
||||
MODCARGO_CRATES += crossterm 0.25.0
|
||||
MODCARGO_CRATES += crossterm 0.28.1
|
||||
MODCARGO_CRATES += crossterm_winapi 0.9.1
|
||||
MODCARGO_CRATES += crypto-common 0.1.6
|
||||
MODCARGO_CRATES += cssparser 0.34.0
|
||||
MODCARGO_CRATES += cssparser-macros 0.6.1
|
||||
MODCARGO_CRATES += darling 0.20.11
|
||||
MODCARGO_CRATES += darling_core 0.20.11
|
||||
MODCARGO_CRATES += darling_macro 0.20.11
|
||||
MODCARGO_CRATES += deranged 0.4.0
|
||||
MODCARGO_CRATES += derive_more 0.99.20
|
||||
MODCARGO_CRATES += deunicode 1.6.2
|
||||
MODCARGO_CRATES += diff 0.1.13
|
||||
MODCARGO_CRATES += digest 0.10.7
|
||||
MODCARGO_CRATES += dirs 6.0.0
|
||||
MODCARGO_CRATES += dirs-sys 0.5.0
|
||||
MODCARGO_CRATES += dispatch2 0.3.0
|
||||
MODCARGO_CRATES += displaydoc 0.2.5
|
||||
MODCARGO_CRATES += downcast-rs 1.2.1
|
||||
MODCARGO_CRATES += dtoa 1.0.10
|
||||
MODCARGO_CRATES += dtoa-short 0.3.5
|
||||
MODCARGO_CRATES += duct 1.0.0
|
||||
MODCARGO_CRATES += dyn-clone 1.0.19
|
||||
MODCARGO_CRATES += ego-tree 0.10.0
|
||||
MODCARGO_CRATES += either 1.15.0
|
||||
MODCARGO_CRATES += enum-as-inner 0.6.1
|
||||
MODCARGO_CRATES += env_filter 0.1.3
|
||||
MODCARGO_CRATES += env_home 0.1.0
|
||||
MODCARGO_CRATES += env_logger 0.11.8
|
||||
MODCARGO_CRATES += equivalent 1.0.2
|
||||
MODCARGO_CRATES += errno 0.3.13
|
||||
MODCARGO_CRATES += error-code 3.3.2
|
||||
MODCARGO_CRATES += eventsource-stream 0.2.3
|
||||
MODCARGO_CRATES += fancy-regex 0.14.0
|
||||
MODCARGO_CRATES += fastrand 2.3.0
|
||||
MODCARGO_CRATES += fd-lock 4.0.4
|
||||
MODCARGO_CRATES += filedescriptor 0.8.3
|
||||
MODCARGO_CRATES += fixedbitset 0.4.2
|
||||
MODCARGO_CRATES += flate2 1.1.2
|
||||
MODCARGO_CRATES += fnv 1.0.7
|
||||
MODCARGO_CRATES += foldhash 0.1.5
|
||||
MODCARGO_CRATES += form_urlencoded 1.2.1
|
||||
MODCARGO_CRATES += futf 0.1.5
|
||||
MODCARGO_CRATES += futures-channel 0.3.31
|
||||
MODCARGO_CRATES += futures-core 0.3.31
|
||||
MODCARGO_CRATES += futures-io 0.3.31
|
||||
MODCARGO_CRATES += futures-macro 0.3.31
|
||||
MODCARGO_CRATES += futures-sink 0.3.31
|
||||
MODCARGO_CRATES += futures-task 0.3.31
|
||||
MODCARGO_CRATES += futures-timer 3.0.3
|
||||
MODCARGO_CRATES += futures-util 0.3.31
|
||||
MODCARGO_CRATES += fuzzy-matcher 0.3.7
|
||||
MODCARGO_CRATES += fxhash 0.2.1
|
||||
MODCARGO_CRATES += generator 0.8.5
|
||||
MODCARGO_CRATES += generic-array 0.14.7
|
||||
MODCARGO_CRATES += gethostname 0.4.3
|
||||
MODCARGO_CRATES += getrandom 0.2.16
|
||||
MODCARGO_CRATES += getrandom 0.3.3
|
||||
MODCARGO_CRATES += gimli 0.31.1
|
||||
MODCARGO_CRATES += h2 0.4.11
|
||||
MODCARGO_CRATES += hashbrown 0.14.5
|
||||
MODCARGO_CRATES += hashbrown 0.15.4
|
||||
MODCARGO_CRATES += heck 0.5.0
|
||||
MODCARGO_CRATES += hermit-abi 0.5.2
|
||||
MODCARGO_CRATES += hmac 0.12.1
|
||||
MODCARGO_CRATES += hnsw_rs 0.3.2
|
||||
MODCARGO_CRATES += html5ever 0.27.0
|
||||
MODCARGO_CRATES += html5ever 0.29.1
|
||||
MODCARGO_CRATES += html_to_markdown 0.1.0
|
||||
MODCARGO_CRATES += http 1.3.1
|
||||
MODCARGO_CRATES += http-body 1.0.1
|
||||
MODCARGO_CRATES += http-body-util 0.1.3
|
||||
MODCARGO_CRATES += httparse 1.10.1
|
||||
MODCARGO_CRATES += httpdate 1.0.3
|
||||
MODCARGO_CRATES += hyper 1.6.0
|
||||
MODCARGO_CRATES += hyper-rustls 0.27.7
|
||||
MODCARGO_CRATES += hyper-util 0.1.14
|
||||
MODCARGO_CRATES += iana-time-zone 0.1.63
|
||||
MODCARGO_CRATES += iana-time-zone-haiku 0.1.2
|
||||
MODCARGO_CRATES += icu_collections 2.0.0
|
||||
MODCARGO_CRATES += icu_locale_core 2.0.0
|
||||
MODCARGO_CRATES += icu_normalizer 2.0.0
|
||||
MODCARGO_CRATES += icu_normalizer_data 2.0.0
|
||||
MODCARGO_CRATES += icu_properties 2.0.1
|
||||
MODCARGO_CRATES += icu_properties_data 2.0.1
|
||||
MODCARGO_CRATES += icu_provider 2.0.0
|
||||
MODCARGO_CRATES += ident_case 1.0.1
|
||||
MODCARGO_CRATES += idna 1.0.3
|
||||
MODCARGO_CRATES += idna_adapter 1.2.1
|
||||
MODCARGO_CRATES += indexmap 2.10.0
|
||||
MODCARGO_CRATES += inquire 0.7.5
|
||||
MODCARGO_CRATES += io-uring 0.7.8
|
||||
MODCARGO_CRATES += ipnet 2.11.0
|
||||
MODCARGO_CRATES += iri-string 0.7.8
|
||||
MODCARGO_CRATES += is-terminal 0.4.16
|
||||
MODCARGO_CRATES += is_terminal_polyfill 1.70.1
|
||||
MODCARGO_CRATES += itertools 0.13.0
|
||||
MODCARGO_CRATES += itoa 1.0.15
|
||||
MODCARGO_CRATES += jiff 0.2.15
|
||||
MODCARGO_CRATES += jiff-static 0.2.15
|
||||
MODCARGO_CRATES += js-sys 0.3.77
|
||||
MODCARGO_CRATES += json-patch 4.0.0
|
||||
MODCARGO_CRATES += jsonptr 0.7.1
|
||||
MODCARGO_CRATES += lazy_static 1.5.0
|
||||
MODCARGO_CRATES += libc 0.2.174
|
||||
MODCARGO_CRATES += libredox 0.1.4
|
||||
MODCARGO_CRATES += linux-raw-sys 0.4.15
|
||||
MODCARGO_CRATES += linux-raw-sys 0.9.4
|
||||
MODCARGO_CRATES += litemap 0.8.0
|
||||
MODCARGO_CRATES += lock_api 0.4.13
|
||||
MODCARGO_CRATES += log 0.4.27
|
||||
MODCARGO_CRATES += loom 0.7.2
|
||||
MODCARGO_CRATES += lru-slab 0.1.2
|
||||
MODCARGO_CRATES += mac 0.1.1
|
||||
MODCARGO_CRATES += mach2 0.4.3
|
||||
MODCARGO_CRATES += markup5ever 0.12.1
|
||||
MODCARGO_CRATES += markup5ever 0.14.1
|
||||
MODCARGO_CRATES += markup5ever_rcdom 0.3.0
|
||||
MODCARGO_CRATES += match_token 0.1.0
|
||||
MODCARGO_CRATES += matchers 0.1.0
|
||||
MODCARGO_CRATES += memchr 2.7.5
|
||||
MODCARGO_CRATES += memoffset 0.7.1
|
||||
MODCARGO_CRATES += mime 0.3.17
|
||||
MODCARGO_CRATES += mime_guess 2.0.5
|
||||
MODCARGO_CRATES += minimal-lexical 0.2.1
|
||||
MODCARGO_CRATES += miniz_oxide 0.8.9
|
||||
MODCARGO_CRATES += mio 0.8.11
|
||||
MODCARGO_CRATES += mio 1.0.4
|
||||
MODCARGO_CRATES += mmap-rs 0.6.1
|
||||
MODCARGO_CRATES += new_debug_unreachable 1.0.6
|
||||
MODCARGO_CRATES += newline-converter 0.3.0
|
||||
MODCARGO_CRATES += nix 0.26.4
|
||||
MODCARGO_CRATES += nom 7.1.3
|
||||
MODCARGO_CRATES += nu-ansi-term 0.46.0
|
||||
MODCARGO_CRATES += nu-ansi-term 0.50.1
|
||||
MODCARGO_CRATES += num-conv 0.1.0
|
||||
MODCARGO_CRATES += num-integer 0.1.46
|
||||
MODCARGO_CRATES += num-traits 0.2.19
|
||||
MODCARGO_CRATES += num_cpus 1.17.0
|
||||
MODCARGO_CRATES += num_threads 0.1.7
|
||||
MODCARGO_CRATES += objc2 0.6.1
|
||||
MODCARGO_CRATES += objc2-app-kit 0.3.1
|
||||
MODCARGO_CRATES += objc2-core-foundation 0.3.1
|
||||
MODCARGO_CRATES += objc2-core-graphics 0.3.1
|
||||
MODCARGO_CRATES += objc2-encode 4.1.0
|
||||
MODCARGO_CRATES += objc2-foundation 0.3.1
|
||||
MODCARGO_CRATES += objc2-io-surface 0.3.1
|
||||
MODCARGO_CRATES += object 0.36.7
|
||||
MODCARGO_CRATES += once_cell 1.21.3
|
||||
MODCARGO_CRATES += once_cell_polyfill 1.70.1
|
||||
MODCARGO_CRATES += onig 6.5.1
|
||||
MODCARGO_CRATES += onig_sys 69.9.1
|
||||
MODCARGO_CRATES += openssl-probe 0.1.6
|
||||
MODCARGO_CRATES += option-ext 0.2.0
|
||||
MODCARGO_CRATES += os_info 3.12.0
|
||||
MODCARGO_CRATES += os_pipe 1.2.2
|
||||
MODCARGO_CRATES += outref 0.5.2
|
||||
MODCARGO_CRATES += overload 0.1.1
|
||||
MODCARGO_CRATES += parking_lot 0.12.4
|
||||
MODCARGO_CRATES += parking_lot_core 0.9.11
|
||||
MODCARGO_CRATES += path-absolutize 3.1.1
|
||||
MODCARGO_CRATES += path-dedot 3.1.1
|
||||
MODCARGO_CRATES += percent-encoding 2.3.1
|
||||
MODCARGO_CRATES += petgraph 0.6.5
|
||||
MODCARGO_CRATES += phf 0.11.3
|
||||
MODCARGO_CRATES += phf_codegen 0.11.3
|
||||
MODCARGO_CRATES += phf_generator 0.11.3
|
||||
MODCARGO_CRATES += phf_macros 0.11.3
|
||||
MODCARGO_CRATES += phf_shared 0.11.3
|
||||
MODCARGO_CRATES += pin-project-lite 0.2.16
|
||||
MODCARGO_CRATES += pin-utils 0.1.0
|
||||
MODCARGO_CRATES += pkg-config 0.3.32
|
||||
MODCARGO_CRATES += plist 1.7.2
|
||||
MODCARGO_CRATES += portable-atomic 1.11.1
|
||||
MODCARGO_CRATES += portable-atomic-util 0.2.4
|
||||
MODCARGO_CRATES += potential_utf 0.1.2
|
||||
MODCARGO_CRATES += powerfmt 0.2.0
|
||||
MODCARGO_CRATES += ppv-lite86 0.2.21
|
||||
MODCARGO_CRATES += precomputed-hash 0.1.1
|
||||
MODCARGO_CRATES += pretty_assertions 1.4.1
|
||||
MODCARGO_CRATES += proc-macro2 1.0.95
|
||||
MODCARGO_CRATES += quick-xml 0.37.5
|
||||
MODCARGO_CRATES += quinn 0.11.8
|
||||
MODCARGO_CRATES += quinn-proto 0.11.12
|
||||
MODCARGO_CRATES += quinn-udp 0.5.13
|
||||
MODCARGO_CRATES += quote 1.0.40
|
||||
MODCARGO_CRATES += r-efi 5.3.0
|
||||
MODCARGO_CRATES += rand 0.8.5
|
||||
MODCARGO_CRATES += rand 0.9.1
|
||||
MODCARGO_CRATES += rand_chacha 0.9.0
|
||||
MODCARGO_CRATES += rand_core 0.6.4
|
||||
MODCARGO_CRATES += rand_core 0.9.3
|
||||
MODCARGO_CRATES += rayon 1.10.0
|
||||
MODCARGO_CRATES += rayon-core 1.12.1
|
||||
MODCARGO_CRATES += redox_syscall 0.5.13
|
||||
MODCARGO_CRATES += redox_users 0.5.0
|
||||
MODCARGO_CRATES += reedline 0.40.0
|
||||
MODCARGO_CRATES += regex 1.11.1
|
||||
MODCARGO_CRATES += regex-automata 0.1.10
|
||||
MODCARGO_CRATES += regex-automata 0.4.9
|
||||
MODCARGO_CRATES += regex-syntax 0.6.29
|
||||
MODCARGO_CRATES += regex-syntax 0.8.5
|
||||
MODCARGO_CRATES += reqwest 0.12.22
|
||||
MODCARGO_CRATES += reqwest-eventsource 0.6.0
|
||||
MODCARGO_CRATES += rgb 0.8.50
|
||||
MODCARGO_CRATES += ring 0.17.14
|
||||
MODCARGO_CRATES += rust-embed 8.7.2
|
||||
MODCARGO_CRATES += rust-embed-impl 8.7.2
|
||||
MODCARGO_CRATES += rust-embed-utils 8.7.2
|
||||
MODCARGO_CRATES += rust-stemmers 1.2.0
|
||||
MODCARGO_CRATES += rustc-demangle 0.1.25
|
||||
MODCARGO_CRATES += rustc-hash 2.1.1
|
||||
MODCARGO_CRATES += rustix 0.38.44
|
||||
MODCARGO_CRATES += rustix 1.0.7
|
||||
MODCARGO_CRATES += rustls 0.23.28
|
||||
MODCARGO_CRATES += rustls-native-certs 0.8.1
|
||||
MODCARGO_CRATES += rustls-pki-types 1.12.0
|
||||
MODCARGO_CRATES += rustls-webpki 0.103.3
|
||||
MODCARGO_CRATES += rustversion 1.0.21
|
||||
MODCARGO_CRATES += ryu 1.0.20
|
||||
MODCARGO_CRATES += same-file 1.0.6
|
||||
MODCARGO_CRATES += schannel 0.1.27
|
||||
MODCARGO_CRATES += scoped-tls 1.0.1
|
||||
MODCARGO_CRATES += scopeguard 1.2.0
|
||||
MODCARGO_CRATES += scraper 0.23.1
|
||||
MODCARGO_CRATES += security-framework 3.2.0
|
||||
MODCARGO_CRATES += security-framework-sys 2.14.0
|
||||
MODCARGO_CRATES += selectors 0.26.0
|
||||
MODCARGO_CRATES += serde 1.0.219
|
||||
MODCARGO_CRATES += serde_derive 1.0.219
|
||||
MODCARGO_CRATES += serde_json 1.0.140
|
||||
MODCARGO_CRATES += serde_urlencoded 0.7.1
|
||||
MODCARGO_CRATES += serde_yaml 0.9.34+deprecated
|
||||
MODCARGO_CRATES += servo_arc 0.4.1
|
||||
MODCARGO_CRATES += sha2 0.10.9
|
||||
MODCARGO_CRATES += sharded-slab 0.1.7
|
||||
MODCARGO_CRATES += shared_child 1.1.1
|
||||
MODCARGO_CRATES += shared_thread 0.1.0
|
||||
MODCARGO_CRATES += shell-words 1.1.0
|
||||
MODCARGO_CRATES += shlex 1.3.0
|
||||
MODCARGO_CRATES += sigchld 0.2.3
|
||||
MODCARGO_CRATES += signal-hook 0.3.18
|
||||
MODCARGO_CRATES += signal-hook-mio 0.2.4
|
||||
MODCARGO_CRATES += signal-hook-registry 1.4.5
|
||||
MODCARGO_CRATES += simplelog 0.12.2
|
||||
MODCARGO_CRATES += siphasher 1.0.1
|
||||
MODCARGO_CRATES += slab 0.4.10
|
||||
MODCARGO_CRATES += smallvec 1.15.1
|
||||
MODCARGO_CRATES += smawk 0.3.2
|
||||
MODCARGO_CRATES += socket2 0.5.10
|
||||
MODCARGO_CRATES += stable_deref_trait 1.2.0
|
||||
MODCARGO_CRATES += stop-words 0.8.1
|
||||
MODCARGO_CRATES += string_cache 0.8.9
|
||||
MODCARGO_CRATES += string_cache_codegen 0.5.4
|
||||
MODCARGO_CRATES += strip-ansi-escapes 0.2.1
|
||||
MODCARGO_CRATES += strsim 0.11.1
|
||||
MODCARGO_CRATES += strum 0.26.3
|
||||
MODCARGO_CRATES += strum_macros 0.26.4
|
||||
MODCARGO_CRATES += subtle 2.6.1
|
||||
MODCARGO_CRATES += syn 2.0.104
|
||||
MODCARGO_CRATES += sync_wrapper 1.0.2
|
||||
MODCARGO_CRATES += synstructure 0.13.2
|
||||
MODCARGO_CRATES += syntect 5.2.0
|
||||
MODCARGO_CRATES += sys-locale 0.3.2
|
||||
MODCARGO_CRATES += sysctl 0.5.5
|
||||
MODCARGO_CRATES += tempfile 3.20.0
|
||||
MODCARGO_CRATES += tendril 0.4.3
|
||||
MODCARGO_CRATES += termcolor 1.4.1
|
||||
MODCARGO_CRATES += terminal-colorsaurus 0.4.8
|
||||
MODCARGO_CRATES += terminal-trx 0.2.4
|
||||
MODCARGO_CRATES += textwrap 0.16.2
|
||||
MODCARGO_CRATES += thiserror 1.0.69
|
||||
MODCARGO_CRATES += thiserror 2.0.12
|
||||
MODCARGO_CRATES += thiserror-impl 1.0.69
|
||||
MODCARGO_CRATES += thiserror-impl 2.0.12
|
||||
MODCARGO_CRATES += thread_local 1.1.9
|
||||
MODCARGO_CRATES += time 0.3.41
|
||||
MODCARGO_CRATES += time-core 0.1.4
|
||||
MODCARGO_CRATES += time-macros 0.2.22
|
||||
MODCARGO_CRATES += tinystr 0.8.1
|
||||
MODCARGO_CRATES += tinyvec 1.9.0
|
||||
MODCARGO_CRATES += tinyvec_macros 0.1.1
|
||||
MODCARGO_CRATES += tokio 1.46.1
|
||||
MODCARGO_CRATES += tokio-graceful 0.2.2
|
||||
MODCARGO_CRATES += tokio-macros 2.5.0
|
||||
MODCARGO_CRATES += tokio-rustls 0.26.2
|
||||
MODCARGO_CRATES += tokio-stream 0.1.17
|
||||
MODCARGO_CRATES += tokio-util 0.7.15
|
||||
MODCARGO_CRATES += tower 0.5.2
|
||||
MODCARGO_CRATES += tower-http 0.6.6
|
||||
MODCARGO_CRATES += tower-layer 0.3.3
|
||||
MODCARGO_CRATES += tower-service 0.3.3
|
||||
MODCARGO_CRATES += tracing 0.1.41
|
||||
MODCARGO_CRATES += tracing-attributes 0.1.30
|
||||
MODCARGO_CRATES += tracing-core 0.1.34
|
||||
MODCARGO_CRATES += tracing-log 0.2.0
|
||||
MODCARGO_CRATES += tracing-subscriber 0.3.19
|
||||
MODCARGO_CRATES += tree_magic_mini 3.1.6
|
||||
MODCARGO_CRATES += try-lock 0.2.5
|
||||
MODCARGO_CRATES += typenum 1.18.0
|
||||
MODCARGO_CRATES += unicase 2.8.1
|
||||
MODCARGO_CRATES += unicode-ident 1.0.18
|
||||
MODCARGO_CRATES += unicode-linebreak 0.1.5
|
||||
MODCARGO_CRATES += unicode-segmentation 1.12.0
|
||||
MODCARGO_CRATES += unicode-width 0.1.14
|
||||
MODCARGO_CRATES += unicode-width 0.2.1
|
||||
MODCARGO_CRATES += unsafe-libyaml 0.2.11
|
||||
MODCARGO_CRATES += untrusted 0.9.0
|
||||
MODCARGO_CRATES += unty 0.0.4
|
||||
MODCARGO_CRATES += url 2.5.4
|
||||
MODCARGO_CRATES += urlencoding 2.1.3
|
||||
MODCARGO_CRATES += utf-8 0.7.6
|
||||
MODCARGO_CRATES += utf8_iter 1.0.4
|
||||
MODCARGO_CRATES += utf8parse 0.2.2
|
||||
MODCARGO_CRATES += uuid 1.17.0
|
||||
MODCARGO_CRATES += valuable 0.1.1
|
||||
MODCARGO_CRATES += version_check 0.9.5
|
||||
MODCARGO_CRATES += vsimd 0.8.0
|
||||
MODCARGO_CRATES += vte 0.14.1
|
||||
MODCARGO_CRATES += walkdir 2.5.0
|
||||
MODCARGO_CRATES += want 0.3.1
|
||||
MODCARGO_CRATES += wasi 0.11.1+wasi-snapshot-preview1
|
||||
MODCARGO_CRATES += wasi 0.14.2+wasi-0.2.4
|
||||
MODCARGO_CRATES += wasm-bindgen 0.2.100
|
||||
MODCARGO_CRATES += wasm-bindgen-backend 0.2.100
|
||||
MODCARGO_CRATES += wasm-bindgen-futures 0.4.50
|
||||
MODCARGO_CRATES += wasm-bindgen-macro 0.2.100
|
||||
MODCARGO_CRATES += wasm-bindgen-macro-support 0.2.100
|
||||
MODCARGO_CRATES += wasm-bindgen-shared 0.2.100
|
||||
MODCARGO_CRATES += wasm-streams 0.4.2
|
||||
MODCARGO_CRATES += wayland-backend 0.3.10
|
||||
MODCARGO_CRATES += wayland-client 0.31.10
|
||||
MODCARGO_CRATES += wayland-protocols 0.32.8
|
||||
MODCARGO_CRATES += wayland-protocols-wlr 0.3.8
|
||||
MODCARGO_CRATES += wayland-scanner 0.31.6
|
||||
MODCARGO_CRATES += wayland-sys 0.31.6
|
||||
MODCARGO_CRATES += web-sys 0.3.77
|
||||
MODCARGO_CRATES += web-time 1.1.0
|
||||
MODCARGO_CRATES += webpki-roots 1.0.1
|
||||
MODCARGO_CRATES += which 8.0.0
|
||||
MODCARGO_CRATES += widestring 1.2.0
|
||||
MODCARGO_CRATES += winapi 0.3.9
|
||||
MODCARGO_CRATES += winapi-i686-pc-windows-gnu 0.4.0
|
||||
MODCARGO_CRATES += winapi-util 0.1.9
|
||||
MODCARGO_CRATES += winapi-x86_64-pc-windows-gnu 0.4.0
|
||||
MODCARGO_CRATES += windows 0.48.0
|
||||
MODCARGO_CRATES += windows 0.61.3
|
||||
MODCARGO_CRATES += windows-collections 0.2.0
|
||||
MODCARGO_CRATES += windows-core 0.61.2
|
||||
MODCARGO_CRATES += windows-future 0.2.1
|
||||
MODCARGO_CRATES += windows-implement 0.60.0
|
||||
MODCARGO_CRATES += windows-interface 0.59.1
|
||||
MODCARGO_CRATES += windows-link 0.1.3
|
||||
MODCARGO_CRATES += windows-numerics 0.2.0
|
||||
MODCARGO_CRATES += windows-result 0.3.4
|
||||
MODCARGO_CRATES += windows-strings 0.4.2
|
||||
MODCARGO_CRATES += windows-sys 0.48.0
|
||||
MODCARGO_CRATES += windows-sys 0.52.0
|
||||
MODCARGO_CRATES += windows-sys 0.59.0
|
||||
MODCARGO_CRATES += windows-sys 0.60.2
|
||||
MODCARGO_CRATES += windows-targets 0.48.5
|
||||
MODCARGO_CRATES += windows-targets 0.52.6
|
||||
MODCARGO_CRATES += windows-targets 0.53.2
|
||||
MODCARGO_CRATES += windows-threading 0.1.0
|
||||
MODCARGO_CRATES += windows_aarch64_gnullvm 0.48.5
|
||||
MODCARGO_CRATES += windows_aarch64_gnullvm 0.52.6
|
||||
MODCARGO_CRATES += windows_aarch64_gnullvm 0.53.0
|
||||
MODCARGO_CRATES += windows_aarch64_msvc 0.48.5
|
||||
MODCARGO_CRATES += windows_aarch64_msvc 0.52.6
|
||||
MODCARGO_CRATES += windows_aarch64_msvc 0.53.0
|
||||
MODCARGO_CRATES += windows_i686_gnu 0.48.5
|
||||
MODCARGO_CRATES += windows_i686_gnu 0.52.6
|
||||
MODCARGO_CRATES += windows_i686_gnu 0.53.0
|
||||
MODCARGO_CRATES += windows_i686_gnullvm 0.52.6
|
||||
MODCARGO_CRATES += windows_i686_gnullvm 0.53.0
|
||||
MODCARGO_CRATES += windows_i686_msvc 0.48.5
|
||||
MODCARGO_CRATES += windows_i686_msvc 0.52.6
|
||||
MODCARGO_CRATES += windows_i686_msvc 0.53.0
|
||||
MODCARGO_CRATES += windows_x86_64_gnu 0.48.5
|
||||
MODCARGO_CRATES += windows_x86_64_gnu 0.52.6
|
||||
MODCARGO_CRATES += windows_x86_64_gnu 0.53.0
|
||||
MODCARGO_CRATES += windows_x86_64_gnullvm 0.48.5
|
||||
MODCARGO_CRATES += windows_x86_64_gnullvm 0.52.6
|
||||
MODCARGO_CRATES += windows_x86_64_gnullvm 0.53.0
|
||||
MODCARGO_CRATES += windows_x86_64_msvc 0.48.5
|
||||
MODCARGO_CRATES += windows_x86_64_msvc 0.52.6
|
||||
MODCARGO_CRATES += windows_x86_64_msvc 0.53.0
|
||||
MODCARGO_CRATES += winsafe 0.0.19
|
||||
MODCARGO_CRATES += wit-bindgen-rt 0.39.0
|
||||
MODCARGO_CRATES += wl-clipboard-rs 0.9.2
|
||||
MODCARGO_CRATES += writeable 0.6.1
|
||||
MODCARGO_CRATES += x11rb 0.13.1
|
||||
MODCARGO_CRATES += x11rb-protocol 0.13.1
|
||||
MODCARGO_CRATES += xml5ever 0.18.1
|
||||
MODCARGO_CRATES += xterm-color 1.0.1
|
||||
MODCARGO_CRATES += yansi 1.0.1
|
||||
MODCARGO_CRATES += yoke 0.8.0
|
||||
MODCARGO_CRATES += yoke-derive 0.8.0
|
||||
MODCARGO_CRATES += zerocopy 0.8.26
|
||||
MODCARGO_CRATES += zerocopy-derive 0.8.26
|
||||
MODCARGO_CRATES += zerofrom 0.1.6
|
||||
MODCARGO_CRATES += zerofrom-derive 0.1.6
|
||||
MODCARGO_CRATES += zeroize 1.8.1
|
||||
MODCARGO_CRATES += zerotrie 0.2.2
|
||||
MODCARGO_CRATES += zerovec 0.11.2
|
||||
MODCARGO_CRATES += zerovec-derive 0.11.1
|
||||
934
devel/aichat/distinfo
Normal file
934
devel/aichat/distinfo
Normal file
@@ -0,0 +1,934 @@
|
||||
SHA256 (aichat-0.30.0.tar.gz) = 4ZTMia/CE6bjFpc4IhyuZBw0dCHE8qrNXW9PfMbts4c=
|
||||
SHA256 (cargo/addr2line-0.24.2.tar.gz) = 374nflajdgAIdwkNqDdmC0QnqtUw4wKNROC//k+JocE=
|
||||
SHA256 (cargo/adler2-2.0.1.tar.gz) = MgEZV5/K2cIYhPXEhh0WF00OBiUGJSZvUP5omDQKvvo=
|
||||
SHA256 (cargo/ahash-0.8.12.tar.gz) = WhXxec1gxFhLioxZaSeq3EYuJ/LKcMBOAHGWSnO6enU=
|
||||
SHA256 (cargo/aho-corasick-1.1.3.tar.gz) = jmDTQw06aUeK0Jk/GSONLfl8UHAJpSs8EK3c1/a8uRY=
|
||||
SHA256 (cargo/allocator-api2-0.2.21.tar.gz) = aD15EOdDUYsONPEYb5JJS+yssEfHtr9hbJZ3IYD++SM=
|
||||
SHA256 (cargo/android-tzdata-0.1.1.tar.gz) = 6ZmUGyNPMTGwC8E8ItBujF/3JtG2MYrH6ydpl7u0/vA=
|
||||
SHA256 (cargo/android_system_properties-0.1.5.tar.gz) = gZ5yGdvUEEOsJ5sZgw8u/IlxVkkNf9bqkWcgEX7mYxE=
|
||||
SHA256 (cargo/anndists-0.1.3.tar.gz) = 1LuyKW8lJeU6UmgPXC323pqDuKlMwiqMxikwGie14Lc=
|
||||
SHA256 (cargo/ansi_colours-1.2.3.tar.gz) = FO7EPgKYGQeQ9BZ5/mnveoKdKi3deMjAAznoRxDkNf4=
|
||||
SHA256 (cargo/anstream-0.6.19.tar.gz) = MBrxky5GGFaGcl4PrS+PKqfaad1wv27MRNa3A4RKOTM=
|
||||
SHA256 (cargo/anstyle-1.0.11.tar.gz) = hi7ZbKSH6AnxyOWoRH9u4s8QL4Rok4ALIM699UH8a70=
|
||||
SHA256 (cargo/anstyle-parse-0.2.7.tar.gz) = TnZEgk8Kose5OEV5I07xDrfvtqDeuD+WMKSVlN2cFcI=
|
||||
SHA256 (cargo/anstyle-query-1.1.3.tar.gz) = bIvetgR9iYO+CFurC6FHLm3GBOcEHb9vzV5xUjAU+uk=
|
||||
SHA256 (cargo/anstyle-wincon-3.0.9.tar.gz) = QD91kkhnuxAzxZ+/B5dIQyl1DPvjxDJc0zEnlB+ryII=
|
||||
SHA256 (cargo/anyhow-1.0.98.tar.gz) = 4W0tMxGs7pIKnrjTO4y8F4fOSiZOhflkwkBLlpvc1Ic=
|
||||
SHA256 (cargo/arboard-3.6.0.tar.gz) = VfUz+OCvI2/+Xrl5uZOB3zJYhT8Aui5EtuGVUpLHUic=
|
||||
SHA256 (cargo/async-recursion-1.1.1.tar.gz) = O0NCL2nY/zj5Xxsrt2UXyRWJqSTRVZoOk118jOAnTBE=
|
||||
SHA256 (cargo/async-trait-0.1.88.tar.gz) = 5TnT/KdJ/O5SNqsF6TpShn3VScwVfIy3+ZWV887f/bU=
|
||||
SHA256 (cargo/atomic-waker-1.1.2.tar.gz) = FQW9XT0RaHLnJxptThbYHQyFcIdsjeaAk6CawmnYqsA=
|
||||
SHA256 (cargo/autocfg-1.5.0.tar.gz) = wIYG+MPL9M5uyOKPsAFKLAhnCP6VTqqIU4SmFlFy5+g=
|
||||
SHA256 (cargo/aws-smithy-eventstream-0.60.9.tar.gz) = M4o2QsOZwKXRV2SEJhEOGZyn/RxonMOVZ2uBqlY3AMQ=
|
||||
SHA256 (cargo/aws-smithy-types-1.3.2.tar.gz) = 1JhZVEjkPef0KWt7ehiooCxh7JNJEoyAo2j3w7SrEag=
|
||||
SHA256 (cargo/backtrace-0.3.75.tar.gz) = aAamMh7FgQb+oVvs2tmDceKNksy8fI8bO23XJP6PEAI=
|
||||
SHA256 (cargo/base64-0.22.1.tar.gz) = crMlTxYlGoOBqhLkDjxNLwGZ+MZQj77LnZH1deD7uMY=
|
||||
SHA256 (cargo/base64-simd-0.8.0.tar.gz) = M5q7545zF4di4jvqnf0I5pfrPzMBzUvpgcD3i6WFkZU=
|
||||
SHA256 (cargo/bincode-1.3.3.tar.gz) = sfRelBfYcifHpW0i5HHGIGRiy6UUx1kMCa/0z20d3K0=
|
||||
SHA256 (cargo/bincode-2.0.1.tar.gz) = Nur117CQJj6BUIIEgtXZPNlkqB5AGZE8ly9O3Mbtt0A=
|
||||
SHA256 (cargo/bit-set-0.8.0.tar.gz) = CIB+CA7X+dVDP6mydRls/DVBT2agx52GTcUaDYJSMaM=
|
||||
SHA256 (cargo/bit-vec-0.8.0.tar.gz) = XnZKHUDVENrzXge+nrBudXcJCMJ9QR7mySEJyYQOqvc=
|
||||
SHA256 (cargo/bitflags-1.3.2.tar.gz) = vvONRRY8Lx3eCUp9/TPM9ZXJKQXI+PT9wY0G+xA3cYo=
|
||||
SHA256 (cargo/bitflags-2.9.1.tar.gz) = G45WmF7GLRfpwQAdyJyI7NfcCOR+ul7Hwpx7Xu7N6Wc=
|
||||
SHA256 (cargo/block-buffer-0.10.4.tar.gz) = MHjHYpti0/BDlRf6OUmWrKzFy8kcWiDYxljner1QOnE=
|
||||
SHA256 (cargo/bm25-2.3.0.tar.gz) = EDYCkiS9clgRhrYpFolSWWxJZGhtzdWbzNgQp74fWEM=
|
||||
SHA256 (cargo/bumpalo-3.19.0.tar.gz) = RsXkG1e4u6QqBGdtgcuJ6e6OhZoaZvgKWnLhy3azTUM=
|
||||
SHA256 (cargo/bytemuck-1.23.1.tar.gz) = XHaleS5E5KvjTTq/FWNneSYdRadFBhIFkpPR0s/GNCI=
|
||||
SHA256 (cargo/byteorder-1.5.0.tar.gz) = H9DyWEFG9vLvSAhQUIhqzzU77/cwXr0a5pUA4nxn9ks=
|
||||
SHA256 (cargo/bytes-1.10.1.tar.gz) = 1xthJ76G/c/dthD3GCrFchHUsYo+nILrLRdmLyInrWo=
|
||||
SHA256 (cargo/bytes-utils-0.1.4.tar.gz) = fa/jqHV7An4r5uTlYB7VY8VZifzxVG6TPGbI6zoFjTU=
|
||||
SHA256 (cargo/cached-0.55.1.tar.gz) = sIOcKX+HgzFvzKnZA0RCTpaDlUE/BmKlSB95xmSLvBQ=
|
||||
SHA256 (cargo/cached_proc_macro-0.24.0.tar.gz) = ZzmS2TTwcRto67Pht5zcS+MWNLN8mPJoZ87QQ4ylxgM=
|
||||
SHA256 (cargo/cached_proc_macro_types-0.1.1.tar.gz) = reg2a4vVuiQ/CljwNswMqKLwac/xojUe8crGsIPhb8A=
|
||||
SHA256 (cargo/cc-1.2.28.tar.gz) = StRfT3Tk4g6qOSkTt7M6cJHIfllij03SeIggWtiIhDw=
|
||||
SHA256 (cargo/cfg-if-1.0.1.tar.gz) = lVVXi8nldxTIEqH4Tk/FtNIfywY0kMYk3gGfdGTJEmg=
|
||||
SHA256 (cargo/cfg_aliases-0.2.1.tar.gz) = YTr+R/zV+sfM8duTurywgsWZTZlvILixWfKtFljrVyQ=
|
||||
SHA256 (cargo/chrono-0.4.41.tar.gz) = xGnZUgR/R/kbaNHLo/ENY8Edc+RjbyTwja8CeKvwHE0=
|
||||
SHA256 (cargo/clap-4.5.40.tar.gz) = QLaIeh2Ghc68zxFVONtcDv5iXMrJaWrUXECdllZukQ8=
|
||||
SHA256 (cargo/clap_builder-4.5.40.tar.gz) = 4MZsCM6fDGmMvOXAJ50LtqyTbYZ0F0/kj3NlM7lk9Z4=
|
||||
SHA256 (cargo/clap_derive-4.5.40.tar.gz) = 0seUeuTMPYUSB8GttbXiYP8MyhFEax1tFCN4jkQiV84=
|
||||
SHA256 (cargo/clap_lex-0.7.5.tar.gz) = uU9hRyzuFDnAuWa0fjrKmuB+RdBwdZUSzTkOor68ZnU=
|
||||
SHA256 (cargo/clipboard-win-5.4.0.tar.gz) = Fe/nqIKwjzTjhVaxTy+z2qmHadBsfwwbB239DZg7yJI=
|
||||
SHA256 (cargo/colorchoice-1.0.4.tar.gz) = sFth3FESy7F+S2zWF5DZhF0TiINWORYky+fkHv6sHnU=
|
||||
SHA256 (cargo/combine-4.6.7.tar.gz) = ulowi3XfMv4CeI50hmJxjwP94AUBZDXERO6lcjmCGf0=
|
||||
SHA256 (cargo/core-foundation-0.10.1.tar.gz) = sqbNmuIz5/YrpOk1PoGojff8ilmHuNRFtNkMh5vRVvY=
|
||||
SHA256 (cargo/core-foundation-sys-0.8.7.tar.gz) = dzZIuU0OXWIPZPKAd3RFdA5h/nAQJQh+yLV/RceRiIs=
|
||||
SHA256 (cargo/cpu-time-1.0.0.tar.gz) = 6eOTp2aP4frTB1CFuGx4GIMAC07eho9DYns0qHyLfe0=
|
||||
SHA256 (cargo/cpufeatures-0.2.17.tar.gz) = We1YOO67JqK7Llj21bUxaYmunQi6sQ4ObRA+ZW0bAoA=
|
||||
SHA256 (cargo/crc32fast-1.4.2.tar.gz) = qXdp2U3auUPkUQ0TgVAWmidYte8+sZGp7miN4+I+97M=
|
||||
SHA256 (cargo/crossbeam-deque-0.8.6.tar.gz) = ndERt7f31VtywKauNhZg7lhTya9z9ww8LvaFi5UOLlE=
|
||||
SHA256 (cargo/crossbeam-epoch-0.9.18.tar.gz) = W4KsSjwsqcNGCWTwIOFALt1XU0EddzeqOcNxStG1Qg4=
|
||||
SHA256 (cargo/crossbeam-utils-0.8.21.tar.gz) = 0KXEAN8oNLgKTDMns6rTpMTNTeBikGOWKwMjVpdQaig=
|
||||
SHA256 (cargo/crossterm-0.25.0.tar.gz) = 5k5sD74sFzV0BffHWMHvlg/OCL37LAPYjSoY1+CcS2c=
|
||||
SHA256 (cargo/crossterm-0.28.1.tar.gz) = gp2VWguzgO8XimQLkXeeOYfaOMmuoTOyBhTP7YzeqcY=
|
||||
SHA256 (cargo/crossterm_winapi-0.9.1.tar.gz) = rN18YqNmXH9oMKUWNdmsmyPtOFeX9wqDu4uv6cVyqys=
|
||||
SHA256 (cargo/crypto-common-0.1.6.tar.gz) = G/sSUC8/xGzKG7Uawo351hjYE83D0vJbn+d1o0rya7M=
|
||||
SHA256 (cargo/cssparser-0.34.0.tar.gz) = t8ZtHNjtYb+As4QyYTp6LwlAGrjQUBEQZV+LNBSEo+M=
|
||||
SHA256 (cargo/cssparser-macros-0.6.1.tar.gz) = E7WIukrBqZ9/KWTSSz2Jbdxr+EfuOFXb1DZvBYz80zE=
|
||||
SHA256 (cargo/darling-0.20.11.tar.gz) = /H9GEWxG/5qz6xWXpFaItnFcbmKLXBM+KI5wmim8tO4=
|
||||
SHA256 (cargo/darling_core-0.20.11.tar.gz) = DQC5WW0YXlZcIgegsB+L0aE1SD0C2bewpUsR2o1TQS4=
|
||||
SHA256 (cargo/darling_macro-0.20.11.tar.gz) = /DS5PMs4W0Dcccb86sSyrSNmLH7rJIzxDVKbfgVbbq0=
|
||||
SHA256 (cargo/deranged-0.4.0.tar.gz) = nJ5qEcqCJEUWhLwNfVp62/jy/WiHJhoc/DwEMvnUBo4=
|
||||
SHA256 (cargo/derive_more-0.99.20.tar.gz) = bttLZKQ9l3uOmXiP46BNSDg0+6EhWn4CyqQVtiZJf38=
|
||||
SHA256 (cargo/deunicode-1.6.2.tar.gz) = q9V4BpN8nMFj78jqORDgCmLirrC4EZ8Xk6l4CI+PawQ=
|
||||
SHA256 (cargo/diff-0.1.13.tar.gz) = ViVJhndeMjP/qcTX0/qvbTaiwJ0wsgaH6fiLyLr8Fsg=
|
||||
SHA256 (cargo/digest-0.10.7.tar.gz) = ntmigfe8m3V25hRoumFaZqXIz9/0JCCnCqgnAaOx4pI=
|
||||
SHA256 (cargo/dirs-6.0.0.tar.gz) = w+iqlNdRQSKEgClafQ5/62ILGlrZ8SvEC+YkEeOMzk4=
|
||||
SHA256 (cargo/dirs-sys-0.5.0.tar.gz) = 4BozZtJ+6YkAIkUu5hsrY6Z+bxP1iQC2Uf9WZfC7H6s=
|
||||
SHA256 (cargo/dispatch2-0.3.0.tar.gz) = iaCfIqbGBpoYRw65LSKYrPJUY/FCVtJHeOEjDXiaKuw=
|
||||
SHA256 (cargo/displaydoc-0.2.5.tar.gz) = lzacu8BBvDZpSbx000ZY1s2lYhA5cxxjEFIYkqOiCuA=
|
||||
SHA256 (cargo/downcast-rs-1.2.1.tar.gz) = dbMlxdvTf4A1lyGtOaylop+wTIknllfP/dqHNtDAudI=
|
||||
SHA256 (cargo/dtoa-1.0.10.tar.gz) = 1q3TuM/zlCgr6B8/waBgXbWU7WmJAHjKbiyrHECLzwQ=
|
||||
SHA256 (cargo/dtoa-short-0.3.5.tar.gz) = zRURp7alYpm9BDqcFnptK/s3v4Sm386rplEWit+0PIc=
|
||||
SHA256 (cargo/duct-1.0.0.tar.gz) = ts4XCg6EVPoPmw5co4proX7XalCRaDnSF+tTV+Bc394=
|
||||
SHA256 (cargo/dyn-clone-1.0.19.tar.gz) = HHqPuKn79mwfcD/hYYTRDKDunSO+W0Q2QAQIulSpUAU=
|
||||
SHA256 (cargo/ego-tree-0.10.0.tar.gz) = spcv643/57yMVGOx2s2hsN++03EOUPl32WVClpLXTNg=
|
||||
SHA256 (cargo/either-1.15.0.tar.gz) = SMdXlIxe3g5GF3t63S5nFV9w4zwH/qgoTfZXbacLNxk=
|
||||
SHA256 (cargo/enum-as-inner-0.6.1.tar.gz) = oeaiZcZJ8/WXm2AdJvHQWtoRZDTId0HJSTy1Yhj3bLw=
|
||||
SHA256 (cargo/env_filter-0.1.3.tar.gz) = GG4FpZ1MUHOFKBU7g7CwGU06KVB9/sFuzNSzQpAzl9A=
|
||||
SHA256 (cargo/env_home-0.1.0.tar.gz) = x/hOEszwp93BemxByTMmAkxCkg1+5jDQSVDmkmZFwP4=
|
||||
SHA256 (cargo/env_logger-0.11.8.tar.gz) = E8hj8JBAIbEIqosvVQRkQ+ax696P1KFcOZiTquT6Bp8=
|
||||
SHA256 (cargo/equivalent-1.0.2.tar.gz) = h3pKzocTsLzypOfuyCUpwCnx0GGYhtGBRf6pbD/+XA8=
|
||||
SHA256 (cargo/errno-0.3.13.tar.gz) = d44qwo9sR68o5JB/E//R4d29QAmAqavXyN8Ym/V4pa0=
|
||||
SHA256 (cargo/error-code-3.3.2.tar.gz) = 3qLfTPUoQ+BFKJXEVaGiz7uEKh5zKWcaz0GP3FPtTFk=
|
||||
SHA256 (cargo/eventsource-stream-0.2.3.tar.gz) = dP70VpJHpfQp2RVrnQolmZFDhd0YnFOTNMYl2AmdkKs=
|
||||
SHA256 (cargo/fancy-regex-0.14.0.tar.gz) = biTLWpS8rh5UCLDv/KXNcXLqPFdVBJxfOvTNKDoWUpg=
|
||||
SHA256 (cargo/fastrand-2.3.0.tar.gz) = N5Ce67tQ1y+QWcO22CwEY/L/BiyelYRcQ6bJwDVUEb4=
|
||||
SHA256 (cargo/fd-lock-4.0.4.tar.gz) = DOkv9iLW2t9zSUhPQskycaDUm3zE1GapNkBbrL4Qqng=
|
||||
SHA256 (cargo/filedescriptor-0.8.3.tar.gz) = 5AdY7STJsu63bDX7CuvGbGJghO3YJ+B+FVInmBTGaC0=
|
||||
SHA256 (cargo/fixedbitset-0.4.2.tar.gz) = DOcTS5mZ7K+LzWVULkNnNu8y3cobPgYJTLbsV1UgO4A=
|
||||
SHA256 (cargo/flate2-1.1.2.tar.gz) = Sj19uVlv7NFRxfY4wO5dW9SHtuDqIy5dyW1SUPb5Sx0=
|
||||
SHA256 (cargo/fnv-1.0.7.tar.gz) = P57skY0/JAad7LmvFVTK18iA4tokqa/YisoABTGrgsE=
|
||||
SHA256 (cargo/foldhash-0.1.5.tar.gz) = 2cT12sXhXCTrmZwmGBpspAs5/pRsvkwmPHIJRnvIOvI=
|
||||
SHA256 (cargo/form_urlencoded-1.2.1.tar.gz) = 4TYkwmJ1ZO/M9JNChL3ZjLqhTnmwtaFBIY5QezqCNFY=
|
||||
SHA256 (cargo/futf-0.1.5.tar.gz) = 30IOLoSBlmN5fR7GVEsTxb6EYp57sA3JYNaRfbKYeEM=
|
||||
SHA256 (cargo/futures-channel-0.3.31.tar.gz) = Lf8Vv3iMZxwZNONm0H4wwYFKjvUU4a9ySmAuii++GxA=
|
||||
SHA256 (cargo/futures-core-0.3.31.tar.gz) = BfKQWcDCCQYS6NdCF4sFgNLclAyDeFGtcjCW+Hr2Zj4=
|
||||
SHA256 (cargo/futures-io-0.3.31.tar.gz) = nlwbeMpKrhrAbEilJqZVdgaFFJ8NRl0h83q/5XzgdcY=
|
||||
SHA256 (cargo/futures-macro-0.3.31.tar.gz) = Fi7jTry3xkqKvrwFnOD+4nwiYmGNe2Dtj69y/vE8NlA=
|
||||
SHA256 (cargo/futures-sink-0.3.31.tar.gz) = 5XX6t9Hg3LjQx7z5pj7iE4FqtRkC5tJEqVgZrKzx1Pc=
|
||||
SHA256 (cargo/futures-task-0.3.31.tar.gz) = +Q99zgci6VEE/LCVWFkQwJdyUvKG41S14704kCzZmYg=
|
||||
SHA256 (cargo/futures-timer-3.0.3.tar.gz) = 8oiwpPIPmla10dpX4iJ8Zht7FhaOL3I2X1e2MybimyQ=
|
||||
SHA256 (cargo/futures-util-0.3.31.tar.gz) = n6CDFbthIIjMORJJ79w7x3U28WyR9s9JXm++hbIKSoE=
|
||||
SHA256 (cargo/fuzzy-matcher-0.3.7.tar.gz) = VGFKMxKTTQZnAagPIPFfo7VtZ6x3IrOe6ltMndHWbJQ=
|
||||
SHA256 (cargo/fxhash-0.2.1.tar.gz) = wxttdRrix/ETIEAtNOQTSd0QFvjV1F5IxDEryGJa9Qw=
|
||||
SHA256 (cargo/generator-0.8.5.tar.gz) = 0YRwp2y3+P90bPH3RwkU+QAlLsNrvEC1addLElhEaCc=
|
||||
SHA256 (cargo/generic-array-0.14.7.tar.gz) = hWScpR/XInLXghra8nStkcKIJ3cT2cGIINhJmn/2npo=
|
||||
SHA256 (cargo/gethostname-0.4.3.tar.gz) = AXbgRZwuSh/iMvmEvKaJDmgQdqu5k09s6nwybz/EeBg=
|
||||
SHA256 (cargo/getrandom-0.2.16.tar.gz) = M1/58TXkOEyBUNbyfG2u1DNXf4a0dQQYM4wBoaJShZI=
|
||||
SHA256 (cargo/getrandom-0.3.3.tar.gz) = JhReVj5U8srcR3VT8exe5lCwCGLwpYvNEsvcXw6i0vQ=
|
||||
SHA256 (cargo/gimli-0.31.1.tar.gz) = B+KO24CQDBnCjxBy8uiuyn+gayPNQWnO/hr1qjJgeD8=
|
||||
SHA256 (cargo/h2-0.4.11.tar.gz) = F9pQonbx4B4LpsAp5HtxAHVJBO6KJ4+IZUbphXU4B4U=
|
||||
SHA256 (cargo/hashbrown-0.14.5.tar.gz) = 5SdEI+F7fJ/CC25+IIUy+bGYJdgt/WFXCLcO3YPfQfE=
|
||||
SHA256 (cargo/hashbrown-0.15.4.tar.gz) = WXGshWEdpwZ9v8q+88cOu1YGAYrNnio5A6DaUHUh4NU=
|
||||
SHA256 (cargo/heck-0.5.0.tar.gz) = IwTgCYP4f/s4tVtES147YKiEtdMMD8p9gv4zRJu+Veo=
|
||||
SHA256 (cargo/hermit-abi-0.5.2.tar.gz) = /A/vRW5LqpbalQRVzQLAgcqVOxQSmOQds/x+NrHahJw=
|
||||
SHA256 (cargo/hmac-0.12.1.tar.gz) = bEnDfAnBelPZN9+7dC6zqWHWWplOa83PN+c5nQzIq14=
|
||||
SHA256 (cargo/hnsw_rs-0.3.2.tar.gz) = tT3FubB0JBQ9AWuoQ8m1EPQk4jkRhpf11dWC8tQ330E=
|
||||
SHA256 (cargo/html5ever-0.27.0.tar.gz) = wTdxr+Dm6Ebx5n0DjUyymZimd5+TyAkhLk6cMu/SRNQ=
|
||||
SHA256 (cargo/html5ever-0.29.1.tar.gz) = O3QQyuE8vHViPJisTL/R8L7d3zInr8JPNwzw9QpEoRw=
|
||||
SHA256 (cargo/html_to_markdown-0.1.0.tar.gz) = 5gjo3Qk5v7a1FtlqWRl1G4NSl6AiMK7LiNL8hOvrqoo=
|
||||
SHA256 (cargo/http-1.3.1.tar.gz) = 9KhdMa6pie6tKaOq+eERWhgN+CgkMRVuUz3kdmCJJWU=
|
||||
SHA256 (cargo/http-body-1.0.1.tar.gz) = Hv7c4fuOaRPyPgyS3o5izVt3Kmfns5Rt+TCmJWbJMYQ=
|
||||
SHA256 (cargo/http-body-util-0.1.3.tar.gz) = sCHZPia+z13H4bdbG+0f2TEks3TOtz9D1NTq/siWpko=
|
||||
SHA256 (cargo/httparse-1.10.1.tar.gz) = bb89555R89WGq0y51cPiwUqijtI9GAz4m03wRUppzIc=
|
||||
SHA256 (cargo/httpdate-1.0.3.tar.gz) = 3ztGQCqdWttMhqDPRj9C4ZmU4+6JEQGxhB8wpUXLSak=
|
||||
SHA256 (cargo/hyper-1.6.0.tar.gz) = zCtXFljjjgwBsf3KO7vpPADT1xaT/ydwBD+MKbx9b4A=
|
||||
SHA256 (cargo/hyper-rustls-0.27.7.tar.gz) = 48k+thFoGyB+H+VdWnHs+RVy7IpnBc22hX99jVJCz1g=
|
||||
SHA256 (cargo/hyper-util-0.1.14.tar.gz) = 3C/f2/8Ir/5Vu3efM7BTqh/l3VtUwlc0PBft+lVxG9s=
|
||||
SHA256 (cargo/iana-time-zone-0.1.63.tar.gz) = sMkZ5d68MSrSFwArgEihe32D+AcDhlu/z+uwRYsLJ9g=
|
||||
SHA256 (cargo/iana-time-zone-haiku-0.1.2.tar.gz) = 8xgnogb1avMuWQulbV0tCF9VhQgZJZN0PxayMGSVJp8=
|
||||
SHA256 (cargo/icu_collections-2.0.0.tar.gz) = IABy9dDjYUVW+UqZMNXcPgZiplKCOQTDp13DsK9/7kc=
|
||||
SHA256 (cargo/icu_locale_core-2.0.0.tar.gz) = DN4nAMyu04cgeaZfsaePbAo2yRVw8odV3aZ7yPfZ8Ao=
|
||||
SHA256 (cargo/icu_normalizer-2.0.0.tar.gz) = Q2iA6OGN9Ne7wG1YQyMp1kWMyEUx96xfAk6T3q2zeXk=
|
||||
SHA256 (cargo/icu_normalizer_data-2.0.0.tar.gz) = ACENaJOvyY7bdStmS4iQ8O8XTIrbuNC+lxD6Zvu/ctM=
|
||||
SHA256 (cargo/icu_properties-2.0.1.tar.gz) = AWxhnB7rlO+4aAmwFcWPR5lj3mW9tiUzRcGhJ28i4ys=
|
||||
SHA256 (cargo/icu_properties_data-2.0.1.tar.gz) = KYRZFDmYMQrNJf/mgQ7VRJMiQtPwcIPu4QhNg6cb1jI=
|
||||
SHA256 (cargo/icu_provider-2.0.0.tar.gz) = A8gNontfQYeQkEnuLXLydvDZ+ZpCwwa9ATHs/gTY5a8=
|
||||
SHA256 (cargo/ident_case-1.0.1.tar.gz) = ueA4S2GVhWbpJtxQZgMh0SFZAl52fBjgQ9rya3AQTDk=
|
||||
SHA256 (cargo/idna-1.0.3.tar.gz) = aG+CUmTWMHUKVEY5N3uuc3YoBD8g04u8Ap6PKeqWin4=
|
||||
SHA256 (cargo/idna_adapter-1.2.1.tar.gz) = OsrpYJVAqjGNG8WIRVIl+yCFue0MT2vQ2dW82G8aA0Q=
|
||||
SHA256 (cargo/indexmap-2.10.0.tar.gz) = /kzYUzPiJBFBmgvK4Sl9JeWMlEOEixHcaob+/ox4pmE=
|
||||
SHA256 (cargo/inquire-0.7.5.tar.gz) = D935MDGvcOdUEKJRHsBNSedY7S8m2tNASpNOD7RcwSo=
|
||||
SHA256 (cargo/io-uring-0.7.8.tar.gz) = uG4gLwAJPcukJ11GNrk++d110CWuVg0lIbReooq0kBM=
|
||||
SHA256 (cargo/ipnet-2.11.0.tar.gz) = Rp+wuc76V+PvMSde58rLePL9ykTkdlSRiEorEZ1OsTA=
|
||||
SHA256 (cargo/iri-string-0.7.8.tar.gz) = 28Xr6cOhp6USf5IKQY91hennWOkR0EZu0ATzk7DjgLI=
|
||||
SHA256 (cargo/is-terminal-0.4.16.tar.gz) = 4E1/MYYI011LYd3XXL2u6GsCPr4r1aZu4JFfC/kwlak=
|
||||
SHA256 (cargo/is_terminal_polyfill-1.70.1.tar.gz) = eUPIZsxc1ky8JbLgFiHQf6jrKhojFg7oHOOHBOl7js8=
|
||||
SHA256 (cargo/itertools-0.13.0.tar.gz) = QT7n38Uu4aSUnO6328ijPy1sCIGU2fki+4MY+vHwEYY=
|
||||
SHA256 (cargo/itoa-1.0.15.tar.gz) = Sl8TuFjI0xTuPo9jkBH3zO/nH5f5blAVH7mR8meSjiw=
|
||||
SHA256 (cargo/jiff-0.2.15.tar.gz) = vh+TuLHracd/JLuwr99m9UtjLuOa9AyiHENlodc0fkk=
|
||||
SHA256 (cargo/jiff-static-0.2.15.tar.gz) = AzQ0Uf+Jl2cmLsMhRvbVWd11n9rfQv8OInx8SPcllLQ=
|
||||
SHA256 (cargo/js-sys-0.3.77.tar.gz) = HPrzPGlfxuCAZO+8H3Lsk3QpYU8l7vg6+ULQ4ifDoo8=
|
||||
SHA256 (cargo/json-patch-4.0.0.tar.gz) = FZKU1mGgOfdkTOp+TYROayWq9xwf/p1zqW12jCSw+vQ=
|
||||
SHA256 (cargo/jsonptr-0.7.1.tar.gz) = paPMZgul1yvOCzuylb8ghHzLtA/UI/PwW2EnNnLlYf4=
|
||||
SHA256 (cargo/lazy_static-1.5.0.tar.gz) = u9K8tMlj8t2uBqLvx+nzWRMSRzxQxmheHymAaDFuZv4=
|
||||
SHA256 (cargo/libc-0.2.174.tar.gz) = EXFpMpMJmZLhnN3qTouEmWTphG9KzuEbOUi8wze+h3Y=
|
||||
SHA256 (cargo/libredox-0.1.4.tar.gz) = FYCAEBDlNUlnBroBHBX4Uy32tCKX0uRx/sOM6t2MBjg=
|
||||
SHA256 (cargo/linux-raw-sys-0.4.15.tar.gz) = 0mxS29MtzPLRDKx3Jfjq5SlohftXA7Jh99Cgc57IB6s=
|
||||
SHA256 (cargo/linux-raw-sys-0.9.4.tar.gz) = zZRYZPB/6fU3Giete1KhcrS0mZmfHZdXTJ+mg3OTfhI=
|
||||
SHA256 (cargo/litemap-0.8.0.tar.gz) = JB6u9f0SyIcFoB/BBmxIxLNuDdQ3fc3H7DlCzqemmVY=
|
||||
SHA256 (cargo/lock_api-0.4.13.tar.gz) = lpNlB/FTYFvd/NoGjdgEeWyEMk7SUQgJ5bKmJMgdp2U=
|
||||
SHA256 (cargo/log-0.4.27.tar.gz) = E9wt81HjICeDof4NRDdfcpX/tASSZ7DzAYNG3BIqHZQ=
|
||||
SHA256 (cargo/loom-0.7.2.tar.gz) = QZ4NyARsuUfap365WuF0rPvdt2c7QVH1bR7tjpP7+so=
|
||||
SHA256 (cargo/lru-slab-0.1.2.tar.gz) = ESs5zsCymLbBmZ/uPjFCf3T2duTLmHntGhIbQ2YaQVQ=
|
||||
SHA256 (cargo/mac-0.1.1.tar.gz) = xB4MT++GlhrG1vioJgn1XzGwXk/OFJrFcQ5Dnfdhm6Q=
|
||||
SHA256 (cargo/mach2-0.4.3.tar.gz) = 1kAoKzAsC7CiqOAjPq2QNeO+2HHwt+gf5KHsgpdl20Q=
|
||||
SHA256 (cargo/markup5ever-0.12.1.tar.gz) = Fs46u+umksi4RB0Dbvka6m342ixrbiHH4U08GOUmvkU=
|
||||
SHA256 (cargo/markup5ever-0.14.1.tar.gz) = x6chPRLhhkwPAC9SwpI9RVaTWkPexecTVcJ2Dg9uehg=
|
||||
SHA256 (cargo/markup5ever_rcdom-0.3.0.tar.gz) = 7aohqzcBv+5Qma3l9+H4RVP9GSKM8zLxPNbpZL9Zvhg=
|
||||
SHA256 (cargo/match_token-0.1.0.tar.gz) = iKlonY1Ev5lkSEUWJ19c1Mm1lFemlAwdXQ7LuUUQo2s=
|
||||
SHA256 (cargo/matchers-0.1.0.tar.gz) = gmMHW7hsWhsUJ7Wuhi6IiWVvEm6fd8SESW6LR89cVVg=
|
||||
SHA256 (cargo/memchr-2.7.5.tar.gz) = MqKC2mX6rzgobPO+mDIT/PHS4qWHAOgI+D9OqaSAS8A=
|
||||
SHA256 (cargo/memoffset-0.7.1.tar.gz) = XeiTwyzeXzg7qkwExdbb3XNc/Up5Sw3r2yuxtCHaX/Q=
|
||||
SHA256 (cargo/mime-0.3.17.tar.gz) = aHe7UUCB7ip/9e+d4ygfFKTdS86sTAk4gHSmtd+KE5o=
|
||||
SHA256 (cargo/mime_guess-2.0.5.tar.gz) = 98RPjmcsAP5TCPojX4IctBmEFOHHeTXBq2lI0/14VQ4=
|
||||
SHA256 (cargo/minimal-lexical-0.2.1.tar.gz) = aDVMXGvTbXP/P+zrBe+lm2rLdiZhf0livjIqgl5h95o=
|
||||
SHA256 (cargo/miniz_oxide-0.8.9.tar.gz) = H6dqLIb3BL2yItZpZfs9Yyac44UYuDywV1/KhV67YxY=
|
||||
SHA256 (cargo/mio-0.8.11.tar.gz) = pKZQVDygapJOizcdsnOydWaF+q4w+Eh9obVlBaj3iww=
|
||||
SHA256 (cargo/mio-1.0.4.tar.gz) = eL7URMyKIWDwHLz4Ee8YyshjrWiujKYgkujbUdUcdhw=
|
||||
SHA256 (cargo/mmap-rs-0.6.1.tar.gz) = hpaNhUQdt1IDw03u/QyIAy8nWqqFzuGaHc//aunfVto=
|
||||
SHA256 (cargo/new_debug_unreachable-1.0.6.tar.gz) = ZQ7vjHEUMPGoef3QHUdFp97qR1vs+5AmnAZ3WYO78IY=
|
||||
SHA256 (cargo/newline-converter-0.3.0.tar.gz) = R7awl+yxy/7UOFQtFuhP162bDHbIplt/kDkhKj0U3H8=
|
||||
SHA256 (cargo/nix-0.26.4.tar.gz) = WYvq88xv3Zpd+xYwwoAMes0x33qvD1ZXlvuitTyhrxs=
|
||||
SHA256 (cargo/nom-7.1.3.tar.gz) = 0nOYPFplenCj6PKgEymCLzuMgXK3OCZBGlV1HkBKCko=
|
||||
SHA256 (cargo/nu-ansi-term-0.46.0.tar.gz) = d6gWVyboI2Bk27RUWSQmADBLQqXqJO4pSOGOAjv3uoQ=
|
||||
SHA256 (cargo/nu-ansi-term-0.50.1.tar.gz) = 1KKOBX0B+X5hJVIQ/P8JTXTtBGYDhjPpUBf1vraOQ5k=
|
||||
SHA256 (cargo/num-conv-0.1.0.tar.gz) = UdUV0y+xgu43zaLM3LkpUNajwok6ooDlQGccLNDzsdk=
|
||||
SHA256 (cargo/num-integer-0.1.46.tar.gz) = eWlmH9KVilywluVsjhrQRErCu80AYb0oZgSFpEh5hY8=
|
||||
SHA256 (cargo/num-traits-0.2.19.tar.gz) = Bx38BiaQ6QtzTAsic85yrQ/6lfDHRZa8JQ3P2WAmKEE=
|
||||
SHA256 (cargo/num_cpus-1.17.0.tar.gz) = kd9Lveda/tdjtwi37uHo52UeAtl/bV3XY+iTZ+lXsjs=
|
||||
SHA256 (cargo/num_threads-0.1.7.tar.gz) = XHOYuci3CQj2Nx9H7TZzeQfIfFKvNMJo/tC/DOuS6tk=
|
||||
SHA256 (cargo/objc2-0.6.1.tar.gz) = iMZZfhRJOrLkTOWPL97PCVpR8Syle+wGChHFczJSBVE=
|
||||
SHA256 (cargo/objc2-app-kit-0.3.1.tar.gz) = 5vKfVovsRZsN3/d3zsT+P9hmbYLVpA69D/fmYTT4m8w=
|
||||
SHA256 (cargo/objc2-core-foundation-0.3.1.tar.gz) = HBDCiUpv7YBq3mAnvNUGYnRjY6lYnT7J2b7zCk5LwWY=
|
||||
SHA256 (cargo/objc2-core-graphics-0.3.1.tar.gz) = mJxsaMEwIbXC1rcUVuuw+dx411LoapjafHFvT5Rw9aQ=
|
||||
SHA256 (cargo/objc2-encode-4.1.0.tar.gz) = 7yWrvNdPsmCUU+tpW9L4YNOJ5Ff2fcF8r8i4y8idDDM=
|
||||
SHA256 (cargo/objc2-foundation-0.3.1.tar.gz) = kAgxJH0v4aCaaDJ45ThM+4yAx5/msWb50Uv93g6hsDw=
|
||||
SHA256 (cargo/objc2-io-surface-0.3.1.tar.gz) = coLprJJSn6NFfOkOuxX07Lw4PoM4Bglgdg+iz3VCDDw=
|
||||
SHA256 (cargo/object-0.36.7.tar.gz) = YpSOFNkj6pXqLHyGxxATE4tmUluGvcCNLcwmK9tJe4c=
|
||||
SHA256 (cargo/once_cell-1.21.3.tar.gz) = QvXhXJlTxeTMzusuc4KnFkgsNFFTFfewNTK4tOg5PS0=
|
||||
SHA256 (cargo/once_cell_polyfill-1.70.1.tar.gz) = pIlRdbQlyx+HchtZ8PKGwgkr1K+BIkNnJRDhrFPi4K0=
|
||||
SHA256 (cargo/onig-6.5.1.tar.gz) = M2ucY0Q6zu8UvqhBuJkDWuOr6Jt8SGqvTFvYqv7aw/A=
|
||||
SHA256 (cargo/onig_sys-69.9.1.tar.gz) = x/hsbu89bfFfI7z7avSHy9L+1OVYHVjVvx9fi39nJ9w=
|
||||
SHA256 (cargo/openssl-probe-0.1.6.tar.gz) = 0F4n7iE2Ef/n1jSLlC6PlCs3EUwAzAPOwlQpWkoXhS4=
|
||||
SHA256 (cargo/option-ext-0.2.0.tar.gz) = BHRPSerpmreODVwLYDqyGPUV6oz+WkVtdimtiDo7bn0=
|
||||
SHA256 (cargo/os_info-3.12.0.tar.gz) = 0OGsX96NQ8NBORNd+Oqe6UZTlLLY0g8DLTiZj2Sv/8M=
|
||||
SHA256 (cargo/os_pipe-1.2.2.tar.gz) = 2zNfR2CxTq1ikBFvJCe/M6FNTwYX1J94okbeEMGDEiQ=
|
||||
SHA256 (cargo/outref-0.5.2.tar.gz) = GoCADASIw6IWleqYGlSRj7s3q/BPTQcgxFNjIlXi/w4=
|
||||
SHA256 (cargo/overload-0.1.1.tar.gz) = sVgTFjwdgxv0oTw2EMBcDQOzn+sH9+CfojTaybFarzk=
|
||||
SHA256 (cargo/parking_lot-0.12.4.tar.gz) = cNWL9DZptXldFXbQZBz7b7sgV79ilQYmepKAcVhYShM=
|
||||
SHA256 (cargo/parking_lot_core-0.9.11.tar.gz) = vIONKla1sabCX1VXXfxgX6u2O7I2X2wjU++RWapp5KU=
|
||||
SHA256 (cargo/path-absolutize-3.1.1.tar.gz) = 5K84H+efoZW0kJSF2Z9zqAeSMx3wYlGI5weFTwszg/U=
|
||||
SHA256 (cargo/path-dedot-3.1.1.tar.gz) = B7oK1+BHcSQUIT/2dTPm3Ud68KTh0U+1I0PlPTDqk5c=
|
||||
SHA256 (cargo/percent-encoding-2.3.1.tar.gz) = 4xSPUEYgil1WvPwDBT48pjNOUdqN+xm2zcizBvrjKD4=
|
||||
SHA256 (cargo/petgraph-0.6.5.tar.gz) = tMXMhnUGZqPtIL2vXKKgNE+cZ2dMrgUVvsLaFvuqR9s=
|
||||
SHA256 (cargo/phf-0.11.3.tar.gz) = H9Z4CoCuDFLMEgomoaQsGuUbJHolPk4GET0j0sLt0Hg=
|
||||
SHA256 (cargo/phf_codegen-0.11.3.tar.gz) = rvgEjHifpehRVY1wmUbW15qP+IwEQMWHln+OlL+xIWo=
|
||||
SHA256 (cargo/phf_generator-0.11.3.tar.gz) = PIAjFAnCAkahP92zF3b7lCw4VTxR6HH4y9aHpM+1hD0=
|
||||
SHA256 (cargo/phf_macros-0.11.3.tar.gz) = +ErARCnBOn/0N4XXWtJ1afKVHOD/0wozISMNsvxychY=
|
||||
SHA256 (cargo/phf_shared-0.11.3.tar.gz) = Z+q8LvKmDrf6oACXvR/9tb0o5ivzmZBialgiAbenVOU=
|
||||
SHA256 (cargo/pin-project-lite-0.2.16.tar.gz) = Ozz/kivVFwm2Bdnq2apxAx2BRHFC2CjrSm66dv5hn5s=
|
||||
SHA256 (cargo/pin-utils-0.1.0.tar.gz) = i4cNjBUbby+5PoShMUYTjwXQLtEcfnxU+IJqqvfJ8YQ=
|
||||
SHA256 (cargo/pkg-config-0.3.32.tar.gz) = ft3b0LUtcyshrZpfq1xwTBTNlJ5emh7Fkpok/e0bkEw=
|
||||
SHA256 (cargo/plist-1.7.2.tar.gz) = PXckTOLVhM2E9qFfhhlbjJsqDfv9gXwJ4EZCRAkaWO0=
|
||||
SHA256 (cargo/portable-atomic-1.11.1.tar.gz) = +EJnsgoW6pGOQ8aohDPC1U+hRckqgRtbBHzL4VNnRIM=
|
||||
SHA256 (cargo/portable-atomic-util-0.2.4.tar.gz) = 2KLw2NBA14SKcJyveJEt68w/M+5LPKxH1z0eEGnoNQc=
|
||||
SHA256 (cargo/potential_utf-0.1.2.tar.gz) = 5afDCDcnnKE+fIZ+nkAFO8aHQPmIywf3ym30PMc0tYU=
|
||||
SHA256 (cargo/powerfmt-0.2.0.tar.gz) = Q57jBd7xFboFk4226xZE/5QWXFq16UINHBvO27qQk5E=
|
||||
SHA256 (cargo/ppv-lite86-0.2.21.tar.gz) = herjxO0vUNz+cmQ9pL78MN6ttFiptZDXIM3i8rHpfak=
|
||||
SHA256 (cargo/precomputed-hash-0.1.1.tar.gz) = klOD76NGcwR4+0g42+kTfSpHZ1rXicVG0VCm4d1Ksxw=
|
||||
SHA256 (cargo/pretty_assertions-1.4.1.tar.gz) = OuEw4vJx+8KsOkD7HQcYCDnNu+RDx6J+HjwTxcrAEW0=
|
||||
SHA256 (cargo/proc-macro2-1.0.95.tar.gz) = ArPl5oo6GgKq0+xJCpgAfLwTw3y+hKPNe45AbXbn93g=
|
||||
SHA256 (cargo/quick-xml-0.37.5.tar.gz) = Mx6Xoa8L9Zgj5urf/jc9eyf0hb6HSPcUccZiwfJpt/s=
|
||||
SHA256 (cargo/quinn-0.11.8.tar.gz) = YmIUYpzaZ4G23B0xa6MHGJyFumVyE85kLZx3Zw+CAsg=
|
||||
SHA256 (cargo/quinn-proto-0.11.12.tar.gz) = Sd+EOpFhyFu4quVfEBvAusi8r9Y3piDZEi/X4LL3Qi4=
|
||||
SHA256 (cargo/quinn-udp-0.5.13.tar.gz) = /OuxIJ7idjUu8U/4cy4kzCsCu6yYbNdKTIG8svmIGXA=
|
||||
SHA256 (cargo/quote-1.0.40.tar.gz) = GIXAOVcNwA3LT/CHqJ4YX9VrriNN3H8FapRb82RnJI0=
|
||||
SHA256 (cargo/r-efi-5.3.0.tar.gz) = ac2zTBWM6yiN8R4YtL053plPZlfYOEe9/9vX80Z1Sw8=
|
||||
SHA256 (cargo/rand-0.8.5.tar.gz) = NK+NGg4lkkvFt8Q8B5yUIznY8Ki1fDkEm+9YG0YydAQ=
|
||||
SHA256 (cargo/rand-0.9.1.tar.gz) = n7/Z0JSkC/Oudo25NhBJrOTA4EpP1rNZUYvXtzpz3Zc=
|
||||
SHA256 (cargo/rand_chacha-0.9.0.tar.gz) = 0wIrXx32Dybh/93Wxm6KoV3jgq5js6DBv8Dk0+PzJcs=
|
||||
SHA256 (cargo/rand_core-0.6.4.tar.gz) = 7AvkeV4vaigGm+wLX/PirJuvyZ5qmn3DVHmWxcgWkiw=
|
||||
SHA256 (cargo/rand_core-0.9.3.tar.gz) = mdmhOYLc8hAFeop4VysiF7Znw76svzoNi0VPb4KDfTg=
|
||||
SHA256 (cargo/rayon-1.10.0.tar.gz) = tBimAVRRDKGgAqdSypcUmE4h5CQegE0yVVJR+vi3j/o=
|
||||
SHA256 (cargo/rayon-core-1.12.1.tar.gz) = FGWHOj39qornyxS0ODZXyqsLPooKqa6OBLBEhUyN/OI=
|
||||
SHA256 (cargo/redox_syscall-0.5.13.tar.gz) = DQS30O5rSgIHoKetsQTSPssLR9a+rnFS0Po0tpKyn9Y=
|
||||
SHA256 (cargo/redox_users-0.5.0.tar.gz) = 3W+dPUe90q1pRcUBWiJuxhVdC839j3zSn4a3H43pnSs=
|
||||
SHA256 (cargo/reedline-0.40.0.tar.gz) = tc36t0lNE+v7bOZIKGSFGCBdPOhUHvH5SieIfynS1Qs=
|
||||
SHA256 (cargo/regex-1.11.1.tar.gz) = tUTvG06sXcLbM+pjYGrp/8+sJsFBaigGrgv19WsgEZE=
|
||||
SHA256 (cargo/regex-automata-0.1.10.tar.gz) = bCMNc/uNjBucCzE1xRQqis7joFWPuNtc8ctl+NeGITI=
|
||||
SHA256 (cargo/regex-automata-0.4.9.tar.gz) = gJ6Nxh9t5ztGyF9MlkhjEP4wTENM+kNmnXtA9xEVCQg=
|
||||
SHA256 (cargo/regex-syntax-0.6.29.tar.gz) = 8WLG3XsAiYHk1AIQrKILS9D5tgypJxBhsH94U3ci8uE=
|
||||
SHA256 (cargo/regex-syntax-0.8.5.tar.gz) = KxXEMYa+Z6T9Y77lDQMDr//O84FJLr4sXYfzJOG4gVw=
|
||||
SHA256 (cargo/reqwest-0.12.22.tar.gz) = y8kxk35so6BuO2wKp4QYSbFgqQNR1qtGeoubmVl2dTE=
|
||||
SHA256 (cargo/reqwest-eventsource-0.6.0.tar.gz) = YyxVdG27RCdWkWQOe0DJB8FqLcGlhCqpiq7JDabsa94=
|
||||
SHA256 (cargo/rgb-0.8.50.tar.gz) = Vzl9FmRnAEg7Z9LdZRHXkxj50Ff9vSGkBmrqyLQdMQo=
|
||||
SHA256 (cargo/ring-0.17.14.tar.gz) = pGiebCKU2B6I3GJhx2i2O8T824Ur5tE1JJixFPYTg7c=
|
||||
SHA256 (cargo/rust-embed-8.7.2.tar.gz) = AlkIuGgqJrqNEvby1muYdYSkqHvAJKvFu8ElU6jNF4o=
|
||||
SHA256 (cargo/rust-embed-impl-8.7.2.tar.gz) = YGXxpDkrcYGeweod8RIGc0GL84b1DeHW9UIE2DbUNJw=
|
||||
SHA256 (cargo/rust-embed-utils-8.7.2.tar.gz) = 9swMgWSLILcMSR/4zOAMHDsiO7jtK11B8OVMbEwKNZQ=
|
||||
SHA256 (cargo/rust-stemmers-1.2.0.tar.gz) = 5GogNgGf24iBMdt6TIR6EGOnST+XHtlOqCxn6tpjylQ=
|
||||
SHA256 (cargo/rustc-demangle-0.1.25.tar.gz) = mJ5nOfgMStWxPg/X/olTEYA3WxhSDMjIIIDk3EA1uE8=
|
||||
SHA256 (cargo/rustc-hash-2.1.1.tar.gz) = NXcD1BNltLJ8WQ4+2R6rsbZj8HxMCECV5gy+1DYt/w0=
|
||||
SHA256 (cargo/rustix-0.38.44.tar.gz) = /bW8GuK6pZGADfFsnKeGGb9lwEiLQblszsXREiDYwVQ=
|
||||
SHA256 (cargo/rustix-1.0.7.tar.gz) = xx6D1q/n/2SJDsa3HWppu4phCreM42SzNSh2u0yAEmY=
|
||||
SHA256 (cargo/rustls-0.23.28.tar.gz) = cWDj4Qv0U1MIU388ThZBRozQ5IUXXWFjCHwDk8fUZkM=
|
||||
SHA256 (cargo/rustls-native-certs-0.8.1.tar.gz) = f8/y3VK1io2YpwJDZjoNI0xOK3kjVjeEnRWRM5SiR9M=
|
||||
SHA256 (cargo/rustls-pki-types-1.12.0.tar.gz) = IppKTCIQE+fh8aBDZ4xcw5/lFxQ3yI+0cVGiHm9bXHk=
|
||||
SHA256 (cargo/rustls-webpki-0.103.3.tar.gz) = 5Kcv4rz3pqxv19C55ctorrfUwKAnFzAhiz6S1DtOtDU=
|
||||
SHA256 (cargo/rustversion-1.0.21.tar.gz) = ig0Ze9LJ3G5TuE2pVWppukzfq4YZ60GovRzCAnoPax0=
|
||||
SHA256 (cargo/ryu-1.0.20.tar.gz) = KNOysTZuwgmU8f0Yw8WU8Fxd1LxE2LsMHGMsjWgpSB8=
|
||||
SHA256 (cargo/same-file-1.0.6.tar.gz) = k/wdw6qpv+2V4C5urau0uvfjB4sL0bTXtrC2g3iQBQI=
|
||||
SHA256 (cargo/schannel-0.1.27.tar.gz) = HynrqjRflFzsn7vFMuswfw/a2BYfKBtjaVOcjYSHaz0=
|
||||
SHA256 (cargo/scoped-tls-1.0.1.tar.gz) = 4c9kN+sZqPSmzA99ylRJc7C3iEOtv+s2g9GpSgAkopQ=
|
||||
SHA256 (cargo/scopeguard-1.2.0.tar.gz) = lBQ/N3JRCfksJi7Sz15ZvOdJjAG8wVAte5r+Q5pOn0k=
|
||||
SHA256 (cargo/scraper-0.23.1.tar.gz) = Un5l2diIVnWI20wS2hCHWY0Pb4s0bMLFq8kfBfwt/+I=
|
||||
SHA256 (cargo/security-framework-3.2.0.tar.gz) = JxcgQD9GygT3um9V1Dj4vYeNa4ygoQRugijEFFvLsxY=
|
||||
SHA256 (cargo/security-framework-sys-2.14.0.tar.gz) = SdsjHVahkEkctK7alSfxrUU0WvULCFFiKnrbjAOwHDI=
|
||||
SHA256 (cargo/selectors-0.26.0.tar.gz) = /VaKTJu1mOKRoIJEpcH1qKZlC+4kO1sPjbs9nMHYf+g=
|
||||
SHA256 (cargo/serde-1.0.219.tar.gz) = Xw4sbtZgYBm04p5p26upWxGFRBDlNH1SUAJFbbu3hrY=
|
||||
SHA256 (cargo/serde_derive-1.0.219.tar.gz) = WwJ2z38sczZfcVfIEjwhzZpQ+72ER1evKMofWSX8KgA=
|
||||
SHA256 (cargo/serde_json-1.0.140.tar.gz) = IAaLbpbcbJvSPgHfiCfmx+Hy/d1DwhgQOCgDwTa5k3M=
|
||||
SHA256 (cargo/serde_urlencoded-0.7.1.tar.gz) = 00kcFHFcoilMTWqI8V6Ec5eIwdAw7tjBEENqr9qi8/0=
|
||||
SHA256 (cargo/serde_yaml-0.9.34+deprecated.tar.gz) = aosaGi6/Z0AVzALtzM51KH8aATDTlDB7NnQ8L11QS0c=
|
||||
SHA256 (cargo/servo_arc-0.4.1.tar.gz) = IE6jMoA72VoLYDiFkNWc9kaOyb7PYm4kUfHSah2XLeQ=
|
||||
SHA256 (cargo/sha2-0.10.9.tar.gz) = p1B9gZdp0Bo2WrcHeUpAhDksgk9Up6anhi+MPQiSsoM=
|
||||
SHA256 (cargo/sharded-slab-0.1.7.tar.gz) = 9AyjxGgjcT4NQglZLo1ugmqlfpKPCXUmGfxpbEmWN/Y=
|
||||
SHA256 (cargo/shared_child-1.1.1.tar.gz) = HjYtmTW8UPAZlp4vns1meGYS2q4T6PJ3vnv7Zui+0/c=
|
||||
SHA256 (cargo/shared_thread-0.1.0.tar.gz) = x6b5g1fGuw66zhmyIiDlVDgB2d6Q/+d/irsnwFa6wGQ=
|
||||
SHA256 (cargo/shell-words-1.1.0.tar.gz) = JBiKZ2tq5ow7LLOgG+F/v3JAzgCXmbtW1bFAkFHnj94=
|
||||
SHA256 (cargo/shlex-1.3.0.tar.gz) = D9ov8NCEAZuk18bzccldj9dc41JMPLj7ZTowI/YyPmQ=
|
||||
SHA256 (cargo/sigchld-0.2.3.tar.gz) = EhnvUPwP2wT8wkPmqif4VVU0NP+v5PomVU77eLW0v4k=
|
||||
SHA256 (cargo/signal-hook-0.3.18.tar.gz) = 2IGhbPRCaqWEl50wvYLLM0KQJ+QhIrFpdT1u8Qhe1uI=
|
||||
SHA256 (cargo/signal-hook-mio-0.2.4.tar.gz) = NNsaBtSFyRQiSLegVPA0s0myElUfPf0ZyU1Fp1SiF80=
|
||||
SHA256 (cargo/signal-hook-registry-1.4.5.tar.gz) = kgO4BV9joqAOL1k7sFEDZ/5wfX/x5chy3i9TezOeVBA=
|
||||
SHA256 (cargo/simplelog-0.12.2.tar.gz) = FiV62/rvHuWLE2O9wGZMm44eMK7YYEljX7XxR9BlqcA=
|
||||
SHA256 (cargo/siphasher-1.0.1.tar.gz) = Vhmffdq/E/5QdM6Ann0/QrQq5xGABQG1sW6oKtApw50=
|
||||
SHA256 (cargo/slab-0.4.10.tar.gz) = BNwZc2FR81M20yUAesmRF41QShGYY6L8s3WM215SxQ0=
|
||||
SHA256 (cargo/smallvec-1.15.1.tar.gz) = Z7G3o7X+TxN2iHGEBF/PRcaekq9zS3qt3AX7d3tvvQM=
|
||||
SHA256 (cargo/smawk-0.3.2.tar.gz) = t8OIwbXpN1bQx0CWXEHogi+GZiHUGsvfYzamoWj4hAw=
|
||||
SHA256 (cargo/socket2-0.5.10.tar.gz) = 4iN2q+01DXPdHNEZtX/8ytlbTlhafNpD4oYkXOI8Bng=
|
||||
SHA256 (cargo/stable_deref_trait-1.2.0.tar.gz) = qPEScpUS+ORC2B+VqKfd8rfGuKGm9QmpWGQUKzDKstM=
|
||||
SHA256 (cargo/stop-words-0.8.1.tar.gz) = PGqGvp9/pFWbczlmnnICbrQ39enFqFwgf+EDMHkDOhc=
|
||||
SHA256 (cargo/string_cache-0.8.9.tar.gz) = v3dro/p0+Dv0tjw9y7+CFz2yYy7YRSyy2JHTP0Wd5w8=
|
||||
SHA256 (cargo/string_cache_codegen-0.5.4.tar.gz) = xxGShxXx/g/lCcU7Q+mTqaVXurwtCjVn0KMAbxrJMaA=
|
||||
SHA256 (cargo/strip-ansi-escapes-0.2.1.tar.gz) = Ko+AOOfnlpq7Pxt8KoESJekpbaIIU54PecUlHWysACU=
|
||||
SHA256 (cargo/strsim-0.11.1.tar.gz) = fai1c2hF2fL8uDfqXZ4mKFZLOwQ6cJSKPwt3iDjF+08=
|
||||
SHA256 (cargo/strum-0.26.3.tar.gz) = j+wPCu8wSZbPJQsxtaEN7nmAyF2p11k2EpK4vKWhjwY=
|
||||
SHA256 (cargo/strum_macros-0.26.4.tar.gz) = TGvuhaWiSVXcRAOGeVqjeM2c+CrNX3ZEaRUtInDlgb4=
|
||||
SHA256 (cargo/subtle-2.6.1.tar.gz) = E8K93sxXs4Te4YZSNY+yMXL6y4osUczBDXTBV73qMpI=
|
||||
SHA256 (cargo/syn-2.0.104.tar.gz) = F7b3BZY0GM25knSC+jBLxWLs4v3U9hYITFC3AjtDWkA=
|
||||
SHA256 (cargo/sync_wrapper-1.0.2.tar.gz) = C/JWzl79+jcCE8HaurWTWhLknyxY0V6erChw07TycmM=
|
||||
SHA256 (cargo/synstructure-0.13.2.tar.gz) = copw89uvW6t/DEsayNeuXqYKS1VJyKWRQ2HJkUenCdI=
|
||||
SHA256 (cargo/syntect-5.2.0.tar.gz) = h03Po2OZVgQzPPlHrp91HKOvRSLGCIZ3TEljlDtHRrE=
|
||||
SHA256 (cargo/sys-locale-0.3.2.tar.gz) = jquamaAkoWn+ipA8+dSjs2ARCbzBO9njxv/yWROGJsQ=
|
||||
SHA256 (cargo/sysctl-0.5.5.tar.gz) = 7H3dxfD+5Qa6+Ln9uYniQvF+SxHGHfuwY1twUhcZnuo=
|
||||
SHA256 (cargo/tempfile-3.20.0.tar.gz) = 6KZOOYU0nyRBoanvC4U/hpAGw4VfLNpoYqlNJuu51qE=
|
||||
SHA256 (cargo/tendril-0.4.3.tar.gz) = 0koSDF/EZKNFgkDuAsKZ68udZ7UknIhIsJ1jncqNe7A=
|
||||
SHA256 (cargo/termcolor-1.4.1.tar.gz) = BnlPj2xciYsyda6++muKHLJM0sbHk5erFXdIN6C8V1U=
|
||||
SHA256 (cargo/terminal-colorsaurus-0.4.8.tar.gz) = t6/kwXSjy/tS68sRsoll2vdP6REdTgfkBonQWvBuJug=
|
||||
SHA256 (cargo/terminal-trx-0.2.4.tar.gz) = l1tCM676GwJFbV5TsixhZTx0PjCMUc9BgRkdjOQXU6s=
|
||||
SHA256 (cargo/textwrap-0.16.2.tar.gz) = wTVHYVpE3JxFKopTRjis3wcSDUtoR8gXhwXaBjBqMFc=
|
||||
SHA256 (cargo/thiserror-1.0.69.tar.gz) = tqr1M5tXjqhbUOCA/rJQo+iujPzf+aRhyewpBLySP1I=
|
||||
SHA256 (cargo/thiserror-2.0.12.tar.gz) = VnuKLa5YYxT3vip1LsdHQzKVnGRg4CveMNcCpm1Ihwg=
|
||||
SHA256 (cargo/thiserror-impl-1.0.69.tar.gz) = T+5sTvyQBZ4Q+B5tQsYKGPdliMPXTLg6CyQqK2x1BME=
|
||||
SHA256 (cargo/thiserror-impl-2.0.12.tar.gz) = f3z0K0UH2OoyISBllnLPG527k/jy1Oz9blE1D/Wxeh0=
|
||||
SHA256 (cargo/thread_local-1.1.9.tar.gz) = 9gJGpJRPJPbgGKoXze/7eBi3Y1aWXQOwfWqYhuiWIYU=
|
||||
SHA256 (cargo/time-0.3.41.tar.gz) = inYZ4ZvCZuD5xeZoZlnTlLxXlzhZNABgppIh5X28DEA=
|
||||
SHA256 (cargo/time-core-0.1.4.tar.gz) = yemjhxH1WdnjzhzbBt18W46lRryQBS2m0Gu3badLsHw=
|
||||
SHA256 (cargo/time-macros-0.2.22.tar.gz) = NSZzk5Lsk/2LNZyOmFFMs+jgIb605fWXsAoCIfjtikk=
|
||||
SHA256 (cargo/tinystr-0.8.1.tar.gz) = XU9tEUXctXes94PU5gG8HXahMze7VOYjOt1YCwc0TIs=
|
||||
SHA256 (cargo/tinyvec-1.9.0.tar.gz) = CbNmHxfoZSTszUNxqwQpGU4NfACKu0X3p0lbFxlGPHE=
|
||||
SHA256 (cargo/tinyvec_macros-0.1.1.tar.gz) = HzzLrDEf6gX4b2GQS0YrVfs9+IN6Nm38YBoBYdBTLyA=
|
||||
SHA256 (cargo/tokio-1.46.1.tar.gz) = DMOiNE2vviOiRSQf6LCXNbUhEQ0w/O+71f6xeXyjXRc=
|
||||
SHA256 (cargo/tokio-graceful-0.2.2.tar.gz) = RXQLOLSGQYVUcc1AKSLokVa9+9l7abRe7/FwNpzBjH0=
|
||||
SHA256 (cargo/tokio-macros-2.5.0.tar.gz) = bgbUPxNFo7zTn2pW27fcqyukfmjorBNIVefivbr4yrg=
|
||||
SHA256 (cargo/tokio-rustls-0.26.2.tar.gz) = jnJ7NqGg6LdMN2rCIR5AwsivCftAE8YNkQSVgQ8Ajps=
|
||||
SHA256 (cargo/tokio-stream-0.1.17.tar.gz) = 7KWNe7pKdXB4F6LEQXQlP5I2stX70FVgLp1cB8E5oEc=
|
||||
SHA256 (cargo/tokio-util-0.7.15.tar.gz) = ZqU5qa1tXSgVENW9NoyXPWNsAtv4pnMAv7a5UGlq198=
|
||||
SHA256 (cargo/tower-0.5.2.tar.gz) = 0DmtkVnJi3Ds/VQLJXO5f39Sw+jZ+K1XokuRalNpdfk=
|
||||
SHA256 (cargo/tower-http-0.6.6.tar.gz) = rcgv1z3iqXIqxdp0fxI4PSv9uTWR7mxYSG4Al4kPBfI=
|
||||
SHA256 (cargo/tower-layer-0.3.3.tar.gz) = EhwqbNpGmAuw/NFkf/r2zT/HmgE94oh4KDb235xIeA4=
|
||||
SHA256 (cargo/tower-service-0.3.3.tar.gz) = jfm24T8tMskbm9cZwA0ZWIN7x97EdNlJUnmMyOae7sM=
|
||||
SHA256 (cargo/tracing-0.1.41.tar.gz) = eE4KxTXetFBFXL+iim8N8UXqG7euUbghz155J/3PvdA=
|
||||
SHA256 (cargo/tracing-attributes-0.1.30.tar.gz) = gTg6tk5yp6i44TEwxJ49qyne9tDH12oDCHs89xxcaQM=
|
||||
SHA256 (cargo/tracing-core-0.1.34.tar.gz) = udElgfIn6T8JTTryrmkKV0q7iiubepbnz+lkeythdng=
|
||||
SHA256 (cargo/tracing-log-0.2.0.tar.gz) = 7oVfH0AL0OXALRUK5d44QAOaP1SwJRVkBONMI8A/R8M=
|
||||
SHA256 (cargo/tracing-subscriber-0.3.19.tar.gz) = 6Bid7LWsD6e8i5a3y5snAdYNSIBayoSiOABNZl/MQAg=
|
||||
SHA256 (cargo/tree_magic_mini-3.1.6.tar.gz) = qsXolx8kXDOJpaduZIv8gIA64GahJDp12wBk18ESnWM=
|
||||
SHA256 (cargo/try-lock-0.2.5.tar.gz) = 5CGrrdQaQiUnVQTqTWVmkjQYt/BVBvvJwP6GunOWEUs=
|
||||
SHA256 (cargo/typenum-1.18.0.tar.gz) = Hcz/484Hr5OGv9KegMCrGoIFovw05LzUA2TfkCz6jz8=
|
||||
SHA256 (cargo/unicase-2.8.1.tar.gz) = dbhE0XZD7pGIA5QyiXML7IqsSAFQRWFp5kftC1drpTk=
|
||||
SHA256 (cargo/unicode-ident-1.0.18.tar.gz) = Wl85QEpdpQcSpMHuzyXpDdYrYTUCt+kl/U5NGbXJZRI=
|
||||
SHA256 (cargo/unicode-linebreak-0.1.5.tar.gz) = OwnIPDwp03UGo+JgwIwDdDprtmqc1DLGk0q1AaGQVx8=
|
||||
SHA256 (cargo/unicode-segmentation-1.12.0.tar.gz) = 9szyUSEhFLVEM+yUn9anhBJ1+a2iDd3S8p6c7qRQFJM=
|
||||
SHA256 (cargo/unicode-width-0.1.14.tar.gz) = fdbjDpC6pvckEXIGZdQdibmj0DncRbj66h3dB/YX9q8=
|
||||
SHA256 (cargo/unicode-width-0.2.1.tar.gz) = ShoHzH2zgQgzKE6NNyzNxtopdBY57McMnsEH3w+mFUw=
|
||||
SHA256 (cargo/unsafe-libyaml-0.2.11.tar.gz) = ZzqsWfrLq4qQB8f2EI0R9jtgP3yr/5n6v2UP6lwyuGE=
|
||||
SHA256 (cargo/untrusted-0.9.0.tar.gz) = jsttoouKNR13O2jVglrDkBfmgHUPmA86GoXNjdKKR8E=
|
||||
SHA256 (cargo/unty-0.0.4.tar.gz) = bUl4QxfNDR7n7FxxbdWY7FtEg+qDKi3O0mVHHMD2kK4=
|
||||
SHA256 (cargo/url-2.5.4.tar.gz) = Mvi2hsrdFHP0vQEXpdKNNrGt44Tqm1BpocQK7+1/2mA=
|
||||
SHA256 (cargo/urlencoding-2.1.3.tar.gz) = 2vjbo7frhwyvHd7te8nSoEnzz9+ufLUhsIfMM65MSdo=
|
||||
SHA256 (cargo/utf-8-0.7.6.tar.gz) = CcyO5y0qm+zy8v6+AgW77Y/GYVt8tCmtBi3Ht93QNqk=
|
||||
SHA256 (cargo/utf8_iter-1.0.4.tar.gz) = tsFAYg5/+7IsLe5Zyv5ghKWbX/wnqIWaXw1JS11Str4=
|
||||
SHA256 (cargo/utf8parse-0.2.2.tar.gz) = BqveNhFlet9m04PwCwk9f67Mf6VwccziV4ZgyfEBCCE=
|
||||
SHA256 (cargo/uuid-1.17.0.tar.gz) = PPQZnR5dFd3YamlOTQ3/qcMjznWf6lifAP752BzBkx0=
|
||||
SHA256 (cargo/valuable-0.1.1.tar.gz) = unPqnPFqJd8MjKoWxRrLk31XEqhCnbeKPuKdXcrNOmU=
|
||||
SHA256 (cargo/version_check-0.9.5.tar.gz) = C5KPM9l1/GrZ+GyPKDhTrSa91bELfxVCqi+hXiKJEFo=
|
||||
SHA256 (cargo/vsimd-0.8.0.tar.gz) = XDCCygDVpe8Um7i1Vacq6EycWfclDwE6yCKsLkmxnGQ=
|
||||
SHA256 (cargo/vte-0.14.1.tar.gz) = Ix/c1+8wN+gzDY4X5hARosJEEmrMCpgvQECsP58LwHc=
|
||||
SHA256 (cargo/walkdir-2.5.0.tar.gz) = KXkJRkBPkdnF0G+YdO/d6h3AbF7+lFQafWhjEI46Xks=
|
||||
SHA256 (cargo/want-0.3.1.tar.gz) = v6d2Cu0Z4QbeLHwLWBtQny8l09rK9zfLgqxhvG12Cw4=
|
||||
SHA256 (cargo/wasi-0.11.1+wasi-snapshot-preview1.tar.gz) = zPPsZRqEfrAd5zzK0V632Z+ASF3gQ++y83DNZU9OpEs=
|
||||
SHA256 (cargo/wasi-0.14.2+wasi-0.2.4.tar.gz) = loP5pamY2HPA0h/L48CDAJZwFJqPqyKGRLi9NrLEjLM=
|
||||
SHA256 (cargo/wasm-bindgen-0.2.100.tar.gz) = HtyJKddJn8To8L4iYqJBVWz8VKC+oiN5DnFEbyqrHvU=
|
||||
SHA256 (cargo/wasm-bindgen-backend-0.2.100.tar.gz) = LwoGUaXCvCFIe94R7oAsyvTFGTXQ09QqYQH5gWFwC8Y=
|
||||
SHA256 (cargo/wasm-bindgen-futures-0.4.50.tar.gz) = VV1HDsC8O7V4kEBeXUMizJ6oPOuwhVI87XvkFE2sHmE=
|
||||
SHA256 (cargo/wasm-bindgen-macro-0.2.100.tar.gz) = f+Y/xtCe03kr0Il7MU9T3o4WVowrP3mC9GjAv5vQtAc=
|
||||
SHA256 (cargo/wasm-bindgen-macro-support-0.2.100.tar.gz) = iuh+pAyfaJ/CPyCZZbb7ipmtaa7rAjFAi+JJIGBDld4=
|
||||
SHA256 (cargo/wasm-bindgen-shared-0.2.100.tar.gz) = GgXXO5M6hH1szN2o+DiiL/EBrZv5PjNoTznB9fDuzj0=
|
||||
SHA256 (cargo/wasm-streams-0.4.2.tar.gz) = FQU9jYXH7M2+/vYPBnaXYKVjx/Cp1pAqE9NceACwrWU=
|
||||
SHA256 (cargo/wayland-backend-0.3.10.tar.gz) = /ncBgUI+X8edPip/RBC3eZ1aqx3kNyhT3jxqoTyiQSE=
|
||||
SHA256 (cargo/wayland-client-0.31.10.tar.gz) = l4+nxnsIR9vWqfNQyiVpF0l0zUCCc3BU27f7t519mmE=
|
||||
SHA256 (cargo/wayland-protocols-0.32.8.tar.gz) = d5B1RU4emlIXlP7RWIYyPqD+2j+LD8E5D1OYFBMQQio=
|
||||
SHA256 (cargo/wayland-protocols-wlr-0.3.8.tar.gz) = HLbNxzOZwOBlBMQ3/jz4hvJVaN1UVEc9VlCFs21qi78=
|
||||
SHA256 (cargo/wayland-scanner-0.31.6.tar.gz) = iW/a/V0oFF/OeViRfWny/URGmx1Ohhy1lhvL7rxtFIQ=
|
||||
SHA256 (cargo/wayland-sys-0.31.6.tar.gz) = 2867OZx31aqfpduHSAbue066TnNlCUjo+Tlj8SiJZhU=
|
||||
SHA256 (cargo/web-sys-0.3.77.tar.gz) = M7bdLvkYbx8gcuQJ6ZzSKpdTMaazWRsSx2Tg5Vxg1dI=
|
||||
SHA256 (cargo/web-time-1.1.0.tar.gz) = WmWA8wix+tkgdhgIemXATnoQvHfgLI6E6bAN1LEvoLs=
|
||||
SHA256 (cargo/webpki-roots-1.0.1.tar.gz) = h4LdWkGiTu06T0C2BiSbPiNsphrfHyXqTUXHPeEitQI=
|
||||
SHA256 (cargo/which-8.0.0.tar.gz) = 0/q7lTEGw8juqDBuQ5NwDXZXVhy0MSJXGxcrv7fHuh0=
|
||||
SHA256 (cargo/widestring-1.2.0.tar.gz) = 3XzzN5yhqsnuoR+6JP1+MV1iH43+NcjX0r6LeTcm4H0=
|
||||
SHA256 (cargo/winapi-0.3.9.tar.gz) = XIOaZ0/NepiVLlkyQupACr6TmSdGdh44ZBQF0osA9Bk=
|
||||
SHA256 (cargo/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) = rDuHxjYgQm3ZuZHlzgMp7/VFvMu7NPO+Cf9vtqtRt7Y=
|
||||
SHA256 (cargo/winapi-util-0.1.9.tar.gz) = zyIck+E6MNeT92RaDndixV0WnbsKSWcZGKIxnSibELs=
|
||||
SHA256 (cargo/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) = cS4ieEHQV8HuHNL7Ivp+WlRhro5I+iynnsQs/BkxGD8=
|
||||
SHA256 (cargo/windows-0.48.0.tar.gz) = 5oaIa8B4vBsLYAysAUeq24FQibbk2mQBbL11S2NCcA8=
|
||||
SHA256 (cargo/windows-0.61.3.tar.gz) = m6vTp2ekwa72kAQJ+F9dU84lRMzfqoba1IyReCxtaJM=
|
||||
SHA256 (cargo/windows-collections-0.2.0.tar.gz) = O+7OteXP2esddrOBYw6CxCQczQ0n8aOe1BsnYLJVxeg=
|
||||
SHA256 (cargo/windows-core-0.61.2.tar.gz) = wP3T3bkGEMdjiqKzo6spBPueXNvsxkPds2RyEngcSuM=
|
||||
SHA256 (cargo/windows-future-0.2.1.tar.gz) = /GpB6YQnsZ/ktzxVDwYLWfpZLX1oZTfuv5OFYhv7rY4=
|
||||
SHA256 (cargo/windows-implement-0.60.0.tar.gz) = pH/d0TrwgpDmf0rKv0tFn2R1UnGPaDp7QV0pCsdEqDY=
|
||||
SHA256 (cargo/windows-interface-0.59.1.tar.gz) = vZIRtp+NzfqBe/0UvxyXyRiK+jb0dQEw/N8/QA7Kn6g=
|
||||
SHA256 (cargo/windows-link-0.1.3.tar.gz) = XmrSWQDVJOqr27uW0gtDEeHnrhaZr0+yjBeuZsgNeYo=
|
||||
SHA256 (cargo/windows-numerics-0.2.0.tar.gz) = kVCvaAZsTFwH3cDOMEIVVHceUoveQnYUxhA4vCySwrE=
|
||||
SHA256 (cargo/windows-result-0.3.4.tar.gz) = VvQr0zLMbI6sWvET/Awf1qj9KqCKARk1hoblFg0FhsY=
|
||||
SHA256 (cargo/windows-strings-0.4.2.tar.gz) = VubJPzoMOzYXbLEyeklYoDU9XRZsKjXLJorOFekdO1c=
|
||||
SHA256 (cargo/windows-sys-0.48.0.tar.gz) = Z30kGL7GXjM47bB26Aa8HsFWk8XQEEaD8u/oV/YQVqk=
|
||||
SHA256 (cargo/windows-sys-0.52.0.tar.gz) = KCvl82qM54H62MiuGPo/m+/1fsG1LLPeB4kgFCXZoz0=
|
||||
SHA256 (cargo/windows-sys-0.59.0.tar.gz) = Hji8TXntZ/0HW8wlGhw5syoXdrvpLlvvHwvx+MUxhTs=
|
||||
SHA256 (cargo/windows-sys-0.60.2.tar.gz) = 8vUA5NKCNPcgQJkOydOeOmuVD58i09uhhBbDWIJhK8s=
|
||||
SHA256 (cargo/windows-targets-0.48.5.tar.gz) = mi+m4hVdcke+aMCWRWCDFFwYPLu8J2QVDdpFqHGXlAw=
|
||||
SHA256 (cargo/windows-targets-0.52.6.tar.gz) = m3JPcnluA2q5DBAh1HgNTT1kispZ5JHmuY5yW4TpmXM=
|
||||
SHA256 (cargo/windows-targets-0.53.2.tar.gz) = xm9p/MnOEdqZZt2zGkCWjK0AHFvt61wrgu3kJTq0iu8=
|
||||
SHA256 (cargo/windows-threading-0.1.0.tar.gz) = tmRjrS4Oo7v4CLfx03ExHIDhFcC3HWDvwULK+8+wV6Y=
|
||||
SHA256 (cargo/windows_aarch64_gnullvm-0.48.5.tar.gz) = KzjjLwq8z5mHpOMHnftn3NeZ+2E2HlPiiCw8uvDZBdg=
|
||||
SHA256 (cargo/windows_aarch64_gnullvm-0.52.6.tar.gz) = MqRiIYDnoOwES7VVQEyAC8n9nsJi7BR+3VmJzNDALNM=
|
||||
SHA256 (cargo/windows_aarch64_gnullvm-0.53.0.tar.gz) = hrjV+Q3dGctKFHpfpjyoSNs98IXiX+48wQs5tu6652Q=
|
||||
SHA256 (cargo/windows_aarch64_msvc-0.48.5.tar.gz) = 3DUxCXHzstu/PwaQohn0Di2a/PZPmrfMG+cik3wmtLw=
|
||||
SHA256 (cargo/windows_aarch64_msvc-0.52.6.tar.gz) = Cewqe7FS4iUrU/p4AxUAB4eVSLxwnAOd92J8q70F1Gk=
|
||||
SHA256 (cargo/windows_aarch64_msvc-0.53.0.tar.gz) = x2UaH2KhG4y9Xg1CUm5V8smYhsd+AHF57/+GwrE35mw=
|
||||
SHA256 (cargo/windows_i686_gnu-0.48.5.tar.gz) = p1kV5972DJTc73IgC5qOWOUJF0SWDaZOxzSmxumzdD4=
|
||||
SHA256 (cargo/windows_i686_gnu-0.52.6.tar.gz) = jpta1auALpfrjilaxnIOUJ7kwkP2nXgTlAFOv+i7+gs=
|
||||
SHA256 (cargo/windows_i686_gnu-0.53.0.tar.gz) = wdxnZZ0184f19sR53E4o8dS7kN3RpdPaLl2XtC1icsM=
|
||||
SHA256 (cargo/windows_i686_gnullvm-0.52.6.tar.gz) = Du5S04wJCzyqdsVjuGw6S9ce8agZKHwZ1YbXM0ro7WY=
|
||||
SHA256 (cargo/windows_i686_gnullvm-0.53.0.tar.gz) = nObMve2/bWNURxMZ54HA3+8FTIH7x8+D8zikKWwMrhE=
|
||||
SHA256 (cargo/windows_i686_msvc-0.48.5.tar.gz) = j1XCM/cMSyf2bFI1gPePEATotai2WeBaTrSdQWbMpAY=
|
||||
SHA256 (cargo/windows_i686_msvc-0.52.6.tar.gz) = JAlIvAXF58bau6KL+J2J/84+MDAigJ5z3q7+T27FbGY=
|
||||
SHA256 (cargo/windows_i686_msvc-0.53.0.tar.gz) = WB/ulUBrsTOC0vZc1KkIynseTC8ZF/FDuhbv6YpYm10=
|
||||
SHA256 (cargo/windows_x86_64_gnu-0.48.5.tar.gz) = U9QKvSWD0j5HGP3fHr7ITb/4OBwHyuZ/93aLvxnGcY4=
|
||||
SHA256 (cargo/windows_x86_64_gnu-0.52.6.tar.gz) = FHpcgKq/vwx9kBy1iV0d4w7ykH6yH7urKcqUxbCLGng=
|
||||
SHA256 (cargo/windows_x86_64_gnu-0.53.0.tar.gz) = LlW1rJ6jPy/BcW0XQtsVV0/W/I2txRyqscFqPTtBkLo=
|
||||
SHA256 (cargo/windows_x86_64_gnullvm-0.48.5.tar.gz) = C3tSdnhooj1bq3aOOQ3F9cVYJbbTC4bIRP8tx0FARMw=
|
||||
SHA256 (cargo/windows_x86_64_gnullvm-0.52.6.tar.gz) = JNWyPcQXQSZ5aBOW8rSfPejBRz3rUWvTRBCHLv9R7Q0=
|
||||
SHA256 (cargo/windows_x86_64_gnullvm-0.53.0.tar.gz) = Cm4DXdBZkmfOHuEy5Rwn3SlDf2MyV1MFHnHdnkJAbFc=
|
||||
SHA256 (cargo/windows_x86_64_msvc-0.48.5.tar.gz) = 7ZT85hVxpABoUrc4mgY6uYPALrG7N7R/gnLOktBtlTg=
|
||||
SHA256 (cargo/windows_x86_64_msvc-0.52.6.tar.gz) = WJ9tqExkYgR0fRJwoqVmHqZu0cztJjHVRv37FVlZ+ew=
|
||||
SHA256 (cargo/windows_x86_64_msvc-0.53.0.tar.gz) = JxQUMVr/hzhzguw9JxtS1654cm9dRKyYtPQDDJGIBIY=
|
||||
SHA256 (cargo/winsafe-0.0.19.tar.gz) = 0TXRerdwJSrZXpqHLTZc8wkOO+hko0q0b0hVWZPvyQQ=
|
||||
SHA256 (cargo/wit-bindgen-rt-0.39.0.tar.gz) = b0IyDmH+LP00NU7LWX+G9BNISnmLpEqMoRZcWNQtpsE=
|
||||
SHA256 (cargo/wl-clipboard-rs-0.9.2.tar.gz) = jl/40OYAZfVJ+v2dbLYmID6mSnmBhsgNjn30+K9Wuus=
|
||||
SHA256 (cargo/writeable-0.6.1.tar.gz) = 6i8QubsJKN+xtCtl4fnjb39U298IRXr++zivzexPors=
|
||||
SHA256 (cargo/x11rb-0.13.1.tar.gz) = XZH/ynPuf2jOBVdQv59uygeAuMhe/5vARqOw2kF1XhI=
|
||||
SHA256 (cargo/x11rb-protocol-0.13.1.tar.gz) = 7BB8RQPqC0qY70c1YymvE5wKT3dQ5iHPKXPNM4Xryz0=
|
||||
SHA256 (cargo/xml5ever-0.18.1.tar.gz) = m7smQF2OkZvBVHpaqavJXL+kOPBIRPX92dx1lrdIv2k=
|
||||
SHA256 (cargo/xterm-color-1.0.1.tar.gz) = TeXwVvudyLeQh1SGdUTiYUV2cYeqrFqYSV6IrXy4qA8=
|
||||
SHA256 (cargo/yansi-1.0.1.tar.gz) = z+U6Zlf9KA6qiQo7xZFSiS/6PjAQExnRaLeB7WUpsEk=
|
||||
SHA256 (cargo/yoke-0.8.0.tar.gz) = X0G7AbgibvS/1YlDail8U9EY9lkheGMA5Ce+jUh2lcw=
|
||||
SHA256 (cargo/yoke-derive-0.8.0.tar.gz) = ONo8lzbhbF08jFl6mqpdH6Vl0FMq4F4nwkqmL7MsCrY=
|
||||
SHA256 (cargo/zerocopy-0.8.26.tar.gz) = EDndDTwxDPBd4BLYo5/1V8sNIwh/1EytYd8I/DGQei8=
|
||||
SHA256 (cargo/zerocopy-derive-0.8.26.tar.gz) = ns9bTMU2RXLX9MMpZhvMgnJCIpc/LKtvBQpOXCL3UYE=
|
||||
SHA256 (cargo/zerofrom-0.1.6.tar.gz) = UMxC4DM+BWYMNYfzv50EeGiOFdhw+rM0ZFHOf4yfvqU=
|
||||
SHA256 (cargo/zerofrom-derive-0.1.6.tar.gz) = 1x5dbgarCQxnteRJk+wWty3LqrxSbbiDo2AFdni0hQI=
|
||||
SHA256 (cargo/zeroize-1.8.1.tar.gz) = ztNniih5swMG0yP0VCYmaXpGSpfAoHya6/frymXNTd4=
|
||||
SHA256 (cargo/zerotrie-0.2.2.tar.gz) = NvC71HhYP3ntrZeLQHkU9hspcvWvb6CJaGAWvo+a9ZU=
|
||||
SHA256 (cargo/zerovec-0.11.2.tar.gz) = SgXrCA4BW6OcyeI7vl5/sE1fsEA1D5nzTjONX90pRCg=
|
||||
SHA256 (cargo/zerovec-derive-0.11.1.tar.gz) = W5YjfvoMh4xkvYnENvZhvk5GsvPv8eu5dvfvIyHS9Y8=
|
||||
SIZE (aichat-0.30.0.tar.gz) = 999321
|
||||
SIZE (cargo/addr2line-0.24.2.tar.gz) = 39015
|
||||
SIZE (cargo/adler2-2.0.1.tar.gz) = 13366
|
||||
SIZE (cargo/ahash-0.8.12.tar.gz) = 43413
|
||||
SIZE (cargo/aho-corasick-1.1.3.tar.gz) = 183311
|
||||
SIZE (cargo/allocator-api2-0.2.21.tar.gz) = 63622
|
||||
SIZE (cargo/android-tzdata-0.1.1.tar.gz) = 7674
|
||||
SIZE (cargo/android_system_properties-0.1.5.tar.gz) = 5243
|
||||
SIZE (cargo/anndists-0.1.3.tar.gz) = 18305
|
||||
SIZE (cargo/ansi_colours-1.2.3.tar.gz) = 21802
|
||||
SIZE (cargo/anstream-0.6.19.tar.gz) = 28767
|
||||
SIZE (cargo/anstyle-1.0.11.tar.gz) = 15880
|
||||
SIZE (cargo/anstyle-parse-0.2.7.tar.gz) = 21707
|
||||
SIZE (cargo/anstyle-query-1.1.3.tar.gz) = 10190
|
||||
SIZE (cargo/anstyle-wincon-3.0.9.tar.gz) = 12561
|
||||
SIZE (cargo/anyhow-1.0.98.tar.gz) = 53334
|
||||
SIZE (cargo/arboard-3.6.0.tar.gz) = 52701
|
||||
SIZE (cargo/async-recursion-1.1.1.tar.gz) = 14874
|
||||
SIZE (cargo/async-trait-0.1.88.tar.gz) = 32084
|
||||
SIZE (cargo/atomic-waker-1.1.2.tar.gz) = 12422
|
||||
SIZE (cargo/autocfg-1.5.0.tar.gz) = 18729
|
||||
SIZE (cargo/aws-smithy-eventstream-0.60.9.tar.gz) = 20071
|
||||
SIZE (cargo/aws-smithy-types-1.3.2.tar.gz) = 92281
|
||||
SIZE (cargo/backtrace-0.3.75.tar.gz) = 92665
|
||||
SIZE (cargo/base64-0.22.1.tar.gz) = 81597
|
||||
SIZE (cargo/base64-simd-0.8.0.tar.gz) = 12531
|
||||
SIZE (cargo/bincode-1.3.3.tar.gz) = 28958
|
||||
SIZE (cargo/bincode-2.0.1.tar.gz) = 70469
|
||||
SIZE (cargo/bit-set-0.8.0.tar.gz) = 16289
|
||||
SIZE (cargo/bit-vec-0.8.0.tar.gz) = 24132
|
||||
SIZE (cargo/bitflags-1.3.2.tar.gz) = 23021
|
||||
SIZE (cargo/bitflags-2.9.1.tar.gz) = 47913
|
||||
SIZE (cargo/block-buffer-0.10.4.tar.gz) = 10538
|
||||
SIZE (cargo/bm25-2.3.0.tar.gz) = 28728
|
||||
SIZE (cargo/bumpalo-3.19.0.tar.gz) = 96414
|
||||
SIZE (cargo/bytemuck-1.23.1.tar.gz) = 52585
|
||||
SIZE (cargo/byteorder-1.5.0.tar.gz) = 23288
|
||||
SIZE (cargo/bytes-1.10.1.tar.gz) = 76779
|
||||
SIZE (cargo/bytes-utils-0.1.4.tar.gz) = 20703
|
||||
SIZE (cargo/cached-0.55.1.tar.gz) = 73455
|
||||
SIZE (cargo/cached_proc_macro-0.24.0.tar.gz) = 11881
|
||||
SIZE (cargo/cached_proc_macro_types-0.1.1.tar.gz) = 1813
|
||||
SIZE (cargo/cc-1.2.28.tar.gz) = 107943
|
||||
SIZE (cargo/cfg-if-1.0.1.tar.gz) = 8683
|
||||
SIZE (cargo/cfg_aliases-0.2.1.tar.gz) = 6355
|
||||
SIZE (cargo/chrono-0.4.41.tar.gz) = 234621
|
||||
SIZE (cargo/clap-4.5.40.tar.gz) = 57419
|
||||
SIZE (cargo/clap_builder-4.5.40.tar.gz) = 169191
|
||||
SIZE (cargo/clap_derive-4.5.40.tar.gz) = 33470
|
||||
SIZE (cargo/clap_lex-0.7.5.tar.gz) = 13469
|
||||
SIZE (cargo/clipboard-win-5.4.0.tar.gz) = 20559
|
||||
SIZE (cargo/colorchoice-1.0.4.tar.gz) = 8196
|
||||
SIZE (cargo/combine-4.6.7.tar.gz) = 134808
|
||||
SIZE (cargo/core-foundation-0.10.1.tar.gz) = 28886
|
||||
SIZE (cargo/core-foundation-sys-0.8.7.tar.gz) = 37712
|
||||
SIZE (cargo/cpu-time-1.0.0.tar.gz) = 10003
|
||||
SIZE (cargo/cpufeatures-0.2.17.tar.gz) = 13466
|
||||
SIZE (cargo/crc32fast-1.4.2.tar.gz) = 38491
|
||||
SIZE (cargo/crossbeam-deque-0.8.6.tar.gz) = 22471
|
||||
SIZE (cargo/crossbeam-epoch-0.9.18.tar.gz) = 46875
|
||||
SIZE (cargo/crossbeam-utils-0.8.21.tar.gz) = 42691
|
||||
SIZE (cargo/crossterm-0.25.0.tar.gz) = 116533
|
||||
SIZE (cargo/crossterm-0.28.1.tar.gz) = 132275
|
||||
SIZE (cargo/crossterm_winapi-0.9.1.tar.gz) = 16027
|
||||
SIZE (cargo/crypto-common-0.1.6.tar.gz) = 8760
|
||||
SIZE (cargo/cssparser-0.34.0.tar.gz) = 53857
|
||||
SIZE (cargo/cssparser-macros-0.6.1.tar.gz) = 7914
|
||||
SIZE (cargo/darling-0.20.11.tar.gz) = 37614
|
||||
SIZE (cargo/darling_core-0.20.11.tar.gz) = 68006
|
||||
SIZE (cargo/darling_macro-0.20.11.tar.gz) = 2532
|
||||
SIZE (cargo/deranged-0.4.0.tar.gz) = 23235
|
||||
SIZE (cargo/derive_more-0.99.20.tar.gz) = 55041
|
||||
SIZE (cargo/deunicode-1.6.2.tar.gz) = 172772
|
||||
SIZE (cargo/diff-0.1.13.tar.gz) = 46216
|
||||
SIZE (cargo/digest-0.10.7.tar.gz) = 19557
|
||||
SIZE (cargo/dirs-6.0.0.tar.gz) = 14190
|
||||
SIZE (cargo/dirs-sys-0.5.0.tar.gz) = 10157
|
||||
SIZE (cargo/dispatch2-0.3.0.tar.gz) = 54606
|
||||
SIZE (cargo/displaydoc-0.2.5.tar.gz) = 24219
|
||||
SIZE (cargo/downcast-rs-1.2.1.tar.gz) = 11821
|
||||
SIZE (cargo/dtoa-1.0.10.tar.gz) = 17584
|
||||
SIZE (cargo/dtoa-short-0.3.5.tar.gz) = 8287
|
||||
SIZE (cargo/duct-1.0.0.tar.gz) = 31978
|
||||
SIZE (cargo/dyn-clone-1.0.19.tar.gz) = 12896
|
||||
SIZE (cargo/ego-tree-0.10.0.tar.gz) = 17436
|
||||
SIZE (cargo/either-1.15.0.tar.gz) = 20114
|
||||
SIZE (cargo/enum-as-inner-0.6.1.tar.gz) = 12190
|
||||
SIZE (cargo/env_filter-0.1.3.tar.gz) = 15191
|
||||
SIZE (cargo/env_home-0.1.0.tar.gz) = 9006
|
||||
SIZE (cargo/env_logger-0.11.8.tar.gz) = 32538
|
||||
SIZE (cargo/equivalent-1.0.2.tar.gz) = 7419
|
||||
SIZE (cargo/errno-0.3.13.tar.gz) = 12449
|
||||
SIZE (cargo/error-code-3.3.2.tar.gz) = 8516
|
||||
SIZE (cargo/eventsource-stream-0.2.3.tar.gz) = 15033
|
||||
SIZE (cargo/fancy-regex-0.14.0.tar.gz) = 86969
|
||||
SIZE (cargo/fastrand-2.3.0.tar.gz) = 15076
|
||||
SIZE (cargo/fd-lock-4.0.4.tar.gz) = 15522
|
||||
SIZE (cargo/filedescriptor-0.8.3.tar.gz) = 12635
|
||||
SIZE (cargo/fixedbitset-0.4.2.tar.gz) = 15954
|
||||
SIZE (cargo/flate2-1.1.2.tar.gz) = 76495
|
||||
SIZE (cargo/fnv-1.0.7.tar.gz) = 11266
|
||||
SIZE (cargo/foldhash-0.1.5.tar.gz) = 21901
|
||||
SIZE (cargo/form_urlencoded-1.2.1.tar.gz) = 8969
|
||||
SIZE (cargo/futf-0.1.5.tar.gz) = 11344
|
||||
SIZE (cargo/futures-channel-0.3.31.tar.gz) = 31971
|
||||
SIZE (cargo/futures-core-0.3.31.tar.gz) = 14318
|
||||
SIZE (cargo/futures-io-0.3.31.tar.gz) = 9047
|
||||
SIZE (cargo/futures-macro-0.3.31.tar.gz) = 11341
|
||||
SIZE (cargo/futures-sink-0.3.31.tar.gz) = 7958
|
||||
SIZE (cargo/futures-task-0.3.31.tar.gz) = 11217
|
||||
SIZE (cargo/futures-timer-3.0.3.tar.gz) = 19739
|
||||
SIZE (cargo/futures-util-0.3.31.tar.gz) = 162124
|
||||
SIZE (cargo/fuzzy-matcher-0.3.7.tar.gz) = 18047
|
||||
SIZE (cargo/fxhash-0.2.1.tar.gz) = 4102
|
||||
SIZE (cargo/generator-0.8.5.tar.gz) = 37018
|
||||
SIZE (cargo/generic-array-0.14.7.tar.gz) = 15950
|
||||
SIZE (cargo/gethostname-0.4.3.tar.gz) = 9336
|
||||
SIZE (cargo/getrandom-0.2.16.tar.gz) = 40163
|
||||
SIZE (cargo/getrandom-0.3.3.tar.gz) = 49493
|
||||
SIZE (cargo/gimli-0.31.1.tar.gz) = 279515
|
||||
SIZE (cargo/h2-0.4.11.tar.gz) = 175810
|
||||
SIZE (cargo/hashbrown-0.14.5.tar.gz) = 141498
|
||||
SIZE (cargo/hashbrown-0.15.4.tar.gz) = 140447
|
||||
SIZE (cargo/heck-0.5.0.tar.gz) = 11517
|
||||
SIZE (cargo/hermit-abi-0.5.2.tar.gz) = 17435
|
||||
SIZE (cargo/hmac-0.12.1.tar.gz) = 42657
|
||||
SIZE (cargo/hnsw_rs-0.3.2.tar.gz) = 71131
|
||||
SIZE (cargo/html5ever-0.27.0.tar.gz) = 72913
|
||||
SIZE (cargo/html5ever-0.29.1.tar.gz) = 72424
|
||||
SIZE (cargo/html_to_markdown-0.1.0.tar.gz) = 9666
|
||||
SIZE (cargo/http-1.3.1.tar.gz) = 106063
|
||||
SIZE (cargo/http-body-1.0.1.tar.gz) = 6125
|
||||
SIZE (cargo/http-body-util-0.1.3.tar.gz) = 16975
|
||||
SIZE (cargo/httparse-1.10.1.tar.gz) = 45190
|
||||
SIZE (cargo/httpdate-1.0.3.tar.gz) = 10639
|
||||
SIZE (cargo/hyper-1.6.0.tar.gz) = 153923
|
||||
SIZE (cargo/hyper-rustls-0.27.7.tar.gz) = 35435
|
||||
SIZE (cargo/hyper-util-0.1.14.tar.gz) = 101462
|
||||
SIZE (cargo/iana-time-zone-0.1.63.tar.gz) = 32919
|
||||
SIZE (cargo/iana-time-zone-haiku-0.1.2.tar.gz) = 7185
|
||||
SIZE (cargo/icu_collections-2.0.0.tar.gz) = 83033
|
||||
SIZE (cargo/icu_locale_core-2.0.0.tar.gz) = 74430
|
||||
SIZE (cargo/icu_normalizer-2.0.0.tar.gz) = 61543
|
||||
SIZE (cargo/icu_normalizer_data-2.0.0.tar.gz) = 68101
|
||||
SIZE (cargo/icu_properties-2.0.1.tar.gz) = 58165
|
||||
SIZE (cargo/icu_properties_data-2.0.1.tar.gz) = 159735
|
||||
SIZE (cargo/icu_provider-2.0.0.tar.gz) = 50966
|
||||
SIZE (cargo/ident_case-1.0.1.tar.gz) = 3492
|
||||
SIZE (cargo/idna-1.0.3.tar.gz) = 142515
|
||||
SIZE (cargo/idna_adapter-1.2.1.tar.gz) = 10389
|
||||
SIZE (cargo/indexmap-2.10.0.tar.gz) = 95836
|
||||
SIZE (cargo/inquire-0.7.5.tar.gz) = 102904
|
||||
SIZE (cargo/io-uring-0.7.8.tar.gz) = 94958
|
||||
SIZE (cargo/ipnet-2.11.0.tar.gz) = 29718
|
||||
SIZE (cargo/iri-string-0.7.8.tar.gz) = 141493
|
||||
SIZE (cargo/is-terminal-0.4.16.tar.gz) = 7811
|
||||
SIZE (cargo/is_terminal_polyfill-1.70.1.tar.gz) = 7492
|
||||
SIZE (cargo/itertools-0.13.0.tar.gz) = 146261
|
||||
SIZE (cargo/itoa-1.0.15.tar.gz) = 11231
|
||||
SIZE (cargo/jiff-0.2.15.tar.gz) = 712996
|
||||
SIZE (cargo/jiff-static-0.2.15.tar.gz) = 76146
|
||||
SIZE (cargo/js-sys-0.3.77.tar.gz) = 55538
|
||||
SIZE (cargo/json-patch-4.0.0.tar.gz) = 22029
|
||||
SIZE (cargo/jsonptr-0.7.1.tar.gz) = 54126
|
||||
SIZE (cargo/lazy_static-1.5.0.tar.gz) = 14025
|
||||
SIZE (cargo/libc-0.2.174.tar.gz) = 779933
|
||||
SIZE (cargo/libredox-0.1.4.tar.gz) = 6946
|
||||
SIZE (cargo/linux-raw-sys-0.4.15.tar.gz) = 2150898
|
||||
SIZE (cargo/linux-raw-sys-0.9.4.tar.gz) = 2311088
|
||||
SIZE (cargo/litemap-0.8.0.tar.gz) = 34344
|
||||
SIZE (cargo/lock_api-0.4.13.tar.gz) = 28565
|
||||
SIZE (cargo/log-0.4.27.tar.gz) = 48120
|
||||
SIZE (cargo/loom-0.7.2.tar.gz) = 73989
|
||||
SIZE (cargo/lru-slab-0.1.2.tar.gz) = 9090
|
||||
SIZE (cargo/mac-0.1.1.tar.gz) = 4838
|
||||
SIZE (cargo/mach2-0.4.3.tar.gz) = 22180
|
||||
SIZE (cargo/markup5ever-0.12.1.tar.gz) = 34763
|
||||
SIZE (cargo/markup5ever-0.14.1.tar.gz) = 38103
|
||||
SIZE (cargo/markup5ever_rcdom-0.3.0.tar.gz) = 18284
|
||||
SIZE (cargo/match_token-0.1.0.tar.gz) = 4903
|
||||
SIZE (cargo/matchers-0.1.0.tar.gz) = 6948
|
||||
SIZE (cargo/memchr-2.7.5.tar.gz) = 97603
|
||||
SIZE (cargo/memoffset-0.7.1.tar.gz) = 8556
|
||||
SIZE (cargo/mime-0.3.17.tar.gz) = 15712
|
||||
SIZE (cargo/mime_guess-2.0.5.tar.gz) = 27166
|
||||
SIZE (cargo/minimal-lexical-0.2.1.tar.gz) = 94841
|
||||
SIZE (cargo/miniz_oxide-0.8.9.tar.gz) = 67132
|
||||
SIZE (cargo/mio-0.8.11.tar.gz) = 102983
|
||||
SIZE (cargo/mio-1.0.4.tar.gz) = 104212
|
||||
SIZE (cargo/mmap-rs-0.6.1.tar.gz) = 30843
|
||||
SIZE (cargo/new_debug_unreachable-1.0.6.tar.gz) = 2582
|
||||
SIZE (cargo/newline-converter-0.3.0.tar.gz) = 4603
|
||||
SIZE (cargo/nix-0.26.4.tar.gz) = 279099
|
||||
SIZE (cargo/nom-7.1.3.tar.gz) = 117570
|
||||
SIZE (cargo/nu-ansi-term-0.46.0.tar.gz) = 24311
|
||||
SIZE (cargo/nu-ansi-term-0.50.1.tar.gz) = 28536
|
||||
SIZE (cargo/num-conv-0.1.0.tar.gz) = 7444
|
||||
SIZE (cargo/num-integer-0.1.46.tar.gz) = 22331
|
||||
SIZE (cargo/num-traits-0.2.19.tar.gz) = 51631
|
||||
SIZE (cargo/num_cpus-1.17.0.tar.gz) = 15874
|
||||
SIZE (cargo/num_threads-0.1.7.tar.gz) = 7455
|
||||
SIZE (cargo/objc2-0.6.1.tar.gz) = 270980
|
||||
SIZE (cargo/objc2-app-kit-0.3.1.tar.gz) = 495884
|
||||
SIZE (cargo/objc2-core-foundation-0.3.1.tar.gz) = 178121
|
||||
SIZE (cargo/objc2-core-graphics-0.3.1.tar.gz) = 72294
|
||||
SIZE (cargo/objc2-encode-4.1.0.tar.gz) = 21004
|
||||
SIZE (cargo/objc2-foundation-0.3.1.tar.gz) = 324572
|
||||
SIZE (cargo/objc2-io-surface-0.3.1.tar.gz) = 11724
|
||||
SIZE (cargo/object-0.36.7.tar.gz) = 329938
|
||||
SIZE (cargo/once_cell-1.21.3.tar.gz) = 34534
|
||||
SIZE (cargo/once_cell_polyfill-1.70.1.tar.gz) = 7510
|
||||
SIZE (cargo/onig-6.5.1.tar.gz) = 32394
|
||||
SIZE (cargo/onig_sys-69.9.1.tar.gz) = 656378
|
||||
SIZE (cargo/openssl-probe-0.1.6.tar.gz) = 8128
|
||||
SIZE (cargo/option-ext-0.2.0.tar.gz) = 7345
|
||||
SIZE (cargo/os_info-3.12.0.tar.gz) = 24642
|
||||
SIZE (cargo/os_pipe-1.2.2.tar.gz) = 10810
|
||||
SIZE (cargo/outref-0.5.2.tar.gz) = 5621
|
||||
SIZE (cargo/overload-0.1.1.tar.gz) = 24439
|
||||
SIZE (cargo/parking_lot-0.12.4.tar.gz) = 46779
|
||||
SIZE (cargo/parking_lot_core-0.9.11.tar.gz) = 34773
|
||||
SIZE (cargo/path-absolutize-3.1.1.tar.gz) = 6605
|
||||
SIZE (cargo/path-dedot-3.1.1.tar.gz) = 6596
|
||||
SIZE (cargo/percent-encoding-2.3.1.tar.gz) = 10235
|
||||
SIZE (cargo/petgraph-0.6.5.tar.gz) = 710970
|
||||
SIZE (cargo/phf-0.11.3.tar.gz) = 23231
|
||||
SIZE (cargo/phf_codegen-0.11.3.tar.gz) = 13741
|
||||
SIZE (cargo/phf_generator-0.11.3.tar.gz) = 15431
|
||||
SIZE (cargo/phf_macros-0.11.3.tar.gz) = 18436
|
||||
SIZE (cargo/phf_shared-0.11.3.tar.gz) = 15199
|
||||
SIZE (cargo/pin-project-lite-0.2.16.tar.gz) = 30504
|
||||
SIZE (cargo/pin-utils-0.1.0.tar.gz) = 7580
|
||||
SIZE (cargo/pkg-config-0.3.32.tar.gz) = 21370
|
||||
SIZE (cargo/plist-1.7.2.tar.gz) = 102909
|
||||
SIZE (cargo/portable-atomic-1.11.1.tar.gz) = 185506
|
||||
SIZE (cargo/portable-atomic-util-0.2.4.tar.gz) = 47043
|
||||
SIZE (cargo/potential_utf-0.1.2.tar.gz) = 9613
|
||||
SIZE (cargo/powerfmt-0.2.0.tar.gz) = 15165
|
||||
SIZE (cargo/ppv-lite86-0.2.21.tar.gz) = 22522
|
||||
SIZE (cargo/precomputed-hash-0.1.1.tar.gz) = 1640
|
||||
SIZE (cargo/pretty_assertions-1.4.1.tar.gz) = 78952
|
||||
SIZE (cargo/proc-macro2-1.0.95.tar.gz) = 51820
|
||||
SIZE (cargo/quick-xml-0.37.5.tar.gz) = 190481
|
||||
SIZE (cargo/quinn-0.11.8.tar.gz) = 79949
|
||||
SIZE (cargo/quinn-proto-0.11.12.tar.gz) = 235821
|
||||
SIZE (cargo/quinn-udp-0.5.13.tar.gz) = 32621
|
||||
SIZE (cargo/quote-1.0.40.tar.gz) = 31063
|
||||
SIZE (cargo/r-efi-5.3.0.tar.gz) = 64532
|
||||
SIZE (cargo/rand-0.8.5.tar.gz) = 87113
|
||||
SIZE (cargo/rand-0.9.1.tar.gz) = 97986
|
||||
SIZE (cargo/rand_chacha-0.9.0.tar.gz) = 18258
|
||||
SIZE (cargo/rand_core-0.6.4.tar.gz) = 22666
|
||||
SIZE (cargo/rand_core-0.9.3.tar.gz) = 24543
|
||||
SIZE (cargo/rayon-1.10.0.tar.gz) = 180155
|
||||
SIZE (cargo/rayon-core-1.12.1.tar.gz) = 70701
|
||||
SIZE (cargo/redox_syscall-0.5.13.tar.gz) = 29489
|
||||
SIZE (cargo/redox_users-0.5.0.tar.gz) = 15586
|
||||
SIZE (cargo/reedline-0.40.0.tar.gz) = 145369
|
||||
SIZE (cargo/regex-1.11.1.tar.gz) = 254170
|
||||
SIZE (cargo/regex-automata-0.1.10.tar.gz) = 114533
|
||||
SIZE (cargo/regex-automata-0.4.9.tar.gz) = 618525
|
||||
SIZE (cargo/regex-syntax-0.6.29.tar.gz) = 299752
|
||||
SIZE (cargo/regex-syntax-0.8.5.tar.gz) = 357541
|
||||
SIZE (cargo/reqwest-0.12.22.tar.gz) = 200283
|
||||
SIZE (cargo/reqwest-eventsource-0.6.0.tar.gz) = 19822
|
||||
SIZE (cargo/rgb-0.8.50.tar.gz) = 21980
|
||||
SIZE (cargo/ring-0.17.14.tar.gz) = 1502610
|
||||
SIZE (cargo/rust-embed-8.7.2.tar.gz) = 906250
|
||||
SIZE (cargo/rust-embed-impl-8.7.2.tar.gz) = 9663
|
||||
SIZE (cargo/rust-embed-utils-8.7.2.tar.gz) = 6123
|
||||
SIZE (cargo/rust-stemmers-1.2.0.tar.gz) = 2351301
|
||||
SIZE (cargo/rustc-demangle-0.1.25.tar.gz) = 29590
|
||||
SIZE (cargo/rustc-hash-2.1.1.tar.gz) = 14154
|
||||
SIZE (cargo/rustix-0.38.44.tar.gz) = 379347
|
||||
SIZE (cargo/rustix-1.0.7.tar.gz) = 414500
|
||||
SIZE (cargo/rustls-0.23.28.tar.gz) = 365699
|
||||
SIZE (cargo/rustls-native-certs-0.8.1.tar.gz) = 31129
|
||||
SIZE (cargo/rustls-pki-types-1.12.0.tar.gz) = 64740
|
||||
SIZE (cargo/rustls-webpki-0.103.3.tar.gz) = 81840
|
||||
SIZE (cargo/rustversion-1.0.21.tar.gz) = 21001
|
||||
SIZE (cargo/ryu-1.0.20.tar.gz) = 48738
|
||||
SIZE (cargo/same-file-1.0.6.tar.gz) = 10183
|
||||
SIZE (cargo/schannel-0.1.27.tar.gz) = 42772
|
||||
SIZE (cargo/scoped-tls-1.0.1.tar.gz) = 8202
|
||||
SIZE (cargo/scopeguard-1.2.0.tar.gz) = 11619
|
||||
SIZE (cargo/scraper-0.23.1.tar.gz) = 24157
|
||||
SIZE (cargo/security-framework-3.2.0.tar.gz) = 86095
|
||||
SIZE (cargo/security-framework-sys-2.14.0.tar.gz) = 20537
|
||||
SIZE (cargo/selectors-0.26.0.tar.gz) = 64329
|
||||
SIZE (cargo/serde-1.0.219.tar.gz) = 78983
|
||||
SIZE (cargo/serde_derive-1.0.219.tar.gz) = 57798
|
||||
SIZE (cargo/serde_json-1.0.140.tar.gz) = 154852
|
||||
SIZE (cargo/serde_urlencoded-0.7.1.tar.gz) = 12822
|
||||
SIZE (cargo/serde_yaml-0.9.34+deprecated.tar.gz) = 65290
|
||||
SIZE (cargo/servo_arc-0.4.1.tar.gz) = 18512
|
||||
SIZE (cargo/sha2-0.10.9.tar.gz) = 29271
|
||||
SIZE (cargo/sharded-slab-0.1.7.tar.gz) = 58227
|
||||
SIZE (cargo/shared_child-1.1.1.tar.gz) = 14191
|
||||
SIZE (cargo/shared_thread-0.1.0.tar.gz) = 7492
|
||||
SIZE (cargo/shell-words-1.1.0.tar.gz) = 9871
|
||||
SIZE (cargo/shlex-1.3.0.tar.gz) = 18713
|
||||
SIZE (cargo/sigchld-0.2.3.tar.gz) = 9164
|
||||
SIZE (cargo/signal-hook-0.3.18.tar.gz) = 50862
|
||||
SIZE (cargo/signal-hook-mio-0.2.4.tar.gz) = 9314
|
||||
SIZE (cargo/signal-hook-registry-1.4.5.tar.gz) = 19004
|
||||
SIZE (cargo/simplelog-0.12.2.tar.gz) = 21548
|
||||
SIZE (cargo/siphasher-1.0.1.tar.gz) = 10351
|
||||
SIZE (cargo/slab-0.4.10.tar.gz) = 17810
|
||||
SIZE (cargo/smallvec-1.15.1.tar.gz) = 38116
|
||||
SIZE (cargo/smawk-0.3.2.tar.gz) = 13831
|
||||
SIZE (cargo/socket2-0.5.10.tar.gz) = 58169
|
||||
SIZE (cargo/stable_deref_trait-1.2.0.tar.gz) = 8054
|
||||
SIZE (cargo/stop-words-0.8.1.tar.gz) = 110942
|
||||
SIZE (cargo/string_cache-0.8.9.tar.gz) = 17408
|
||||
SIZE (cargo/string_cache_codegen-0.5.4.tar.gz) = 9406
|
||||
SIZE (cargo/strip-ansi-escapes-0.2.1.tar.gz) = 8273
|
||||
SIZE (cargo/strsim-0.11.1.tar.gz) = 14266
|
||||
SIZE (cargo/strum-0.26.3.tar.gz) = 7237
|
||||
SIZE (cargo/strum_macros-0.26.4.tar.gz) = 27531
|
||||
SIZE (cargo/subtle-2.6.1.tar.gz) = 14562
|
||||
SIZE (cargo/syn-2.0.104.tar.gz) = 299699
|
||||
SIZE (cargo/sync_wrapper-1.0.2.tar.gz) = 6958
|
||||
SIZE (cargo/synstructure-0.13.2.tar.gz) = 18950
|
||||
SIZE (cargo/syntect-5.2.0.tar.gz) = 822671
|
||||
SIZE (cargo/sys-locale-0.3.2.tar.gz) = 15072
|
||||
SIZE (cargo/sysctl-0.5.5.tar.gz) = 18414
|
||||
SIZE (cargo/tempfile-3.20.0.tar.gz) = 42306
|
||||
SIZE (cargo/tendril-0.4.3.tar.gz) = 37210
|
||||
SIZE (cargo/termcolor-1.4.1.tar.gz) = 18773
|
||||
SIZE (cargo/terminal-colorsaurus-0.4.8.tar.gz) = 27828
|
||||
SIZE (cargo/terminal-trx-0.2.4.tar.gz) = 16720
|
||||
SIZE (cargo/textwrap-0.16.2.tar.gz) = 57077
|
||||
SIZE (cargo/thiserror-1.0.69.tar.gz) = 22198
|
||||
SIZE (cargo/thiserror-2.0.12.tar.gz) = 28693
|
||||
SIZE (cargo/thiserror-impl-1.0.69.tar.gz) = 18365
|
||||
SIZE (cargo/thiserror-impl-2.0.12.tar.gz) = 21141
|
||||
SIZE (cargo/thread_local-1.1.9.tar.gz) = 19315
|
||||
SIZE (cargo/time-0.3.41.tar.gz) = 138369
|
||||
SIZE (cargo/time-core-0.1.4.tar.gz) = 8422
|
||||
SIZE (cargo/time-macros-0.2.22.tar.gz) = 24604
|
||||
SIZE (cargo/tinystr-0.8.1.tar.gz) = 23333
|
||||
SIZE (cargo/tinyvec-1.9.0.tar.gz) = 54137
|
||||
SIZE (cargo/tinyvec_macros-0.1.1.tar.gz) = 5865
|
||||
SIZE (cargo/tokio-1.46.1.tar.gz) = 823632
|
||||
SIZE (cargo/tokio-graceful-0.2.2.tar.gz) = 34483
|
||||
SIZE (cargo/tokio-macros-2.5.0.tar.gz) = 12617
|
||||
SIZE (cargo/tokio-rustls-0.26.2.tar.gz) = 31655
|
||||
SIZE (cargo/tokio-stream-0.1.17.tar.gz) = 38477
|
||||
SIZE (cargo/tokio-util-0.7.15.tar.gz) = 124255
|
||||
SIZE (cargo/tower-0.5.2.tar.gz) = 109417
|
||||
SIZE (cargo/tower-http-0.6.6.tar.gz) = 133515
|
||||
SIZE (cargo/tower-layer-0.3.3.tar.gz) = 6180
|
||||
SIZE (cargo/tower-service-0.3.3.tar.gz) = 6950
|
||||
SIZE (cargo/tracing-0.1.41.tar.gz) = 82448
|
||||
SIZE (cargo/tracing-attributes-0.1.30.tar.gz) = 39142
|
||||
SIZE (cargo/tracing-core-0.1.34.tar.gz) = 63760
|
||||
SIZE (cargo/tracing-log-0.2.0.tar.gz) = 17561
|
||||
SIZE (cargo/tracing-subscriber-0.3.19.tar.gz) = 198345
|
||||
SIZE (cargo/tree_magic_mini-3.1.6.tar.gz) = 14869
|
||||
SIZE (cargo/try-lock-0.2.5.tar.gz) = 4314
|
||||
SIZE (cargo/typenum-1.18.0.tar.gz) = 74871
|
||||
SIZE (cargo/unicase-2.8.1.tar.gz) = 24088
|
||||
SIZE (cargo/unicode-ident-1.0.18.tar.gz) = 47743
|
||||
SIZE (cargo/unicode-linebreak-0.1.5.tar.gz) = 15324
|
||||
SIZE (cargo/unicode-segmentation-1.12.0.tar.gz) = 106323
|
||||
SIZE (cargo/unicode-width-0.1.14.tar.gz) = 271615
|
||||
SIZE (cargo/unicode-width-0.2.1.tar.gz) = 279344
|
||||
SIZE (cargo/unsafe-libyaml-0.2.11.tar.gz) = 62101
|
||||
SIZE (cargo/untrusted-0.9.0.tar.gz) = 14447
|
||||
SIZE (cargo/unty-0.0.4.tar.gz) = 7200
|
||||
SIZE (cargo/url-2.5.4.tar.gz) = 81097
|
||||
SIZE (cargo/urlencoding-2.1.3.tar.gz) = 6538
|
||||
SIZE (cargo/utf-8-0.7.6.tar.gz) = 10422
|
||||
SIZE (cargo/utf8_iter-1.0.4.tar.gz) = 10437
|
||||
SIZE (cargo/utf8parse-0.2.2.tar.gz) = 13499
|
||||
SIZE (cargo/uuid-1.17.0.tar.gz) = 59014
|
||||
SIZE (cargo/valuable-0.1.1.tar.gz) = 28679
|
||||
SIZE (cargo/version_check-0.9.5.tar.gz) = 15554
|
||||
SIZE (cargo/vsimd-0.8.0.tar.gz) = 21377
|
||||
SIZE (cargo/vte-0.14.1.tar.gz) = 57382
|
||||
SIZE (cargo/walkdir-2.5.0.tar.gz) = 23951
|
||||
SIZE (cargo/want-0.3.1.tar.gz) = 6398
|
||||
SIZE (cargo/wasi-0.11.1+wasi-snapshot-preview1.tar.gz) = 28477
|
||||
SIZE (cargo/wasi-0.14.2+wasi-0.2.4.tar.gz) = 140921
|
||||
SIZE (cargo/wasm-bindgen-0.2.100.tar.gz) = 48288
|
||||
SIZE (cargo/wasm-bindgen-backend-0.2.100.tar.gz) = 32111
|
||||
SIZE (cargo/wasm-bindgen-futures-0.4.50.tar.gz) = 16181
|
||||
SIZE (cargo/wasm-bindgen-macro-0.2.100.tar.gz) = 9663
|
||||
SIZE (cargo/wasm-bindgen-macro-support-0.2.100.tar.gz) = 26243
|
||||
SIZE (cargo/wasm-bindgen-shared-0.2.100.tar.gz) = 8570
|
||||
SIZE (cargo/wasm-streams-0.4.2.tar.gz) = 36773
|
||||
SIZE (cargo/wayland-backend-0.3.10.tar.gz) = 75632
|
||||
SIZE (cargo/wayland-client-0.31.10.tar.gz) = 64777
|
||||
SIZE (cargo/wayland-protocols-0.32.8.tar.gz) = 210103
|
||||
SIZE (cargo/wayland-protocols-wlr-0.3.8.tar.gz) = 28616
|
||||
SIZE (cargo/wayland-scanner-0.31.6.tar.gz) = 36365
|
||||
SIZE (cargo/wayland-sys-0.31.6.tar.gz) = 10049
|
||||
SIZE (cargo/web-sys-0.3.77.tar.gz) = 638246
|
||||
SIZE (cargo/web-time-1.1.0.tar.gz) = 18026
|
||||
SIZE (cargo/webpki-roots-1.0.1.tar.gz) = 247202
|
||||
SIZE (cargo/which-8.0.0.tar.gz) = 26209
|
||||
SIZE (cargo/widestring-1.2.0.tar.gz) = 89105
|
||||
SIZE (cargo/winapi-0.3.9.tar.gz) = 1200382
|
||||
SIZE (cargo/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) = 2918815
|
||||
SIZE (cargo/winapi-util-0.1.9.tar.gz) = 12464
|
||||
SIZE (cargo/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) = 2947998
|
||||
SIZE (cargo/windows-0.48.0.tar.gz) = 11864177
|
||||
SIZE (cargo/windows-0.61.3.tar.gz) = 9372520
|
||||
SIZE (cargo/windows-collections-0.2.0.tar.gz) = 13579
|
||||
SIZE (cargo/windows-core-0.61.2.tar.gz) = 36771
|
||||
SIZE (cargo/windows-future-0.2.1.tar.gz) = 17532
|
||||
SIZE (cargo/windows-implement-0.60.0.tar.gz) = 15073
|
||||
SIZE (cargo/windows-interface-0.59.1.tar.gz) = 11735
|
||||
SIZE (cargo/windows-link-0.1.3.tar.gz) = 6154
|
||||
SIZE (cargo/windows-numerics-0.2.0.tar.gz) = 9686
|
||||
SIZE (cargo/windows-result-0.3.4.tar.gz) = 13418
|
||||
SIZE (cargo/windows-strings-0.4.2.tar.gz) = 13983
|
||||
SIZE (cargo/windows-sys-0.48.0.tar.gz) = 2628884
|
||||
SIZE (cargo/windows-sys-0.52.0.tar.gz) = 2576877
|
||||
SIZE (cargo/windows-sys-0.59.0.tar.gz) = 2387323
|
||||
SIZE (cargo/windows-sys-0.60.2.tar.gz) = 2518479
|
||||
SIZE (cargo/windows-targets-0.48.5.tar.gz) = 6904
|
||||
SIZE (cargo/windows-targets-0.52.6.tar.gz) = 6403
|
||||
SIZE (cargo/windows-targets-0.53.2.tar.gz) = 7046
|
||||
SIZE (cargo/windows-threading-0.1.0.tar.gz) = 9085
|
||||
SIZE (cargo/windows_aarch64_gnullvm-0.48.5.tar.gz) = 418492
|
||||
SIZE (cargo/windows_aarch64_gnullvm-0.52.6.tar.gz) = 435718
|
||||
SIZE (cargo/windows_aarch64_gnullvm-0.53.0.tar.gz) = 782443
|
||||
SIZE (cargo/windows_aarch64_msvc-0.48.5.tar.gz) = 798483
|
||||
SIZE (cargo/windows_aarch64_msvc-0.52.6.tar.gz) = 832615
|
||||
SIZE (cargo/windows_aarch64_msvc-0.53.0.tar.gz) = 834446
|
||||
SIZE (cargo/windows_i686_gnu-0.48.5.tar.gz) = 844891
|
||||
SIZE (cargo/windows_i686_gnu-0.52.6.tar.gz) = 880402
|
||||
SIZE (cargo/windows_i686_gnu-0.53.0.tar.gz) = 936973
|
||||
SIZE (cargo/windows_i686_gnullvm-0.52.6.tar.gz) = 475940
|
||||
SIZE (cargo/windows_i686_gnullvm-0.53.0.tar.gz) = 854056
|
||||
SIZE (cargo/windows_i686_msvc-0.48.5.tar.gz) = 864300
|
||||
SIZE (cargo/windows_i686_msvc-0.52.6.tar.gz) = 901163
|
||||
SIZE (cargo/windows_i686_msvc-0.53.0.tar.gz) = 903450
|
||||
SIZE (cargo/windows_x86_64_gnu-0.48.5.tar.gz) = 801619
|
||||
SIZE (cargo/windows_x86_64_gnu-0.52.6.tar.gz) = 836363
|
||||
SIZE (cargo/windows_x86_64_gnu-0.53.0.tar.gz) = 902585
|
||||
SIZE (cargo/windows_x86_64_gnullvm-0.48.5.tar.gz) = 418486
|
||||
SIZE (cargo/windows_x86_64_gnullvm-0.52.6.tar.gz) = 435707
|
||||
SIZE (cargo/windows_x86_64_gnullvm-0.53.0.tar.gz) = 782434
|
||||
SIZE (cargo/windows_x86_64_msvc-0.48.5.tar.gz) = 798412
|
||||
SIZE (cargo/windows_x86_64_msvc-0.52.6.tar.gz) = 832564
|
||||
SIZE (cargo/windows_x86_64_msvc-0.53.0.tar.gz) = 834400
|
||||
SIZE (cargo/winsafe-0.0.19.tar.gz) = 492820
|
||||
SIZE (cargo/wit-bindgen-rt-0.39.0.tar.gz) = 12241
|
||||
SIZE (cargo/wl-clipboard-rs-0.9.2.tar.gz) = 39007
|
||||
SIZE (cargo/writeable-0.6.1.tar.gz) = 24068
|
||||
SIZE (cargo/x11rb-0.13.1.tar.gz) = 223916
|
||||
SIZE (cargo/x11rb-protocol-0.13.1.tar.gz) = 508522
|
||||
SIZE (cargo/xml5ever-0.18.1.tar.gz) = 40190
|
||||
SIZE (cargo/xterm-color-1.0.1.tar.gz) = 9185
|
||||
SIZE (cargo/yansi-1.0.1.tar.gz) = 75497
|
||||
SIZE (cargo/yoke-0.8.0.tar.gz) = 28726
|
||||
SIZE (cargo/yoke-derive-0.8.0.tar.gz) = 7521
|
||||
SIZE (cargo/zerocopy-0.8.26.tar.gz) = 249223
|
||||
SIZE (cargo/zerocopy-derive-0.8.26.tar.gz) = 88080
|
||||
SIZE (cargo/zerofrom-0.1.6.tar.gz) = 5669
|
||||
SIZE (cargo/zerofrom-derive-0.1.6.tar.gz) = 8305
|
||||
SIZE (cargo/zeroize-1.8.1.tar.gz) = 20029
|
||||
SIZE (cargo/zerotrie-0.2.2.tar.gz) = 74423
|
||||
SIZE (cargo/zerovec-0.11.2.tar.gz) = 124500
|
||||
SIZE (cargo/zerovec-derive-0.11.1.tar.gz) = 21294
|
||||
@@ -0,0 +1,11 @@
|
||||
--- modcargo-crates/mmap-rs-0.6.1/Cargo.toml.orig.port Thu Jan 1 00:00:00 1970
|
||||
+++ modcargo-crates/mmap-rs-0.6.1/Cargo.toml Tue Jul 8 00:00:00 2026
|
||||
@@ -48,7 +48,7 @@
|
||||
[target."cfg(unix)".dependencies.nix]
|
||||
version = "0.26"
|
||||
|
||||
-[target."cfg(unix)".dependencies.sysctl]
|
||||
+[target.'cfg(any(target_os = "linux", target_os = "android", target_os = "macos", target_os = "ios", target_os = "freebsd"))'.dependencies.sysctl]
|
||||
version = "0.5"
|
||||
|
||||
[target."cfg(windows)".dependencies.widestring]
|
||||
@@ -0,0 +1,12 @@
|
||||
--- modcargo-crates/mmap-rs-0.6.1/src/areas.rs.orig.port Tue Jul 8 00:00:00 2026
|
||||
+++ modcargo-crates/mmap-rs-0.6.1/src/areas.rs Tue Jul 8 00:00:00 2026
|
||||
@@ -14,6 +14,9 @@ use std::path::PathBuf;
|
||||
#[cfg(any(target_os = "macos", target_os = "ios"))]
|
||||
use crate::os_impl::macos as platform;
|
||||
|
||||
+#[cfg(target_os = "openbsd")]
|
||||
+use crate::os_impl::openbsd as platform;
|
||||
+
|
||||
#[cfg(target_os = "windows")]
|
||||
use crate::os_impl::windows as platform;
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
--- modcargo-crates/mmap-rs-0.6.1/src/error.rs.orig.port Sat Jul 24 00:00:00 2006
|
||||
+++ modcargo-crates/mmap-rs-0.6.1/src/error.rs Tue Jul 8 00:00:00 2026
|
||||
@@ -51,7 +51,8 @@ pub enum Error {
|
||||
#[error(transparent)]
|
||||
Nix(#[from] nix::Error),
|
||||
|
||||
- #[cfg(unix)]
|
||||
+ #[cfg(any(target_os = "linux", target_os = "android",
|
||||
+ target_os = "macos", target_os = "ios", target_os = "freebsd"))]
|
||||
/// Represents [`sysctl::SysctlError`].
|
||||
#[error(transparent)]
|
||||
Sysctl(#[from] sysctl::SysctlError),
|
||||
@@ -0,0 +1,9 @@
|
||||
--- modcargo-crates/mmap-rs-0.6.1/src/os_impl/mod.rs.orig.port Tue Jul 8 00:00:00 2026
|
||||
+++ modcargo-crates/mmap-rs-0.6.1/src/os_impl/mod.rs Tue Jul 8 00:00:00 2026
|
||||
@@ -12,3 +12,6 @@
|
||||
|
||||
#[cfg(any(target_os = "macos", target_os = "ios"))]
|
||||
pub mod macos;
|
||||
+
|
||||
+#[cfg(target_os = "openbsd")]
|
||||
+pub mod openbsd;
|
||||
@@ -0,0 +1,30 @@
|
||||
--- /dev/null Tue Jul 8 00:00:00 2026
|
||||
+++ modcargo-crates/mmap-rs-0.6.1/src/os_impl/openbsd.rs Tue Jul 8 00:00:00 2026
|
||||
@@ -0,0 +1,27 @@
|
||||
+use crate::areas::{MemoryArea, Protection, ShareMode};
|
||||
+use crate::error::Error;
|
||||
+use std::fs::File;
|
||||
+use std::io::BufReader;
|
||||
+use std::marker::PhantomData;
|
||||
+use std::ops::Range;
|
||||
+
|
||||
+/// Stub MemoryAreas for OpenBSD.
|
||||
+/// OpenBSD does not expose a portable /proc vmmap interface; hnsw_rs only
|
||||
+/// uses Mmap/MmapOptions so this path is never called at runtime.
|
||||
+pub struct MemoryAreas<B> {
|
||||
+ _phantom: PhantomData<B>,
|
||||
+}
|
||||
+
|
||||
+impl MemoryAreas<BufReader<File>> {
|
||||
+ pub fn open(_pid: Option<u32>, _range: Option<Range<usize>>) -> Result<Self, Error> {
|
||||
+ Err(Error::Io(std::io::Error::new(
|
||||
+ std::io::ErrorKind::Unsupported,
|
||||
+ "MemoryAreas not supported on OpenBSD",
|
||||
+ )))
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+impl<B> Iterator for MemoryAreas<B> {
|
||||
+ type Item = Result<MemoryArea, Error>;
|
||||
+ fn next(&mut self) -> Option<Self::Item> { None }
|
||||
+}
|
||||
6
devel/aichat/pkg/DESCR
Normal file
6
devel/aichat/pkg/DESCR
Normal file
@@ -0,0 +1,6 @@
|
||||
aichat is a versatile AI-powered CLI tool that integrates with multiple LLM
|
||||
providers including OpenAI, Claude, Gemini, Ollama, and others.
|
||||
|
||||
It features an interactive REPL with syntax highlighting, a shell assistant
|
||||
mode for generating and executing commands, role-based personas, function
|
||||
calling, and session management with chat history.
|
||||
1
devel/aichat/pkg/PLIST
Normal file
1
devel/aichat/pkg/PLIST
Normal file
@@ -0,0 +1 @@
|
||||
@bin bin/aichat
|
||||
24
devel/cpu_features/Makefile
Normal file
24
devel/cpu_features/Makefile
Normal file
@@ -0,0 +1,24 @@
|
||||
COMMENT = cross platform C99 library to get cpu features at runtime.
|
||||
|
||||
GH_ACCOUNT = google
|
||||
GH_PROJECT = cpu_features
|
||||
GH_TAGNAME = v0.8.0
|
||||
|
||||
CATEGORIES = devel
|
||||
|
||||
SHARED_LIBS = cpu_features 0.0
|
||||
|
||||
MAINTAINER = Stefan Hagen <sh+ports@codevoid.de>
|
||||
|
||||
# LICENSE
|
||||
PERMIT_PACKAGE = Yes
|
||||
|
||||
MODULES = devel/cmake
|
||||
|
||||
WANTLIB = c
|
||||
|
||||
CONFIGURE_ARGS = -DBUILD_TESTING=OFF \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DBUILD_SHARED_LIBS=ON
|
||||
|
||||
.include <bsd.port.mk>
|
||||
2
devel/cpu_features/distinfo
Normal file
2
devel/cpu_features/distinfo
Normal file
@@ -0,0 +1,2 @@
|
||||
SHA256 (cpu_features-0.8.0.tar.gz) = cCFyny25eqNPIY0ScnMU8j6LEeqi1akH6EJry0HX6qw=
|
||||
SIZE (cpu_features-0.8.0.tar.gz) = 102371
|
||||
11
devel/cpu_features/patches/patch-CMakeLists_txt
Normal file
11
devel/cpu_features/patches/patch-CMakeLists_txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Compatibility with CMake < 3.5 was removed from CMake 4.
|
||||
|
||||
Index: CMakeLists.txt
|
||||
--- CMakeLists.txt.orig
|
||||
+++ CMakeLists.txt
|
||||
@@ -1,4 +1,4 @@
|
||||
-cmake_minimum_required(VERSION 3.0)
|
||||
+cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
# option() honors normal variables.
|
||||
# see: https://cmake.org/cmake/help/git-stage/policy/CMP0077.html
|
||||
@@ -0,0 +1,16 @@
|
||||
We're parsing dmesg, just like FreeBSD
|
||||
|
||||
Index: include/cpu_features_macros.h
|
||||
--- include/cpu_features_macros.h.orig
|
||||
+++ include/cpu_features_macros.h
|
||||
@@ -91,6 +91,10 @@
|
||||
#define CPU_FEATURES_OS_FREEBSD
|
||||
#endif
|
||||
|
||||
+#if (defined(__openbsd__) || defined(__OpenBSD__))
|
||||
+#define CPU_FEATURES_OS_FREEBSD // currently the same
|
||||
+#endif
|
||||
+
|
||||
#if defined(__ANDROID__)
|
||||
#define CPU_FEATURES_OS_ANDROID
|
||||
#endif
|
||||
2
devel/cpu_features/pkg/DESCR
Normal file
2
devel/cpu_features/pkg/DESCR
Normal file
@@ -0,0 +1,2 @@
|
||||
A cross-platform C library to retrieve CPU features (such as available
|
||||
instructions) at runtime.
|
||||
12
devel/cpu_features/pkg/PLIST
Normal file
12
devel/cpu_features/pkg/PLIST
Normal file
@@ -0,0 +1,12 @@
|
||||
@bin bin/list_cpu_features
|
||||
include/cpu_features/
|
||||
include/cpu_features/cpu_features_cache_info.h
|
||||
include/cpu_features/cpu_features_macros.h
|
||||
include/cpu_features/cpuinfo_x86.h
|
||||
lib/cmake/
|
||||
lib/cmake/CpuFeatures/
|
||||
lib/cmake/CpuFeatures/CpuFeaturesConfig.cmake
|
||||
lib/cmake/CpuFeatures/CpuFeaturesConfigVersion.cmake
|
||||
lib/cmake/CpuFeatures/CpuFeaturesTargets-release.cmake
|
||||
lib/cmake/CpuFeatures/CpuFeaturesTargets.cmake
|
||||
@lib lib/libcpu_features.so.${LIBcpu_features_VERSION}
|
||||
26
devel/crush/Makefile
Normal file
26
devel/crush/Makefile
Normal file
@@ -0,0 +1,26 @@
|
||||
COMMENT = glamourous AI coding agent for the terminal
|
||||
|
||||
MODGO_MODNAME = github.com/charmbracelet/crush
|
||||
MODGO_VERSION = v0.82.0
|
||||
|
||||
DISTNAME = crush-${MODGO_VERSION}
|
||||
PKGNAME = crush-${MODGO_VERSION:S/v//}
|
||||
|
||||
CATEGORIES = devel
|
||||
|
||||
HOMEPAGE = https://github.com/charmbracelet/crush
|
||||
|
||||
# Functional Source License 1.1 (MIT Future License); source-available, not OSI
|
||||
PERMIT_PACKAGE = Yes
|
||||
|
||||
WANTLIB = c pthread
|
||||
|
||||
MODULES = lang/go
|
||||
|
||||
WRKDIST = ${WRKDIR}/${MODGO_MODNAME}@${MODGO_VERSION}
|
||||
|
||||
MODGO_LDFLAGS += -X ${MODGO_MODNAME}/internal/version.Version=${MODGO_VERSION}
|
||||
|
||||
.include "modules.inc"
|
||||
|
||||
.include <bsd.port.mk>
|
||||
2592
devel/crush/distinfo
Normal file
2592
devel/crush/distinfo
Normal file
File diff suppressed because it is too large
Load Diff
848
devel/crush/modules.inc
Normal file
848
devel/crush/modules.inc
Normal file
@@ -0,0 +1,848 @@
|
||||
MODGO_MODULES = \
|
||||
cel.dev/expr v0.25.2 \
|
||||
charm.land/bubbles/v2 v2.1.1 \
|
||||
charm.land/bubbletea/v2 v2.0.8 \
|
||||
charm.land/catwalk v0.49.2 \
|
||||
charm.land/fang/v2 v2.0.1 \
|
||||
charm.land/fantasy v0.35.1 \
|
||||
charm.land/glamour/v2 v2.0.1 \
|
||||
charm.land/lipgloss/v2 v2.0.5 \
|
||||
charm.land/log/v2 v2.0.0 \
|
||||
charm.land/x/vcr v0.1.1 \
|
||||
cloud.google.com/go v0.123.0 \
|
||||
cloud.google.com/go/auth v0.20.0 \
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.8 \
|
||||
cloud.google.com/go/compute/metadata v0.9.0 \
|
||||
cloud.google.com/go/iam v1.11.0 \
|
||||
cloud.google.com/go/longrunning v0.5.6 \
|
||||
cloud.google.com/go/monitoring v1.29.0 \
|
||||
cloud.google.com/go/storage v1.62.3 \
|
||||
cloud.google.com/go/translate v1.10.3 \
|
||||
cyphar.com/go-pathrs v0.2.1 \
|
||||
dario.cat/mergo v1.0.0 \
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20221208032759-85de2813cf6b \
|
||||
filippo.io/edwards25519 v1.2.0 \
|
||||
git.sr.ht/~jackmordaunt/go-toast v1.1.2 \
|
||||
github.com/!azure!a!d/microsoft-authentication-library-for-go v1.2.2 \
|
||||
github.com/!azure/azure-sdk-for-go/sdk/azcore v1.17.0 \
|
||||
github.com/!azure/azure-sdk-for-go/sdk/azidentity v1.7.0 \
|
||||
github.com/!azure/azure-sdk-for-go/sdk/internal v1.10.0 \
|
||||
github.com/!click!house/ch-go v0.71.0 \
|
||||
github.com/!click!house/clickhouse-go/v2 v2.46.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/detectors/gcp v1.33.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/exporter/metric v0.57.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/internal/resourcemapping v0.57.0 \
|
||||
github.com/!johannes!kaufmann/html-to-markdown v1.6.0 \
|
||||
github.com/!kyle!banks/depth v1.2.1 \
|
||||
github.com/!make!now!just/heredoc v1.0.0 \
|
||||
github.com/!microsoft/go-winio v0.6.2 \
|
||||
github.com/!netflix/go-expect v0.0.0-20220104043353-73e0943537d2 \
|
||||
github.com/!proton!mail/go-crypto v1.1.6 \
|
||||
github.com/!puerkito!bio/goquery v1.12.0 \
|
||||
github.com/!puerkito!bio/purell v1.1.1 \
|
||||
github.com/!puerkito!bio/urlesc v0.0.0-20170810143723-de5bf2ad4578 \
|
||||
github.com/!stack!exchange/wmi v1.2.1 \
|
||||
github.com/agentable/go-intl v0.2.11 \
|
||||
github.com/alecthomas/assert/v2 v2.11.0 \
|
||||
github.com/alecthomas/chroma/v2 v2.27.0 \
|
||||
github.com/alecthomas/repr v0.5.2 \
|
||||
github.com/andybalholm/brotli v1.2.1 \
|
||||
github.com/andybalholm/cascadia v1.3.3 \
|
||||
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be \
|
||||
github.com/antlr4-go/antlr/v4 v4.13.1 \
|
||||
github.com/ardanlabs/jinja v1.4.0 \
|
||||
github.com/ardanlabs/kronk v1.28.6 \
|
||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 \
|
||||
github.com/atotto/clipboard v0.1.4 \
|
||||
github.com/aws/aws-sdk-go-v2 v1.42.1 \
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.13 \
|
||||
github.com/aws/aws-sdk-go-v2/config v1.32.27 \
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.19.26 \
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.30 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.30 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.30 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.31 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.13 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.22 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.30 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.29 \
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.104.0 \
|
||||
github.com/aws/aws-sdk-go-v2/service/signin v1.2.2 \
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.31.5 \
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.8 \
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.43.5 \
|
||||
github.com/aws/smithy-go v1.27.3 \
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 \
|
||||
github.com/aymanbagabas/go-udiff v0.4.1 \
|
||||
github.com/aymerick/douceur v0.2.0 \
|
||||
github.com/bahlo/generic-list-go v0.2.0 \
|
||||
github.com/beevik/ntp v0.3.0 \
|
||||
github.com/beorn7/perks v1.0.1 \
|
||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d \
|
||||
github.com/bits-and-blooms/bitset v1.24.4 \
|
||||
github.com/bmatcuk/doublestar/v4 v4.10.0 \
|
||||
github.com/bobuhiro11/gokvm v0.0.8-0.20231003020000-f53faca69d28 \
|
||||
github.com/buger/jsonparser v1.1.2 \
|
||||
github.com/cenkalti/backoff/v4 v4.1.3 \
|
||||
github.com/cenkalti/backoff/v5 v5.0.3 \
|
||||
github.com/cespare/xxhash/v2 v2.3.0 \
|
||||
github.com/charlievieth/fastwalk v1.0.14 \
|
||||
github.com/charmbracelet/anthropic-sdk-go v0.0.0-20260223140439-63879b0b8dab \
|
||||
github.com/charmbracelet/bubbles v0.15.1-0.20230123181021-a6a12c4a31eb \
|
||||
github.com/charmbracelet/bubbletea v0.24.1 \
|
||||
github.com/charmbracelet/colorprofile v0.4.3 \
|
||||
github.com/charmbracelet/harmonica v0.2.0 \
|
||||
github.com/charmbracelet/lipgloss v0.7.1 \
|
||||
github.com/charmbracelet/openai-go v0.0.0-20260617131321-5e4b9c18c4be \
|
||||
github.com/charmbracelet/ultraviolet v0.0.0-20260703014108-f5a850f9c2b7 \
|
||||
github.com/charmbracelet/x/ansi v0.11.7 \
|
||||
github.com/charmbracelet/x/editor v0.2.0 \
|
||||
github.com/charmbracelet/x/etag v0.2.0 \
|
||||
github.com/charmbracelet/x/exp/charmtone v0.0.0-20260527151214-009e6338d40d \
|
||||
github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f \
|
||||
github.com/charmbracelet/x/exp/ordered v0.1.0 \
|
||||
github.com/charmbracelet/x/exp/slice v0.0.0-20260622092256-25656177ba8e \
|
||||
github.com/charmbracelet/x/exp/strings v0.1.0 \
|
||||
github.com/charmbracelet/x/json v0.2.0 \
|
||||
github.com/charmbracelet/x/powernap v0.1.6 \
|
||||
github.com/charmbracelet/x/term v0.2.2 \
|
||||
github.com/charmbracelet/x/termios v0.1.1 \
|
||||
github.com/charmbracelet/x/windows v0.2.2 \
|
||||
github.com/clipperhouse/displaywidth v0.11.0 \
|
||||
github.com/clipperhouse/stringish v0.1.1 \
|
||||
github.com/clipperhouse/uax29/v2 v2.7.0 \
|
||||
github.com/cloudflare/circl v1.6.3 \
|
||||
github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 \
|
||||
github.com/cockroachdb/apd/v3 v3.2.3 \
|
||||
github.com/coder/websocket v1.8.14 \
|
||||
github.com/containerd/console v1.0.4-0.20230706203907-8f6c4e4faef5 \
|
||||
github.com/containerd/errdefs v1.0.0 \
|
||||
github.com/containerd/errdefs/pkg v0.3.0 \
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.7 \
|
||||
github.com/creack/goselect v0.1.2 \
|
||||
github.com/creack/pty v1.1.24 \
|
||||
github.com/cyphar/filepath-securejoin v0.6.1 \
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc \
|
||||
github.com/dchest/siphash v1.2.3 \
|
||||
github.com/denisbrodbeck/machineid v1.0.1 \
|
||||
github.com/disintegration/imaging v1.6.2 \
|
||||
github.com/distribution/reference v0.6.0 \
|
||||
github.com/dlclark/regexp2 v1.11.0 \
|
||||
github.com/dlclark/regexp2/v2 v2.2.1 \
|
||||
github.com/dnaeon/go-vcr v1.2.0 \
|
||||
github.com/docker/go-connections v0.7.0 \
|
||||
github.com/docker/go-units v0.5.0 \
|
||||
github.com/dustin/go-humanize v1.0.1 \
|
||||
github.com/ebitengine/purego v0.10.1 \
|
||||
github.com/elastic/go-sysinfo v1.15.4 \
|
||||
github.com/elastic/go-windows v1.0.2 \
|
||||
github.com/elazarl/goproxy v1.7.2 \
|
||||
github.com/eliben/go-sentencepiece v0.7.0 \
|
||||
github.com/emirpasic/gods v1.18.1 \
|
||||
github.com/envoyproxy/go-control-plane v0.14.0 \
|
||||
github.com/envoyproxy/go-control-plane/envoy v1.37.0 \
|
||||
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 \
|
||||
github.com/envoyproxy/protoc-gen-validate v1.3.3 \
|
||||
github.com/esiqveland/notify v0.13.3 \
|
||||
github.com/felixge/httpsnoop v1.1.0 \
|
||||
github.com/florianl/go-tc v0.4.5-0.20240822175159-7926c32f7299 \
|
||||
github.com/fsnotify/fsnotify v1.9.0 \
|
||||
github.com/gen2brain/beeep v0.11.2 \
|
||||
github.com/ghodss/yaml v1.0.0 \
|
||||
github.com/gliderlabs/ssh v0.3.8 \
|
||||
github.com/go-faster/city v1.0.1 \
|
||||
github.com/go-faster/errors v0.7.1 \
|
||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 \
|
||||
github.com/go-git/go-billy/v5 v5.9.0 \
|
||||
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 \
|
||||
github.com/go-git/go-git/v5 v5.19.1 \
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231223183121-56fa3ac82ce7 \
|
||||
github.com/go-jose/go-jose/v4 v4.1.4 \
|
||||
github.com/go-json-experiment/json v0.0.0-20260623181947-01eb4420fa68 \
|
||||
github.com/go-logfmt/logfmt v0.6.0 \
|
||||
github.com/go-logr/logr v1.4.3 \
|
||||
github.com/go-logr/stdr v1.2.2 \
|
||||
github.com/go-ole/go-ole v1.3.0 \
|
||||
github.com/go-openapi/jsonpointer v0.19.5 \
|
||||
github.com/go-openapi/jsonreference v0.20.0 \
|
||||
github.com/go-openapi/spec v0.20.6 \
|
||||
github.com/go-openapi/swag v0.19.15 \
|
||||
github.com/go-quicktest/qt v1.101.0 \
|
||||
github.com/go-sql-driver/mysql v1.10.0 \
|
||||
github.com/go-viper/mapstructure/v2 v2.5.0 \
|
||||
github.com/goccy/go-json v0.10.5 \
|
||||
github.com/goccy/go-yaml v1.19.2 \
|
||||
github.com/godbus/dbus/v5 v5.2.2 \
|
||||
github.com/gojuno/minimock/v3 v3.0.8 \
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2 \
|
||||
github.com/golang-jwt/jwt/v5 v5.3.1 \
|
||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 \
|
||||
github.com/golang-sql/sqlexp v0.1.0 \
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 \
|
||||
github.com/golang/glog v1.2.5 \
|
||||
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 \
|
||||
github.com/golang/protobuf v1.5.4 \
|
||||
github.com/golang/snappy v0.0.4 \
|
||||
github.com/google/go-cmp v0.7.0 \
|
||||
github.com/google/go-pkcs11 v0.3.0 \
|
||||
github.com/google/go-tpm v0.9.2-0.20240919181259-d96ccf715685 \
|
||||
github.com/google/jsonschema-go v0.4.3 \
|
||||
github.com/google/martian/v3 v3.3.3 \
|
||||
github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e \
|
||||
github.com/google/renameio/v2 v2.0.2 \
|
||||
github.com/google/s2a-go v0.1.9 \
|
||||
github.com/google/uuid v1.6.0 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.17 \
|
||||
github.com/googleapis/gax-go/v2 v2.22.0 \
|
||||
github.com/gopacket/gopacket v1.2.0 \
|
||||
github.com/gorilla/css v1.0.1 \
|
||||
github.com/gorilla/websocket v1.5.3 \
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 \
|
||||
github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.73 \
|
||||
github.com/hashicorp/go-cleanhttp v0.5.2 \
|
||||
github.com/hashicorp/go-getter v1.8.6 \
|
||||
github.com/hashicorp/go-version v1.9.0 \
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7 \
|
||||
github.com/hexops/gotextdiff v1.0.3 \
|
||||
github.com/hugelgupf/go-shlex v0.0.0-20200702092117-c80c9d0918fa \
|
||||
github.com/hugelgupf/vmtest v0.0.0-20240307030256-5d9f3d34a58d \
|
||||
github.com/hybridgroup/yzma v1.18.0 \
|
||||
github.com/inconshreveable/mousetrap v1.1.0 \
|
||||
github.com/insomniacslk/dhcp v0.0.0-20231206064809-8c70d406f6d2 \
|
||||
github.com/invopop/jsonschema v0.14.0 \
|
||||
github.com/ishidawataru/sctp v0.0.0-20230406120618-7ff4192f6ff2 \
|
||||
github.com/itchyny/go-yaml v0.0.0-20251001235044-fca9a0999f15 \
|
||||
github.com/itchyny/gojq v0.12.19 \
|
||||
github.com/itchyny/timefmt-go v0.1.8 \
|
||||
github.com/jackc/pgpassfile v1.0.0 \
|
||||
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 \
|
||||
github.com/jackc/pgx/v5 v5.10.0 \
|
||||
github.com/jackc/puddle/v2 v2.2.2 \
|
||||
github.com/jackmordaunt/icns/v3 v3.0.1 \
|
||||
github.com/jaypipes/ghw v0.12.0 \
|
||||
github.com/jaypipes/pcidb v1.0.0 \
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 \
|
||||
github.com/jezek/xgb v1.1.1 \
|
||||
github.com/joho/godotenv v1.5.1 \
|
||||
github.com/jonboulle/clockwork v0.5.0 \
|
||||
github.com/jordanella/go-ansi-paintbrush v0.0.0-20240728195301-b7ad996ecf3d \
|
||||
github.com/josharian/intern v1.0.0 \
|
||||
github.com/josharian/native v1.1.0 \
|
||||
github.com/jsimonetti/rtnetlink v1.3.5 \
|
||||
github.com/jupiterrider/ffi v0.7.0 \
|
||||
github.com/kaey/framebuffer v0.0.0-20140402104929-7b385489a1ff \
|
||||
github.com/kaptinlin/go-i18n v0.6.0 \
|
||||
github.com/kaptinlin/jsonpointer v0.4.27 \
|
||||
github.com/kaptinlin/jsonschema v0.9.3 \
|
||||
github.com/kaptinlin/messageformat-go/mf1 v0.8.2 \
|
||||
github.com/kevinburke/ssh_config v1.2.0 \
|
||||
github.com/klauspost/compress v1.18.6 \
|
||||
github.com/klauspost/cpuid/v2 v2.3.0 \
|
||||
github.com/klauspost/pgzip v1.2.6 \
|
||||
github.com/knz/bubbline v0.0.0-20230717192058-486954f9953f \
|
||||
github.com/kr/fs v0.1.0 \
|
||||
github.com/kr/pretty v0.3.1 \
|
||||
github.com/kr/pty v1.1.1 \
|
||||
github.com/kr/text v0.2.0 \
|
||||
github.com/kylelemons/godebug v1.1.0 \
|
||||
github.com/lucasb-eyer/go-colorful v1.4.0 \
|
||||
github.com/mailru/easyjson v0.7.7 \
|
||||
github.com/mattn/go-isatty v0.0.22 \
|
||||
github.com/mattn/go-localereader v0.0.1 \
|
||||
github.com/mattn/go-runewidth v0.0.24 \
|
||||
github.com/mdlayher/netlink v1.7.2 \
|
||||
github.com/mdlayher/packet v1.1.2 \
|
||||
github.com/mdlayher/socket v0.5.1 \
|
||||
github.com/mdlayher/vsock v1.2.1 \
|
||||
github.com/mfridman/interpolate v0.0.2 \
|
||||
github.com/mfridman/xflag v0.1.0 \
|
||||
github.com/microcosm-cc/bluemonday v1.0.27 \
|
||||
github.com/microsoft/go-mssqldb v1.10.0 \
|
||||
github.com/mitchellh/go-homedir v1.1.0 \
|
||||
github.com/mitchellh/mapstructure v1.5.0 \
|
||||
github.com/moby/docker-image-spec v1.3.1 \
|
||||
github.com/moby/moby/api v1.55.0 \
|
||||
github.com/moby/moby/client v0.5.0 \
|
||||
github.com/modelcontextprotocol/go-sdk v1.6.1 \
|
||||
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 \
|
||||
github.com/muesli/cancelreader v0.2.2 \
|
||||
github.com/muesli/mango v0.1.0 \
|
||||
github.com/muesli/mango-cobra v1.2.0 \
|
||||
github.com/muesli/mango-pflag v0.1.0 \
|
||||
github.com/muesli/reflow v0.3.0 \
|
||||
github.com/muesli/roff v0.1.0 \
|
||||
github.com/muesli/termenv v0.15.1 \
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 \
|
||||
github.com/nanmu42/limitio v1.0.0 \
|
||||
github.com/ncruces/go-sqlite3 v0.35.1 \
|
||||
github.com/ncruces/go-sqlite3-wasm/v3 v3.1.35302 \
|
||||
github.com/ncruces/go-strftime v1.0.0 \
|
||||
github.com/ncruces/julianday v1.0.0 \
|
||||
github.com/ncruces/sort v1.0.0 \
|
||||
github.com/ncruces/wasm2go v0.4.10 \
|
||||
github.com/ncruces/wbt v1.0.0 \
|
||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 \
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e \
|
||||
github.com/nxadm/tail v1.4.11 \
|
||||
github.com/onsi/gomega v1.34.1 \
|
||||
github.com/opencontainers/go-digest v1.0.0 \
|
||||
github.com/opencontainers/image-spec v1.1.1 \
|
||||
github.com/orangecms/go-framebuffer v0.0.0-20200613202404-a0700d90c330 \
|
||||
github.com/orian/flakyhttp v0.1.1 \
|
||||
github.com/packetcap/go-pcap v0.0.0-20240528124601-8c87ecf5dbc5 \
|
||||
github.com/paulmach/orb v0.13.0 \
|
||||
github.com/pb33f/ordered-map/v2 v2.3.1 \
|
||||
github.com/peterh/liner v1.2.2 \
|
||||
github.com/pierrec/lz4/v4 v4.1.26 \
|
||||
github.com/pjbgf/sha1cd v0.6.0 \
|
||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c \
|
||||
github.com/pkg/errors v0.9.1 \
|
||||
github.com/pkg/sftp v1.13.9 \
|
||||
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 \
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 \
|
||||
github.com/posthog/posthog-go v1.17.5 \
|
||||
github.com/pressly/goose/v3 v3.27.2 \
|
||||
github.com/prometheus/client_golang v1.23.2 \
|
||||
github.com/prometheus/client_model v0.6.2 \
|
||||
github.com/prometheus/common v0.69.0 \
|
||||
github.com/prometheus/procfs v0.20.1 \
|
||||
github.com/psanford/httpreadat v0.1.0 \
|
||||
github.com/qjebbs/go-jsons v1.0.0-alpha.6 \
|
||||
github.com/rck/unit v0.0.3 \
|
||||
github.com/rekby/gpt v0.0.0-20200219180433-a930afbc6edc \
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec \
|
||||
github.com/rivo/uniseg v0.4.7 \
|
||||
github.com/rogpeppe/go-internal v1.14.1 \
|
||||
github.com/russross/blackfriday/v2 v2.1.0 \
|
||||
github.com/safchain/ethtool v0.0.0-20200218184317-f459e2d13664 \
|
||||
github.com/sahilm/fuzzy v0.1.3 \
|
||||
github.com/sebdah/goldie/v2 v2.5.3 \
|
||||
github.com/segmentio/asm v1.2.1 \
|
||||
github.com/segmentio/encoding v0.5.4 \
|
||||
github.com/sergeymakinen/go-bmp v1.0.0 \
|
||||
github.com/sergeymakinen/go-ico v1.0.0-beta.0 \
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 \
|
||||
github.com/sethvargo/go-retry v0.3.0 \
|
||||
github.com/shopspring/decimal v1.4.0 \
|
||||
github.com/shurcoo!l/sanitized_anchor_name v1.0.0 \
|
||||
github.com/sirupsen/logrus v1.9.3 \
|
||||
github.com/skeema/knownhosts v1.3.1 \
|
||||
github.com/sourcegraph/jsonrpc2 v0.2.1 \
|
||||
github.com/spf13/cobra v1.10.2 \
|
||||
github.com/spf13/pflag v1.0.9 \
|
||||
github.com/spiffe/go-spiffe/v2 v2.8.1 \
|
||||
github.com/stretchr/objx v0.5.2 \
|
||||
github.com/stretchr/testify v1.11.1 \
|
||||
github.com/swaggo/files/v2 v2.0.0 \
|
||||
github.com/swaggo/http-swagger/v2 v2.0.2 \
|
||||
github.com/swaggo/swag v1.16.6 \
|
||||
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af \
|
||||
github.com/therootcompany/xz v1.0.1 \
|
||||
github.com/tidwall/gjson v1.19.0 \
|
||||
github.com/tidwall/match v1.1.1 \
|
||||
github.com/tidwall/pretty v1.2.1 \
|
||||
github.com/tidwall/sjson v1.2.5 \
|
||||
github.com/tklauser/go-sysconf v0.3.14 \
|
||||
github.com/tklauser/numcpus v0.8.0 \
|
||||
github.com/tursodatabase/libsql-client-go v0.0.0-20251219100830-236aa1ff8acc \
|
||||
github.com/u-root/cpuid v0.0.1-0.20250320140348-cc5fe81d966c \
|
||||
github.com/u-root/gobusybox/src v0.0.0-20250101170133-2e884e4509c7 \
|
||||
github.com/u-root/iscsinl v0.1.1-0.20210528121423-84c32645822a \
|
||||
github.com/u-root/mkuimage v0.0.0-20250701161901-6a9871f2e64f \
|
||||
github.com/u-root/u-root v0.14.1-0.20250807200646-5e7721023dc7 \
|
||||
github.com/u-root/uio v0.0.0-20240224005618-d2acac8f3701 \
|
||||
github.com/ulikunitz/xz v0.5.15 \
|
||||
github.com/urfave/cli v1.22.17 \
|
||||
github.com/urfave/cli/v2 v2.3.0 \
|
||||
github.com/vertica/vertica-sql-go v1.3.6 \
|
||||
github.com/vishvananda/netlink v1.3.0 \
|
||||
github.com/vishvananda/netns v0.0.4 \
|
||||
github.com/vtolstov/go-ioctl v0.0.0-20151206205506-6be9cced4810 \
|
||||
github.com/wk8/go-ordered-map/v2 v2.1.8 \
|
||||
github.com/xanzy/ssh-agent v0.3.3 \
|
||||
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e \
|
||||
github.com/xyproto/randomstring v1.0.5 \
|
||||
github.com/ydb-platform/ydb-go-genproto v0.0.0-20260428144813-1c07baab7f7b \
|
||||
github.com/ydb-platform/ydb-go-sdk/v3 v3.141.1 \
|
||||
github.com/yosida95/uritemplate/v3 v3.0.2 \
|
||||
github.com/yuin/goldmark v1.7.8 \
|
||||
github.com/yuin/goldmark-emoji v1.0.5 \
|
||||
github.com/zeebo/assert v1.3.0 \
|
||||
github.com/zeebo/errs v1.4.0 \
|
||||
github.com/zeebo/xxh3 v1.1.0 \
|
||||
github.com/ziutek/mymysql v1.5.4 \
|
||||
go.bug.st/serial v1.6.2 \
|
||||
go.opencensus.io v0.24.0 \
|
||||
go.opentelemetry.io/auto/sdk v1.2.1 \
|
||||
go.opentelemetry.io/contrib/detectors/gcp v1.44.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.69.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 \
|
||||
go.opentelemetry.io/otel v1.44.0 \
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0 \
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0 \
|
||||
go.opentelemetry.io/otel/metric v1.44.0 \
|
||||
go.opentelemetry.io/otel/sdk v1.44.0 \
|
||||
go.opentelemetry.io/otel/sdk/metric v1.44.0 \
|
||||
go.opentelemetry.io/otel/trace v1.44.0 \
|
||||
go.opentelemetry.io/proto/otlp v1.10.0 \
|
||||
go.uber.org/goleak v1.3.0 \
|
||||
go.uber.org/multierr v1.11.0 \
|
||||
go.yaml.in/yaml/v2 v2.4.4 \
|
||||
go.yaml.in/yaml/v3 v3.0.4 \
|
||||
go.yaml.in/yaml/v4 v4.0.0-rc.3 \
|
||||
golang.design/x/clipboard v0.8.0 \
|
||||
golang.design/x/x11 v0.2.0 \
|
||||
golang.org/x/arch v0.2.0 \
|
||||
golang.org/x/crypto v0.53.0 \
|
||||
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f \
|
||||
golang.org/x/exp/shiny v0.0.0-20250606033433-dcc06ee1d476 \
|
||||
golang.org/x/image v0.43.0 \
|
||||
golang.org/x/mobile v0.0.0-20250606033058-a2a15c67f36f \
|
||||
golang.org/x/mod v0.36.0 \
|
||||
golang.org/x/net v0.56.0 \
|
||||
golang.org/x/oauth2 v0.36.0 \
|
||||
golang.org/x/sync v0.21.0 \
|
||||
golang.org/x/sys v0.46.0 \
|
||||
golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6 \
|
||||
golang.org/x/term v0.44.0 \
|
||||
golang.org/x/text v0.38.0 \
|
||||
golang.org/x/time v0.15.0 \
|
||||
golang.org/x/tools v0.45.0 \
|
||||
golang.org/x/tools/go/expect v0.1.1-deprecated \
|
||||
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated \
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 \
|
||||
gonum.org/v1/gonum v0.17.0 \
|
||||
google.golang.org/api v0.286.0 \
|
||||
google.golang.org/appengine v1.6.8 \
|
||||
google.golang.org/genai v1.62.0 \
|
||||
google.golang.org/genproto v0.0.0-20260622175928-b703f567277d \
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20260622175928-b703f567277d \
|
||||
google.golang.org/genproto/googleapis/bytestream v0.0.0-20260610212136-7ab31c22f7ad \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260622175928-b703f567277d \
|
||||
google.golang.org/grpc v1.81.1 \
|
||||
google.golang.org/protobuf v1.36.11 \
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c \
|
||||
gopkg.in/dnaeon/go-vcr.v4 v4.0.6-0.20251110073552-01de4eb40290 \
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 \
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 \
|
||||
gopkg.in/warnings.v0 v0.1.2 \
|
||||
gopkg.in/yaml.v2 v2.4.0 \
|
||||
gopkg.in/yaml.v3 v3.0.1 \
|
||||
howett.net/plist v1.0.1 \
|
||||
lukechampine.com/adiantum v1.1.1 \
|
||||
modernc.org/cc/v4 v4.28.4 \
|
||||
modernc.org/ccgo/v4 v4.34.4 \
|
||||
modernc.org/fileutil v1.4.0 \
|
||||
modernc.org/gc/v2 v2.6.5 \
|
||||
modernc.org/gc/v3 v3.1.3 \
|
||||
modernc.org/goabi0 v0.2.0 \
|
||||
modernc.org/libc v1.73.4 \
|
||||
modernc.org/mathutil v1.7.1 \
|
||||
modernc.org/memory v1.11.0 \
|
||||
modernc.org/opt v0.2.0 \
|
||||
modernc.org/sortutil v1.2.1 \
|
||||
modernc.org/sqlite v1.53.0 \
|
||||
modernc.org/strutil v1.2.1 \
|
||||
modernc.org/token v1.1.0 \
|
||||
mvdan.cc/editorconfig v0.3.0 \
|
||||
mvdan.cc/sh/moreinterp v0.0.0-20250902163504-3cf4fd5717a5 \
|
||||
mvdan.cc/sh/v3 v3.13.1 \
|
||||
pack.ag/tftp v1.0.1-0.20181129014014-07909dfbde3c \
|
||||
sigs.k8s.io/yaml v1.3.0
|
||||
|
||||
MODGO_MODFILES = \
|
||||
cel.dev/expr v0.24.0 \
|
||||
cel.dev/expr v0.25.1 \
|
||||
charm.land/bubbletea/v2 v2.0.7 \
|
||||
charm.land/lipgloss/v2 v2.0.1 \
|
||||
charm.land/lipgloss/v2 v2.0.4 \
|
||||
cloud.google.com/go v0.112.2 \
|
||||
cloud.google.com/go v0.116.0 \
|
||||
cloud.google.com/go/auth v0.15.0 \
|
||||
cloud.google.com/go/auth v0.16.4 \
|
||||
cloud.google.com/go/auth v0.3.0 \
|
||||
cloud.google.com/go/auth v0.7.2 \
|
||||
cloud.google.com/go/auth v0.9.3 \
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.2 \
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.3 \
|
||||
cloud.google.com/go/compute/metadata v0.3.0 \
|
||||
cloud.google.com/go/compute/metadata v0.5.0 \
|
||||
cloud.google.com/go/compute/metadata v0.6.0 \
|
||||
cloud.google.com/go/compute/metadata v0.8.0 \
|
||||
cloud.google.com/go/iam v1.5.2 \
|
||||
cloud.google.com/go/monitoring v1.24.2 \
|
||||
cloud.google.com/go/storage v1.56.0 \
|
||||
github.com/!azure/azure-sdk-for-go/sdk/azcore v1.12.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/detectors/gcp v1.27.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/detectors/gcp v1.31.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/exporter/metric v0.53.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 \
|
||||
github.com/!proton!mail/go-crypto v0.0.0-20221026131551-cf6655e29de4 \
|
||||
github.com/!puerkito!bio/goquery v1.9.2 \
|
||||
github.com/alecthomas/chroma/v2 v2.14.0 \
|
||||
github.com/andybalholm/brotli v1.1.1 \
|
||||
github.com/andybalholm/cascadia v1.3.2 \
|
||||
github.com/aws/aws-sdk-go-v2 v1.30.3 \
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 \
|
||||
github.com/aws/aws-sdk-go-v2/config v1.27.27 \
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.27 \
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 \
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 \
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 \
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 \
|
||||
github.com/aws/smithy-go v1.20.3 \
|
||||
github.com/aws/smithy-go v1.27.1 \
|
||||
github.com/aymanbagabas/go-udiff v0.2.0 \
|
||||
github.com/aymanbagabas/go-udiff v0.3.1 \
|
||||
github.com/buger/jsonparser v1.1.1 \
|
||||
github.com/charmbracelet/colorprofile v0.4.2 \
|
||||
github.com/charmbracelet/ultraviolet v0.0.0-20251205161215-1948445e3318 \
|
||||
github.com/charmbracelet/ultraviolet v0.0.0-20260205113103-524a6607adb8 \
|
||||
github.com/charmbracelet/ultraviolet v0.0.0-20260525132238-948f4557a654 \
|
||||
github.com/charmbracelet/x/ansi v0.11.6 \
|
||||
github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444 \
|
||||
github.com/charmbracelet/x/exp/golden v0.0.0-20241212170349-ad4b7ae0f25f \
|
||||
github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf \
|
||||
github.com/charmbracelet/x/exp/slice v0.0.0-20250904123553-b4e2667e5ad5 \
|
||||
github.com/clipperhouse/displaywidth v0.9.0 \
|
||||
github.com/clipperhouse/uax29/v2 v2.2.0 \
|
||||
github.com/clipperhouse/uax29/v2 v2.3.0 \
|
||||
github.com/clipperhouse/uax29/v2 v2.5.0 \
|
||||
github.com/cloudflare/circl v1.6.1 \
|
||||
github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 \
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d \
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.6 \
|
||||
github.com/creack/pty v1.1.9 \
|
||||
github.com/davecgh/go-spew v1.1.0 \
|
||||
github.com/davecgh/go-spew v1.1.1 \
|
||||
github.com/envoyproxy/go-control-plane/envoy v1.32.4 \
|
||||
github.com/envoyproxy/protoc-gen-validate v1.2.1 \
|
||||
github.com/felixge/httpsnoop v1.0.4 \
|
||||
github.com/fsnotify/fsnotify v1.6.0 \
|
||||
github.com/gliderlabs/ssh v0.1.2-0.20181113160402-cbabf5414432 \
|
||||
github.com/go-jose/go-jose/v4 v4.0.5 \
|
||||
github.com/go-logr/logr v1.2.2 \
|
||||
github.com/go-logr/logr v1.4.1 \
|
||||
github.com/go-logr/logr v1.4.2 \
|
||||
github.com/go-ole/go-ole v1.2.6 \
|
||||
github.com/go-openapi/jsonpointer v0.19.3 \
|
||||
github.com/go-openapi/jsonreference v0.19.6 \
|
||||
github.com/go-openapi/spec v0.20.4 \
|
||||
github.com/go-openapi/swag v0.19.5 \
|
||||
github.com/godbus/dbus/v5 v5.1.0 \
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1 \
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da \
|
||||
github.com/golang/protobuf v1.5.0 \
|
||||
github.com/google/go-cmp v0.6.0 \
|
||||
github.com/google/s2a-go v0.1.7 \
|
||||
github.com/google/s2a-go v0.1.8 \
|
||||
github.com/google/uuid v1.3.0 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.14 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.16 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.2 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.4 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.5 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.6 \
|
||||
github.com/googleapis/gax-go/v2 v2.12.3 \
|
||||
github.com/googleapis/gax-go/v2 v2.14.1 \
|
||||
github.com/googleapis/gax-go/v2 v2.15.0 \
|
||||
github.com/googleapis/gax-go/v2 v2.21.0 \
|
||||
github.com/gorilla/websocket v1.4.1 \
|
||||
github.com/inconshreveable/mousetrap v1.0.0 \
|
||||
github.com/invopop/jsonschema v0.13.0 \
|
||||
github.com/kevinburke/ssh_config v1.1.0 \
|
||||
github.com/klauspost/compress v1.17.11 \
|
||||
github.com/klauspost/compress v1.17.4 \
|
||||
github.com/klauspost/compress v1.18.5 \
|
||||
github.com/klauspost/cpuid/v2 v2.2.10 \
|
||||
github.com/kr/pretty v0.1.0 \
|
||||
github.com/kr/text v0.1.0 \
|
||||
github.com/lucasb-eyer/go-colorful v1.2.0 \
|
||||
github.com/lucasb-eyer/go-colorful v1.3.0 \
|
||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63 \
|
||||
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e \
|
||||
github.com/mailru/easyjson v0.7.6 \
|
||||
github.com/mattn/go-isatty v0.0.20 \
|
||||
github.com/mattn/go-isatty v0.0.21 \
|
||||
github.com/mattn/go-runewidth v0.0.14 \
|
||||
github.com/mattn/go-runewidth v0.0.19 \
|
||||
github.com/mattn/go-runewidth v0.0.20 \
|
||||
github.com/mattn/go-runewidth v0.0.23 \
|
||||
github.com/pierrec/lz4/v4 v4.1.14 \
|
||||
github.com/pierrec/lz4/v4 v4.1.22 \
|
||||
github.com/pkg/errors v0.8.1 \
|
||||
github.com/pmezard/go-difflib v1.0.0 \
|
||||
github.com/prometheus/common v0.66.1 \
|
||||
github.com/prometheus/procfs v0.16.1 \
|
||||
github.com/rivo/uniseg v0.4.4 \
|
||||
github.com/rogpeppe/go-internal v1.12.0 \
|
||||
github.com/russross/blackfriday/v2 v2.0.1 \
|
||||
github.com/sahilm/fuzzy v0.1.0 \
|
||||
github.com/segmentio/asm v1.1.3 \
|
||||
github.com/sergi/go-diff v1.0.0 \
|
||||
github.com/sergi/go-diff v1.3.1 \
|
||||
github.com/spf13/cobra v1.5.0 \
|
||||
github.com/spf13/cobra v1.9.1 \
|
||||
github.com/spf13/pflag v1.0.5 \
|
||||
github.com/spf13/pflag v1.0.6 \
|
||||
github.com/spf13/pflag v1.0.7 \
|
||||
github.com/spiffe/go-spiffe/v2 v2.5.0 \
|
||||
github.com/spiffe/go-spiffe/v2 v2.6.0 \
|
||||
github.com/stretchr/objx v0.1.0 \
|
||||
github.com/stretchr/objx v0.4.0 \
|
||||
github.com/stretchr/objx v0.5.0 \
|
||||
github.com/stretchr/testify v1.10.0 \
|
||||
github.com/stretchr/testify v1.3.0 \
|
||||
github.com/stretchr/testify v1.4.0 \
|
||||
github.com/stretchr/testify v1.6.1 \
|
||||
github.com/stretchr/testify v1.7.0 \
|
||||
github.com/stretchr/testify v1.7.1 \
|
||||
github.com/stretchr/testify v1.8.0 \
|
||||
github.com/stretchr/testify v1.8.4 \
|
||||
github.com/stretchr/testify v1.9.0 \
|
||||
github.com/swaggo/swag v1.8.1 \
|
||||
github.com/tidwall/gjson v1.14.2 \
|
||||
github.com/tidwall/gjson v1.18.0 \
|
||||
github.com/tidwall/pretty v1.2.0 \
|
||||
github.com/ulikunitz/xz v0.5.11 \
|
||||
github.com/yuin/goldmark v1.4.13 \
|
||||
github.com/yuin/goldmark v1.7.1 \
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 \
|
||||
go.opentelemetry.io/contrib/detectors/gcp v1.36.0 \
|
||||
go.opentelemetry.io/contrib/detectors/gcp v1.42.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 \
|
||||
go.opentelemetry.io/otel v1.24.0 \
|
||||
go.opentelemetry.io/otel v1.36.0 \
|
||||
go.opentelemetry.io/otel v1.38.0 \
|
||||
go.opentelemetry.io/otel v1.43.0 \
|
||||
go.opentelemetry.io/otel/metric v1.24.0 \
|
||||
go.opentelemetry.io/otel/metric v1.36.0 \
|
||||
go.opentelemetry.io/otel/metric v1.43.0 \
|
||||
go.opentelemetry.io/otel/sdk v1.36.0 \
|
||||
go.opentelemetry.io/otel/sdk v1.43.0 \
|
||||
go.opentelemetry.io/otel/sdk/metric v1.36.0 \
|
||||
go.opentelemetry.io/otel/sdk/metric v1.43.0 \
|
||||
go.opentelemetry.io/otel/trace v1.24.0 \
|
||||
go.opentelemetry.io/otel/trace v1.36.0 \
|
||||
go.opentelemetry.io/otel/trace v1.38.0 \
|
||||
go.opentelemetry.io/otel/trace v1.43.0 \
|
||||
go.yaml.in/yaml/v2 v2.4.2 \
|
||||
go.yaml.in/yaml/v4 v4.0.0-rc.2 \
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 \
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 \
|
||||
golang.org/x/crypto v0.13.0 \
|
||||
golang.org/x/crypto v0.19.0 \
|
||||
golang.org/x/crypto v0.22.0 \
|
||||
golang.org/x/crypto v0.23.0 \
|
||||
golang.org/x/crypto v0.25.0 \
|
||||
golang.org/x/crypto v0.31.0 \
|
||||
golang.org/x/crypto v0.32.0 \
|
||||
golang.org/x/crypto v0.36.0 \
|
||||
golang.org/x/crypto v0.40.0 \
|
||||
golang.org/x/crypto v0.41.0 \
|
||||
golang.org/x/crypto v0.47.0 \
|
||||
golang.org/x/crypto v0.49.0 \
|
||||
golang.org/x/crypto v0.50.0 \
|
||||
golang.org/x/crypto v0.52.0 \
|
||||
golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561 \
|
||||
golang.org/x/exp v0.0.0-20231006140011-7918f672742d \
|
||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 \
|
||||
golang.org/x/exp/shiny v0.0.0-20230817173708-d852ddb80c63 \
|
||||
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 \
|
||||
golang.org/x/image v0.14.0 \
|
||||
golang.org/x/image v0.18.0 \
|
||||
golang.org/x/image v0.28.0 \
|
||||
golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a \
|
||||
golang.org/x/mod v0.12.0 \
|
||||
golang.org/x/mod v0.15.0 \
|
||||
golang.org/x/mod v0.17.0 \
|
||||
golang.org/x/mod v0.24.0 \
|
||||
golang.org/x/mod v0.25.0 \
|
||||
golang.org/x/mod v0.26.0 \
|
||||
golang.org/x/mod v0.29.0 \
|
||||
golang.org/x/mod v0.35.0 \
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 \
|
||||
golang.org/x/mod v0.8.0 \
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 \
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 \
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b \
|
||||
golang.org/x/net v0.10.0 \
|
||||
golang.org/x/net v0.15.0 \
|
||||
golang.org/x/net v0.21.0 \
|
||||
golang.org/x/net v0.24.0 \
|
||||
golang.org/x/net v0.25.0 \
|
||||
golang.org/x/net v0.26.0 \
|
||||
golang.org/x/net v0.27.0 \
|
||||
golang.org/x/net v0.33.0 \
|
||||
golang.org/x/net v0.34.0 \
|
||||
golang.org/x/net v0.37.0 \
|
||||
golang.org/x/net v0.38.0 \
|
||||
golang.org/x/net v0.39.0 \
|
||||
golang.org/x/net v0.41.0 \
|
||||
golang.org/x/net v0.43.0 \
|
||||
golang.org/x/net v0.51.0 \
|
||||
golang.org/x/net v0.52.0 \
|
||||
golang.org/x/net v0.53.0 \
|
||||
golang.org/x/net v0.54.0 \
|
||||
golang.org/x/net v0.55.0 \
|
||||
golang.org/x/net v0.6.0 \
|
||||
golang.org/x/net v0.9.0 \
|
||||
golang.org/x/oauth2 v0.19.0 \
|
||||
golang.org/x/oauth2 v0.28.0 \
|
||||
golang.org/x/oauth2 v0.30.0 \
|
||||
golang.org/x/oauth2 v0.35.0 \
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58 \
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 \
|
||||
golang.org/x/sync v0.1.0 \
|
||||
golang.org/x/sync v0.10.0 \
|
||||
golang.org/x/sync v0.12.0 \
|
||||
golang.org/x/sync v0.15.0 \
|
||||
golang.org/x/sync v0.16.0 \
|
||||
golang.org/x/sync v0.17.0 \
|
||||
golang.org/x/sync v0.18.0 \
|
||||
golang.org/x/sync v0.19.0 \
|
||||
golang.org/x/sync v0.20.0 \
|
||||
golang.org/x/sync v0.3.0 \
|
||||
golang.org/x/sync v0.6.0 \
|
||||
golang.org/x/sync v0.7.0 \
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a \
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 \
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 \
|
||||
golang.org/x/sys v0.0.0-20211110154304-99a53858aa08 \
|
||||
golang.org/x/sys v0.0.0-20220204135822-1c1b9b1eba6a \
|
||||
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad \
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a \
|
||||
golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664 \
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f \
|
||||
golang.org/x/sys v0.0.0-20220908164124-27713097b956 \
|
||||
golang.org/x/sys v0.1.0 \
|
||||
golang.org/x/sys v0.10.0 \
|
||||
golang.org/x/sys v0.12.0 \
|
||||
golang.org/x/sys v0.13.0 \
|
||||
golang.org/x/sys v0.15.0 \
|
||||
golang.org/x/sys v0.17.0 \
|
||||
golang.org/x/sys v0.19.0 \
|
||||
golang.org/x/sys v0.20.0 \
|
||||
golang.org/x/sys v0.21.0 \
|
||||
golang.org/x/sys v0.22.0 \
|
||||
golang.org/x/sys v0.26.0 \
|
||||
golang.org/x/sys v0.27.0 \
|
||||
golang.org/x/sys v0.28.0 \
|
||||
golang.org/x/sys v0.29.0 \
|
||||
golang.org/x/sys v0.30.0 \
|
||||
golang.org/x/sys v0.31.0 \
|
||||
golang.org/x/sys v0.33.0 \
|
||||
golang.org/x/sys v0.34.0 \
|
||||
golang.org/x/sys v0.35.0 \
|
||||
golang.org/x/sys v0.36.0 \
|
||||
golang.org/x/sys v0.38.0 \
|
||||
golang.org/x/sys v0.40.0 \
|
||||
golang.org/x/sys v0.41.0 \
|
||||
golang.org/x/sys v0.42.0 \
|
||||
golang.org/x/sys v0.43.0 \
|
||||
golang.org/x/sys v0.44.0 \
|
||||
golang.org/x/sys v0.45.0 \
|
||||
golang.org/x/sys v0.5.0 \
|
||||
golang.org/x/sys v0.7.0 \
|
||||
golang.org/x/sys v0.8.0 \
|
||||
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2 \
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 \
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 \
|
||||
golang.org/x/term v0.12.0 \
|
||||
golang.org/x/term v0.17.0 \
|
||||
golang.org/x/term v0.19.0 \
|
||||
golang.org/x/term v0.20.0 \
|
||||
golang.org/x/term v0.27.0 \
|
||||
golang.org/x/term v0.30.0 \
|
||||
golang.org/x/term v0.41.0 \
|
||||
golang.org/x/term v0.5.0 \
|
||||
golang.org/x/term v0.7.0 \
|
||||
golang.org/x/term v0.8.0 \
|
||||
golang.org/x/text v0.13.0 \
|
||||
golang.org/x/text v0.14.0 \
|
||||
golang.org/x/text v0.15.0 \
|
||||
golang.org/x/text v0.16.0 \
|
||||
golang.org/x/text v0.21.0 \
|
||||
golang.org/x/text v0.23.0 \
|
||||
golang.org/x/text v0.24.0 \
|
||||
golang.org/x/text v0.27.0 \
|
||||
golang.org/x/text v0.28.0 \
|
||||
golang.org/x/text v0.3.0 \
|
||||
golang.org/x/text v0.3.3 \
|
||||
golang.org/x/text v0.3.7 \
|
||||
golang.org/x/text v0.34.0 \
|
||||
golang.org/x/text v0.35.0 \
|
||||
golang.org/x/text v0.36.0 \
|
||||
golang.org/x/text v0.37.0 \
|
||||
golang.org/x/text v0.7.0 \
|
||||
golang.org/x/text v0.9.0 \
|
||||
golang.org/x/time v0.12.0 \
|
||||
golang.org/x/time v0.5.0 \
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e \
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e \
|
||||
golang.org/x/tools v0.1.12 \
|
||||
golang.org/x/tools v0.11.0 \
|
||||
golang.org/x/tools v0.13.0 \
|
||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d \
|
||||
golang.org/x/tools v0.31.0 \
|
||||
golang.org/x/tools v0.34.0 \
|
||||
golang.org/x/tools v0.35.0 \
|
||||
golang.org/x/tools v0.38.0 \
|
||||
golang.org/x/tools v0.42.0 \
|
||||
golang.org/x/tools v0.44.0 \
|
||||
golang.org/x/tools v0.6.0 \
|
||||
google.golang.org/api v0.177.0 \
|
||||
google.golang.org/api v0.189.0 \
|
||||
google.golang.org/api v0.247.0 \
|
||||
google.golang.org/api v0.272.0 \
|
||||
google.golang.org/api v0.274.0 \
|
||||
google.golang.org/genproto v0.0.0-20250603155806-513f23925822 \
|
||||
google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 \
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240429193739-8cf5692501f6 \
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250721164621-a45f3dfb1074 \
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 \
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250227231956-55c901821b1e \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260319201613-d00831a3d3e7 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260420184626-e10c466a9529 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad \
|
||||
google.golang.org/grpc v1.63.2 \
|
||||
google.golang.org/grpc v1.64.1 \
|
||||
google.golang.org/grpc v1.66.2 \
|
||||
google.golang.org/grpc v1.71.0 \
|
||||
google.golang.org/grpc v1.74.2 \
|
||||
google.golang.org/grpc v1.79.3 \
|
||||
google.golang.org/grpc v1.80.0 \
|
||||
google.golang.org/protobuf v1.34.2 \
|
||||
google.golang.org/protobuf v1.36.7 \
|
||||
google.golang.org/protobuf v1.36.8 \
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 \
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 \
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 \
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f \
|
||||
gopkg.in/yaml.v2 v2.2.2 \
|
||||
gopkg.in/yaml.v2 v2.2.8 \
|
||||
gopkg.in/yaml.v3 v3.0.0 \
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c \
|
||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 \
|
||||
howett.net/plist v1.0.0 \
|
||||
mvdan.cc/sh/v3 v3.11.0
|
||||
|
||||
17
devel/crush/patches/patch-internal_agent_coordinator_go
Normal file
17
devel/crush/patches/patch-internal_agent_coordinator_go
Normal file
@@ -0,0 +1,17 @@
|
||||
Index: internal/agent/coordinator.go
|
||||
--- internal/agent/coordinator.go.orig
|
||||
+++ internal/agent/coordinator.go
|
||||
@@ -823,11 +823,11 @@ func (c *coordinator) buildAnthropicProvider(baseURL,
|
||||
switch {
|
||||
case strings.HasPrefix(apiKey, "Bearer "):
|
||||
// NOTE: Prevent the SDK from picking up the API key from env.
|
||||
- os.Setenv("ANTHROPIC_API_KEY", "")
|
||||
+ os.Unsetenv("ANTHROPIC_API_KEY")
|
||||
headers["Authorization"] = apiKey
|
||||
case providerID == string(catwalk.InferenceProviderMiniMax) || providerID == string(catwalk.InferenceProviderMiniMaxChina):
|
||||
// NOTE: Prevent the SDK from picking up the API key from env.
|
||||
- os.Setenv("ANTHROPIC_API_KEY", "")
|
||||
+ os.Unsetenv("ANTHROPIC_API_KEY")
|
||||
headers["Authorization"] = "Bearer " + apiKey
|
||||
case apiKey != "":
|
||||
// X-Api-Key header
|
||||
121
devel/crush/patches/patch-internal_cmd_login_go
Normal file
121
devel/crush/patches/patch-internal_cmd_login_go
Normal file
@@ -0,0 +1,121 @@
|
||||
Index: internal/cmd/login.go
|
||||
--- internal/cmd/login.go.orig
|
||||
+++ internal/cmd/login.go
|
||||
@@ -6,12 +6,14 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
+ "strings"
|
||||
|
||||
"charm.land/lipgloss/v2"
|
||||
"github.com/charmbracelet/crush/internal/client"
|
||||
"github.com/charmbracelet/crush/internal/clipboard"
|
||||
"github.com/charmbracelet/crush/internal/config"
|
||||
"github.com/charmbracelet/crush/internal/oauth"
|
||||
+ "github.com/charmbracelet/crush/internal/oauth/claude"
|
||||
"github.com/charmbracelet/crush/internal/oauth/copilot"
|
||||
"github.com/charmbracelet/crush/internal/oauth/hyper"
|
||||
"github.com/charmbracelet/x/ansi"
|
||||
@@ -25,11 +27,14 @@ var loginCmd = &cobra.Command{
|
||||
Short: "Login Crush to a platform",
|
||||
Long: `Login Crush to a specified platform.
|
||||
The platform should be provided as an argument.
|
||||
-Available platforms are: hyper, copilot.`,
|
||||
+Available platforms are: hyper, claude, copilot.`,
|
||||
Example: `
|
||||
# Authenticate with Charm Hyper
|
||||
crush login
|
||||
|
||||
+# Authenticate with Claude Code Max
|
||||
+crush login claude
|
||||
+
|
||||
# Authenticate with GitHub Copilot
|
||||
crush login copilot
|
||||
|
||||
@@ -38,6 +43,8 @@ crush login -f copilot
|
||||
`,
|
||||
ValidArgs: []cobra.Completion{
|
||||
"hyper",
|
||||
+ "claude",
|
||||
+ "anthropic",
|
||||
"copilot",
|
||||
"github",
|
||||
"github-copilot",
|
||||
@@ -64,6 +71,8 @@ crush login -f copilot
|
||||
switch provider {
|
||||
case "hyper":
|
||||
return loginHyper(c, ws.ID, force)
|
||||
+ case "anthropic", "claude":
|
||||
+ return loginClaude(c, ws.ID, force)
|
||||
case "copilot", "github", "github-copilot":
|
||||
return loginCopilot(c, ws.ID, force)
|
||||
default:
|
||||
@@ -140,6 +149,68 @@ func loginHyper(c *client.Client, wsID string, force b
|
||||
|
||||
fmt.Println()
|
||||
fmt.Println("You're now authenticated with Hyper!")
|
||||
+ return nil
|
||||
+}
|
||||
+
|
||||
+func loginClaude(c *client.Client, wsID string, force bool) error {
|
||||
+ ctx := getLoginContext()
|
||||
+
|
||||
+ if !force {
|
||||
+ cfg, err := c.GetConfig(ctx, wsID)
|
||||
+ if err == nil && cfg != nil {
|
||||
+ if pc, ok := cfg.Providers.Get("anthropic"); ok && pc.OAuthToken != nil {
|
||||
+ fmt.Println("You are already logged in to Claude Code Max.")
|
||||
+ fmt.Println("Use --force to re-authenticate.")
|
||||
+ return nil
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ verifier, challenge, err := claude.GetChallenge()
|
||||
+ if err != nil {
|
||||
+ return err
|
||||
+ }
|
||||
+ authURL, err := claude.AuthorizeURL(verifier, challenge)
|
||||
+ if err != nil {
|
||||
+ return err
|
||||
+ }
|
||||
+
|
||||
+ fmt.Println("Open the following URL to authorize your Claude Code Max subscription:")
|
||||
+ fmt.Println()
|
||||
+ fmt.Println(lipgloss.NewStyle().Hyperlink(authURL, "id=claude").Render(authURL))
|
||||
+ fmt.Println()
|
||||
+ fmt.Println("Press enter to open in your browser...")
|
||||
+ waitEnter()
|
||||
+ if err := browser.OpenURL(authURL); err != nil {
|
||||
+ fmt.Println("Could not open the URL. Open it manually in your browser.")
|
||||
+ }
|
||||
+
|
||||
+ fmt.Println()
|
||||
+ fmt.Println("After authorizing, paste the code shown on the page and press enter:")
|
||||
+ fmt.Println()
|
||||
+ fmt.Print("> ")
|
||||
+ var code string
|
||||
+ for code == "" {
|
||||
+ _, _ = fmt.Scan(&code)
|
||||
+ code = strings.TrimSpace(code)
|
||||
+ }
|
||||
+
|
||||
+ fmt.Println()
|
||||
+ fmt.Println("Exchanging authorization code...")
|
||||
+ token, err := claude.ExchangeToken(ctx, code, verifier)
|
||||
+ if err != nil {
|
||||
+ return err
|
||||
+ }
|
||||
+
|
||||
+ if err := cmp.Or(
|
||||
+ c.SetConfigField(ctx, wsID, config.ScopeGlobal, "providers.anthropic.api_key", token.AccessToken),
|
||||
+ c.SetConfigField(ctx, wsID, config.ScopeGlobal, "providers.anthropic.oauth", token),
|
||||
+ ); err != nil {
|
||||
+ return err
|
||||
+ }
|
||||
+
|
||||
+ fmt.Println()
|
||||
+ fmt.Println("You're now authenticated with Claude Code Max!")
|
||||
return nil
|
||||
}
|
||||
|
||||
30
devel/crush/patches/patch-internal_config_config_go
Normal file
30
devel/crush/patches/patch-internal_config_config_go
Normal file
@@ -0,0 +1,30 @@
|
||||
Index: internal/config/config.go
|
||||
--- internal/config/config.go.orig
|
||||
+++ internal/config/config.go
|
||||
@@ -178,6 +178,26 @@ func (c *ProviderConfig) SetupGitHubCopilot() {
|
||||
maps.Copy(c.ExtraHeaders, copilot.Headers())
|
||||
}
|
||||
|
||||
+func (c *ProviderConfig) SetupClaudeCode() {
|
||||
+ c.FlatRate = true
|
||||
+ c.SystemPromptPrefix = "You are Claude Code, Anthropic's official CLI for Claude."
|
||||
+ if c.ExtraHeaders == nil {
|
||||
+ c.ExtraHeaders = make(map[string]string)
|
||||
+ }
|
||||
+ c.ExtraHeaders["anthropic-version"] = "2023-06-01"
|
||||
+ c.ExtraHeaders["User-Agent"] = "claude-code/2.1.112"
|
||||
+ const want = "oauth-2025-04-20"
|
||||
+ if v := c.ExtraHeaders["anthropic-beta"]; !strings.Contains(v, want) {
|
||||
+ if v != "" {
|
||||
+ v += ","
|
||||
+ }
|
||||
+ c.ExtraHeaders["anthropic-beta"] = v + want
|
||||
+ }
|
||||
+ if c.APIKey != "" && !strings.HasPrefix(c.APIKey, "Bearer ") {
|
||||
+ c.APIKey = "Bearer " + c.APIKey
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
type MCPType string
|
||||
|
||||
const (
|
||||
19
devel/crush/patches/patch-internal_config_load_go
Normal file
19
devel/crush/patches/patch-internal_config_load_go
Normal file
@@ -0,0 +1,19 @@
|
||||
Index: internal/config/load.go
|
||||
--- internal/config/load.go.orig
|
||||
+++ internal/config/load.go
|
||||
@@ -287,14 +287,7 @@ func (c *Config) configureProviders(ctx context.Contex
|
||||
|
||||
switch {
|
||||
case p.ID == catwalk.InferenceProviderAnthropic && config.OAuthToken != nil:
|
||||
- // Claude Code subscription is not supported anymore. Remove to show onboarding.
|
||||
- // RemoveConfigField persists the deletion to disk. The in-memory
|
||||
- // state is kept consistent by the Providers.Del call below; any
|
||||
- // concurrent reload that races with this write will also see the
|
||||
- // removal because it re-reads from disk.
|
||||
- store.RemoveConfigField(ScopeGlobal, "providers.anthropic")
|
||||
- c.Providers.Del(string(p.ID))
|
||||
- continue
|
||||
+ prepared.SetupClaudeCode()
|
||||
case p.ID == catwalk.InferenceProviderCopilot && config.OAuthToken != nil:
|
||||
prepared.SetupGitHubCopilot()
|
||||
}
|
||||
53
devel/crush/patches/patch-internal_config_store_go
Normal file
53
devel/crush/patches/patch-internal_config_store_go
Normal file
@@ -0,0 +1,53 @@
|
||||
Index: internal/config/store.go
|
||||
--- internal/config/store.go.orig
|
||||
+++ internal/config/store.go
|
||||
@@ -16,6 +16,7 @@ import (
|
||||
"github.com/charmbracelet/crush/internal/env"
|
||||
"github.com/charmbracelet/crush/internal/lock"
|
||||
"github.com/charmbracelet/crush/internal/oauth"
|
||||
+ "github.com/charmbracelet/crush/internal/oauth/claude"
|
||||
"github.com/charmbracelet/crush/internal/oauth/copilot"
|
||||
"github.com/charmbracelet/crush/internal/oauth/hyper"
|
||||
"github.com/tidwall/gjson"
|
||||
@@ -470,6 +471,8 @@ func (s *ConfigStore) SetProviderAPIKey(scope Scope, p
|
||||
providerConfig.APIKey = v.AccessToken
|
||||
providerConfig.OAuthToken = v
|
||||
switch providerID {
|
||||
+ case string(catwalk.InferenceProviderAnthropic):
|
||||
+ providerConfig.SetupClaudeCode()
|
||||
case string(catwalk.InferenceProviderCopilot):
|
||||
providerConfig.SetupGitHubCopilot()
|
||||
}
|
||||
@@ -596,7 +599,10 @@ func (s *ConfigStore) refreshOAuthTokenLocked(ctx cont
|
||||
slog.Info("Successfully refreshed OAuth token", "provider", providerID)
|
||||
providerConfig.OAuthToken = refreshedToken
|
||||
providerConfig.APIKey = refreshedToken.AccessToken
|
||||
- if providerID == string(catwalk.InferenceProviderCopilot) {
|
||||
+ switch providerID {
|
||||
+ case string(catwalk.InferenceProviderAnthropic):
|
||||
+ providerConfig.SetupClaudeCode()
|
||||
+ case string(catwalk.InferenceProviderCopilot):
|
||||
providerConfig.SetupGitHubCopilot()
|
||||
}
|
||||
cfg.Providers.Set(providerID, providerConfig)
|
||||
@@ -638,6 +644,8 @@ func (s *ConfigStore) exchange(ctx context.Context, pr
|
||||
return s.exchangeToken(ctx, providerID, refreshToken)
|
||||
}
|
||||
switch providerID {
|
||||
+ case string(catwalk.InferenceProviderAnthropic):
|
||||
+ return claude.RefreshToken(ctx, refreshToken)
|
||||
case string(catwalk.InferenceProviderCopilot):
|
||||
return copilot.RefreshToken(ctx, refreshToken)
|
||||
case hyperp.Name:
|
||||
@@ -662,7 +670,10 @@ func (s *ConfigStore) refreshLockPath(providerID strin
|
||||
func (s *ConfigStore) applyToken(providerConfig ProviderConfig, token *oauth.Token, providerID string) error {
|
||||
providerConfig.OAuthToken = token
|
||||
providerConfig.APIKey = token.AccessToken
|
||||
- if providerID == string(catwalk.InferenceProviderCopilot) {
|
||||
+ switch providerID {
|
||||
+ case string(catwalk.InferenceProviderAnthropic):
|
||||
+ providerConfig.SetupClaudeCode()
|
||||
+ case string(catwalk.InferenceProviderCopilot):
|
||||
providerConfig.SetupGitHubCopilot()
|
||||
}
|
||||
s.Config().Providers.Set(providerID, providerConfig)
|
||||
32
devel/crush/patches/patch-internal_oauth_claude_challenge_go
Normal file
32
devel/crush/patches/patch-internal_oauth_claude_challenge_go
Normal file
@@ -0,0 +1,32 @@
|
||||
Index: internal/oauth/claude/challenge.go
|
||||
--- internal/oauth/claude/challenge.go.orig
|
||||
+++ internal/oauth/claude/challenge.go
|
||||
@@ -0,0 +1,28 @@
|
||||
+package claude
|
||||
+
|
||||
+import (
|
||||
+ "crypto/rand"
|
||||
+ "crypto/sha256"
|
||||
+ "encoding/base64"
|
||||
+ "strings"
|
||||
+)
|
||||
+
|
||||
+// GetChallenge generates a PKCE verifier and its corresponding challenge.
|
||||
+func GetChallenge() (verifier string, challenge string, err error) {
|
||||
+ bytes := make([]byte, 32)
|
||||
+ if _, err := rand.Read(bytes); err != nil {
|
||||
+ return "", "", err
|
||||
+ }
|
||||
+ verifier = encodeBase64(bytes)
|
||||
+ hash := sha256.Sum256([]byte(verifier))
|
||||
+ challenge = encodeBase64(hash[:])
|
||||
+ return verifier, challenge, nil
|
||||
+}
|
||||
+
|
||||
+func encodeBase64(input []byte) (encoded string) {
|
||||
+ encoded = base64.StdEncoding.EncodeToString(input)
|
||||
+ encoded = strings.ReplaceAll(encoded, "=", "")
|
||||
+ encoded = strings.ReplaceAll(encoded, "+", "-")
|
||||
+ encoded = strings.ReplaceAll(encoded, "/", "_")
|
||||
+ return encoded
|
||||
+}
|
||||
135
devel/crush/patches/patch-internal_oauth_claude_oauth_go
Normal file
135
devel/crush/patches/patch-internal_oauth_claude_oauth_go
Normal file
@@ -0,0 +1,135 @@
|
||||
Index: internal/oauth/claude/oauth.go
|
||||
--- internal/oauth/claude/oauth.go.orig
|
||||
+++ internal/oauth/claude/oauth.go
|
||||
@@ -0,0 +1,131 @@
|
||||
+package claude
|
||||
+
|
||||
+import (
|
||||
+ "bytes"
|
||||
+ "context"
|
||||
+ "encoding/json"
|
||||
+ "fmt"
|
||||
+ "io"
|
||||
+ "net/http"
|
||||
+ "net/url"
|
||||
+ "strings"
|
||||
+ "time"
|
||||
+
|
||||
+ "github.com/charmbracelet/crush/internal/oauth"
|
||||
+)
|
||||
+
|
||||
+const (
|
||||
+ clientId = "9d1c250a-e61b-44d9-88ed-5944d1962f5e"
|
||||
+ tokenURL = "https://platform.claude.com/v1/oauth/token"
|
||||
+ redirectURI = "https://platform.claude.com/oauth/code/callback"
|
||||
+)
|
||||
+
|
||||
+// AuthorizeURL returns the Claude Code Max OAuth2 authorization URL.
|
||||
+func AuthorizeURL(verifier, challenge string) (string, error) {
|
||||
+ u, err := url.Parse("https://platform.claude.com/oauth/authorize")
|
||||
+ if err != nil {
|
||||
+ return "", err
|
||||
+ }
|
||||
+ q := u.Query()
|
||||
+ q.Set("code", "true")
|
||||
+ q.Set("client_id", clientId)
|
||||
+ q.Set("response_type", "code")
|
||||
+ q.Set("redirect_uri", redirectURI)
|
||||
+ q.Set("scope", "org:create_api_key user:profile user:inference user:sessions:claude_code user:mcp_servers user:file_upload")
|
||||
+ q.Set("code_challenge", challenge)
|
||||
+ q.Set("code_challenge_method", "S256")
|
||||
+ q.Set("state", verifier)
|
||||
+ u.RawQuery = q.Encode()
|
||||
+ return u.String(), nil
|
||||
+}
|
||||
+
|
||||
+// ExchangeToken exchanges the authorization code for an OAuth2 token.
|
||||
+func ExchangeToken(ctx context.Context, code, verifier string) (*oauth.Token, error) {
|
||||
+ code = strings.TrimSpace(code)
|
||||
+ parts := strings.SplitN(code, "#", 2)
|
||||
+ pure := parts[0]
|
||||
+ state := ""
|
||||
+ if len(parts) > 1 {
|
||||
+ state = parts[1]
|
||||
+ }
|
||||
+
|
||||
+ reqBody := map[string]string{
|
||||
+ "code": pure,
|
||||
+ "state": state,
|
||||
+ "grant_type": "authorization_code",
|
||||
+ "client_id": clientId,
|
||||
+ "redirect_uri": redirectURI,
|
||||
+ "code_verifier": verifier,
|
||||
+ }
|
||||
+
|
||||
+ resp, err := request(ctx, "POST", tokenURL, reqBody)
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+ defer resp.Body.Close()
|
||||
+
|
||||
+ body, err := io.ReadAll(resp.Body)
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+
|
||||
+ if resp.StatusCode != http.StatusOK {
|
||||
+ return nil, fmt.Errorf("claude code max: failed to exchange token: status %d body %q", resp.StatusCode, string(body))
|
||||
+ }
|
||||
+
|
||||
+ var token oauth.Token
|
||||
+ if err := json.Unmarshal(body, &token); err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+ token.SetExpiresAt()
|
||||
+ return &token, nil
|
||||
+}
|
||||
+
|
||||
+// RefreshToken refreshes the OAuth2 token using the provided refresh token.
|
||||
+func RefreshToken(ctx context.Context, refreshToken string) (*oauth.Token, error) {
|
||||
+ reqBody := map[string]string{
|
||||
+ "grant_type": "refresh_token",
|
||||
+ "refresh_token": refreshToken,
|
||||
+ "client_id": clientId,
|
||||
+ }
|
||||
+
|
||||
+ resp, err := request(ctx, "POST", tokenURL, reqBody)
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+ defer resp.Body.Close()
|
||||
+
|
||||
+ body, err := io.ReadAll(resp.Body)
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+
|
||||
+ if resp.StatusCode != http.StatusOK {
|
||||
+ return nil, fmt.Errorf("claude code max: failed to refresh token: status %d body %q", resp.StatusCode, string(body))
|
||||
+ }
|
||||
+
|
||||
+ var token oauth.Token
|
||||
+ if err := json.Unmarshal(body, &token); err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+ token.SetExpiresAt()
|
||||
+ return &token, nil
|
||||
+}
|
||||
+
|
||||
+func request(ctx context.Context, method, url string, body any) (*http.Response, error) {
|
||||
+ date, err := json.Marshal(body)
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+
|
||||
+ req, err := http.NewRequestWithContext(ctx, method, url, bytes.NewReader(date))
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+
|
||||
+ req.Header.Set("Content-Type", "application/json")
|
||||
+ req.Header.Set("User-Agent", "claude-code/2.1.112")
|
||||
+
|
||||
+ client := &http.Client{Timeout: 30 * time.Second}
|
||||
+ return client.Do(req)
|
||||
+}
|
||||
245
devel/crush/patches/patch-internal_ui_dialog_oauth_claude_go
Normal file
245
devel/crush/patches/patch-internal_ui_dialog_oauth_claude_go
Normal file
@@ -0,0 +1,245 @@
|
||||
Index: internal/ui/dialog/oauth_claude.go
|
||||
--- internal/ui/dialog/oauth_claude.go.orig
|
||||
+++ internal/ui/dialog/oauth_claude.go
|
||||
@@ -0,0 +1,241 @@
|
||||
+package dialog
|
||||
+
|
||||
+import (
|
||||
+ "context"
|
||||
+ "fmt"
|
||||
+ "strings"
|
||||
+
|
||||
+ "charm.land/bubbles/v2/help"
|
||||
+ "charm.land/bubbles/v2/key"
|
||||
+ "charm.land/bubbles/v2/spinner"
|
||||
+ "charm.land/bubbles/v2/textinput"
|
||||
+ tea "charm.land/bubbletea/v2"
|
||||
+ "charm.land/catwalk/pkg/catwalk"
|
||||
+ "github.com/charmbracelet/crush/internal/config"
|
||||
+ "github.com/charmbracelet/crush/internal/oauth"
|
||||
+ "github.com/charmbracelet/crush/internal/oauth/claude"
|
||||
+ "github.com/charmbracelet/crush/internal/ui/common"
|
||||
+ "github.com/charmbracelet/crush/internal/ui/util"
|
||||
+ uv "github.com/charmbracelet/ultraviolet"
|
||||
+ "github.com/pkg/browser"
|
||||
+)
|
||||
+
|
||||
+type oauthClaudeState int
|
||||
+
|
||||
+const (
|
||||
+ oauthClaudeStateInput oauthClaudeState = iota
|
||||
+ oauthClaudeStateExchanging
|
||||
+ oauthClaudeStateError
|
||||
+)
|
||||
+
|
||||
+type oauthClaudeComplete struct{ token *oauth.Token }
|
||||
+type oauthClaudeError struct{ err error }
|
||||
+
|
||||
+// OAuthClaudeID is the identifier for the Claude OAuth dialog.
|
||||
+const OAuthClaudeID = "oauth_claude"
|
||||
+
|
||||
+// OAuthClaude is a dialog for Claude Code Max PKCE authentication.
|
||||
+type OAuthClaude struct {
|
||||
+ com *common.Common
|
||||
+ isOnboarding bool
|
||||
+ provider catwalk.Provider
|
||||
+ model config.SelectedModel
|
||||
+ modelType config.SelectedModelType
|
||||
+
|
||||
+ width int
|
||||
+ state oauthClaudeState
|
||||
+ verifier string
|
||||
+ verificationURL string
|
||||
+
|
||||
+ keyMap struct {
|
||||
+ Submit key.Binding
|
||||
+ Open key.Binding
|
||||
+ Close key.Binding
|
||||
+ }
|
||||
+ input textinput.Model
|
||||
+ spinner spinner.Model
|
||||
+ help help.Model
|
||||
+}
|
||||
+
|
||||
+var _ Dialog = (*OAuthClaude)(nil)
|
||||
+
|
||||
+// NewOAuthClaude creates a new Claude PKCE authentication dialog.
|
||||
+func NewOAuthClaude(
|
||||
+ com *common.Common,
|
||||
+ isOnboarding bool,
|
||||
+ provider catwalk.Provider,
|
||||
+ model config.SelectedModel,
|
||||
+ modelType config.SelectedModelType,
|
||||
+) (*OAuthClaude, tea.Cmd) {
|
||||
+ verifier, challenge, err := claude.GetChallenge()
|
||||
+ if err != nil {
|
||||
+ m := &OAuthClaude{com: com, isOnboarding: isOnboarding, provider: provider, model: model, modelType: modelType, width: 60, state: oauthClaudeStateError}
|
||||
+ return m, util.ReportError(fmt.Errorf("failed to generate PKCE challenge: %w", err))
|
||||
+ }
|
||||
+ authURL, err := claude.AuthorizeURL(verifier, challenge)
|
||||
+ if err != nil {
|
||||
+ m := &OAuthClaude{com: com, isOnboarding: isOnboarding, provider: provider, model: model, modelType: modelType, width: 60, state: oauthClaudeStateError}
|
||||
+ return m, util.ReportError(fmt.Errorf("failed to build auth URL: %w", err))
|
||||
+ }
|
||||
+
|
||||
+ t := com.Styles
|
||||
+ m := &OAuthClaude{
|
||||
+ com: com, isOnboarding: isOnboarding, provider: provider,
|
||||
+ model: model, modelType: modelType, width: 60,
|
||||
+ state: oauthClaudeStateInput, verifier: verifier, verificationURL: authURL,
|
||||
+ }
|
||||
+
|
||||
+ innerWidth := m.width - t.Dialog.View.GetHorizontalFrameSize() - 2
|
||||
+ m.input = textinput.New()
|
||||
+ m.input.SetVirtualCursor(false)
|
||||
+ m.input.Placeholder = "Paste authorization code..."
|
||||
+ m.input.SetStyles(com.Styles.TextInput)
|
||||
+ m.input.Focus()
|
||||
+ m.input.SetWidth(max(0, innerWidth-t.Dialog.InputPrompt.GetHorizontalFrameSize()-1))
|
||||
+ m.input.Prompt = "> "
|
||||
+
|
||||
+ m.spinner = spinner.New(
|
||||
+ spinner.WithSpinner(spinner.Dot),
|
||||
+ spinner.WithStyle(t.Dialog.APIKey.Spinner),
|
||||
+ )
|
||||
+ m.help = help.New()
|
||||
+ m.help.Styles = t.DialogHelpStyles()
|
||||
+
|
||||
+ m.keyMap.Submit = key.NewBinding(key.WithKeys("enter", "ctrl+y"), key.WithHelp("enter", "submit"))
|
||||
+ m.keyMap.Open = key.NewBinding(key.WithKeys("o"), key.WithHelp("o", "open browser"))
|
||||
+ m.keyMap.Close = CloseKey
|
||||
+
|
||||
+ return m, nil
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) ID() string { return OAuthClaudeID }
|
||||
+
|
||||
+func (m *OAuthClaude) HandleMsg(msg tea.Msg) Action {
|
||||
+ switch msg := msg.(type) {
|
||||
+ case oauthClaudeComplete:
|
||||
+ err := m.com.Workspace.SetProviderAPIKey(config.ScopeGlobal, string(m.provider.ID), msg.token)
|
||||
+ if err != nil {
|
||||
+ return ActionCmd{util.ReportError(fmt.Errorf("failed to save token: %w", err))}
|
||||
+ }
|
||||
+ return ActionSelectModel{Provider: m.provider, Model: m.model, ModelType: m.modelType}
|
||||
+
|
||||
+ case oauthClaudeError:
|
||||
+ m.state = oauthClaudeStateError
|
||||
+ return ActionCmd{util.ReportError(msg.err)}
|
||||
+
|
||||
+ case spinner.TickMsg:
|
||||
+ if m.state == oauthClaudeStateExchanging {
|
||||
+ var cmd tea.Cmd
|
||||
+ m.spinner, cmd = m.spinner.Update(msg)
|
||||
+ if cmd != nil {
|
||||
+ return ActionCmd{cmd}
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ case tea.KeyPressMsg:
|
||||
+ switch {
|
||||
+ case m.state == oauthClaudeStateExchanging:
|
||||
+ // absorb input during exchange
|
||||
+ case key.Matches(msg, m.keyMap.Close):
|
||||
+ return ActionClose{}
|
||||
+ case key.Matches(msg, m.keyMap.Open) && m.state == oauthClaudeStateInput:
|
||||
+ _ = browser.OpenURL(m.verificationURL)
|
||||
+ case key.Matches(msg, m.keyMap.Submit) && m.state == oauthClaudeStateInput:
|
||||
+ code := strings.TrimSpace(m.input.Value())
|
||||
+ if code == "" {
|
||||
+ return nil
|
||||
+ }
|
||||
+ m.state = oauthClaudeStateExchanging
|
||||
+ verifier := m.verifier
|
||||
+ return ActionCmd{tea.Batch(m.spinner.Tick, func() tea.Msg {
|
||||
+ token, err := claude.ExchangeToken(context.Background(), code, verifier)
|
||||
+ if err != nil {
|
||||
+ return oauthClaudeError{err}
|
||||
+ }
|
||||
+ return oauthClaudeComplete{token}
|
||||
+ })}
|
||||
+ default:
|
||||
+ if m.state == oauthClaudeStateInput {
|
||||
+ var cmd tea.Cmd
|
||||
+ m.input, cmd = m.input.Update(msg)
|
||||
+ if cmd != nil {
|
||||
+ return ActionCmd{cmd}
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ case tea.PasteMsg:
|
||||
+ if m.state == oauthClaudeStateInput {
|
||||
+ var cmd tea.Cmd
|
||||
+ m.input, cmd = m.input.Update(msg)
|
||||
+ if cmd != nil {
|
||||
+ return ActionCmd{cmd}
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return nil
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) Cursor() *tea.Cursor {
|
||||
+ return InputCursor(m.com.Styles, m.input.Cursor())
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) Draw(scr uv.Screen, area uv.Rectangle) *tea.Cursor {
|
||||
+ t := m.com.Styles
|
||||
+ dialogStyle := t.Dialog.View.Width(m.width)
|
||||
+ helpStyle := t.Dialog.HelpView.Width(m.width - dialogStyle.GetHorizontalFrameSize())
|
||||
+ textStyle := t.Dialog.SecondaryText
|
||||
+ inputStyle := t.Dialog.InputPrompt
|
||||
+ linkStyle := t.Dialog.OAuth.Link
|
||||
+
|
||||
+ if m.state == oauthClaudeStateExchanging {
|
||||
+ m.input.Prompt = m.spinner.View()
|
||||
+ } else {
|
||||
+ m.input.Prompt = "> "
|
||||
+ }
|
||||
+
|
||||
+ content := strings.Join([]string{
|
||||
+ m.headerView(),
|
||||
+ textStyle.Render("Visit the URL and paste the authorization code:"),
|
||||
+ "",
|
||||
+ textStyle.Render(linkStyle.Hyperlink(m.verificationURL, "id=oauth-claude").Render(m.verificationURL)),
|
||||
+ "",
|
||||
+ inputStyle.Render(m.input.View()),
|
||||
+ "",
|
||||
+ helpStyle.Render(m.help.View(m)),
|
||||
+ }, "\n")
|
||||
+
|
||||
+ cur := m.Cursor()
|
||||
+ if m.isOnboarding {
|
||||
+ cur = adjustOnboardingInputCursor(t, cur)
|
||||
+ DrawOnboardingCursor(scr, area, content, cur)
|
||||
+ } else {
|
||||
+ view := dialogStyle.Render(content)
|
||||
+ DrawCenterCursor(scr, area, view, cur)
|
||||
+ }
|
||||
+ return cur
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) headerView() string {
|
||||
+ t := m.com.Styles
|
||||
+ titleStyle := t.Dialog.Title
|
||||
+ textStyle := t.Dialog.PrimaryText
|
||||
+ dialogStyle := t.Dialog.View.Width(m.width)
|
||||
+ title := fmt.Sprintf("Authenticate with %s", m.provider.Name)
|
||||
+ if m.isOnboarding {
|
||||
+ return textStyle.Render(title)
|
||||
+ }
|
||||
+ headerOffset := titleStyle.GetHorizontalFrameSize() + dialogStyle.GetHorizontalFrameSize()
|
||||
+ return common.DialogTitle(t, titleStyle.Render(title), m.width-headerOffset, t.Dialog.TitleGradFromColor, t.Dialog.TitleGradToColor)
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) ShortHelp() []key.Binding {
|
||||
+ if m.state == oauthClaudeStateInput {
|
||||
+ return []key.Binding{m.keyMap.Open, m.keyMap.Submit, m.keyMap.Close}
|
||||
+ }
|
||||
+ return []key.Binding{m.keyMap.Close}
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) FullHelp() [][]key.Binding {
|
||||
+ return [][]key.Binding{m.ShortHelp()}
|
||||
+}
|
||||
12
devel/crush/patches/patch-internal_ui_model_ui_go
Normal file
12
devel/crush/patches/patch-internal_ui_model_ui_go
Normal file
@@ -0,0 +1,12 @@
|
||||
Index: internal/ui/model/ui.go
|
||||
--- internal/ui/model/ui.go.orig
|
||||
+++ internal/ui/model/ui.go
|
||||
@@ -1952,6 +1952,8 @@ func (m *UI) openAuthenticationDialog(provider catwalk
|
||||
switch provider.ID {
|
||||
case "hyper":
|
||||
dlg, cmd = dialog.NewOAuthHyper(m.com, isOnboarding, provider, model, modelType)
|
||||
+ case catwalk.InferenceProviderAnthropic:
|
||||
+ dlg, cmd = dialog.NewOAuthClaude(m.com, isOnboarding, provider, model, modelType)
|
||||
case catwalk.InferenceProviderCopilot:
|
||||
dlg, cmd = dialog.NewOAuthCopilot(m.com, isOnboarding, provider, model, modelType)
|
||||
default:
|
||||
3
devel/crush/pkg/DESCR
Normal file
3
devel/crush/pkg/DESCR
Normal file
@@ -0,0 +1,3 @@
|
||||
Crush is a terminal-based AI coding agent from Charm. It supports
|
||||
multiple LLM providers, per-project configuration, LSP-aware context,
|
||||
and an extensible tool/MCP system, all driven from an interactive TUI.
|
||||
1
devel/crush/pkg/PLIST
Normal file
1
devel/crush/pkg/PLIST
Normal file
@@ -0,0 +1 @@
|
||||
@bin bin/crush
|
||||
28
net/mbuffer/Makefile
Normal file
28
net/mbuffer/Makefile
Normal file
@@ -0,0 +1,28 @@
|
||||
# $OpenBSD: Makefile,v 1.10 2020/10/28 18:34:34 sthen Exp $
|
||||
|
||||
COMMENT = mbuffer is a tool for buffering data streams
|
||||
|
||||
DISTNAME = mbuffer-20260511
|
||||
EXTRACT_SUFX = .tgz
|
||||
CATEGORIES = net
|
||||
|
||||
MAINTAINER = Stefan Hagen <sh+ports@codevoid.de>
|
||||
|
||||
HOMEPAGE = http://www.maier-komor.de/mbuffer.html
|
||||
|
||||
SITES = http://www.maier-komor.de/software/mbuffer/
|
||||
|
||||
# BSD
|
||||
PERMIT_PACKAGE = Yes
|
||||
|
||||
WANTLIB += c crypto m pthread
|
||||
|
||||
NO_TEST = Yes
|
||||
|
||||
CONFIGURE_STYLE = gnu
|
||||
USE_GMAKE = Yes
|
||||
|
||||
# ship the sample rc under examples instead of installing into /etc
|
||||
MAKE_FLAGS = etcdir=${TRUEPREFIX}/share/examples/mbuffer
|
||||
|
||||
.include <bsd.port.mk>
|
||||
2
net/mbuffer/distinfo
Normal file
2
net/mbuffer/distinfo
Normal file
@@ -0,0 +1,2 @@
|
||||
SHA256 (mbuffer-20260511.tgz) = E7qzbzlAj3oI+zaJEykK0PEXyTS6tgIJThj8wSPsV4M=
|
||||
SIZE (mbuffer-20260511.tgz) = 156683
|
||||
11
net/mbuffer/patches/patch-mkversion_sh
Normal file
11
net/mbuffer/patches/patch-mkversion_sh
Normal file
@@ -0,0 +1,11 @@
|
||||
--- mkversion.sh.orig Wed Jul 8 09:46:45 2026
|
||||
+++ mkversion.sh Wed Jul 8 09:46:45 2026
|
||||
@@ -37,7 +37,7 @@
|
||||
done
|
||||
|
||||
|
||||
-NEWFILE=`mktemp -t version.h.XXXXXXXXXX`
|
||||
+NEWFILE=`mktemp version.h.XXXXXXXXXX`
|
||||
SED=`command -v gsed 2> /dev/null`
|
||||
if [ $? != 0 ]; then
|
||||
SED=`command -v sed`
|
||||
10
net/mbuffer/pkg/DESCR
Normal file
10
net/mbuffer/pkg/DESCR
Normal file
@@ -0,0 +1,10 @@
|
||||
mbuffer is a tool for buffering data streams with unique features:
|
||||
|
||||
- direct support for TCP based network targets (IPv4 and IPv6)
|
||||
- ability to send to multiple targets in parallel (distribution mode)
|
||||
- support for multiple volumes
|
||||
- I/O rate limitation
|
||||
- high/low watermark based restart criteria
|
||||
- configurable buffer size
|
||||
- on the fly MD5 hash calculation
|
||||
- highly efficient, multi-threaded implementation
|
||||
5
net/mbuffer/pkg/PLIST
Normal file
5
net/mbuffer/pkg/PLIST
Normal file
@@ -0,0 +1,5 @@
|
||||
@comment $OpenBSD: PLIST,v$
|
||||
@bin bin/mbuffer
|
||||
@man man/man1/mbuffer.1
|
||||
share/examples/mbuffer/
|
||||
share/examples/mbuffer/mbuffer.rc
|
||||
28
sysutils/cpuid-tycho/Makefile
Normal file
28
sysutils/cpuid-tycho/Makefile
Normal file
@@ -0,0 +1,28 @@
|
||||
# $OpenBSD$
|
||||
|
||||
ONLY_FOR_ARCHS= i386 amd64
|
||||
|
||||
COMMENT= dump and decode x86 CPUID information
|
||||
|
||||
GH_ACCOUNT= tycho
|
||||
GH_PROJECT= cpuid
|
||||
GH_TAGNAME= 1.8.2
|
||||
|
||||
PKGNAME= cpuid-tycho-${GH_TAGNAME}
|
||||
|
||||
CATEGORIES= sysutils
|
||||
|
||||
MAINTAINER= Stuart Henderson <sthen@openbsd.org>
|
||||
|
||||
# ISC
|
||||
PERMIT_PACKAGE= Yes
|
||||
|
||||
WANTLIB += c m pthread
|
||||
|
||||
MODULES= devel/meson
|
||||
NO_TEST= Yes
|
||||
|
||||
do-install:
|
||||
${INSTALL_PROGRAM} ${WRKBUILD}/cpuid ${PREFIX}/bin/cpuid-tycho
|
||||
|
||||
.include <bsd.port.mk>
|
||||
2
sysutils/cpuid-tycho/distinfo
Normal file
2
sysutils/cpuid-tycho/distinfo
Normal file
@@ -0,0 +1,2 @@
|
||||
SHA256 (cpuid-1.8.2.tar.gz) = NJR/RIQlJ0XprIIZFr0ANJwng23vTeJicv9uLHjr1OU=
|
||||
SIZE (cpuid-1.8.2.tar.gz) = 63055
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user