You've already forked macports-base
mirror of
https://github.com/macports/macports-base.git
synced 2026-07-12 18:18:43 -07:00
Merge from trunk
git-svn-id: https://svn.macports.org/repository/macports/branches/xterm-titles/base@66611 d073be05-634f-4543-b044-5fe20cf6d1d6
This commit is contained in:
@@ -8232,7 +8232,7 @@ $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
|
||||
fi
|
||||
|
||||
for ac_header in limits.h paths.h sys/file.h crt_externs.h fcntl.h sys/fcntl.h sys/cdefs.h err.h sys/socket.h \
|
||||
readline/readline.h readline/history.h pwd.h sys/paths.h utime.h
|
||||
sys/sysctl.h readline/readline.h readline/history.h pwd.h sys/paths.h utime.h
|
||||
do :
|
||||
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
|
||||
@@ -8250,7 +8250,7 @@ done
|
||||
INCLUDES="-I.. -I. $INCLUDES"
|
||||
|
||||
# Checks for library functions.
|
||||
for ac_func in bzero memset fgetln lockf flock setmode strcasecmp strncasecmp strlcpy copyfile clearenv
|
||||
for ac_func in bzero memset fgetln lockf flock setmode strcasecmp strncasecmp strlcpy copyfile clearenv sysctlbyname
|
||||
do :
|
||||
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
||||
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
||||
|
||||
+2
-2
@@ -194,12 +194,12 @@ AC_HEADER_STDC
|
||||
AC_HEADER_DIRENT
|
||||
AC_HEADER_SYS_WAIT
|
||||
AC_CHECK_HEADERS([limits.h paths.h sys/file.h crt_externs.h fcntl.h sys/fcntl.h sys/cdefs.h err.h sys/socket.h \
|
||||
readline/readline.h readline/history.h pwd.h sys/paths.h utime.h])
|
||||
sys/sysctl.h readline/readline.h readline/history.h pwd.h sys/paths.h utime.h])
|
||||
|
||||
INCLUDES="-I.. -I. $INCLUDES"
|
||||
|
||||
# Checks for library functions.
|
||||
AC_CHECK_FUNCS([bzero memset fgetln lockf flock setmode strcasecmp strncasecmp strlcpy copyfile clearenv])
|
||||
AC_CHECK_FUNCS([bzero memset fgetln lockf flock setmode strcasecmp strncasecmp strlcpy copyfile clearenv sysctlbyname])
|
||||
MP_CHECK_READLINK_IS_P1003_1A
|
||||
|
||||
# Check for md5 implementation
|
||||
|
||||
+1
-1
@@ -1556,7 +1556,7 @@ of check should be performed on distfiles:
|
||||
.br
|
||||
.Sy Values:
|
||||
.Em moddate none
|
||||
.It Ic livecheck.check
|
||||
.It Ic livecheck.type
|
||||
What kind of check to perform to figure out if the software has been updated.
|
||||
Can be
|
||||
.Em freshmeat
|
||||
|
||||
@@ -152,6 +152,9 @@
|
||||
/* Define to 1 if you have the `strncasecmp' function. */
|
||||
#undef HAVE_STRNCASECMP
|
||||
|
||||
/* Define to 1 if you have the `sysctlbyname' function. */
|
||||
#undef HAVE_SYSCTLBYNAME
|
||||
|
||||
/* Define to 1 if you have the <sys/cdefs.h> header file. */
|
||||
#undef HAVE_SYS_CDEFS_H
|
||||
|
||||
@@ -178,6 +181,9 @@
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/sysctl.h> header file. */
|
||||
#undef HAVE_SYS_SYSCTL_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ ${SQLEXT_NAME}: ${SQLEXT_OBJS}
|
||||
${SHLIB_LD} ${SQLEXT_OBJS} -o $@
|
||||
|
||||
clean::
|
||||
rm -f ${STLIB_NAME} ${SQLEXT_NAME} ${OBJS}
|
||||
rm -f ${STLIB_NAME} ${SQLEXT_NAME} ${SQLEXT_OBJS} ${OBJS}
|
||||
|
||||
distclean:: clean
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ test::
|
||||
|
||||
include ../../Mk/macports.autoconf.mk
|
||||
|
||||
CFLAGS+= -fPIC
|
||||
|
||||
all:: ${SHLIB_NAME}
|
||||
|
||||
$(SHLIB_NAME):: ${OBJS}
|
||||
|
||||
@@ -788,6 +788,8 @@ proc mportinit {{up_ui_options {}} {up_options {}} {up_variations {}}} {
|
||||
} else {
|
||||
set macports::universal_archs {i386 ppc}
|
||||
}
|
||||
} elseif {[llength $macports::universal_archs] < 2} {
|
||||
ui_warn "invalid universal_archs configured (should contain at least 2 archs)"
|
||||
}
|
||||
|
||||
# Default arch to build for
|
||||
@@ -1570,6 +1572,15 @@ proc mportexec {mport target} {
|
||||
set dlist [dlist_append_dependents $macports::open_mports $mport {}]
|
||||
|
||||
dlist_delete dlist $mport
|
||||
|
||||
# print the dep list
|
||||
if {[llength $dlist] > 0} {
|
||||
set depstring "---> Dependencies to be installed:"
|
||||
foreach ditem $dlist {
|
||||
append depstring " [ditem_key $ditem provides]"
|
||||
}
|
||||
ui_msg $depstring
|
||||
}
|
||||
|
||||
# install them
|
||||
# xxx: as with below, this is ugly. and deps need to be fixed to
|
||||
@@ -1932,6 +1943,11 @@ proc mportsync {{optionslist {}}} {
|
||||
}
|
||||
}
|
||||
|
||||
# refresh the quick index if necessary (batch or interactive run)
|
||||
if {[info exists macports::ui_options(ports_commandfiles)]} {
|
||||
_mports_load_quickindex
|
||||
}
|
||||
|
||||
if {$numfailed > 0} {
|
||||
return -code error "Synchronization of $numfailed source(s) failed"
|
||||
}
|
||||
@@ -2200,6 +2216,8 @@ proc mportlistall {args} {
|
||||
proc _mports_load_quickindex {args} {
|
||||
global macports::sources macports::quick_index
|
||||
|
||||
unset -nocomplain macports::quick_index
|
||||
|
||||
set sourceno 0
|
||||
foreach source $sources {
|
||||
unset -nocomplain quicklist
|
||||
@@ -2756,7 +2774,7 @@ proc macports::_upgrade {portname dspec variationslist optionslist {depscachenam
|
||||
|
||||
# upgrade its dependencies first
|
||||
set status [_upgrade_dependencies portinfo depscache variationslist options yes]
|
||||
if {$status != 0 && ![ui_isset ports_processall]} {
|
||||
if {$status != 0 && $status != 2 && ![ui_isset ports_processall]} {
|
||||
catch {mportclose $workername}
|
||||
return $status
|
||||
}
|
||||
@@ -2968,7 +2986,7 @@ proc macports::_upgrade {portname dspec variationslist optionslist {depscachenam
|
||||
# first upgrade dependencies
|
||||
if {![info exists options(ports_nodeps)]} {
|
||||
set status [_upgrade_dependencies portinfo depscache variationslist options $will_build]
|
||||
if {$status != 0 && ![ui_isset ports_processall]} {
|
||||
if {$status != 0 && $status != 2 && ![ui_isset ports_processall]} {
|
||||
catch {mportclose $workername}
|
||||
return $status
|
||||
}
|
||||
@@ -2994,7 +3012,7 @@ proc macports::_upgrade {portname dspec variationslist optionslist {depscachenam
|
||||
set mpname [lindex $dep 2]
|
||||
if {![llength [array get depscache port:${mpname}]]} {
|
||||
set status [macports::_upgrade $mpname port:${mpname} $variationslist [array get options] depscache]
|
||||
if {$status != 0 && ![ui_isset ports_processall]} {
|
||||
if {$status != 0 && $status != 2 && ![ui_isset ports_processall]} {
|
||||
catch {mportclose $workername}
|
||||
return $status
|
||||
}
|
||||
@@ -3113,7 +3131,7 @@ proc macports::_upgrade {portname dspec variationslist optionslist {depscachenam
|
||||
set mpname [lindex $dep 2]
|
||||
if {![llength [array get depscache port:${mpname}]]} {
|
||||
set status [macports::_upgrade $mpname port:${mpname} $variationslist [array get options] depscache]
|
||||
if {$status != 0 && ![ui_isset ports_processall]} {
|
||||
if {$status != 0 && $status != 2 && ![ui_isset ports_processall]} {
|
||||
catch {mportclose $workername}
|
||||
return $status
|
||||
}
|
||||
@@ -3195,11 +3213,11 @@ proc macports::_upgrade_dependencies {portinfoname depscachename variationslistn
|
||||
set d [lindex [split $i :] end]
|
||||
}
|
||||
set status [macports::_upgrade $d $dspec $variationslist [array get options] depscache]
|
||||
if {$status != 0 && ![ui_isset ports_processall]} break
|
||||
if {$status != 0 && $status != 2 && ![ui_isset ports_processall]} break
|
||||
}
|
||||
}
|
||||
}
|
||||
if {$status != 0 && ![ui_isset ports_processall]} break
|
||||
if {$status != 0 && $status != 2 && ![ui_isset ports_processall]} break
|
||||
}
|
||||
# restore dependent-following to its former value
|
||||
if {$saved_do_dependents} {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
|
||||
# macports_fastload.tcl.in
|
||||
# $Id$
|
||||
#
|
||||
@@ -45,39 +46,45 @@
|
||||
#
|
||||
if { [regexp {\d+\.\d+\.\d+} [info patchlevel]] &&
|
||||
([package vcompare [info patchlevel] 8.4.7] < 0) } {
|
||||
global allpackages
|
||||
if {![info exists allpackages]} {
|
||||
# Only patch once.
|
||||
array set allpackages {}
|
||||
rename package package_native
|
||||
proc package {args} {
|
||||
global allpackages
|
||||
if {([lindex $args 0] == "ifneeded") && ([llength $args] == 4)} {
|
||||
set package_name [lindex $args 1]
|
||||
set package_version [lindex $args 2]
|
||||
set package_key ${package_name}::${package_version}
|
||||
if {![info exists allpackages($package_key)]} {
|
||||
set allpackages($package_key) 1
|
||||
set result [eval package_native $args]
|
||||
} else {
|
||||
set result ""
|
||||
}
|
||||
} else {
|
||||
set result [eval package_native $args]
|
||||
}
|
||||
return $result
|
||||
}
|
||||
}
|
||||
global allpackages
|
||||
if {![info exists allpackages]} {
|
||||
# Only patch once.
|
||||
array set allpackages {}
|
||||
rename package package_native
|
||||
proc package {args} {
|
||||
global allpackages
|
||||
if {([lindex $args 0] == "ifneeded") && ([llength $args] == 4)} {
|
||||
set package_name [lindex $args 1]
|
||||
set package_version [lindex $args 2]
|
||||
set package_key ${package_name}::${package_version}
|
||||
if {![info exists allpackages($package_key)]} {
|
||||
set allpackages($package_key) 1
|
||||
set result [eval package_native $args]
|
||||
} else {
|
||||
set result ""
|
||||
}
|
||||
} else {
|
||||
set result [eval package_native $args]
|
||||
}
|
||||
return $result
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
set sharetcldir "@macports_tcl_dir@"
|
||||
set sharetcldir [file normalize [file join [file dirname [info script]] ..]]
|
||||
if {[file exists $sharetcldir]} {
|
||||
foreach dir [glob -directory $sharetcldir *] {
|
||||
catch {source [file join $dir pkgIndex.tcl]}
|
||||
}
|
||||
foreach dir [glob -directory $sharetcldir *] {
|
||||
set pkgindex [file join $dir pkgIndex.tcl]
|
||||
if [file exists $pkgindex] {
|
||||
source $pkgindex
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if { "@SQLITE3_TCL_DIR@" != "" } {
|
||||
set dir "@SQLITE3_TCL_DIR@"
|
||||
catch {source [file join $dir pkgIndex.tcl]}
|
||||
set dir "@SQLITE3_TCL_DIR@"
|
||||
set pkgindex [file join $dir pkgIndex.tcl]
|
||||
if [file exists $pkgindex] {
|
||||
source $pkgindex
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,10 @@
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#if HAVE_SYS_SYSCTL_H
|
||||
#include <sys/sysctl.h>
|
||||
#endif
|
||||
|
||||
#include "sysctl.h"
|
||||
|
||||
@@ -48,6 +51,7 @@
|
||||
*/
|
||||
int SysctlCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
|
||||
{
|
||||
#if HAVE_SYSCTLBYNAME
|
||||
const char error_message[] = "sysctl failed: ";
|
||||
Tcl_Obj *tcl_result;
|
||||
int res;
|
||||
@@ -84,4 +88,8 @@ int SysctlCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Ob
|
||||
|
||||
Tcl_SetObjResult(interp, tcl_result);
|
||||
return TCL_OK;
|
||||
#else
|
||||
Tcl_SetObjResult(interp, Tcl_NewStringObj("sysctl not available", -1));
|
||||
return TCL_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -57,8 +57,7 @@ default archivefetch.use_epsv no
|
||||
# Ignore SSL certificate
|
||||
default archivefetch.ignore_sslcert no
|
||||
|
||||
# TODO: enable this when binaries are available on a macports server
|
||||
#default archive_sites macports_archives
|
||||
default archive_sites macports_archives
|
||||
default archive_sites.listfile {"archive_sites.tcl"}
|
||||
default archive_sites.listpath {"port1.0/fetch"}
|
||||
|
||||
|
||||
@@ -399,6 +399,10 @@ int UnsetEnvCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_
|
||||
#else
|
||||
clearenv();
|
||||
#endif
|
||||
/* "If the entire env array is unset then Tcl will stop monitoring
|
||||
env accesses and will not update environment variables."
|
||||
- <http://www.tcl.tk/man/tcl8.4/TclCmd/tclvars.htm#M4> */
|
||||
setenv("MACPORTS_DUMMY", "", 0);
|
||||
} else {
|
||||
(void) unsetenv(name);
|
||||
}
|
||||
|
||||
@@ -40,9 +40,7 @@
|
||||
|
||||
#include "rmd160cmd.h"
|
||||
|
||||
#if HAVE_COMMONCRYPTO_COMMONDIGEST_H
|
||||
|
||||
/* We do not have libmd.
|
||||
/*
|
||||
* let's use our own version of rmd160* libraries.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
@@ -60,13 +58,6 @@
|
||||
CHECKSUMEnd(RMD160, RMD160_CTX, RIPEMD160_DIGEST_LENGTH)
|
||||
CHECKSUMFile(RMD160, RMD160_CTX)
|
||||
|
||||
#elif defined(HAVE_LIBMD)
|
||||
#include <sys/types.h>
|
||||
#include <ripemd.h>
|
||||
#define RMD160File(x, y) RIPEMD160_File(x, y)
|
||||
#else
|
||||
#error CommonCrypto or libmd required
|
||||
#endif
|
||||
|
||||
int RMD160Cmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
|
||||
{
|
||||
|
||||
@@ -57,6 +57,8 @@ CHECKSUMFile(SHA1_, SHA_CTX)
|
||||
#elif defined(HAVE_LIBMD)
|
||||
#include <sys/types.h>
|
||||
#include <sha.h>
|
||||
#define SHA_DIGEST_LENGTH (SHA_HASHBYTES)
|
||||
#define SHA1_File(x,y) SHAFile(x,y)
|
||||
#else
|
||||
#error CommonCrypto or libmd required
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,472 @@
|
||||
/* $OpenBSD: sha2.c,v 1.6 2004/05/03 02:57:36 millert Exp $ */
|
||||
|
||||
/*
|
||||
* FILE: sha2.c
|
||||
* AUTHOR: Aaron D. Gifford <me@aarongifford.com>
|
||||
*
|
||||
* Copyright (c) 2000-2001, Aaron D. Gifford
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the copyright holder nor the names of contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $From: sha2.c,v 1.1 2001/11/08 00:01:51 adg Exp adg $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
/*
|
||||
* UNROLLED TRANSFORM LOOP NOTE:
|
||||
* You can define SHA2_UNROLL_TRANSFORM to use the unrolled transform
|
||||
* loop version for the hash transform rounds (defined using macros
|
||||
* later in this file). Either define on the command line, for example:
|
||||
*
|
||||
* cc -DSHA2_UNROLL_TRANSFORM -o sha2 sha2.c sha2prog.c
|
||||
*
|
||||
* or define below:
|
||||
*
|
||||
* #define SHA2_UNROLL_TRANSFORM
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*** SHA-256 Machine Architecture Definitions *****************/
|
||||
/*
|
||||
* BYTE_ORDER NOTE:
|
||||
*
|
||||
* Please make sure that your system defines BYTE_ORDER. If your
|
||||
* architecture is little-endian, make sure it also defines
|
||||
* LITTLE_ENDIAN and that the two (BYTE_ORDER and LITTLE_ENDIAN) are
|
||||
* equivilent.
|
||||
*
|
||||
* If your system does not define the above, then you can do so by
|
||||
* hand like this:
|
||||
*
|
||||
* #define LITTLE_ENDIAN 1234
|
||||
* #define BIG_ENDIAN 4321
|
||||
*
|
||||
* And for little-endian machines, add:
|
||||
*
|
||||
* #define BYTE_ORDER LITTLE_ENDIAN
|
||||
*
|
||||
* Or for big-endian machines:
|
||||
*
|
||||
* #define BYTE_ORDER BIG_ENDIAN
|
||||
*
|
||||
* The FreeBSD machine this was written on defines BYTE_ORDER
|
||||
* appropriately by including <sys/types.h> (which in turn includes
|
||||
* <machine/endian.h> where the appropriate definitions are actually
|
||||
* made).
|
||||
*/
|
||||
#if !defined(BYTE_ORDER) || (BYTE_ORDER != LITTLE_ENDIAN && BYTE_ORDER != BIG_ENDIAN)
|
||||
#error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
|
||||
/*** SHA-256 Various Length Definitions ***********************/
|
||||
/* NOTE: Most of these are in sha2.h */
|
||||
#define SHA256_SHORT_BLOCK_LENGTH (SHA256_BLOCK_LENGTH - 8)
|
||||
|
||||
|
||||
/*** ENDIAN REVERSAL MACROS *******************************************/
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||
#define REVERSE32(w,x) { \
|
||||
u_int32_t tmp = (w); \
|
||||
tmp = (tmp >> 16) | (tmp << 16); \
|
||||
(x) = ((tmp & 0xff00ff00UL) >> 8) | ((tmp & 0x00ff00ffUL) << 8); \
|
||||
}
|
||||
#define REVERSE64(w,x) { \
|
||||
u_int64_t tmp = (w); \
|
||||
tmp = (tmp >> 32) | (tmp << 32); \
|
||||
tmp = ((tmp & 0xff00ff00ff00ff00ULL) >> 8) | \
|
||||
((tmp & 0x00ff00ff00ff00ffULL) << 8); \
|
||||
(x) = ((tmp & 0xffff0000ffff0000ULL) >> 16) | \
|
||||
((tmp & 0x0000ffff0000ffffULL) << 16); \
|
||||
}
|
||||
#endif /* BYTE_ORDER == LITTLE_ENDIAN */
|
||||
|
||||
/*
|
||||
* Macro for incrementally adding the unsigned 64-bit integer n to the
|
||||
* unsigned 128-bit integer (represented using a two-element array of
|
||||
* 64-bit words):
|
||||
*/
|
||||
#define ADDINC128(w,n) { \
|
||||
(w)[0] += (u_int64_t)(n); \
|
||||
if ((w)[0] < (n)) { \
|
||||
(w)[1]++; \
|
||||
} \
|
||||
}
|
||||
|
||||
/*** THE SIX LOGICAL FUNCTIONS ****************************************/
|
||||
/*
|
||||
* Bit shifting and rotation (used by the six SHA-XYZ logical functions:
|
||||
*
|
||||
* NOTE: The naming of R and S appears backwards here (R is a SHIFT and
|
||||
* S is a ROTATION) because the SHA-256/384/512 description document
|
||||
* (see http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf) uses this
|
||||
* same "backwards" definition.
|
||||
*/
|
||||
/* Shift-right (used in SHA-256, SHA-384, and SHA-512): */
|
||||
#define R(b,x) ((x) >> (b))
|
||||
/* 32-bit Rotate-right (used in SHA-256): */
|
||||
#define S32(b,x) (((x) >> (b)) | ((x) << (32 - (b))))
|
||||
/* 64-bit Rotate-right (used in SHA-384 and SHA-512): */
|
||||
#define S64(b,x) (((x) >> (b)) | ((x) << (64 - (b))))
|
||||
|
||||
/* Two of six logical functions used in SHA-256: */
|
||||
#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z)))
|
||||
#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
|
||||
|
||||
/* Four of six logical functions used in SHA-256: */
|
||||
#define Sigma0_256(x) (S32(2, (x)) ^ S32(13, (x)) ^ S32(22, (x)))
|
||||
#define Sigma1_256(x) (S32(6, (x)) ^ S32(11, (x)) ^ S32(25, (x)))
|
||||
#define sigma0_256(x) (S32(7, (x)) ^ S32(18, (x)) ^ R(3 , (x)))
|
||||
#define sigma1_256(x) (S32(17, (x)) ^ S32(19, (x)) ^ R(10, (x)))
|
||||
|
||||
/*** INTERNAL FUNCTION PROTOTYPES *************************************/
|
||||
/* NOTE: These should not be accessed directly from outside this
|
||||
* library -- they are intended for private internal visibility/use
|
||||
* only.
|
||||
*/
|
||||
void SHA256_Transform(SHA256_CTX *, const u_int8_t *);
|
||||
|
||||
|
||||
/*** SHA-XYZ INITIAL HASH VALUES AND CONSTANTS ************************/
|
||||
/* Hash constant words K for SHA-256: */
|
||||
static const u_int32_t K256[64] = {
|
||||
0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL,
|
||||
0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL,
|
||||
0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL,
|
||||
0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL,
|
||||
0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL,
|
||||
0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL,
|
||||
0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL,
|
||||
0xc6e00bf3UL, 0xd5a79147UL, 0x06ca6351UL, 0x14292967UL,
|
||||
0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL,
|
||||
0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL,
|
||||
0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL,
|
||||
0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL,
|
||||
0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL,
|
||||
0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL,
|
||||
0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
|
||||
0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL
|
||||
};
|
||||
|
||||
/* Initial hash value H for SHA-256: */
|
||||
static const u_int32_t sha256_initial_hash_value[8] = {
|
||||
0x6a09e667UL,
|
||||
0xbb67ae85UL,
|
||||
0x3c6ef372UL,
|
||||
0xa54ff53aUL,
|
||||
0x510e527fUL,
|
||||
0x9b05688cUL,
|
||||
0x1f83d9abUL,
|
||||
0x5be0cd19UL
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*** SHA-256: *********************************************************/
|
||||
void
|
||||
SHA256_Init(SHA256_CTX *context)
|
||||
{
|
||||
if (context == NULL)
|
||||
return;
|
||||
bcopy(sha256_initial_hash_value, context->state, SHA256_DIGEST_LENGTH);
|
||||
bzero(context->buffer, SHA256_BLOCK_LENGTH);
|
||||
context->bitcount = 0;
|
||||
}
|
||||
|
||||
#ifdef SHA2_UNROLL_TRANSFORM
|
||||
|
||||
/* Unrolled SHA-256 round macros: */
|
||||
|
||||
#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) do { \
|
||||
W256[j] = (u_int32_t)data[3] | ((u_int32_t)data[2] << 8) | \
|
||||
((u_int32_t)data[1] << 16) | ((u_int32_t)data[0] << 24); \
|
||||
data += 4; \
|
||||
T1 = (h) + Sigma1_256((e)) + Ch((e), (f), (g)) + K256[j] + W256[j]; \
|
||||
(d) += T1; \
|
||||
(h) = T1 + Sigma0_256((a)) + Maj((a), (b), (c)); \
|
||||
j++; \
|
||||
} while(0)
|
||||
|
||||
#define ROUND256(a,b,c,d,e,f,g,h) do { \
|
||||
s0 = W256[(j+1)&0x0f]; \
|
||||
s0 = sigma0_256(s0); \
|
||||
s1 = W256[(j+14)&0x0f]; \
|
||||
s1 = sigma1_256(s1); \
|
||||
T1 = (h) + Sigma1_256((e)) + Ch((e), (f), (g)) + K256[j] + \
|
||||
(W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0); \
|
||||
(d) += T1; \
|
||||
(h) = T1 + Sigma0_256((a)) + Maj((a), (b), (c)); \
|
||||
j++; \
|
||||
} while(0)
|
||||
|
||||
void
|
||||
SHA256_Transform(SHA256_CTX *context, const u_int8_t *data)
|
||||
{
|
||||
u_int32_t a, b, c, d, e, f, g, h, s0, s1;
|
||||
u_int32_t T1, *W256;
|
||||
int j;
|
||||
|
||||
W256 = (u_int32_t *)context->buffer;
|
||||
|
||||
/* Initialize registers with the prev. intermediate value */
|
||||
a = context->state[0];
|
||||
b = context->state[1];
|
||||
c = context->state[2];
|
||||
d = context->state[3];
|
||||
e = context->state[4];
|
||||
f = context->state[5];
|
||||
g = context->state[6];
|
||||
h = context->state[7];
|
||||
|
||||
j = 0;
|
||||
do {
|
||||
/* Rounds 0 to 15 (unrolled): */
|
||||
ROUND256_0_TO_15(a,b,c,d,e,f,g,h);
|
||||
ROUND256_0_TO_15(h,a,b,c,d,e,f,g);
|
||||
ROUND256_0_TO_15(g,h,a,b,c,d,e,f);
|
||||
ROUND256_0_TO_15(f,g,h,a,b,c,d,e);
|
||||
ROUND256_0_TO_15(e,f,g,h,a,b,c,d);
|
||||
ROUND256_0_TO_15(d,e,f,g,h,a,b,c);
|
||||
ROUND256_0_TO_15(c,d,e,f,g,h,a,b);
|
||||
ROUND256_0_TO_15(b,c,d,e,f,g,h,a);
|
||||
} while (j < 16);
|
||||
|
||||
/* Now for the remaining rounds to 64: */
|
||||
do {
|
||||
ROUND256(a,b,c,d,e,f,g,h);
|
||||
ROUND256(h,a,b,c,d,e,f,g);
|
||||
ROUND256(g,h,a,b,c,d,e,f);
|
||||
ROUND256(f,g,h,a,b,c,d,e);
|
||||
ROUND256(e,f,g,h,a,b,c,d);
|
||||
ROUND256(d,e,f,g,h,a,b,c);
|
||||
ROUND256(c,d,e,f,g,h,a,b);
|
||||
ROUND256(b,c,d,e,f,g,h,a);
|
||||
} while (j < 64);
|
||||
|
||||
/* Compute the current intermediate hash value */
|
||||
context->state[0] += a;
|
||||
context->state[1] += b;
|
||||
context->state[2] += c;
|
||||
context->state[3] += d;
|
||||
context->state[4] += e;
|
||||
context->state[5] += f;
|
||||
context->state[6] += g;
|
||||
context->state[7] += h;
|
||||
|
||||
/* Clean up */
|
||||
a = b = c = d = e = f = g = h = T1 = 0;
|
||||
}
|
||||
|
||||
#else /* SHA2_UNROLL_TRANSFORM */
|
||||
|
||||
void
|
||||
SHA256_Transform(SHA256_CTX *context, const u_int8_t *data)
|
||||
{
|
||||
u_int32_t a, b, c, d, e, f, g, h, s0, s1;
|
||||
u_int32_t T1, T2, *W256;
|
||||
int j;
|
||||
|
||||
W256 = (u_int32_t *)context->buffer;
|
||||
|
||||
/* Initialize registers with the prev. intermediate value */
|
||||
a = context->state[0];
|
||||
b = context->state[1];
|
||||
c = context->state[2];
|
||||
d = context->state[3];
|
||||
e = context->state[4];
|
||||
f = context->state[5];
|
||||
g = context->state[6];
|
||||
h = context->state[7];
|
||||
|
||||
j = 0;
|
||||
do {
|
||||
W256[j] = (u_int32_t)data[3] | ((u_int32_t)data[2] << 8) |
|
||||
((u_int32_t)data[1] << 16) | ((u_int32_t)data[0] << 24);
|
||||
data += 4;
|
||||
/* Apply the SHA-256 compression function to update a..h */
|
||||
T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + W256[j];
|
||||
T2 = Sigma0_256(a) + Maj(a, b, c);
|
||||
h = g;
|
||||
g = f;
|
||||
f = e;
|
||||
e = d + T1;
|
||||
d = c;
|
||||
c = b;
|
||||
b = a;
|
||||
a = T1 + T2;
|
||||
|
||||
j++;
|
||||
} while (j < 16);
|
||||
|
||||
do {
|
||||
/* Part of the message block expansion: */
|
||||
s0 = W256[(j+1)&0x0f];
|
||||
s0 = sigma0_256(s0);
|
||||
s1 = W256[(j+14)&0x0f];
|
||||
s1 = sigma1_256(s1);
|
||||
|
||||
/* Apply the SHA-256 compression function to update a..h */
|
||||
T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] +
|
||||
(W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0);
|
||||
T2 = Sigma0_256(a) + Maj(a, b, c);
|
||||
h = g;
|
||||
g = f;
|
||||
f = e;
|
||||
e = d + T1;
|
||||
d = c;
|
||||
c = b;
|
||||
b = a;
|
||||
a = T1 + T2;
|
||||
|
||||
j++;
|
||||
} while (j < 64);
|
||||
|
||||
/* Compute the current intermediate hash value */
|
||||
context->state[0] += a;
|
||||
context->state[1] += b;
|
||||
context->state[2] += c;
|
||||
context->state[3] += d;
|
||||
context->state[4] += e;
|
||||
context->state[5] += f;
|
||||
context->state[6] += g;
|
||||
context->state[7] += h;
|
||||
|
||||
/* Clean up */
|
||||
a = b = c = d = e = f = g = h = T1 = T2 = 0;
|
||||
}
|
||||
|
||||
#endif /* SHA2_UNROLL_TRANSFORM */
|
||||
|
||||
void
|
||||
SHA256_Update(SHA256_CTX *context, const u_int8_t *data, size_t len)
|
||||
{
|
||||
size_t freespace, usedspace;
|
||||
|
||||
/* Calling with no data is valid (we do nothing) */
|
||||
if (len == 0)
|
||||
return;
|
||||
|
||||
usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH;
|
||||
if (usedspace > 0) {
|
||||
/* Calculate how much free space is available in the buffer */
|
||||
freespace = SHA256_BLOCK_LENGTH - usedspace;
|
||||
|
||||
if (len >= freespace) {
|
||||
/* Fill the buffer completely and process it */
|
||||
bcopy(data, &context->buffer[usedspace], freespace);
|
||||
context->bitcount += freespace << 3;
|
||||
len -= freespace;
|
||||
data += freespace;
|
||||
SHA256_Transform(context, context->buffer);
|
||||
} else {
|
||||
/* The buffer is not yet full */
|
||||
bcopy(data, &context->buffer[usedspace], len);
|
||||
context->bitcount += len << 3;
|
||||
/* Clean up: */
|
||||
usedspace = freespace = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
while (len >= SHA256_BLOCK_LENGTH) {
|
||||
/* Process as many complete blocks as we can */
|
||||
SHA256_Transform(context, data);
|
||||
context->bitcount += SHA256_BLOCK_LENGTH << 3;
|
||||
len -= SHA256_BLOCK_LENGTH;
|
||||
data += SHA256_BLOCK_LENGTH;
|
||||
}
|
||||
if (len > 0) {
|
||||
/* There's left-overs, so save 'em */
|
||||
bcopy(data, context->buffer, len);
|
||||
context->bitcount += len << 3;
|
||||
}
|
||||
/* Clean up: */
|
||||
usedspace = freespace = 0;
|
||||
}
|
||||
|
||||
void
|
||||
SHA256_Final(u_int8_t digest[], SHA256_CTX *context)
|
||||
{
|
||||
u_int32_t *d = (u_int32_t *)digest;
|
||||
unsigned int usedspace;
|
||||
|
||||
/* If no digest buffer is passed, we don't bother doing this: */
|
||||
if (digest != NULL) {
|
||||
usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH;
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||
/* Convert FROM host byte order */
|
||||
REVERSE64(context->bitcount,context->bitcount);
|
||||
#endif
|
||||
if (usedspace > 0) {
|
||||
/* Begin padding with a 1 bit: */
|
||||
context->buffer[usedspace++] = 0x80;
|
||||
|
||||
if (usedspace <= SHA256_SHORT_BLOCK_LENGTH) {
|
||||
/* Set-up for the last transform: */
|
||||
bzero(&context->buffer[usedspace], SHA256_SHORT_BLOCK_LENGTH - usedspace);
|
||||
} else {
|
||||
if (usedspace < SHA256_BLOCK_LENGTH) {
|
||||
bzero(&context->buffer[usedspace], SHA256_BLOCK_LENGTH - usedspace);
|
||||
}
|
||||
/* Do second-to-last transform: */
|
||||
SHA256_Transform(context, context->buffer);
|
||||
|
||||
/* And set-up for the last transform: */
|
||||
bzero(context->buffer, SHA256_SHORT_BLOCK_LENGTH);
|
||||
}
|
||||
} else {
|
||||
/* Set-up for the last transform: */
|
||||
bzero(context->buffer, SHA256_SHORT_BLOCK_LENGTH);
|
||||
|
||||
/* Begin padding with a 1 bit: */
|
||||
*context->buffer = 0x80;
|
||||
}
|
||||
/* Set the bit count: */
|
||||
*(u_int64_t *)&context->buffer[SHA256_SHORT_BLOCK_LENGTH] = context->bitcount;
|
||||
|
||||
/* Final transform: */
|
||||
SHA256_Transform(context, context->buffer);
|
||||
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||
{
|
||||
/* Convert TO host byte order */
|
||||
int j;
|
||||
for (j = 0; j < 8; j++) {
|
||||
REVERSE32(context->state[j],context->state[j]);
|
||||
*d++ = context->state[j];
|
||||
}
|
||||
}
|
||||
#else
|
||||
bcopy(context->state, d, SHA256_DIGEST_LENGTH);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Clean up state data: */
|
||||
bzero(context, sizeof(*context));
|
||||
usedspace = 0;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/* $OpenBSD: sha2.h,v 1.2 2004/04/28 23:11:57 millert Exp $ */
|
||||
|
||||
/*
|
||||
* FILE: sha2.h
|
||||
* AUTHOR: Aaron D. Gifford <me@aarongifford.com>
|
||||
*
|
||||
* Copyright (c) 2000-2001, Aaron D. Gifford
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the copyright holder nor the names of contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $From: sha2.h,v 1.1 2001/11/08 00:02:01 adg Exp adg $
|
||||
*/
|
||||
|
||||
#ifndef _SHA2_H
|
||||
#define _SHA2_H
|
||||
|
||||
|
||||
/*** SHA-256 Various Length Definitions ***********************/
|
||||
#define SHA256_BLOCK_LENGTH 64
|
||||
#define SHA256_DIGEST_LENGTH 32
|
||||
#define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1)
|
||||
|
||||
|
||||
/*** SHA-256 Context Structures *******************************/
|
||||
typedef struct _SHA256_CTX {
|
||||
u_int32_t state[8];
|
||||
u_int64_t bitcount;
|
||||
u_int8_t buffer[SHA256_BLOCK_LENGTH];
|
||||
} SHA256_CTX;
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
void SHA256_Init(SHA256_CTX *);
|
||||
void SHA256_Update(SHA256_CTX *, const u_int8_t *, size_t);
|
||||
void SHA256_Final(u_int8_t[SHA256_DIGEST_LENGTH], SHA256_CTX *);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* _SHA2_H */
|
||||
@@ -58,18 +58,19 @@
|
||||
#define SHA256_Final(m, c) CC_SHA256_Final(m,c)
|
||||
#endif
|
||||
|
||||
#else
|
||||
/* We do not have CommonCrypto.
|
||||
* let's use our own version of sha256* libraries.
|
||||
*/
|
||||
#include <sys/types.h>
|
||||
#include "sha2.h"
|
||||
#include "sha2.c"
|
||||
#endif
|
||||
|
||||
#include "md_wrappers.h"
|
||||
CHECKSUMEnd(SHA256_, SHA256_CTX, SHA256_DIGEST_LENGTH)
|
||||
CHECKSUMFile(SHA256_, SHA256_CTX)
|
||||
|
||||
#elif defined(HAVE_LIBMD)
|
||||
#include <sys/types.h>
|
||||
#include <sha256.h>
|
||||
#define SHA256_DIGEST_LENGTH 32
|
||||
#else
|
||||
#error CommonCrypto or libmd required
|
||||
#endif
|
||||
|
||||
int SHA256Cmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
|
||||
{
|
||||
char *file, *action;
|
||||
|
||||
@@ -30,7 +30,10 @@
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
@@ -47,6 +50,26 @@
|
||||
#include <limits.h>
|
||||
#include "tracelib.h"
|
||||
|
||||
#ifndef HAVE_STRLCPY
|
||||
/* Define strlcpy if it's not available. */
|
||||
size_t strlcpy(char* dst, const char* src, size_t size);
|
||||
size_t strlcpy(char* dst, const char* src, size_t size)
|
||||
{
|
||||
size_t result = strlen(src);
|
||||
if (size > 0)
|
||||
{
|
||||
size_t copylen = size - 1;
|
||||
if (copylen > result)
|
||||
{
|
||||
copylen = result;
|
||||
}
|
||||
memcpy(dst, src, copylen);
|
||||
dst[copylen] = 0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
||||
static char * name;
|
||||
static char * sandbox;
|
||||
static char * filemap, * filemap_end;
|
||||
|
||||
@@ -14,12 +14,15 @@ all: ${SCRIPTS}
|
||||
|
||||
portmirror: portmirror.tcl ../../Mk/macports.autoconf.mk
|
||||
${edit} portmirror.tcl > $@
|
||||
chmod +x $@
|
||||
|
||||
portindex: portindex.tcl ../../Mk/macports.autoconf.mk
|
||||
${edit} portindex.tcl > $@
|
||||
chmod +x $@
|
||||
|
||||
port: port.tcl ../../Mk/macports.autoconf.mk
|
||||
${edit} port.tcl > $@
|
||||
chmod +x $@
|
||||
|
||||
mkdirs:
|
||||
cat ../../doc/prefix.mtree | $(MTREE) -U -d -e -p ${INSTALLDIR} > /dev/null
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
set porthelp(activate) {
|
||||
Activate the given ports
|
||||
|
||||
--no-exec Do not execute any stored pre- or post-activate procedures
|
||||
}
|
||||
|
||||
set porthelp(archive) {
|
||||
@@ -64,6 +66,8 @@ Returns a list of files installed by given ports
|
||||
|
||||
set porthelp(deactivate) {
|
||||
Deactivates the given ports
|
||||
|
||||
--no-exec Do not execute any stored pre- or post-deactivate procedures
|
||||
}
|
||||
|
||||
set porthelp(dependents) {
|
||||
@@ -310,6 +314,8 @@ Unarchive the given ports
|
||||
|
||||
set porthelp(uninstall) {
|
||||
Uninstall the given ports
|
||||
|
||||
--no-exec Do not execute any stored pre- or post-uninstall procedures
|
||||
}
|
||||
|
||||
set porthelp(unload) $porthelp(load)
|
||||
|
||||
+32
-13
@@ -34,8 +34,14 @@ exec @TCLSH@ "$0" "$@"
|
||||
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
catch {source \
|
||||
[file join "@macports_tcl_dir@" macports1.0 macports_fastload.tcl]}
|
||||
if {([file tail [pwd]] == "src" && [file exists [set dir macports1.0]/macports_fastload.tcl])
|
||||
|| ([file tail [pwd]] == "base" && [file exists [set dir src/macports1.0]/macports_fastload.tcl])} {
|
||||
# developer mode, source packages from current directory
|
||||
source [file join $dir macports_fastload.tcl]
|
||||
} else {
|
||||
source [file join "@macports_tcl_dir@" macports1.0 macports_fastload.tcl]
|
||||
}
|
||||
|
||||
package require macports
|
||||
package require Pextlib 1.0
|
||||
|
||||
@@ -1451,7 +1457,7 @@ proc parseFullPortSpec { urlname namename vername varname optname } {
|
||||
if { [moreargs] } {
|
||||
# Look first for a potential portname
|
||||
#
|
||||
# We need to allow a wide variaty of tokens here, because of actions like "provides"
|
||||
# We need to allow a wide variety of tokens here, because of actions like "provides"
|
||||
# so we take a rather lenient view of what a "portname" is. We allow
|
||||
# anything that doesn't look like either a version, a variant, or an option
|
||||
set token [lookahead]
|
||||
@@ -2227,7 +2233,11 @@ proc action_activate { action portlist opts } {
|
||||
}
|
||||
foreachport $portlist {
|
||||
set composite_version [composite_version $portversion [array get variations]]
|
||||
if {${macports::registry.format} == "receipt_sqlite" && ![catch {set ilist [registry::installed $portname $composite_version]}] && [llength $ilist] == 1} {
|
||||
if {${macports::registry.format} == "receipt_sqlite"
|
||||
&& ![info exists options(ports_activate_no-exec)]
|
||||
&& ![catch {set ilist [registry::installed $portname $composite_version]}]
|
||||
&& [llength $ilist] == 1} {
|
||||
|
||||
set i [lindex $ilist 0]
|
||||
set regref [registry::entry open $portname [lindex $i 1] [lindex $i 2] [lindex $i 3] [lindex $i 5]]
|
||||
if {[registry::run_target $regref activate [array get options]]} {
|
||||
@@ -2257,7 +2267,10 @@ proc action_deactivate { action portlist opts } {
|
||||
}
|
||||
foreachport $portlist {
|
||||
set composite_version [composite_version $portversion [array get variations]]
|
||||
if {${macports::registry.format} == "receipt_sqlite" && ![catch {set ilist [registry::active $portname]}]} {
|
||||
if {${macports::registry.format} == "receipt_sqlite"
|
||||
&& ![info exists options(ports_deactivate_no-exec)]
|
||||
&& ![catch {set ilist [registry::active $portname]}]} {
|
||||
|
||||
set i [lindex $ilist 0]
|
||||
set iversion [lindex $i 1]
|
||||
set irevision [lindex $i 2]
|
||||
@@ -2790,7 +2803,11 @@ proc action_uninstall { action portlist opts } {
|
||||
continue
|
||||
}
|
||||
set composite_version [composite_version $portversion [array get variations]]
|
||||
if {${macports::registry.format} == "receipt_sqlite" && ![catch {set ilist [registry::installed $portname $composite_version]}] && [llength $ilist] == 1} {
|
||||
if {${macports::registry.format} == "receipt_sqlite"
|
||||
&& ![info exists options(ports_uninstall_no-exec)]
|
||||
&& ![catch {set ilist [registry::installed $portname $composite_version]}]
|
||||
&& [llength $ilist] == 1} {
|
||||
|
||||
set i [lindex $ilist 0]
|
||||
set iactive [lindex $i 4]
|
||||
set regref [registry::entry open $portname [lindex $i 1] [lindex $i 2] [lindex $i 3] [lindex $i 5]]
|
||||
@@ -3824,7 +3841,9 @@ array set cmd_opts_array {
|
||||
long_description maintainer maintainers name platform
|
||||
platforms portdir regex revision variant variants version}
|
||||
selfupdate {nosync}
|
||||
uninstall {follow-dependents follow-dependencies}
|
||||
activate {no-exec}
|
||||
deactivate {no-exec}
|
||||
uninstall {follow-dependents follow-dependencies no-exec}
|
||||
variants {index}
|
||||
clean {all archive dist work logs}
|
||||
mirror {new}
|
||||
@@ -4346,6 +4365,12 @@ if {[catch {parse_options "global" ui_options global_options} result]} {
|
||||
# Get arguments remaining after option processing
|
||||
set remaining_args [lrange $cmd_argv $cmd_argn end]
|
||||
|
||||
# If we have no arguments remaining after option processing then force
|
||||
# interactive mode
|
||||
if { [llength $remaining_args] == 0 && ![info exists ui_options(ports_commandfiles)] } {
|
||||
lappend ui_options(ports_commandfiles) -
|
||||
}
|
||||
|
||||
# If we have a tty, enable xterm titles
|
||||
if [isatty stdout] {
|
||||
set ui_options(ports_xterm_titles) yes
|
||||
@@ -4360,12 +4385,6 @@ if {[catch {mportinit ui_options global_options global_variations} result]} {
|
||||
fatal "Failed to initialize MacPorts, $result"
|
||||
}
|
||||
|
||||
# If we have no arguments remaining after option processing then force
|
||||
# interactive mode
|
||||
if { [llength $remaining_args] == 0 && ![info exists ui_options(ports_commandfiles)] } {
|
||||
lappend ui_options(ports_commandfiles) -
|
||||
}
|
||||
|
||||
# Set up some global state for our code
|
||||
global current_portdir
|
||||
set current_portdir [pwd]
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user