Compare commits
142 Commits
ecbde3039c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 6548ba09f6 | |||
| aa53729584 | |||
| c729bfcb24 | |||
| 34549e9737 | |||
| f7aa855c57 | |||
| 3df13746aa | |||
| 19e7e133d1 | |||
| 6c2e867ab0 | |||
| 3c7cd52344 | |||
| 8544126ef2 | |||
| 1d39ae8491 | |||
| 2592c32254 | |||
| 108cad4157 | |||
| 82fe3b5fcc | |||
| 0ea4fb2088 | |||
| d790b9ed33 | |||
| f8dbaa22a0 | |||
| fb9bdce10a | |||
| ba38a2457f | |||
| afc6047814 | |||
| 7acb408e7d | |||
| 52d3f86b37 | |||
| 45d4e085cc | |||
| 0cf431dc97 | |||
| 7bc33a4aa5 | |||
| bc51ad4da5 | |||
| f8c2133b44 | |||
| f014c8afd9 | |||
| 71e43c341a | |||
| 7cde189318 | |||
| d7e134245c | |||
| fbf86c8f34 | |||
| 93f2480ef0 | |||
| afb8ac49b7 | |||
| 8befa9b010 | |||
| cff784a9d4 | |||
| 73d6aff554 | |||
| f1eb64b7f5 | |||
| abd4351249 | |||
| ec7155349f | |||
| fd4655d957 | |||
| 6dab8b2f18 | |||
| ee90a418d6 | |||
| 66b22f147f | |||
| a181190b3f | |||
| a2e43778b8 | |||
| 88e7ad955a | |||
| e23dca4a8c | |||
| b76a177d9f | |||
| 6ee87e0e92 | |||
| 384e9cd3fc | |||
| f75d65c04c | |||
| f0d8f5a3f2 | |||
| d1739433ef | |||
| 3b54995a82 | |||
| a97e82ec24 | |||
| 7e00fb2426 | |||
| 722d8098dd | |||
| 8b359169a1 | |||
| 001885d256 | |||
| 4f4c03701f | |||
| 7c2a94c399 | |||
| aa92ca9f89 | |||
| 11ade4f850 | |||
| 412201b193 | |||
| 733f329e12 | |||
| 1a69951521 | |||
| 705b4240eb | |||
| c5b8b6ec7c | |||
| 8810970ff7 | |||
| 5b4804de0e | |||
| 51d45e9bae | |||
| 1aad1427a9 | |||
| 58e703a9d8 | |||
| 666b94afea | |||
| 466ed70f74 | |||
| 72a4e6ac76 | |||
| cf12c13935 | |||
| b2505c34e4 | |||
| c22f73c04d | |||
| f15e5e297f | |||
| eeb1275958 | |||
| 7fc6c41cc5 | |||
| 8eb6b8f05f | |||
| 446f718b13 | |||
| acbaa67d26 | |||
| 44b23bafc3 | |||
| 617ee90998 | |||
| db7dae0a62 | |||
| 0dd1bf2e9c | |||
| 8cc1cef1fd | |||
| e2e1446597 | |||
| ce038c3bd9 | |||
| 1b6da007e3 | |||
| 023a0772a8 | |||
| 0094500a45 | |||
| 223ecbfc0f | |||
| 773c992991 | |||
| 163ad31fce | |||
| 49540576e3 | |||
| f0bf0bf427 | |||
| 71c418eedf | |||
| 405e99c4cc | |||
| b037aa6f3c | |||
| 8d28b1406e | |||
| 1724567115 | |||
| c6964c5ed7 | |||
| 21bb9220c4 | |||
| e9868dc745 | |||
| 218354026d | |||
| a1d501ba35 | |||
| f6ff52230b | |||
| c9e958d235 | |||
| dc9b59ccc0 | |||
| 762783c50c | |||
| 98a97ad489 | |||
| 6b32dda5a7 | |||
| 31eeafb011 | |||
| 1214291293 | |||
| 26a1a2f707 | |||
| 2c9e0206a0 | |||
| a3ca7ddab7 | |||
| 337fe33f3a | |||
| bbae96f0cd | |||
| 3f8d05a7cb | |||
| 45b083b50f | |||
| cbfe736462 | |||
| f1d6d84c72 | |||
| ec7fea8ffb | |||
| 3010baafd3 | |||
| bd64ef4f7b | |||
| 17b695b587 | |||
| 2b0788e34d | |||
| 15130ca2a3 | |||
| dd20e2937d | |||
| f3b44ec049 | |||
| be79208c62 | |||
| d19048dda5 | |||
| 04351943b1 | |||
| da062311d4 | |||
| dfe76d00db | |||
| 33a9a96daa |
@ -1,121 +0,0 @@
|
||||
PORTNAME= etcd
|
||||
PORTVERSION= 3.5.15
|
||||
DISTVERSIONPREFIX= v
|
||||
#PORTREVISION= 25
|
||||
CATEGORIES= devel
|
||||
PKGNAMEPREFIX= coreos-
|
||||
PKGNAMESUFFIX= 34
|
||||
|
||||
MAINTAINER= ports@FreeBSD.org
|
||||
COMMENT= Highly-available key value store and service discovery
|
||||
WWW= https://github.com/coreos/etcd
|
||||
|
||||
LICENSE= APACHE20
|
||||
LICENSE_FILE= ${WRKSRC}/LICENSE
|
||||
|
||||
USES= cpe go:modules
|
||||
USE_GITHUB= yes
|
||||
GH_ACCOUNT= coreos
|
||||
GH_TUPLE= \
|
||||
beorn7:perks:v1.0.1:beorn7_perks/vendor/github.com/beorn7/perks \
|
||||
bgentry:speakeasy:v0.1.0:bgentry_speakeasy/vendor/github.com/bgentry/speakeasy \
|
||||
cenkalti:backoff:v4.2.1:cenkalti_backoff_v4/vendor/github.com/cenkalti/backoff/v4 \
|
||||
cespare:xxhash:v2.2.0:cespare_xxhash_v2/vendor/github.com/cespare/xxhash/v2 \
|
||||
cheggaaa:pb:v1.0.28:cheggaaa_pb/vendor/gopkg.in/cheggaaa/pb.v1 \
|
||||
coreos:go-semver:v0.3.0:coreos_go_semver/vendor/github.com/coreos/go-semver \
|
||||
coreos:go-systemd:v22.3.2:coreos_go_systemd_v22/vendor/github.com/coreos/go-systemd/v22 \
|
||||
dustin:go-humanize:v1.0.0:dustin_go_humanize/vendor/github.com/dustin/go-humanize \
|
||||
etcd-io:bbolt:v1.3.10:etcd_io_bbolt/vendor/go.etcd.io/bbolt \
|
||||
go-logr:logr:v1.3.0:go_logr_logr/vendor/github.com/go-logr/logr \
|
||||
go-logr:stdr:v1.2.2:go_logr_stdr/vendor/github.com/go-logr/stdr \
|
||||
go-yaml:yaml:v2.4.0:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \
|
||||
gogo:protobuf:v1.3.2:gogo_protobuf/vendor/github.com/gogo/protobuf \
|
||||
golang-jwt:jwt:v4.4.2:golang_jwt_jwt_v4/vendor/github.com/golang-jwt/jwt/v4 \
|
||||
golang:crypto:v0.21.0:golang_crypto/vendor/golang.org/x/crypto \
|
||||
golang:groupcache:41bb18bfe9da:golang_groupcache/vendor/github.com/golang/groupcache \
|
||||
golang:net:v0.23.0:golang_net/vendor/golang.org/x/net \
|
||||
golang:protobuf:v1.5.4:golang_protobuf/vendor/github.com/golang/protobuf \
|
||||
golang:sys:v0.18.0:golang_sys/vendor/golang.org/x/sys \
|
||||
golang:text:v0.14.0:golang_text/vendor/golang.org/x/text \
|
||||
golang:time:f8bda1e9f3ba:golang_time/vendor/golang.org/x/time \
|
||||
google:btree:v1.0.1:google_btree/vendor/github.com/google/btree \
|
||||
google:go-genproto:b8732ec3820d:google_go_genproto/vendor/google.golang.org/genproto \
|
||||
gorilla:websocket:v1.4.2:gorilla_websocket/vendor/github.com/gorilla/websocket \
|
||||
grpc-ecosystem:go-grpc-middleware:v1.3.0:grpc_ecosystem_go_grpc_middleware/vendor/github.com/grpc-ecosystem/go-grpc-middleware \
|
||||
grpc-ecosystem:go-grpc-prometheus:v1.2.0:grpc_ecosystem_go_grpc_prometheus/vendor/github.com/grpc-ecosystem/go-grpc-prometheus \
|
||||
grpc-ecosystem:grpc-gateway:v1.16.0:grpc_ecosystem_grpc_gateway/vendor/github.com/grpc-ecosystem/grpc-gateway \
|
||||
grpc-ecosystem:grpc-gateway:v2.16.0:grpc_ecosystem_grpc_gateway_v2/vendor/github.com/grpc-ecosystem/grpc-gateway/v2 \
|
||||
grpc:grpc-go:v1.59.0:grpc_grpc_go/vendor/google.golang.org/grpc \
|
||||
inconshreveable:mousetrap:v1.0.0:inconshreveable_mousetrap/vendor/github.com/inconshreveable/mousetrap \
|
||||
jonboulle:clockwork:v0.2.2:jonboulle_clockwork/vendor/github.com/jonboulle/clockwork \
|
||||
json-iterator:go:v1.1.11:json_iterator_go/vendor/github.com/json-iterator/go \
|
||||
kubernetes-sigs:yaml:v1.2.0:kubernetes_sigs_yaml/vendor/sigs.k8s.io/yaml \
|
||||
mattn:go-colorable:v0.1.11:mattn_go_colorable/vendor/github.com/mattn/go-colorable \
|
||||
mattn:go-runewidth:v0.0.9:mattn_go_runewidth/vendor/github.com/mattn/go-runewidth \
|
||||
matttproud:golang_protobuf_extensions:v1.0.1:matttproud_golang_protobuf_extensions/vendor/github.com/matttproud/golang_protobuf_extensions \
|
||||
modern-go:concurrent:bacd9c7ef1dd:modern_go_concurrent/vendor/github.com/modern-go/concurrent \
|
||||
modern-go:reflect2:v1.0.1:modern_go_reflect2/vendor/github.com/modern-go/reflect2 \
|
||||
natefinch:lumberjack:v2.0.0:natefinch_lumberjack/vendor/gopkg.in/natefinch/lumberjack.v2 \
|
||||
olekukonko:tablewriter:v0.0.5:olekukonko_tablewriter/vendor/github.com/olekukonko/tablewriter \
|
||||
open-telemetry:opentelemetry-go-contrib:instrumentation/google.golang.org/grpc/otelgrpc/v0.46.0:open_telemetry_opentelemetry_go_contrib/vendor/go.opentelemetry.io/contrib \
|
||||
open-telemetry:opentelemetry-go:v1.20.0:open_telemetry_opentelemetry_go/vendor/go.opentelemetry.io/otel \
|
||||
open-telemetry:opentelemetry-proto-go:v1.0.0:open_telemetry_opentelemetry_proto_go/vendor/go.opentelemetry.io/proto/otlp \
|
||||
prometheus:client_golang:v1.11.1:prometheus_client_golang/vendor/github.com/prometheus/client_golang \
|
||||
prometheus:client_model:v0.2.0:prometheus_client_model/vendor/github.com/prometheus/client_model \
|
||||
prometheus:common:v0.26.0:prometheus_common/vendor/github.com/prometheus/common \
|
||||
prometheus:procfs:v0.6.0:prometheus_procfs/vendor/github.com/prometheus/procfs \
|
||||
protocolbuffers:protobuf-go:v1.33.0:protocolbuffers_protobuf_go/vendor/google.golang.org/protobuf \
|
||||
sirupsen:logrus:v1.9.3:sirupsen_logrus/vendor/github.com/sirupsen/logrus \
|
||||
soheilhy:cmux:v0.1.5:soheilhy_cmux/vendor/github.com/soheilhy/cmux \
|
||||
spf13:cobra:v1.1.3:spf13_cobra/vendor/github.com/spf13/cobra \
|
||||
spf13:pflag:v1.0.5:spf13_pflag/vendor/github.com/spf13/pflag \
|
||||
tmc:grpc-websocket-proxy:e5319fda7802:tmc_grpc_websocket_proxy/vendor/github.com/tmc/grpc-websocket-proxy \
|
||||
uber-go:atomic:v1.7.0:uber_go_atomic/vendor/go.uber.org/atomic \
|
||||
uber-go:multierr:v1.6.0:uber_go_multierr/vendor/go.uber.org/multierr \
|
||||
uber-go:zap:v1.17.0:uber_go_zap/vendor/go.uber.org/zap \
|
||||
xiang90:probing:43a291ad63a2:xiang90_probing/vendor/github.com/xiang90/probing
|
||||
|
||||
GO_PKGNAME= github.com/coreos/etcd
|
||||
GO_TARGET= ./server ./etcdctl ./etcdutl
|
||||
|
||||
CONFLICTS_INSTALL= coreos-etcd[0-9][0-9]
|
||||
|
||||
PLIST_FILES= bin/etcd \
|
||||
bin/etcdctl
|
||||
PORTDOCS= README.md
|
||||
|
||||
OPTIONS_DEFINE= DOCS
|
||||
DOCS_DESC= Install etcd README file
|
||||
|
||||
pre-patch:
|
||||
#${RM} ${WRKSRC}/vendor/modules.txt
|
||||
${RM} -r ${WRKSRC}/vendor/golang.org/x/sys
|
||||
${LN} -s ${WRKDIR}/sys-* ${WRKSRC}/vendor/golang.org/x/sys
|
||||
|
||||
do-install-DOCS-on:
|
||||
${MKDIR} ${STAGEDIR}${DOCSDIR}
|
||||
${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
|
||||
|
||||
#post-extract:
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_1} ${WRKSRC}/api
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd} ${WRKSRC}/api
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_3} ${WRKSRC}/client/pkg
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_2} ${WRKSRC}/client/pkg
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_4} ${WRKSRC}/client/v2
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_5} ${WRKSRC}/client/v2
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_7} ${WRKSRC}/client/v3
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_6} ${WRKSRC}/client/v3
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_9} ${WRKSRC}/etcdctl
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_8} ${WRKSRC}/etcdctl
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_11} ${WRKSRC}/etcdutl
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_10} ${WRKSRC}/etcdutl
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_13} ${WRKSRC}/pkg
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_12} ${WRKSRC}/pkg
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_15} ${WRKSRC}/raft
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_14} ${WRKSRC}/raft
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_16} ${WRKSRC}/server
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_17} ${WRKSRC}/server
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_18} ${WRKSRC}/tests
|
||||
# @${RLN} ${WRKSRC_etcd_io_etcd_19} ${WRKSRC}/tests
|
||||
|
||||
.include <bsd.port.mk>
|
||||
@ -1,117 +0,0 @@
|
||||
TIMESTAMP = 1729522799
|
||||
SHA256 (coreos-etcd-v3.5.15_GH0.tar.gz) = bfc9c90f103acd47b0dca2840d4b69af68cb39f22893bef0f4fb5c5351314b84
|
||||
SIZE (coreos-etcd-v3.5.15_GH0.tar.gz) = 4113649
|
||||
SHA256 (beorn7-perks-v1.0.1_GH0.tar.gz) = 98db84bb0224a26094e6adba91b7ee7a1a7ace28cb648d818f8e779e6a19f825
|
||||
SIZE (beorn7-perks-v1.0.1_GH0.tar.gz) = 10867
|
||||
SHA256 (bgentry-speakeasy-v0.1.0_GH0.tar.gz) = 863f57f96f77c2b4e5488e34e8df47478e9ffa9920779ca4df2cc3adc0d03252
|
||||
SIZE (bgentry-speakeasy-v0.1.0_GH0.tar.gz) = 7481
|
||||
SHA256 (cenkalti-backoff-v4.2.1_GH0.tar.gz) = adb92e0d2ecc3de14f45bea713afb367367bdc89c1af8391b91089ce91ce18f4
|
||||
SIZE (cenkalti-backoff-v4.2.1_GH0.tar.gz) = 10394
|
||||
SHA256 (cespare-xxhash-v2.2.0_GH0.tar.gz) = b8c684b9e5e136510913727e6a845b28f8176e55db827b11f17769fba970fe13
|
||||
SIZE (cespare-xxhash-v2.2.0_GH0.tar.gz) = 12334
|
||||
SHA256 (cheggaaa-pb-v1.0.28_GH0.tar.gz) = f745c5636d3fb59bffab5f9d2a745a94a9608166c20c90936fc66848a5e816e6
|
||||
SIZE (cheggaaa-pb-v1.0.28_GH0.tar.gz) = 11788
|
||||
SHA256 (coreos-go-semver-v0.3.0_GH0.tar.gz) = 1b72134483db366fb43f216727d6bc110086d4450ce0d226960cf4ce823d6eb9
|
||||
SIZE (coreos-go-semver-v0.3.0_GH0.tar.gz) = 10663
|
||||
SHA256 (coreos-go-systemd-v22.3.2_GH0.tar.gz) = dbb1a3930d43f49e11c53f2010ab9609e18236f776a99921850cd05f54779438
|
||||
SIZE (coreos-go-systemd-v22.3.2_GH0.tar.gz) = 72134
|
||||
SHA256 (dustin-go-humanize-v1.0.0_GH0.tar.gz) = e4540bd50ac855143b4f2e509313079c50cf5d8774f09cc10dbca5ae9803d8ba
|
||||
SIZE (dustin-go-humanize-v1.0.0_GH0.tar.gz) = 17260
|
||||
SHA256 (etcd-io-bbolt-v1.3.10_GH0.tar.gz) = 4991a0f2cfb4fd4530c450e3b913cf38fc8566d115c514ecbcef5946a7391400
|
||||
SIZE (etcd-io-bbolt-v1.3.10_GH0.tar.gz) = 125701
|
||||
SHA256 (go-logr-logr-v1.3.0_GH0.tar.gz) = a0ceb13b9611e19ebe3cba015e2e6dbbf3125be9cd7f1d975d4d334da688839a
|
||||
SIZE (go-logr-logr-v1.3.0_GH0.tar.gz) = 51225
|
||||
SHA256 (go-logr-stdr-v1.2.2_GH0.tar.gz) = 37d975b280d884ca0d55a800bc6e47314b6e86268e56254f9d15d19ca9404eb8
|
||||
SIZE (go-logr-stdr-v1.2.2_GH0.tar.gz) = 9098
|
||||
SHA256 (go-yaml-yaml-v2.4.0_GH0.tar.gz) = d8e94679e5fff6bd1a35e10241543929a5f3da44f701755babf99b3daf0faac0
|
||||
SIZE (go-yaml-yaml-v2.4.0_GH0.tar.gz) = 73209
|
||||
SHA256 (gogo-protobuf-v1.3.2_GH0.tar.gz) = 2bb4b13d6e56b3911f09b8e9ddd15708477fbff8823c057cc79dd99c9a452b34
|
||||
SIZE (gogo-protobuf-v1.3.2_GH0.tar.gz) = 2038725
|
||||
SHA256 (golang-jwt-jwt-v4.4.2_GH0.tar.gz) = 5c48e918854c3fc1c9bbb9ebf747addb960250f977aa8523344f60f4c423c7c1
|
||||
SIZE (golang-jwt-jwt-v4.4.2_GH0.tar.gz) = 51392
|
||||
SHA256 (golang-crypto-v0.21.0_GH0.tar.gz) = 4c65ea22c4b0bc7380b4213a294698c517fe3378e0edd30c4d2b6cf7f12fc8bd
|
||||
SIZE (golang-crypto-v0.21.0_GH0.tar.gz) = 1810887
|
||||
SHA256 (golang-groupcache-41bb18bfe9da_GH0.tar.gz) = 1e89795970d6593affdafe1d09dcf947681ca1ea82528e8e4fb9974a77f2e394
|
||||
SIZE (golang-groupcache-41bb18bfe9da_GH0.tar.gz) = 26101
|
||||
SHA256 (golang-net-v0.23.0_GH0.tar.gz) = 5d1aeb0051277e79fa692947079dc50ddc284dc0403b22c85692b97060ab4953
|
||||
SIZE (golang-net-v0.23.0_GH0.tar.gz) = 1508997
|
||||
SHA256 (golang-protobuf-v1.5.4_GH0.tar.gz) = d75e6960ecfabaaa83a7261b1b630d24e9c63aca79615fb15bf33e11b62fd019
|
||||
SIZE (golang-protobuf-v1.5.4_GH0.tar.gz) = 172992
|
||||
SHA256 (golang-sys-v0.18.0_GH0.tar.gz) = cee1944ab655ddf7eab6301e15cb6d01fdd6cd0a0f0b5896050ee60b124e084c
|
||||
SIZE (golang-sys-v0.18.0_GH0.tar.gz) = 1448211
|
||||
SHA256 (golang-text-v0.14.0_GH0.tar.gz) = c80295e75bda599d17ccf74038139b0957b9915fae4e60d8b46f89454ef171a0
|
||||
SIZE (golang-text-v0.14.0_GH0.tar.gz) = 8974094
|
||||
SHA256 (golang-time-f8bda1e9f3ba_GH0.tar.gz) = e068a34e54894c9c189ba2c2e5b7ea9116ed661f6a7c0d0e744d8e0066017ebb
|
||||
SIZE (golang-time-f8bda1e9f3ba_GH0.tar.gz) = 9656
|
||||
SHA256 (google-btree-v1.0.1_GH0.tar.gz) = 240723cff7c3c28e8444d45e500e65b2c25df519273260f248786e1a7367a654
|
||||
SIZE (google-btree-v1.0.1_GH0.tar.gz) = 15381
|
||||
SHA256 (google-go-genproto-b8732ec3820d_GH0.tar.gz) = b3d7e0e6a90e43230013b4ac375c7d5b5eaa037ef20fbab28567f96da4f765b2
|
||||
SIZE (google-go-genproto-b8732ec3820d_GH0.tar.gz) = 5916673
|
||||
SHA256 (gorilla-websocket-v1.4.2_GH0.tar.gz) = 91937a36bc9e0da3c895c73d4cb74b2cdb1aff54ab21b0d0724000e7b5b85b84
|
||||
SIZE (gorilla-websocket-v1.4.2_GH0.tar.gz) = 54101
|
||||
SHA256 (grpc-ecosystem-go-grpc-middleware-v1.3.0_GH0.tar.gz) = c9b908202c05a7f821b03ee49cd678e7e71469519054629770e0565d78275cbc
|
||||
SIZE (grpc-ecosystem-go-grpc-middleware-v1.3.0_GH0.tar.gz) = 103780
|
||||
SHA256 (grpc-ecosystem-go-grpc-prometheus-v1.2.0_GH0.tar.gz) = eba66530952a126ab869205bdb909af607bfd9eb09f00207b62eb29140258aa9
|
||||
SIZE (grpc-ecosystem-go-grpc-prometheus-v1.2.0_GH0.tar.gz) = 24760
|
||||
SHA256 (grpc-ecosystem-grpc-gateway-v1.16.0_GH0.tar.gz) = 20ba8f2aeb4a580109357fffaa42f8400aba1155b95c8845e412287907e64379
|
||||
SIZE (grpc-ecosystem-grpc-gateway-v1.16.0_GH0.tar.gz) = 521578
|
||||
SHA256 (grpc-ecosystem-grpc-gateway-v2.16.0_GH0.tar.gz) = f49af0b9a5b260c5a783c30010ba3cca4730abba9246618cbee19070f7a843e7
|
||||
SIZE (grpc-ecosystem-grpc-gateway-v2.16.0_GH0.tar.gz) = 821213
|
||||
SHA256 (grpc-grpc-go-v1.59.0_GH0.tar.gz) = 0f951688030fdc9a82accb440222ff068440e59bdc44a82d86150cc4cddf1aed
|
||||
SIZE (grpc-grpc-go-v1.59.0_GH0.tar.gz) = 2010414
|
||||
SHA256 (inconshreveable-mousetrap-v1.0.0_GH0.tar.gz) = 5edc7731c819c305623568e317aa253d342be3447def97f1fa9e10eb5ad819f6
|
||||
SIZE (inconshreveable-mousetrap-v1.0.0_GH0.tar.gz) = 2290
|
||||
SHA256 (jonboulle-clockwork-v0.2.2_GH0.tar.gz) = 79ac7c0e53dfa48aac0622745f133b2438542f1c11d2c09ec1c98affbd62e1f0
|
||||
SIZE (jonboulle-clockwork-v0.2.2_GH0.tar.gz) = 9588
|
||||
SHA256 (json-iterator-go-v1.1.11_GH0.tar.gz) = 19d0d56ac18a052867360b10201bad614c7b31a3edf2041a331c28860920b932
|
||||
SIZE (json-iterator-go-v1.1.11_GH0.tar.gz) = 84401
|
||||
SHA256 (kubernetes-sigs-yaml-v1.2.0_GH0.tar.gz) = 80612b8cc63863556906f04df7eca89179bf81e5b3d1133c082bd7e5e35d5514
|
||||
SIZE (kubernetes-sigs-yaml-v1.2.0_GH0.tar.gz) = 92574
|
||||
SHA256 (mattn-go-colorable-v0.1.11_GH0.tar.gz) = b88eae3c846d3c9bee375bfb72b535b726755a06d8e972c937820aba45d2f5e0
|
||||
SIZE (mattn-go-colorable-v0.1.11_GH0.tar.gz) = 9800
|
||||
SHA256 (mattn-go-runewidth-v0.0.9_GH0.tar.gz) = 4f20a337ad06e071f29535afe9c5207d3e8840c8c86672bbc5f9837c6229c835
|
||||
SIZE (mattn-go-runewidth-v0.0.9_GH0.tar.gz) = 16714
|
||||
SHA256 (matttproud-golang_protobuf_extensions-v1.0.1_GH0.tar.gz) = 2def0ee6f6b12b1efc0e3007d89f598608a072610e805c3655ea9d13c3ead49b
|
||||
SIZE (matttproud-golang_protobuf_extensions-v1.0.1_GH0.tar.gz) = 37184
|
||||
SHA256 (modern-go-concurrent-bacd9c7ef1dd_GH0.tar.gz) = d673e902118a6ece63198dc7e0961e904d0410f142726df0936ec1a52035a60f
|
||||
SIZE (modern-go-concurrent-bacd9c7ef1dd_GH0.tar.gz) = 7526
|
||||
SHA256 (modern-go-reflect2-v1.0.1_GH0.tar.gz) = d24e856d9aa8fd51b9e6c2cdd712a44c8d18cb8b72802f1bd16e0470322363fd
|
||||
SIZE (modern-go-reflect2-v1.0.1_GH0.tar.gz) = 14394
|
||||
SHA256 (natefinch-lumberjack-v2.0.0_GH0.tar.gz) = 5817941b45096eb70b8114d7a4bf392ea47c4fe8030ff383ca54c67dfa0617bd
|
||||
SIZE (natefinch-lumberjack-v2.0.0_GH0.tar.gz) = 12631
|
||||
SHA256 (olekukonko-tablewriter-v0.0.5_GH0.tar.gz) = 14a1294a8267facc9bc99a230b8871517e6db284ccc7e39030313befa124677f
|
||||
SIZE (olekukonko-tablewriter-v0.0.5_GH0.tar.gz) = 19568
|
||||
SHA256 (open-telemetry-opentelemetry-go-contrib-instrumentation-google.golang.org-grpc-otelgrpc-v0.46.0_GH0.tar.gz) = 931da4874869b2790eb317270a5077a2810cf06298b38c3a6be0baec2b12fe2b
|
||||
SIZE (open-telemetry-opentelemetry-go-contrib-instrumentation-google.golang.org-grpc-otelgrpc-v0.46.0_GH0.tar.gz) = 598954
|
||||
SHA256 (open-telemetry-opentelemetry-go-v1.20.0_GH0.tar.gz) = c739ba9a4eb74db325acdec5eca5d2c18f789f63e10f1658d8c5e0061700d18a
|
||||
SIZE (open-telemetry-opentelemetry-go-v1.20.0_GH0.tar.gz) = 1273769
|
||||
SHA256 (open-telemetry-opentelemetry-proto-go-v1.0.0_GH0.tar.gz) = 543b133a09579ad227b2db21460f71baeeb46e4209c2ac5e5621f4ffe7fb192b
|
||||
SIZE (open-telemetry-opentelemetry-proto-go-v1.0.0_GH0.tar.gz) = 177183
|
||||
SHA256 (prometheus-client_golang-v1.11.1_GH0.tar.gz) = edf216320f3e12f5d60e3df52948e73a95b6b3759b45f1970d750016583d052a
|
||||
SIZE (prometheus-client_golang-v1.11.1_GH0.tar.gz) = 170256
|
||||
SHA256 (prometheus-client_model-v0.2.0_GH0.tar.gz) = 4ab1be9cdfa702d7f49beeb09a256bcc6a2aad55e8a0a37e7732a46934264e12
|
||||
SIZE (prometheus-client_model-v0.2.0_GH0.tar.gz) = 10986
|
||||
SHA256 (prometheus-common-v0.26.0_GH0.tar.gz) = 35cfd6f896655c848042802652394cc9da57ef01437f0d78bffb85a467f62a1b
|
||||
SIZE (prometheus-common-v0.26.0_GH0.tar.gz) = 116907
|
||||
SHA256 (prometheus-procfs-v0.6.0_GH0.tar.gz) = 6ad7a23cf4db9fa5dbf2c5d8fbd0fbf5ffe48e3ddb7bf15f9359813d764ce73c
|
||||
SIZE (prometheus-procfs-v0.6.0_GH0.tar.gz) = 169898
|
||||
SHA256 (protocolbuffers-protobuf-go-v1.33.0_GH0.tar.gz) = 21661d7634e3f783b015b93ceafc0261f2f02a270799bac871602c3a2172cfbe
|
||||
SIZE (protocolbuffers-protobuf-go-v1.33.0_GH0.tar.gz) = 1482410
|
||||
SHA256 (sirupsen-logrus-v1.9.3_GH0.tar.gz) = cfa48a647a28c1f12fb6a9b672bc4d88b6407ff05aedcf23ce939d342646acce
|
||||
SIZE (sirupsen-logrus-v1.9.3_GH0.tar.gz) = 50320
|
||||
SHA256 (soheilhy-cmux-v0.1.5_GH0.tar.gz) = 199232ece74332f408a38e4d38e7ca942b3e66ae58074ca95d3f069693e0dca1
|
||||
SIZE (soheilhy-cmux-v0.1.5_GH0.tar.gz) = 22250
|
||||
SHA256 (spf13-cobra-v1.1.3_GH0.tar.gz) = e5f93c61e1236e61c7fc45882d2a03b81f46ebebdf70628ebb64b0b5fe34f6fa
|
||||
SIZE (spf13-cobra-v1.1.3_GH0.tar.gz) = 146580
|
||||
SHA256 (spf13-pflag-v1.0.5_GH0.tar.gz) = 9a2cae1f8e8ab0d2cc8ebe468e871af28d9ac0962cf0520999e3ba85f0c7b808
|
||||
SIZE (spf13-pflag-v1.0.5_GH0.tar.gz) = 50796
|
||||
SHA256 (tmc-grpc-websocket-proxy-e5319fda7802_GH0.tar.gz) = ab27ebe35674bcc777d63bb1d64874310832d857a3eb573192b082f73afde494
|
||||
SIZE (tmc-grpc-websocket-proxy-e5319fda7802_GH0.tar.gz) = 10031
|
||||
SHA256 (uber-go-atomic-v1.7.0_GH0.tar.gz) = 4d655e90a23d023b36607e2ce94c3b7bf650d41c81c0faff32432581d9099ad1
|
||||
SIZE (uber-go-atomic-v1.7.0_GH0.tar.gz) = 18566
|
||||
SHA256 (uber-go-multierr-v1.6.0_GH0.tar.gz) = f8a139a06fd70bbda0f089274bd723a00c33c5b269a696de4d6a8ab455a22717
|
||||
SIZE (uber-go-multierr-v1.6.0_GH0.tar.gz) = 12369
|
||||
SHA256 (uber-go-zap-v1.17.0_GH0.tar.gz) = 9608554d14e846718c5ebe44ab172ce6b748356679c17e144226af94ff232d9a
|
||||
SIZE (uber-go-zap-v1.17.0_GH0.tar.gz) = 142719
|
||||
SHA256 (xiang90-probing-43a291ad63a2_GH0.tar.gz) = 576dd87a3b8729fd6f2422664897e285d43254138831aaedfac797813964d255
|
||||
SIZE (xiang90-probing-43a291ad63a2_GH0.tar.gz) = 3468
|
||||
@ -1,11 +0,0 @@
|
||||
A highly-available key value store for shared
|
||||
configuration and service discovery. etcd is
|
||||
inspired by zookeeper and doozer, with a focus on:
|
||||
|
||||
* Simple: curl'able user facing API (HTTP+JSON)
|
||||
* Secure: optional SSL client cert authentication
|
||||
* Fast: benchmarked 1000s of writes/s per instance
|
||||
* Reliable: Properly distributed using Raft
|
||||
|
||||
Etcd is written in Go and uses the raft consensus
|
||||
algorithm to manage a highly-available replicated log.
|
||||
29
devel/gmake3/Makefile
Normal file
29
devel/gmake3/Makefile
Normal file
@ -0,0 +1,29 @@
|
||||
PORTNAME= make
|
||||
DISTVERSION= 3.81
|
||||
CATEGORIES= devel
|
||||
MASTER_SITES= GNU
|
||||
PKGNAMEPREFIX= g
|
||||
PKGNAMESUFFIX= 3
|
||||
|
||||
# note: before committing to this port, contact portmgr to arrange for an
|
||||
# experimental ports run. Untested commits may be backed out at portmgr's
|
||||
# discretion.
|
||||
MAINTAINER= allanjude@FreeBSD.org
|
||||
COMMENT= Last GPLv2 version of GNU 'make' utility
|
||||
WWW= https://www.gnu.org/software/make/
|
||||
|
||||
LICENSE= GPLv2
|
||||
LICENSE_FILE= ${WRKSRC}/COPYING
|
||||
|
||||
USES= cpe tar:bz2
|
||||
CPE_VENDOR= gnu
|
||||
|
||||
GNU_CONFIGURE= yes
|
||||
GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
|
||||
CONFIGURE_ARGS= --program-prefix=g \
|
||||
--program-suffix=3 \
|
||||
--disable-nls \
|
||||
--disable-info \
|
||||
--without-guile
|
||||
|
||||
.include <bsd.port.mk>
|
||||
3
devel/gmake3/distinfo
Normal file
3
devel/gmake3/distinfo
Normal file
@ -0,0 +1,3 @@
|
||||
TIMESTAMP = 1747413857
|
||||
SHA256 (make-3.81.tar.bz2) = f3e69023771e23908f5d5592954d8271d3d6af09693cecfd29cee6fde8550dc8
|
||||
SIZE (make-3.81.tar.bz2) = 1151445
|
||||
4
devel/gmake3/pkg-descr
Normal file
4
devel/gmake3/pkg-descr
Normal file
@ -0,0 +1,4 @@
|
||||
This is the last GPLv2 licensed version of GNU make.
|
||||
GNU make is a tool that controls the generation of executables and other
|
||||
non-source files from source files. Its purpose is the same as that
|
||||
of the utility make(1).
|
||||
2
devel/gmake3/pkg-plist
Normal file
2
devel/gmake3/pkg-plist
Normal file
@ -0,0 +1,2 @@
|
||||
bin/gmake3
|
||||
share/man/man1/gmake3.1.gz
|
||||
38
devel/kati/Makefile
Normal file
38
devel/kati/Makefile
Normal file
@ -0,0 +1,38 @@
|
||||
PORTNAME= kati
|
||||
MASTER_SITES= http://yhm1.klara.systems/kati/
|
||||
PORTVERSION= 0.1
|
||||
CATEGORIES= devel
|
||||
|
||||
MAINTAINER= allanjude@FreeBSD.org
|
||||
COMMENT= Apache licensed replacement for GNU make
|
||||
WWW= https://github.com/google/kati
|
||||
|
||||
LICENSE= APACHE20
|
||||
LICENSE_FILE= ${WRKSRC}/LICENSE
|
||||
|
||||
#Kati is pretending to be gmake, so we can't USES gmake here
|
||||
##USES= gmake
|
||||
|
||||
BUILD_DEPENDS+= gmake>=4.4.1:devel/gmake
|
||||
CONFIGURE_ENV+= MAKE=gmake
|
||||
MAKE_CMD= gmake
|
||||
|
||||
CONFLICTS_INSTALL= gmake
|
||||
|
||||
# PROJECT TOKEN:
|
||||
# Name: kati-port-ci
|
||||
# Token: glpat-m9-NUmzPFAWfDFhur99s
|
||||
# Scopes: read_repository
|
||||
#USE_GITLAB= yes
|
||||
#GL_SITE= https://gitlab.klara.systems
|
||||
#GL_SITE= https://xavier.beaudouin\@klarasystems.com:xMwy3nX7PTwUudg@gitlab.klara.systems
|
||||
#GL_ACCOUNT= prettybsd
|
||||
#GL_PROJECT= kati
|
||||
#GL_TAGNAME= 1dc6868c0a4a6d17bf5527e06a5cb23cac5a6043
|
||||
|
||||
NO_CHECKSUM= yes
|
||||
|
||||
do-install:
|
||||
${INSTALL_PROGRAM} ${WRKSRC}/ckati ${STAGEDIR}${PREFIX}/bin/gmake
|
||||
|
||||
.include <bsd.port.mk>
|
||||
1
devel/kati/pkg-descr
Normal file
1
devel/kati/pkg-descr
Normal file
@ -0,0 +1 @@
|
||||
Kati is an apache licensed replacement for GNU make
|
||||
1
devel/kati/pkg-plist
Normal file
1
devel/kati/pkg-plist
Normal file
@ -0,0 +1 @@
|
||||
bin/gmake
|
||||
6
mail/exim-ldap2/Makefile
Normal file
6
mail/exim-ldap2/Makefile
Normal file
@ -0,0 +1,6 @@
|
||||
PKGNAMESUFFIX= -ldap2
|
||||
MASTERDIR= ${.CURDIR}/../exim
|
||||
|
||||
OPTIONS_SLAVE= OPENLDAP
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
15
mail/exim-monitor/Makefile
Normal file
15
mail/exim-monitor/Makefile
Normal file
@ -0,0 +1,15 @@
|
||||
PKGNAMESUFFIX= -monitor
|
||||
|
||||
COMMENT= The Exim monitor for the Exim MTA
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../exim
|
||||
|
||||
EXIMON_ONLY= yes
|
||||
OPTIONS_SLAVE= EXIMON
|
||||
|
||||
# This dependency is disabled, because it prevents package users from
|
||||
# using the exim-monitor package with any of the exim slave packages.
|
||||
#
|
||||
#RUN_DEPENDS= ${LOCALBASE}/sbin/exim:mail/exim
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
12
mail/exim-monitor/files/patch-OS__Makefile-Base
Normal file
12
mail/exim-monitor/files/patch-OS__Makefile-Base
Normal file
@ -0,0 +1,12 @@
|
||||
--- OS/Makefile-Base.orig Wed Aug 15 13:09:05 2001
|
||||
+++ OS/Makefile-Base Mon Aug 27 14:59:04 2001
|
||||
@@ -19,7 +19,8 @@
|
||||
# up-to-date. Then the os-specific source files and the C configuration file
|
||||
# are set up, and finally it goes to the main Exim target.
|
||||
|
||||
-all: $(EDITME) checklocalmake Makefile os.h os.c config.h allexim
|
||||
+all: $(EDITME) checklocalmake Makefile os.h os.c config.h buildpcre \
|
||||
+ eximon.bin
|
||||
|
||||
checklocalmake:
|
||||
@if $(SHELL) $(SCRIPTS)/newer $(EDITME)-$(OSTYPE) $(EDITME) || \
|
||||
10
mail/exim-monitor/files/patch-OS__Makefile-FreeBSD
Normal file
10
mail/exim-monitor/files/patch-OS__Makefile-FreeBSD
Normal file
@ -0,0 +1,10 @@
|
||||
--- OS/Makefile-FreeBSD.orig Mon Jun 11 12:04:05 2001
|
||||
+++ OS/Makefile-FreeBSD Mon Jun 11 12:04:33 2001
|
||||
@@ -5,6 +5,7 @@
|
||||
PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat || echo aout
|
||||
|
||||
CHOWN_COMMAND=/usr/sbin/chown
|
||||
+STRIP_COMMAND=/usr/bin/strip
|
||||
|
||||
HAVE_SA_LEN=YES
|
||||
|
||||
55
mail/exim-monitor/files/patch-src__EDITME
Normal file
55
mail/exim-monitor/files/patch-src__EDITME
Normal file
@ -0,0 +1,55 @@
|
||||
--- src/EDITME.orig Mon Aug 27 14:35:47 2001
|
||||
+++ src/EDITME Mon Aug 27 14:37:31 2001
|
||||
@@ -98,7 +98,7 @@
|
||||
# /usr/local/sbin. The installation script will try to create this directory,
|
||||
# and any superior directories, if they do not exist.
|
||||
|
||||
-BIN_DIRECTORY=/usr/exim/bin
|
||||
+BIN_DIRECTORY=XX_PREFIX_XX/sbin
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@@ -113,7 +113,7 @@
|
||||
# directories if they don't exist. It will also install a default run time
|
||||
# configuration if this file does not exist.
|
||||
|
||||
-CONFIGURE_FILE=/usr/exim/configure
|
||||
+CONFIGURE_FILE=XX_PREFIX_XX/etc/exim/configure
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@@ -126,14 +126,14 @@
|
||||
# owner of a local mailbox.) Specifying these values as root is very strongly
|
||||
# discouraged. These values are compiled into the binary.
|
||||
|
||||
-EXIM_USER=
|
||||
+EXIM_USER=mailnull
|
||||
|
||||
# If the setting of EXIM_USER is numeric (e.g. EXIM_USER=42), there must
|
||||
# also be a setting of EXIM_GROUP. If, on the other hand, you use a name
|
||||
# for EXIM_USER (e.g. EXIM_USER=exim), you don't need to set EXIM_GROUP unless
|
||||
# you want to use a group other than the default group for the given user.
|
||||
|
||||
-# EXIM_GROUP=
|
||||
+EXIM_GROUP=mail
|
||||
|
||||
# Many sites define a user called "exim", with an appropriate default group,
|
||||
# and use
|
||||
@@ -371,7 +373,7 @@
|
||||
# %s. This will be replaced by one of the strings "main", "panic", or "reject"
|
||||
# to form the final file names. Some installations may want something like this:
|
||||
|
||||
-# LOG_FILE_PATH=/var/log/exim_%slog
|
||||
+LOG_FILE_PATH=/var/log/exim/%slog
|
||||
|
||||
# which results in files with names /var/log/exim_mainlog, etc. The directory
|
||||
# in which the log files are placed must exist; Exim does not try to create
|
||||
@@ -695,7 +705,7 @@
|
||||
# (process id) to a file so that it can easily be identified. The path of the
|
||||
# file can be specified here. Some installations may want something like this:
|
||||
|
||||
-# PID_FILE_PATH=/var/lock/exim.pid
|
||||
+PID_FILE_PATH=/var/run/exim.pid
|
||||
|
||||
# If PID_FILE_PATH is not defined, Exim writes a file in its spool directory
|
||||
# using the name "exim-daemon.pid".
|
||||
7
mail/exim-monitor/pkg-descr
Normal file
7
mail/exim-monitor/pkg-descr
Normal file
@ -0,0 +1,7 @@
|
||||
The Exim monitor (eximon) is a graphical user interface for the Exim
|
||||
mail transfer agent for Unix systems. Eximon is distributed as part
|
||||
of the standard Exim distribution, but its dependency on XFree86
|
||||
annoys many administrators.
|
||||
|
||||
For this reason, it is available as its own package to allow
|
||||
administrators to easily install Exim without installing XFree86.
|
||||
14
mail/exim-monitor/pkg-message
Normal file
14
mail/exim-monitor/pkg-message
Normal file
@ -0,0 +1,14 @@
|
||||
[
|
||||
{ type: install
|
||||
message: <<EOM
|
||||
Although the Exim monitor has been correctly installed, please note
|
||||
that it is useless without the Exim MTA. Install one of the Exim
|
||||
packages available, which include documentation for the Exim monitor:
|
||||
|
||||
exim
|
||||
exim-ldap2
|
||||
exim-mysql
|
||||
exim-postgresql
|
||||
EOM
|
||||
}
|
||||
]
|
||||
6
mail/exim-mysql/Makefile
Normal file
6
mail/exim-mysql/Makefile
Normal file
@ -0,0 +1,6 @@
|
||||
PKGNAMESUFFIX= -mysql
|
||||
MASTERDIR= ${.CURDIR}/../exim
|
||||
|
||||
OPTIONS_SLAVE= MYSQL
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
7
mail/exim-postgresql/Makefile
Normal file
7
mail/exim-postgresql/Makefile
Normal file
@ -0,0 +1,7 @@
|
||||
PORTREVISION= 1
|
||||
PKGNAMESUFFIX= -postgresql
|
||||
MASTERDIR= ${.CURDIR}/../exim
|
||||
|
||||
OPTIONS_SLAVE= PGSQL
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
7
mail/exim-sqlite/Makefile
Normal file
7
mail/exim-sqlite/Makefile
Normal file
@ -0,0 +1,7 @@
|
||||
PORTREVISION= 1
|
||||
PKGNAMESUFFIX= -sqlite
|
||||
MASTERDIR= ${.CURDIR}/../exim
|
||||
|
||||
OPTIONS_SLAVE= SQLITE
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
648
mail/exim/Makefile
Normal file
648
mail/exim/Makefile
Normal file
@ -0,0 +1,648 @@
|
||||
PORTNAME= exim
|
||||
PORTVERSION?= ${EXIM_VERSION}
|
||||
PORTREVISION?= 0
|
||||
CATEGORIES= mail
|
||||
MASTER_SITES= EXIM:exim
|
||||
MASTER_SITE_SUBDIR= /exim4/:exim \
|
||||
/exim4/fixes/:exim \
|
||||
/exim4/old/:exim
|
||||
DISTNAME= ${PORTNAME}-${EXIM_VERSION}
|
||||
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:exim
|
||||
DIST_SUBDIR= exim
|
||||
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
|
||||
|
||||
MAINTAINER= fluffy@FreeBSD.org
|
||||
COMMENT?= High performance MTA for Unix systems on the Internet
|
||||
WWW= https://www.exim.org/
|
||||
|
||||
LICENSE= GPLv2
|
||||
|
||||
BUILD_DEPENDS= p5-File-FcntlLock>0:devel/p5-File-FcntlLock
|
||||
RUN_DEPENDS= p5-File-FcntlLock>0:devel/p5-File-FcntlLock
|
||||
|
||||
USES= compiler cpe tar:bzip2 perl5
|
||||
USE_CSTD= c99
|
||||
|
||||
# Exim build system is job unsafe atm
|
||||
MAKE_JOBS_UNSAFE= yes
|
||||
# One can tune the following "hidden" knobs:
|
||||
# - EXIM_USER: user exim is running as;
|
||||
# - EXIM_GROUP: ditto for the group;
|
||||
# - LOGDIR: where Exim logs will be put;
|
||||
# - LOG_FILE_PATH: path where '%s' will be substituted with
|
||||
# the target name (main, reject, etc);
|
||||
# - CONFIG_FILE_PATH: path to the default configuration file;
|
||||
# - ALT_CONFIG_PREFIX: path to the default prefix for all
|
||||
# configuration files, excluding the main one;
|
||||
# will be effective only when WITH_ALT_CONFIG_PREFIX
|
||||
# will be set via OPTIONS.
|
||||
|
||||
.if make(makesum) && !defined(FETCH_ALL)
|
||||
.error "You forgot to define FETCH_ALL to create the sane distinfo"
|
||||
.endif
|
||||
|
||||
.include "options"
|
||||
|
||||
OPTIONS_SUB= yes
|
||||
|
||||
AUTH_SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2
|
||||
BDB_USES= bdb
|
||||
DMARC_LIB_DEPENDS= libopendmarc.so:mail/opendmarc
|
||||
EXIMON_USES= xorg
|
||||
EXIMON_USE= xorg=x11,xaw,xext,xmu,xt
|
||||
GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls
|
||||
ICONV_USES= iconv:lib,build
|
||||
INTERNATIONAL_LIB_DEPENDS= libidn.so:dns/libidn libidn2.so:dns/libidn2
|
||||
LMDB_LIB_DEPENDS= liblmdb.so:databases/lmdb
|
||||
MYSQL_USES= mysql
|
||||
OPENLDAP_USES= ldap
|
||||
PGSQL_LIB_DEPENDS= libicudata.so:devel/icu
|
||||
PGSQL_USES= pgsql pkgconfig
|
||||
REDIS_LIB_DEPENDS= libhiredis.so:databases/hiredis
|
||||
SASLAUTHD_RUN_DEPENDS= ${LOCALBASE}/sbin/saslauthd:security/cyrus-sasl2-saslauthd
|
||||
SA_EXIM_RUN_DEPENDS= ${LOCALBASE}/bin/spamc:mail/spamassassin
|
||||
SPF_LIB_DEPENDS= libspf2.so:mail/libspf2
|
||||
SQLITE_LIB_DEPENDS= libicudata.so:devel/icu
|
||||
SQLITE_USES= pkgconfig sqlite
|
||||
|
||||
#DEBIAN_PATCHES_PREFIX= ${FILESDIR}/debian/75
|
||||
#EXTRA_PATCHES= \
|
||||
# ${DEBIAN_PATCHES_PREFIX}_01-Fix-exit-on-attempt-to-rewrite-a-malformed-address.-.patch:-p1 \
|
||||
# ${DEBIAN_PATCHES_PREFIX}_05-SPF-fix-memory-accounting-for-error-case.patch:-p1
|
||||
|
||||
.include <bsd.port.options.mk>
|
||||
|
||||
# OCSP is supported for openssl only
|
||||
.if ${PORT_OPTIONS:MOCSP}
|
||||
.if ! ${PORT_OPTIONS:MTLS}
|
||||
IGNORE= you cannot enable OCSP stapling without TLS support
|
||||
.elif ${PORT_OPTIONS:MGNUTLS}
|
||||
IGNORE= you cannot enable OCSP stapling with gnutls
|
||||
.endif
|
||||
.endif
|
||||
|
||||
# DMARC implies SPF and DKIM
|
||||
.if ${PORT_OPTIONS:MDMARC}
|
||||
.if ! ${PORT_OPTIONS:MSPF} || ! ${PORT_OPTIONS:MDKIM}
|
||||
IGNORE= you cannot enable DMARC without SPF and DKIM support
|
||||
.endif
|
||||
.endif
|
||||
|
||||
# ARC implies SPF and DKIM
|
||||
.if ${PORT_OPTIONS:MARC}
|
||||
.if ! ${PORT_OPTIONS:MSPF} || ! ${PORT_OPTIONS:MDKIM}
|
||||
IGNORE= you cannot enable ARC without SPF and DKIM support
|
||||
.endif
|
||||
.endif
|
||||
# DANE implies DNSSEC
|
||||
.if ${PORT_OPTIONS:MDANE}
|
||||
.if ! ${PORT_OPTIONS:MDNSSEC} || ! ${PORT_OPTIONS:MTLS}
|
||||
IGNORE= you cannot enable DANE without DNSSEC support or without TLS support
|
||||
.endif
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MSA_EXIM} || defined(FETCH_ALL)
|
||||
BROKEN= Unmaintained extension
|
||||
MASTER_SITES+= http://marc.merlins.org/linux/exim/files/:sa_exim \
|
||||
SF/sa-exim/sa-exim/${SA_EXIM_VERSION}:sa_exim
|
||||
DISTFILES+= sa-exim-${SA_EXIM_VERSION}.tar.gz:sa_exim
|
||||
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-Local-sa-exim.c
|
||||
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-Local-sa-exim.conf
|
||||
.endif
|
||||
|
||||
EXIM_VERSION= 4.99.1
|
||||
SA_EXIM_VERSION=4.2.1
|
||||
EXIM_INSTALL_ARG+= "-no_chown" "-no_symlink"
|
||||
EXTRA_PATCHES+= `${FIND} ${PATCHDIR} -name '74_*.patch'|${SORT} -h`
|
||||
|
||||
.if !defined(EXIMON_ONLY)
|
||||
PLIST_SUB+= EXIM=""
|
||||
.if defined(PKGNAMESUFFIX)
|
||||
CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}-4.*
|
||||
.endif
|
||||
.for suffix in -ldap2 -mysql -postgresql -sa-exim -sqlite
|
||||
.if !defined(PKGNAMESUFFIX) || ${PKGNAMESUFFIX} != ${suffix}
|
||||
CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}${suffix}-4.*
|
||||
.endif
|
||||
.endfor
|
||||
.if ${PORT_OPTIONS:MEXIMON}
|
||||
CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}-monitor-4.*
|
||||
.endif
|
||||
PKGMESSAGE= ${WRKDIR}/POST-INSTALL-NOTES
|
||||
.else # !EXIMON_ONLY
|
||||
PLIST_SUB+= EXIM="@comment "
|
||||
PORT_OPTIONS+= EXIMON
|
||||
PKGMESSAGE= ${WRKDIR}/pkg-message
|
||||
EXIM_INSTALL_ARG+= "eximon" "eximon.bin"
|
||||
.endif # !EXIMON_ONLY
|
||||
|
||||
PORTDOC_BASE= ACKNOWLEDGMENTS NOTICE README.UPDATING
|
||||
PORTDOC_FILES= ChangeLog NewStuff DANE-draft-notes \
|
||||
OptionLists.txt README README.SIEVE dbm.discuss.txt \
|
||||
experimental-spec.txt filter.txt spec.txt
|
||||
|
||||
PORT_EXAMPLES= transport-filter.pl
|
||||
|
||||
DAILY_SCRIPTS= 150.exim-tidydb 460.exim-mail-rejects
|
||||
|
||||
MAKE_ENV+= OSTYPE="${OPSYS}" ARCHTYPE="${ARCH}" DUMMY_LDFLAGS="${DUMMY_LDFLAGS}" STRIP_COMMAND="${STRIP_CMD}"
|
||||
|
||||
EXIM_USER?= mailnull
|
||||
EXIM_GROUP?= mail
|
||||
|
||||
# Default user/group are system ones, so we don't want to check them
|
||||
.if ${EXIM_USER} != "mailnull"
|
||||
USERS= ${EXIM_USER}
|
||||
.endif
|
||||
.if ${EXIM_GROUP} != "mail"
|
||||
GROUPS= ${EXIM_GROUP}
|
||||
.endif
|
||||
|
||||
LOGDIR?= /var/log/exim
|
||||
LOG_FILE_PATH?= ${LOGDIR}/%slog
|
||||
CONFIG_FILE_PATH?= ${PREFIX}/etc/exim/configure
|
||||
ALT_CONFIG_PREFIX?= ${PREFIX}/etc/exim/
|
||||
|
||||
EXIM_DYNAMIC_LDFLAGS= -fPIC -rdynamic -Wl,--export-dynamic
|
||||
|
||||
SED_SCRIPT= -e 's,%%PREFIX%%,${PREFIX},g' \
|
||||
-e 's,%%DOCSDIR%%,${DOCSDIR},g' \
|
||||
-e 's,%%EXAMPLESDIR%%,${EXAMPLESDIR},g' \
|
||||
-e 's,%%EXIM_USER%%,${EXIM_USER},g' \
|
||||
-e 's,%%EXIM_GROUP%%,${EXIM_GROUP},g' \
|
||||
-e 's,%%LOGDIR%%,${LOGDIR},g'
|
||||
|
||||
SEDLIST+= -e 's,XX_CFLAGS_XX,${CFLAGS:S/,/\\,/g},' \
|
||||
-e 's,XX_PREFIX_XX,${PREFIX:S/,/\\,/g},' \
|
||||
-e 's,XX_LOCALBASE_XX,${LOCALBASE:S/,/\\,/g},' \
|
||||
-e 's,XX_LOG_FILE_PATH_XX,${LOG_FILE_PATH:S/,/\\,/g},' \
|
||||
-e 's,XX_CONFIG_FILE_PATH_XX,${CONFIG_FILE_PATH:S/,/\\,/g},' \
|
||||
-e 's,XX_ALT_CONFIG_PREFIX_XX,${ALT_CONFIG_PREFIX:S/,/\\,/g},' \
|
||||
-e 's,XX_EXIM_USER_XX,${EXIM_USER:S/,/\\,/g},' \
|
||||
-e 's,XX_EXIM_GROUP_XX,${EXIM_GROUP:S/,/\\,/g},' \
|
||||
-e 's,XX_DEFAULT_CHARSET_XX,${WITH_DEFAULT_CHARSET:S/,/\\,/g},' \
|
||||
-e 's,XX_DYNAMIC_LDFLAGS_XX,${EXIM_DYNAMIC_LDFLAGS:S/,/\\,/g},'
|
||||
|
||||
PLIST_SUB+= EXIM_VERSION="${EXIM_VERSION}-${PORTREVISION}" \
|
||||
EXIM_USER=${EXIM_USER} \
|
||||
EXIM_GROUP=${EXIM_GROUP} \
|
||||
LOGDIR="${LOGDIR:S/^\///}"
|
||||
|
||||
# Exim refuses to run local deliveries as root by default. You can
|
||||
# add other users to this colon-separated list that cannot be
|
||||
# overridden at runtime below, but are advised not to remove "root".
|
||||
#WITH_FIXED_NEVER_USERS= root:daemon:bin
|
||||
|
||||
# When Exim is decoding MIME "words" in header lines it converts any foreign
|
||||
# character sets to the one that is set in the headers_charset option.
|
||||
# The default setting is defined by this setting:
|
||||
WITH_DEFAULT_CHARSET?= ISO-8859-1
|
||||
|
||||
# You should not need to fiddle with anything below this point.
|
||||
|
||||
LIB_DEPENDS+= libpcre2-posix.so:devel/pcre2
|
||||
|
||||
.if ! ${PORT_OPTIONS:MDKIM}
|
||||
SEDLIST+= -e 's,^\# (DISABLE_DKIM=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MLISTMATCH_RHS}
|
||||
SEDLIST+= -e 's,^\# (EXPAND_LISTMATCH_RHS=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MDCC}
|
||||
SEDLIST+= -e 's,^\# (EXPERIMENTAL_DCC=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MPROXY}
|
||||
SEDLIST+= -e 's,^\# (SUPPORT_PROXY=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MCERTNAMES}
|
||||
SEDLIST+= -e 's,^\# (EXPERIMENTAL_CERTNAMES=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MDSN}
|
||||
SEDLIST+= -e 's,^\# (EXPERIMENTAL_DSN=),\1,'
|
||||
.endif
|
||||
|
||||
.if !${PORT_OPTIONS:MDANE}
|
||||
SEDLIST+= -e 's,^(SUPPORT_DANE=),\#\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MARC}
|
||||
SEDLIST+= -e 's,^\# (EXPERIMENTAL_ARC=),\1,'
|
||||
.endif
|
||||
|
||||
.if !${PORT_OPTIONS:MEVENT}
|
||||
SEDLIST+= -e 's,^\# (DISABLE_EVENT=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MINTERNATIONAL}
|
||||
SEDLIST+= -e 's,^\# (SUPPORT_I18N=),\1,' \
|
||||
-e 's,^\# (SUPPORT_I18N_2008=),\1,' \
|
||||
-e 's,XX_IDN_LIBS_XX,-L${LOCALBASE}/lib -lidn -lidn2,'
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_IDN_LIBS_XX,,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MSOCKS}
|
||||
SEDLIST+= -e 's,^\# (SUPPORT_SOCKS=),\1,'
|
||||
.endif
|
||||
|
||||
.if !${PORT_OPTIONS:MPRDR}
|
||||
SEDLIST+= -e 's,^\# (DISABLE_PRDR=),\1,'
|
||||
.endif
|
||||
|
||||
.if !${PORT_OPTIONS:MOCSP}
|
||||
SEDLIST+= -e 's,^\# (DISABLE_OCSP=),\1,'
|
||||
.endif
|
||||
|
||||
.if !${PORT_OPTIONS:MDNSSEC}
|
||||
SEDLIST+= -e 's,^\# (DISABLE_DNSSEC=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MDMARC}
|
||||
SEDLIST+= -e 's,XX_DMARC_LIBS_XX,-L${LOCALBASE}/lib -lopendmarc,' \
|
||||
-e 's,^\# (SUPPORT_DMARC=),\1,'
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_DMARC_LIBS_XX,,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MWISHLIST}
|
||||
EXTRA_PATCHES+= `${FIND} ${PATCHDIR} -name 'wishlist-*.patch'`
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MFIXED_NEVER_USERS}
|
||||
SEDLIST+= -e 's,^(FIXED_NEVER_USERS=).*,\1${WITH_FIXED_NEVER_USERS:S/,/\\,/g},'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MEXIMON}
|
||||
SEDLIST+= -e 's,^\# (EXIM_MONITOR=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MTLS}
|
||||
.if ! ${PORT_OPTIONS:MGNUTLS}
|
||||
USES+= ssl
|
||||
SEDLIST+= -e 's,^\# (USE_OPENSSL=),\1,'
|
||||
SEDLIST+= -e 's,^\# (TLS_LIBS=.*-lssl[[:space:]]),\1,'
|
||||
BROKEN_SSL= openssl31
|
||||
BROKEN_SSL_REASON= error: token is not a valid binary operator in a preprocessor subexpression
|
||||
.else
|
||||
SEDLIST+= -e 's,^\# (USE_GNUTLS=),\1,'
|
||||
SEDLIST+= -e 's,^\# (TLS_LIBS=.*-lgnutls[[:space:]]),\1,'
|
||||
.endif
|
||||
.else # TLS support
|
||||
SEDLIST+= -e 's,^\# (DISABLE_TLS=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MEMBEDDED_PERL}
|
||||
SEDLIST+= -e 's,^\# (EXIM_PERL=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MICONV}
|
||||
SEDLIST+= -e 's,XX_ICONV_LIBS_XX,-L${LOCALBASE:S/,/\\,/g}/lib ${ICONV_LIB},' \
|
||||
-e 's,^\# (HAVE_ICONV=),\1,'
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_ICONV_LIBS_XX,,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MOPENLDAP}
|
||||
LDAP_LIB_TYPE= OPENLDAP2
|
||||
SEDLIST+= -e 's,XX_LDAP_LIBS_XX,-L${LOCALBASE:S/,/\\,/g}/lib -llber -lldap,' \
|
||||
-e 's,XX_LDAP_INCLUDE_XX,-I${LOCALBASE:S/,/\\,/g}/include,' \
|
||||
-e 's,XX_LDAP_TYPE_XX,${LDAP_LIB_TYPE:S/,/\\,/g},' \
|
||||
-e 's,^\# (LOOKUP_LDAP=),\1,'
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_LDAP_[^ ]*_XX,,' \
|
||||
-e 's,^(LDAP_LIB_TYPE=),\# \1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MBDB}
|
||||
INVALID_BDB_VER= 2 3 6 18
|
||||
DB_LIBS= -L${BDB_LIB_DIR} -l${BDB_LIB_NAME}
|
||||
DB_INCLUDES= -I${BDB_INCLUDE_DIR}
|
||||
.else
|
||||
DB_LIBS=
|
||||
DB_INCLUDES=
|
||||
SEDLIST+= -e 's,^(DBMLIB=),\# \1,'
|
||||
.endif
|
||||
SEDLIST+= -e 's,XX_DB_LIBS_XX,${DB_LIBS:S/,/\\,/g},' \
|
||||
-e 's,XX_DB_INCLUDES_XX,${DB_INCLUDES:S/,/\\,/g},'
|
||||
|
||||
.if ${PORT_OPTIONS:MLMDB}
|
||||
_LMDB_LIBS= -L${LOCALBASE}/lib -llmdb
|
||||
_LMDB_INCLUDES= -I${LOCALBASE}/include
|
||||
SEDLIST+= -e 's,^\# (EXPERIMENTAL_LMDB=),\1,'
|
||||
.else
|
||||
_LMDB_LIBS=
|
||||
_LMDB_INCLUDES=
|
||||
.endif
|
||||
SEDLIST+= -e 's,XX_LMDB_LIBS_XX,${_LMDB_LIBS:S/,/\\,/g},' \
|
||||
-e 's,XX_LMDB_INCLUDES_XX,${_LMDB_INCLUDES:S/,/\\,/g},'
|
||||
|
||||
.if ${PORT_OPTIONS:MMYSQL}
|
||||
SEDLIST+= -e 's,XX_MYSQL_LIBS_XX,-L${LOCALBASE:S/,/\\,/g}/lib/mysql -l${_MYSQL_SHLIB:S/lib//},' \
|
||||
-e 's,XX_MYSQL_INCLUDE_XX,-I${LOCALBASE:S/,/\\,/g}/include/mysql,' \
|
||||
-e 's,^\# (LOOKUP_MYSQL=),\1,'
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_MYSQL_[^ ]*_XX,,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MSASLAUTHD}
|
||||
SASLAUTHD_SOCKET?= /var/run/saslauthd/mux
|
||||
SEDLIST+= -e 's,^\# (CYRUS_SASLAUTHD_SOCKET=).*,\1${SASLAUTHD_SOCKET:S/,/\\,/g},'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MPAM}
|
||||
SEDLIST+= -e 's,XX_PAM_LIBS_XX,-lpam,' \
|
||||
-e 's,^\# (SUPPORT_PAM=),\1,'
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_PAM_LIBS_XX,,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MAUTH_CRAM_MD5}
|
||||
SEDLIST+= -e 's,^\# (AUTH_CRAM_MD5=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MAUTH_PLAINTEXT}
|
||||
SEDLIST+= -e 's,^\# (AUTH_PLAINTEXT=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MAUTH_DOVECOT}
|
||||
SEDLIST+= -e 's,^\# (AUTH_DOVECOT=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MAUTH_SPA}
|
||||
SEDLIST+= -e 's,^\# (AUTH_SPA=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MAUTH_SASL}
|
||||
SEDLIST+= -e 's,^\# (AUTH_CYRUS_SASL=),\1,' \
|
||||
-e 's,^\# (AUTH_LIBS=.*-lsasl2),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MAUTH_TLS}
|
||||
SEDLIST+= -e 's,^\# (AUTH_TLS=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MAUTH_RADIUS}
|
||||
WITH_RADIUS_TYPE?= RADLIB
|
||||
.if ${WITH_RADIUS_TYPE:tl} == radlib
|
||||
SEDLIST+= -e 's,XX_RADIUS_LIBS_XX,-lradius,' \
|
||||
-e 's,^\# (RADIUS_CONFIG_FILE=).*,\1/etc/radius.conf,' \
|
||||
-e 's,^\# (RADIUS_LIB_TYPE=).*,\1RADLIB,'
|
||||
.elif ${WITH_RADIUS_TYPE:tl} == radiusclient
|
||||
LIB_DEPENDS+= libfreeradius-client.so:net/freeradius-client
|
||||
SEDLIST+= -e 's,XX_RADIUS_LIBS_XX,-L${LOCALBASE:S/,/\\,/g}/lib -lfreeradius-client,' \
|
||||
-e 's,^\# (RADIUS_CONFIG_FILE=).*,\1${LOCALBASE:S/,/\\,/g}/etc/radiusclient/radiusclient.conf,' \
|
||||
-e 's,^\# (RADIUS_LIB_TYPE=).*,\1RADIUSCLIENTNEW,'
|
||||
.else
|
||||
IGNORE= the variable WITH_RADIUS_TYPE must be either RADLIB or RADIUSCLIENT
|
||||
.endif
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_RADIUS_LIBS_XX,,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MPGSQL}
|
||||
SEDLIST+= -e 's,XX_PGSQL_LIBS_XX,-L${LOCALBASE:S/,/\\,/g}/lib -lpq,' \
|
||||
-e 's,XX_PGSQL_INCLUDE_XX,-I${LOCALBASE:S/,/\\,/g}/include/pgsql,' \
|
||||
-e 's,^\# (LOOKUP_PGSQL=),\1,'
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_PGSQL_[^ ]*_XX,,'
|
||||
.endif
|
||||
|
||||
.if ! ${PORT_OPTIONS:MPGSQL} && ! ${PORT_OPTIONS:MMYSQL} && !defined(LDAP_LIB_TYPE) && \
|
||||
! ${PORT_OPTIONS:MBDB} && ! ${PORT_OPTIONS:MLMDB}
|
||||
SEDLIST+= -e 's,^(LOOKUP_LIBS=),\# \1,' \
|
||||
-e 's,^(LOOKUP_INCLUDE=),\# \1,'
|
||||
.endif
|
||||
|
||||
.if ! ${PORT_OPTIONS:MDNSDB}
|
||||
SEDLIST+= -e 's,^(LOOKUP_DNSDB=),\# \1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MMAILDIR}
|
||||
SEDLIST+= -e 's,^\# (SUPPORT_MAILDIR=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MMAILSTORE}
|
||||
SEDLIST+= -e 's,^\# (SUPPORT_MAILSTORE=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MMBX}
|
||||
SEDLIST+= -e 's,^\# (SUPPORT_MBX=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MCDB}
|
||||
SEDLIST+= -e 's,^\# (LOOKUP_CDB=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MDSEARCH}
|
||||
SEDLIST+= -e 's,^\# (LOOKUP_DSEARCH=),\1,'
|
||||
.endif
|
||||
|
||||
.if ! ${PORT_OPTIONS:MLSEARCH}
|
||||
SEDLIST+= -e 's,^(LOOKUP_LSEARCH=),\# \1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MNIS}
|
||||
SEDLIST+= -e 's,^\# (LOOKUP_NIS=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MPASSWD}
|
||||
SEDLIST+= -e 's,^\# (LOOKUP_PASSWD=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MSQLITE}
|
||||
SEDLIST+= -e 's,XX_SQLITE_LIBS_XX,`pkg-config --static --libs sqlite3`,' \
|
||||
-e 's,XX_SQLITE_FLAGS_XX,`pkg-config --cflags sqlite3`,' \
|
||||
-e 's,^\# (LOOKUP_SQLITE=),\1,'
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_SQLITE_LIBS_XX,,' \
|
||||
-e 's,XX_SQLITE_FLAGS_XX,,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MREDIS}
|
||||
SEDLIST+= -e 's,XX_REDIS_LIBS_XX,-L${LOCALBASE}/lib -lhiredis,' \
|
||||
-e 's,^\# (LOOKUP_REDIS=),\1,' \
|
||||
-e 's,^\# (REDIS=),\1,'
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_REDIS_LIBS_XX,,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MLMTP}
|
||||
SEDLIST+= -e 's,^\# (TRANSPORT_LMTP=),\1,'
|
||||
.endif
|
||||
|
||||
.if ! ${PORT_OPTIONS:MALT_CONFIG_PREFIX}
|
||||
SEDLIST+= -e 's,^(ALT_CONFIG_PREFIX=),\# \1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MSPF}
|
||||
SEDLIST+= -e 's,XX_SPF_FLAGS_XX,-DSPF,' \
|
||||
-e 's,XX_SPF_LIBS_XX,-L${LOCALBASE}/lib -lspf2 -lpthread,' \
|
||||
-e 's,^\# (SUPPORT_SPF=),\1,'
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_SPF_FLAGS_XX,,' \
|
||||
-e 's,XX_SPF_LIBS_XX,,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MSRS}
|
||||
SEDLIST+= -e 's,XX_SRS_FLAGS_XX,-DSUPPORT_SRS,' \
|
||||
-e 's,XX_SRS_LIBS_XX,,'
|
||||
.elif ${PORT_OPTIONS:MOLD_SRS}
|
||||
LIB_DEPENDS+= libsrs_alt.so:mail/libsrs_alt
|
||||
SEDLIST+= -e 's,XX_SRS_FLAGS_XX,-DEXPERIMENTAL_SRS_ALT,' \
|
||||
-e 's,XX_SRS_LIBS_XX,-L${LOCALBASE}/lib -lsrs_alt,'
|
||||
.else
|
||||
SEDLIST+= -e 's,XX_SRS_FLAGS_XX,,' \
|
||||
-e 's,XX_SRS_LIBS_XX,,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MREADLINE}
|
||||
SEDLIST+= -e 's,^\# (USE_READLINE=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MCONTENT_SCAN}
|
||||
SEDLIST+= -e 's,^\# (WITH_CONTENT_SCAN=),\1,'
|
||||
.endif
|
||||
|
||||
.if !defined(EXIMON_ONLY) && ${PORT_OPTIONS:MDAEMON}
|
||||
USE_RC_SUBR= exim
|
||||
PLIST_SUB+= EXIMDAEMON=""
|
||||
SUB_LIST+= LOGDIR="${LOGDIR}"
|
||||
.else
|
||||
PLIST_SUB+= EXIMDAEMON="@comment "
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MIPV6}
|
||||
SEDLIST+= -e 's,^\# (HAVE_IPV6=),\1,'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MDISABLE_D_OPT}
|
||||
SEDLIST+= -e 's,^\# (DISABLE_D_OPTION=),\1,'
|
||||
.else
|
||||
.if defined(WHITELIST_D_MACROS)
|
||||
SEDLIST+= -e 's,^\# (WHITELIST_D_MACROS=).*$$,\1${WHITELIST_D_MACROS:S/,/\\,/g},'
|
||||
.endif
|
||||
.endif
|
||||
|
||||
.if defined(TRUSTED_CONFIG_LIST)
|
||||
SEDLIST+= -e 's,^\# (TRUSTED_CONFIG_LIST=).*$$,\1${TRUSTED_CONFIG_LIST:S/,/\\,/g},'
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MQUEUEFILE}
|
||||
SEDLIST+= -e 's,^\# (EXPERIMENTAL_QUEUEFILE=),\1,'
|
||||
.endif
|
||||
|
||||
MAKE_ENV+= INSTALL_ARG="${EXIM_INSTALL_ARG}"
|
||||
DUMMY_LDFLAGS!= ${ECHO_CMD} ${LDFLAGS} | ${SED} -e 's|-Wl,-rpath|-Wl,-DUMMYrpath|g; s|-rpath|-Wl,-rpath|g; s|-DUMMYrpath|-rpath|g'
|
||||
|
||||
pre-everything::
|
||||
@${ECHO} 'Exim now drops privileges when alternate configuration'
|
||||
@${ECHO} 'files are used. You can set make variable TRUSTED_CONFIG_LIST'
|
||||
@${ECHO} 'to specify the list of configuration files for which'
|
||||
@${ECHO} 'root privileges will be retained.'
|
||||
@${ECHO} ''
|
||||
@${ECHO} 'You can whitelist some macros using the make variable'
|
||||
@${ECHO} 'WHITELIST_D_MACROS. This is useful if you are running'
|
||||
@${ECHO} 'with DISABLE_D_OPT set, but macros whitelisting will be'
|
||||
@${ECHO} 'removed in some future Exim release, so it is better'
|
||||
@${ECHO} 'to use TRUSTED_CONFIG_LIST to set the list of trusted'
|
||||
@${ECHO} 'configuration files.'
|
||||
.if empty(.MAKEFLAGS:M-s) && ${PORT_OPTIONS:MWISHLIST}
|
||||
@${ECHO} ''
|
||||
@${ECHO} 'Included extra patches:'
|
||||
@${FIND} ${PATCHDIR} -name 'wishlist-*.patch' \
|
||||
-exec ${SED} -ne 's,^# , ,p' {} \;
|
||||
@${ECHO} ''
|
||||
.endif
|
||||
|
||||
post-extract:
|
||||
.if ${PORT_OPTIONS:MSA_EXIM}
|
||||
@cd ${WRKDIR} && ${TAR} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/sa-exim-${SA_EXIM_VERSION}.tar.gz ${EXTRACT_AFTER_ARGS}
|
||||
@@${CP} ${WRKDIR}/sa-exim-${SA_EXIM_VERSION}/sa-exim.c ${WRKSRC}/Local
|
||||
@@${CP} ${WRKDIR}/sa-exim-${SA_EXIM_VERSION}/sa-exim.conf ${WRKSRC}/Local
|
||||
.endif
|
||||
|
||||
do-configure:
|
||||
@${MKDIR} ${WRKSRC}/Local
|
||||
@${SED} -E ${SEDLIST} ${WRKSRC}/src/EDITME > ${WRKSRC}/Local/Makefile
|
||||
.if ${PORT_OPTIONS:MEXIMON}
|
||||
@${CP} ${WRKSRC}/exim_monitor/EDITME ${WRKSRC}/Local/eximon.conf
|
||||
.endif
|
||||
@${REINPLACE_CMD} -E ${SEDLIST} ${WRKSRC}/src/configure.default
|
||||
@${REINPLACE_CMD} -e 's!$$(LDFLAGS)!$$(DUMMY_LDFLAGS) -L$${LOCALBASE}/lib!' ${WRKSRC}/OS/Makefile-Base
|
||||
@${REINPLACE_CMD} -e 's/"(Exim $$version_number)\\n\\t"/"(Exim $$version_number (${OPSYS}))\\n\\t"/' \
|
||||
${WRKSRC}/src/globals.c
|
||||
@${REINPLACE_CMD} -e 's/Exim version %s \(#%s \)\{0,1\}/&(${OPSYS} ${OSREL}) /' ${WRKSRC}/src/exim.c
|
||||
@${REINPLACE_CMD} -e 's/^#include "cnumber\.h"$$/${PORTREVISION}/' ${WRKSRC}/src/version.c
|
||||
@${REINPLACE_CMD} -E -e 's/^(PERL_COMMAND=).*/\1${PERL:S,/,\/,g}/' \
|
||||
-e 's/^(CC=).*/\1${CC:S,/,\/,g}/' ${WRKSRC}/OS/Makefile-Default
|
||||
.if ${PORT_OPTIONS:MSA_EXIM}
|
||||
@${REINPLACE_CMD} -E -e 's/^\# (HAVE_LOCAL_SCAN=).*/\1yes/' \
|
||||
${WRKSRC}/OS/Makefile-Default
|
||||
@${REINPLACE_CMD} -E -e 's/^(LOCAL_SCAN_SOURCE=).*/\1Local\/sa-exim.c/' \
|
||||
${WRKSRC}/OS/Makefile-Default
|
||||
@{ \
|
||||
${ECHO_CMD} "char *version=\"${SA_EXIM_VERSION}\";"; \
|
||||
${ECHO_CMD} "#define SPAMC_LOCATION \"${LOCALBASE}/bin/spamc\""; \
|
||||
${ECHO_CMD} "#define SPAMASSASSIN_CONF \"${PREFIX}/etc/exim/sa-exim.conf\""; \
|
||||
} > ${WRKSRC}/Local/sa-exim.h
|
||||
@${REINPLACE_CMD} -e 's,/usr/bin/spamc,${LOCALBASE}/bin/spamc,' \
|
||||
${WRKSRC}/Local/sa-exim.conf
|
||||
.endif
|
||||
@(cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} configure)
|
||||
|
||||
post-build:
|
||||
.for script in ${DAILY_SCRIPTS}
|
||||
@${SED} ${SED_SCRIPT} ${FILESDIR}/${script}.sh > ${WRKDIR}/${script}.sh
|
||||
.endfor
|
||||
@${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES > \
|
||||
${WRKDIR}/POST-INSTALL-NOTES
|
||||
@${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES.clamd > ${WRKDIR}/POST-INSTALL-NOTES.clamd
|
||||
@${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES
|
||||
@[ ! -f ${PKGDIR}/pkg-message ] || ${SED} ${SED_SCRIPT} ${PKGDIR}/pkg-message > ${WRKDIR}/pkg-message
|
||||
|
||||
.if !defined(EXIMON_ONLY)
|
||||
post-install:
|
||||
.if ${PORT_OPTIONS:MDAEMON}
|
||||
${MKDIR} ${STAGEDIR}${PREFIX}/etc/periodic/daily
|
||||
.for script in ${DAILY_SCRIPTS}
|
||||
${INSTALL_SCRIPT} ${WRKDIR}/${script}.sh ${STAGEDIR}${PREFIX}/etc/periodic/daily/${script}
|
||||
.endfor
|
||||
.endif
|
||||
@${MKDIR} -m 750 ${STAGEDIR}${LOGDIR}
|
||||
${INSTALL_MAN} ${WRKSRC}/doc/exim.8 ${STAGEDIR}${PREFIX}/share/man/man8
|
||||
.if ${PORT_OPTIONS:MDOCS}
|
||||
@${MKDIR} ${STAGEDIR}${DOCSDIR}
|
||||
${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES ${STAGEDIR}${DOCSDIR}
|
||||
${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES.clamd ${STAGEDIR}${DOCSDIR}
|
||||
.for docfile in ${PORTDOC_BASE}
|
||||
${INSTALL_DATA} ${WRKSRC}/${docfile} ${STAGEDIR}${DOCSDIR}
|
||||
.endfor
|
||||
.for docfile in ${PORTDOC_FILES}
|
||||
${INSTALL_DATA} ${WRKSRC}/doc/${docfile} ${STAGEDIR}${DOCSDIR}
|
||||
.endfor
|
||||
@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
|
||||
.for example in ${PORT_EXAMPLES}
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/build-${OPSYS}-${ARCH}/${example} ${STAGEDIR}${EXAMPLESDIR}
|
||||
.endfor
|
||||
.endif
|
||||
.if ${PORT_OPTIONS:MSA_EXIM}
|
||||
${INSTALL_DATA} ${WRKSRC}/Local/sa-exim.conf \
|
||||
${STAGEDIR}${PREFIX}/etc/exim/sa-exim.conf.sample
|
||||
.endif
|
||||
|
||||
.endif # ! defined(EXIMON_ONLY)
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
# If using clang, avoid too many warnings due to Exim code style
|
||||
.if ${CHOSEN_COMPILER_TYPE} == "clang"
|
||||
EXIM_WARN_FLAGS?= -Wno-logical-op-parentheses -Wno-macro-redefined -Wno-parentheses -Wno-dangling-else
|
||||
.endif
|
||||
CFLAGS+= ${EXIM_WARN_FLAGS}
|
||||
|
||||
.include <bsd.port.post.mk>
|
||||
5
mail/exim/distinfo
Normal file
5
mail/exim/distinfo
Normal file
@ -0,0 +1,5 @@
|
||||
TIMESTAMP = 1765991031
|
||||
SHA256 (exim/exim-4.99.1.tar.bz2) = 9152a6e8a76103b33ea3fef255d8b296f368c9b0f710cd4ef4fd54fca6a742ae
|
||||
SIZE (exim/exim-4.99.1.tar.bz2) = 2135201
|
||||
SHA256 (exim/sa-exim-4.2.1.tar.gz) = 24d4bf7b0fdddaea11f132981cebb6a86a4ab20ef54111a8ebd481b421c6e2c1
|
||||
SIZE (exim/sa-exim-4.2.1.tar.gz) = 68933
|
||||
49
mail/exim/files/150.exim-tidydb.sh
Normal file
49
mail/exim/files/150.exim-tidydb.sh
Normal file
@ -0,0 +1,49 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Exim hints database maintenance
|
||||
#
|
||||
# contributed by: Oliver Eikemeier <eikemeier@fillmore-labs.com>
|
||||
#
|
||||
|
||||
# If there is a global system configuration file, suck it in.
|
||||
#
|
||||
if [ -r /etc/defaults/periodic.conf ]; then
|
||||
. /etc/defaults/periodic.conf
|
||||
source_periodic_confs
|
||||
fi
|
||||
|
||||
: ${exim_tidydb_enable="YES"}
|
||||
: ${exim_tidydb="%%PREFIX%%/sbin/exim_tidydb"}
|
||||
# Set this to arbitrary shell command to filter
|
||||
# the output from this periodic script, for example,
|
||||
# exim_tidydb_filter="| tail -100".
|
||||
: ${exim_tidydb_filter=""}
|
||||
: ${exim_dbdir="/var/spool/exim"}
|
||||
|
||||
tidy () {
|
||||
for db in "$exim_dbdir"/db/*.lockfile; do
|
||||
[ "$db" = "$exim_dbdir/db/*.lockfile" ] && continue
|
||||
echo
|
||||
db_name=`basename "$db" .lockfile`
|
||||
if [ -e "${exim_dbdir}/db/${db_name}.db" ]; then
|
||||
"$exim_tidydb" "$exim_dbdir" "$db_name"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
case "$exim_tidydb_enable" in
|
||||
[Yy][Ee][Ss])
|
||||
echo ""
|
||||
echo "Tidying Exim hints databases:"
|
||||
eval tidy "$exim_tidydb_filter"
|
||||
if [ $? = 0 ]; then
|
||||
rc=0
|
||||
else
|
||||
rc=1
|
||||
fi
|
||||
;;
|
||||
|
||||
*) rc=0;;
|
||||
esac
|
||||
|
||||
exit $rc
|
||||
66
mail/exim/files/460.exim-mail-rejects.sh
Normal file
66
mail/exim/files/460.exim-mail-rejects.sh
Normal file
@ -0,0 +1,66 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Check for rejected mail
|
||||
# Log lines that end with ' : IGNORE' will not be reported
|
||||
#
|
||||
# contributed by: Oliver Eikemeier <eikemeier@fillmore-labs.com>
|
||||
#
|
||||
|
||||
# If there is a global system configuration file, suck it in.
|
||||
#
|
||||
if [ -r /etc/defaults/periodic.conf ]
|
||||
then
|
||||
. /etc/defaults/periodic.conf
|
||||
source_periodic_confs
|
||||
fi
|
||||
|
||||
: ${exim_status_mail_rejects_enable="YES"}
|
||||
: ${exim_status_mail_rejects_logs=2}
|
||||
: ${exim_rejectlog="%%LOGDIR%%/rejectlog"}
|
||||
|
||||
case "$exim_status_mail_rejects_enable" in
|
||||
[Yy][Ee][Ss])
|
||||
if [ ! -d `dirname "$exim_rejectlog"` ]
|
||||
then
|
||||
echo '$exim_status_mail_rejects_enable is set but' \
|
||||
"`dirname "$exim_rejectlog"` doesn't exist"
|
||||
rc=2
|
||||
elif [ "$exim_status_mail_rejects_logs" -le 0 ]
|
||||
then
|
||||
echo '$exim_status_mail_rejects_enable is set but' \
|
||||
'$exim_status_mail_rejects_logs is not greater than zero'
|
||||
rc=2
|
||||
else
|
||||
echo
|
||||
echo "Checking for rejected mail:"
|
||||
|
||||
start=`date -v-1d '+%Y-%m-%d'`
|
||||
n=$(($exim_status_mail_rejects_logs - 2))
|
||||
rc=$({
|
||||
while [ $n -ge 0 ]
|
||||
do
|
||||
if [ -f "$exim_rejectlog.$n" ]
|
||||
then
|
||||
cat "$exim_rejectlog.$n"
|
||||
elif [ -f "$exim_rejectlog.$n.gz" ]
|
||||
then
|
||||
zcat -fc "$exim_rejectlog.$n.gz"
|
||||
elif [ -f "$exim_rejectlog.$n.bz2" ]
|
||||
then
|
||||
bzcat -fc "$exim_rejectlog.$n.bz2"
|
||||
fi
|
||||
n=$(($n - 1))
|
||||
done
|
||||
if [ -f "$exim_rejectlog" ]
|
||||
then
|
||||
cat "$exim_rejectlog"
|
||||
fi
|
||||
} |
|
||||
grep -e "^$start" | grep -v ' : IGNORE$' | tee /dev/stderr | wc -l)
|
||||
[ $rc -gt 0 ] && rc=1
|
||||
fi;;
|
||||
|
||||
*) rc=0;;
|
||||
esac
|
||||
|
||||
exit $rc
|
||||
48
mail/exim/files/POST-INSTALL-NOTES
Normal file
48
mail/exim/files/POST-INSTALL-NOTES
Normal file
@ -0,0 +1,48 @@
|
||||
[
|
||||
{ type: install
|
||||
message: <<EOM
|
||||
The following documentation has been installed:
|
||||
|
||||
man exim -> Exim options (command line)
|
||||
%%DOCSDIR%%/spec.txt -> Exim Specification (User Guide)
|
||||
%%DOCSDIR%%/filter.txt -> Exim Filter Specification (for end-users)
|
||||
|
||||
Postscript, PDF, HTML and texinfo versions of these documents can be
|
||||
installed via one of the mail/exim-doc-* ports.
|
||||
|
||||
An online version as well as a comprehensive FAQ and a mailing list
|
||||
archive is available at:
|
||||
|
||||
http://www.exim.org/
|
||||
|
||||
Descriptions of new features not available it the manual, and a listing
|
||||
of all changes, including bug fixes are documented in:
|
||||
|
||||
%%DOCSDIR%%/NewStuff
|
||||
%%DOCSDIR%%/ChangeLog
|
||||
|
||||
To use Exim instead of sendmail on startup:
|
||||
|
||||
*) Clear the sendmail queue and stop the sendmail daemon.
|
||||
*) Adjust mailer.conf(5) as appropriate.
|
||||
*) Set the 'sendmail_enable' rc.conf(5) variable to 'NONE'.
|
||||
*) Set the 'daily_status_include_submit_mailq' and
|
||||
'daily_clean_hoststat_enable' periodic.conf(5)
|
||||
variables to 'NO'.
|
||||
*) Consider setting 'daily_queuerun_enable' and
|
||||
'daily_submit_queuerun' to "NO" in periodic.conf(5),
|
||||
if you intend to manage queue runners / deliveries closely.
|
||||
*) Set the 'exim_enable' rc.conf(5) variable to 'YES'.
|
||||
*) Start exim with '%%PREFIX%%/etc/rc.d/exim start'.
|
||||
|
||||
You may also want to configure newsyslog(8) to rotate Exim log files:
|
||||
|
||||
%%LOGDIR%%/mainlog mailnull:mail 640 7 * @T00 ZN
|
||||
%%LOGDIR%%/rejectlog mailnull:mail 640 7 * @T00 ZN
|
||||
|
||||
Additional scripts to help upgrading are installed in:
|
||||
|
||||
%%EXAMPLESDIR%%
|
||||
EOM
|
||||
}
|
||||
]
|
||||
52
mail/exim/files/POST-INSTALL-NOTES.clamd
Normal file
52
mail/exim/files/POST-INSTALL-NOTES.clamd
Normal file
@ -0,0 +1,52 @@
|
||||
[
|
||||
{ type: install
|
||||
message: <<EOM
|
||||
The following steps will enable clamd malware scanning using exiscan ACLs.
|
||||
It is important to follow them in sequence.
|
||||
|
||||
* Install security/clamav from the ports tree.
|
||||
|
||||
* Confirm that user clamav was added to the mail group in /etc/group.
|
||||
|
||||
* Confirm that /var/log/clamav and /var/run/clamav exist and are owned
|
||||
by clamav:clamav.
|
||||
|
||||
* In Exim's configure file, set av_scanner=clamd:/var/run/clamav/clamd
|
||||
|
||||
* Adjust the exiscan ACLs in Exim's configure file. Make sure you use
|
||||
the demime option with the malware check, e.g.:
|
||||
|
||||
deny message = This message contains malware ($malware_name)
|
||||
demime = *
|
||||
malware = *
|
||||
|
||||
* Edit clamav.conf as follows:
|
||||
|
||||
LogFile /var/log/clamav/clamd.log
|
||||
PidFile /var/run/clamav/clamd.pid
|
||||
LocalSocket /var/run/clamav/clamd
|
||||
User clamav
|
||||
AllowSupplementaryGroups
|
||||
ScanArchive
|
||||
ScanMail
|
||||
|
||||
You may wish to make other changes as well.
|
||||
|
||||
* Make sure clamd_enable="YES" has been added to /etc/rc.conf; this is
|
||||
required by the clamav port's startup script,
|
||||
%%RC_DIR%%/clamd%%RC_SUFX%% .
|
||||
|
||||
* Run freshclam.
|
||||
|
||||
* Add a cron job that runs freshclam --daemon-notify --quiet at least
|
||||
once a day.
|
||||
|
||||
* Start clamd with %%RC_DIR%%/clamd%%RC_SUFX%% start .
|
||||
|
||||
* Start Exim with %%RC_DIR%%/exim%%RC_SUFX%% start .
|
||||
|
||||
Sheldon Hearn <sheldonh@FreeBSD.org>
|
||||
|
||||
EOM
|
||||
}
|
||||
]
|
||||
60
mail/exim/files/exim.in
Normal file
60
mail/exim/files/exim.in
Normal file
@ -0,0 +1,60 @@
|
||||
#!/bin/sh
|
||||
|
||||
# PROVIDE: mail
|
||||
# REQUIRE: LOGIN
|
||||
# KEYWORD: shutdown
|
||||
# we make mail start late, so that things like .forward's are not
|
||||
# processed until the system is fully operational
|
||||
|
||||
#
|
||||
# Add the following lines to /etc/rc.conf to enable exim:
|
||||
#
|
||||
#exim_enable="YES"
|
||||
#
|
||||
# See exim(8) for flags
|
||||
#
|
||||
|
||||
. /etc/rc.subr
|
||||
|
||||
name=exim
|
||||
rcvar=exim_enable
|
||||
|
||||
command=%%PREFIX%%/sbin/exim
|
||||
pidfile=/var/run/exim.pid
|
||||
required_dirs=%%LOGDIR%%
|
||||
required_files=%%PREFIX%%/etc/exim/configure
|
||||
|
||||
start_precmd=start_precmd
|
||||
stop_postcmd=stop_postcmd
|
||||
|
||||
extra_commands="reload"
|
||||
|
||||
start_precmd()
|
||||
{
|
||||
case $sendmail_enable in
|
||||
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
|
||||
warn "sendmail_enable should be set to NONE"
|
||||
;;
|
||||
[Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
|
||||
case $sendmail_submit_enable in
|
||||
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
|
||||
warn "sendmail_submit_enable should be set to NO"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
[Nn][Oo][Nn][Ee])
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
stop_postcmd()
|
||||
{
|
||||
rm -f $pidfile
|
||||
}
|
||||
|
||||
# read settings, set default values
|
||||
load_rc_config $name
|
||||
: ${exim_enable="NO"}
|
||||
: ${exim_flags="-bd -q30m"}
|
||||
|
||||
run_rc_command "$1"
|
||||
225
mail/exim/files/extra-patch-Local-sa-exim.c
Normal file
225
mail/exim/files/extra-patch-Local-sa-exim.c
Normal file
@ -0,0 +1,225 @@
|
||||
--- Local/sa-exim.c.orig 2025-12-18 04:08:13.593344000 +0100
|
||||
+++ Local/sa-exim.c 2025-12-18 04:10:17.527828000 +0100
|
||||
@@ -29,10 +29,7 @@
|
||||
#include "sa-exim.h"
|
||||
|
||||
/* Exim includes */
|
||||
-#include "local_scan.h"
|
||||
-extern FILE *smtp_out; /* Exim's incoming SMTP output file */
|
||||
-extern int body_linecount; /* Line count in body */
|
||||
-extern uschar *primary_hostname;
|
||||
+#include <local_scan.h>
|
||||
|
||||
#ifdef DLOPEN_LOCAL_SCAN
|
||||
|
||||
@@ -409,6 +406,11 @@
|
||||
if (buffer[strlen(buffer)-1] == '\n')
|
||||
{
|
||||
buffer[strlen(buffer)-1]=0;
|
||||
+ /* and any carriage return */
|
||||
+ if (buffer[strlen(buffer)-1] == '\r')
|
||||
+ {
|
||||
+ buffer[strlen(buffer)-1]=0;
|
||||
+ }
|
||||
}
|
||||
if (SAEximDebug > 5)
|
||||
{
|
||||
@@ -515,6 +517,7 @@
|
||||
int pid;
|
||||
int writefd[2];
|
||||
int readfd[2];
|
||||
+ char *spamc_argv[10];
|
||||
int i;
|
||||
/* These are the only values that we want working after the longjmp
|
||||
* The automatic ones can be clobbered, but we don't really care */
|
||||
@@ -536,8 +539,8 @@
|
||||
time_t beforescan;
|
||||
time_t afterscan;
|
||||
time_t afterwait;
|
||||
- time_t scantime=0;
|
||||
- time_t fulltime=0;
|
||||
+ int scantime=0;
|
||||
+ int fulltime=0;
|
||||
struct stat stbuf;
|
||||
|
||||
uschar *expand;
|
||||
@@ -550,8 +553,9 @@
|
||||
static char *SAspamcpath=SPAMC_LOCATION;
|
||||
static char *SAsafemesgidchars=SAFEMESGIDCHARS
|
||||
static char *SAspamcSockPath=NULL;
|
||||
- static char *SAspamcPort="783";
|
||||
- static char *SAspamcHost="127.0.0.1";
|
||||
+ static char *SAspamcPort=NULL;
|
||||
+ static char *SAspamcHost=NULL;
|
||||
+ static char *SAspamcUser=NULL;
|
||||
static char *SAEximRunCond="0";
|
||||
static char *SAEximRejCond="1";
|
||||
static int SAmaxbody=250*1024;
|
||||
@@ -602,6 +606,10 @@
|
||||
/* Do not put a %s in there, or you'll segfault */
|
||||
static char *SAmsgerror="Temporary local error while processing message, please contact postmaster";
|
||||
|
||||
+ /* This needs to be retrieved through expand_string in order
|
||||
+ not to violate the API. */
|
||||
+ uschar *primary_hostname=expand_string("$primary_hostname");
|
||||
+
|
||||
/* New values we read from spamassassin */
|
||||
char *xspamstatus=NULL;
|
||||
char *xspamflag=NULL;
|
||||
@@ -712,6 +720,7 @@
|
||||
M_CHECKFORSTR(SAspamcSockPath);
|
||||
M_CHECKFORSTR(SAspamcPort);
|
||||
M_CHECKFORSTR(SAspamcHost);
|
||||
+ M_CHECKFORSTR(SAspamcUser);
|
||||
M_CHECKFORSTR(SAEximRunCond);
|
||||
M_CHECKFORSTR(SAEximRejCond);
|
||||
M_CHECKFORVAR(SAmaxbody, "%d");
|
||||
@@ -914,6 +923,22 @@
|
||||
ret=dup2(readfd[1],2);
|
||||
CHECKERR(ret,"dup2 stderr",__LINE__);
|
||||
|
||||
+ i = 0;
|
||||
+ spamc_argv[i++] = "spamc";
|
||||
+ if (SAspamcUser && SAspamcUser[0])
|
||||
+ {
|
||||
+ expand=expand_string(SAspamcUser);
|
||||
+ if (expand == NULL)
|
||||
+ {
|
||||
+ log_write(0, LOG_MAIN | LOG_PANIC, "SA: SAspamcUser expansion failure on %s, will run as Exim user instead.", SAspamcUser);
|
||||
+ }
|
||||
+ else if (expand[0] != '\0')
|
||||
+ {
|
||||
+ spamc_argv[i++] = "-u";
|
||||
+ spamc_argv[i++] = expand;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* I could implement the spamc protocol and talk to spamd directly
|
||||
* instead of forking spamc, but considering the overhead spent
|
||||
@@ -924,17 +949,30 @@
|
||||
/* Ok, we cheat, spamc cares about how big the whole message is and
|
||||
* we only know about the body size, so I'll give an extra 16K
|
||||
* to account for any headers that can accompany the message */
|
||||
+
|
||||
+ spamc_argv[i++] = "-s";
|
||||
+ spamc_argv[i++] = string_sprintf("%d", SAmaxbody+16384);
|
||||
+
|
||||
if(SAspamcSockPath)
|
||||
{
|
||||
- ret=execl(SAspamcpath, "spamc", "-s", string_sprintf("%d", SAmaxbody+16384), "-U", SAspamcSockPath, NULL);
|
||||
- CHECKERR(ret,string_sprintf("exec %s", SAspamcpath),__LINE__);
|
||||
+ spamc_argv[i++] = "-U";
|
||||
+ spamc_argv[i++] = SAspamcSockPath;
|
||||
}
|
||||
else
|
||||
{
|
||||
- ret=execl(SAspamcpath, "spamc", "-s", string_sprintf("%d", SAmaxbody+16384), "-d", SAspamcHost, "-p", SAspamcPort, NULL);
|
||||
- CHECKERR(ret,string_sprintf("exec %s", SAspamcpath),__LINE__);
|
||||
+ if (SAspamcHost) {
|
||||
+ spamc_argv[i++] = "-d";
|
||||
+ spamc_argv[i++] = SAspamcHost;
|
||||
+ }
|
||||
+ if (SAspamcPort) {
|
||||
+ spamc_argv[i++] = "-p";
|
||||
+ spamc_argv[i++] = SAspamcPort;
|
||||
+ }
|
||||
}
|
||||
-
|
||||
+ spamc_argv[i++] = NULL;
|
||||
+
|
||||
+ ret=execv(SAspamcpath, spamc_argv);
|
||||
+ CHECKERR(ret,string_sprintf("exec %s", SAspamcpath),__LINE__);
|
||||
}
|
||||
|
||||
if (SAEximDebug > 8)
|
||||
@@ -1045,6 +1083,11 @@
|
||||
if (buffer[strlen(buffer)-1] == '\n')
|
||||
{
|
||||
buffer[strlen(buffer)-1]=0;
|
||||
+ /* and any carriage return */
|
||||
+ if (buffer[strlen(buffer)-1] == '\r')
|
||||
+ {
|
||||
+ buffer[strlen(buffer)-1]=0;
|
||||
+ }
|
||||
}
|
||||
restart:
|
||||
if (SAEximDebug > 5)
|
||||
@@ -1154,7 +1197,7 @@
|
||||
{
|
||||
if (SAEximDebug > 5)
|
||||
{
|
||||
- log_write(0, LOG_MAIN, "SA: Debug6: spamc read got newline, end of headers", buffer);
|
||||
+ log_write(0, LOG_MAIN, "SA: Debug6: spamc read got newline, end of headers");
|
||||
}
|
||||
goto exit;
|
||||
}
|
||||
@@ -1214,11 +1257,11 @@
|
||||
{
|
||||
if (SAEximDebug > 8)
|
||||
{
|
||||
- log_write(0, LOG_MAIN, "SA: Debug9: Read body from SA; line %d (read %d)", line, strlen(buffer));
|
||||
+ log_write(0, LOG_MAIN, "SA: Debug9: Read body from SA; line %d (read %zd)", line, strlen(buffer));
|
||||
}
|
||||
|
||||
stret=write(fd, buffer, strlen(buffer));
|
||||
- CHECKERR(stret,string_sprintf("SA body write to msg"),__LINE__);
|
||||
+ CHECKERR(stret,string_sprintf("%s", "SA body write to msg"),__LINE__);
|
||||
if (SAEximDebug > 8)
|
||||
{
|
||||
log_write(0, LOG_MAIN, "SA: Debug9: Wrote to msg; line %d (wrote %d)", line, ret);
|
||||
@@ -1229,18 +1272,20 @@
|
||||
}
|
||||
}
|
||||
|
||||
+
|
||||
if (SAEximDebug > 1)
|
||||
{
|
||||
log_write(0, LOG_MAIN, "SA: Debug2: body_linecount before SA: %d", body_linecount);
|
||||
}
|
||||
|
||||
/* update global variable $body_linecount to reflect the new body size*/
|
||||
- body_linecount = (line - 1);
|
||||
+ if (body_linecount > 0) body_linecount = (line - 1); // Not updating if zero, indicating spool_wireformat
|
||||
|
||||
if (SAEximDebug > 1)
|
||||
{
|
||||
log_write(0, LOG_MAIN, "SA: Debug2: body_linecount after SA: %d", body_linecount);
|
||||
}
|
||||
+
|
||||
}
|
||||
|
||||
fclose((FILE *)readfh);
|
||||
@@ -1331,6 +1376,9 @@
|
||||
|
||||
if (dorej && doteergrube)
|
||||
{
|
||||
+ char *teergrubewaitstr;
|
||||
+ teergrubewaitstr=string_sprintf(SAmsgteergrubewait, spamstatus);
|
||||
+
|
||||
/* By default, we'll only save temp bounces by message ID so
|
||||
* that when the same message is submitted several times, we
|
||||
* overwrite the same file on disk and not create a brand new
|
||||
@@ -1353,20 +1401,8 @@
|
||||
|
||||
for (i=0;i<SAteergrubetime/10;i++)
|
||||
{
|
||||
- char *str;
|
||||
-
|
||||
- /* Unfortunately, we can't use exim's smtp_printf because it
|
||||
- * doesn't return an error code if the write gets an EPIPE.
|
||||
- * So, we write ourselves, but this won't work if you have a
|
||||
- * TLS connection opened (that said, if you are teergrubing
|
||||
- * a TLS connection, it's probably a relay host, not a
|
||||
- * spammer, and in this case you should not teergrube a
|
||||
- * friendly relay, so basically we should be ok).
|
||||
- * If you do teergrube an SSL connection with the current
|
||||
- * code, you will break it, but that's acceptable */
|
||||
- str=string_sprintf(string_sprintf("451- %s\r\n",SAmsgteergrubewait), spamstatus);
|
||||
- fprintf(smtp_out, str);
|
||||
- ret=fflush(smtp_out);
|
||||
+ smtp_printf("451-%s\r\n", FALSE, teergrubewaitstr);
|
||||
+ ret=smtp_fflush(TRUE);
|
||||
if (ret != 0)
|
||||
{
|
||||
log_write(0, LOG_MAIN | LOG_REJECT, "SA: Action: teergrubed sender for %d secs until it closed the connection: %s (scanned in %d/%d secs | Message-Id: %s). %s", i*10, spamstatus, scantime, fulltime, safemesgid, mailinfo);
|
||||
24
mail/exim/files/extra-patch-Local-sa-exim.conf
Normal file
24
mail/exim/files/extra-patch-Local-sa-exim.conf
Normal file
@ -0,0 +1,24 @@
|
||||
--- Local/sa-exim.conf.orig 2005-03-08 20:35:43 UTC
|
||||
+++ Local/sa-exim.conf
|
||||
@@ -49,11 +49,17 @@ SAspamcpath: /usr/bin/spamc
|
||||
# you set it, it will override the two TCP connect options below
|
||||
#SAspamcSockPath: /var/run/spamd.sock
|
||||
|
||||
-# SAspamcHost / SAspamcPort: TCP socket where your spamd is listening
|
||||
-# Shown below are the defaults:
|
||||
-SAspamcHost: 127.0.0.1
|
||||
-SAspamcPort: 783
|
||||
+# SAspamcHost / SAspamcPort: TCP socket where your spamd is listening.
|
||||
+# Default is to let spamc use any settings in spamc.conf.
|
||||
+#SAspamcHost: 127.0.0.1
|
||||
+#SAspamcPort: 783
|
||||
|
||||
+# SAspamcUser: The username passed to spamc. Some tricks are needed to
|
||||
+# decide on one user when there are many recipients. This string is of
|
||||
+# course expanded. If unset or empty, spamc will use the user Exim
|
||||
+# runs as. We suggest that you decide what username to use in the ACLs
|
||||
+# and set an ACL variable.
|
||||
+#SAspamcUser: $acl_m2
|
||||
|
||||
# Exim configuration string to run before running SA against the message
|
||||
# This decides whether SA gets run against the message or not. This
|
||||
11
mail/exim/files/patch-Makefile
Normal file
11
mail/exim/files/patch-Makefile
Normal file
@ -0,0 +1,11 @@
|
||||
--- Makefile.orig 2025-12-17 18:05:41.764604000 +0100
|
||||
+++ Makefile 2025-12-17 18:08:15.055964000 +0100
|
||||
@@ -70,7 +70,7 @@
|
||||
# Configure-Makefile script. This does its own dependency checking because of
|
||||
# the optional files.
|
||||
|
||||
-configure: checks build-directory \
|
||||
+configure: build-directory \
|
||||
scripts/lookups-Makefile scripts/drivers-Makefile
|
||||
@cd build-$(buildname); \
|
||||
build=$(build) $(SHELL) ../scripts/Configure-Makefile
|
||||
13
mail/exim/files/patch-OS__Makefile-FreeBSD
Normal file
13
mail/exim/files/patch-OS__Makefile-FreeBSD
Normal file
@ -0,0 +1,13 @@
|
||||
--- OS/Makefile-FreeBSD.orig 2023-04-09 09:45:04.226201000 +0200
|
||||
+++ OS/Makefile-FreeBSD 2023-04-09 09:48:01.819463000 +0200
|
||||
@@ -18,8 +18,8 @@
|
||||
# Dynamically loaded modules need to be built with -fPIC
|
||||
CFLAGS_DYNAMIC=-shared -rdynamic -fPIC
|
||||
|
||||
-# FreeBSD always ships with Berkeley DB
|
||||
-USE_DB=yes
|
||||
+# FreeBSD ships with Berkeley DB until 13.1, but ndbm is always included
|
||||
+USE_NDBM=yes
|
||||
|
||||
# This code for building outside ports suggested by Richard Clayton
|
||||
.ifdef X11BASE
|
||||
11
mail/exim/files/patch-exim_monitor-em_hdr.h
Normal file
11
mail/exim/files/patch-exim_monitor-em_hdr.h
Normal file
@ -0,0 +1,11 @@
|
||||
--- exim_monitor/em_hdr.h.orig 2019-12-08 12:53:48 UTC
|
||||
+++ exim_monitor/em_hdr.h
|
||||
@@ -95,6 +95,8 @@ this interface so that this kind of kludge isn't neede
|
||||
#endif
|
||||
typedef void hctx;
|
||||
|
||||
+typedef unsigned long ulong;
|
||||
+
|
||||
#include "local_scan.h"
|
||||
#include "macros.h"
|
||||
#include "structs.h"
|
||||
111
mail/exim/files/patch-scripts__exim_install
Normal file
111
mail/exim/files/patch-scripts__exim_install
Normal file
@ -0,0 +1,111 @@
|
||||
--- scripts/exim_install.orig 2016-12-18 14:02:28.000000000 +0000
|
||||
+++ scripts/exim_install 2017-01-02 11:48:46.939703000 +0000
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
do_chown=yes
|
||||
do_symlink=yes
|
||||
+do_info=yes
|
||||
|
||||
while [ $# -gt 0 ] ; do
|
||||
case "$1" in
|
||||
@@ -51,6 +52,10 @@
|
||||
do_symlink=no
|
||||
;;
|
||||
|
||||
+ -no_info)
|
||||
+ do_info=no
|
||||
+ ;;
|
||||
+
|
||||
*)
|
||||
break
|
||||
;;
|
||||
@@ -117,9 +122,7 @@
|
||||
CONFIGURE_FILE=${DESTDIR}${CONFIGURE_FILE}
|
||||
SYSTEM_ALIASES_FILE=${DESTDIR}${SYSTEM_ALIASES_FILE}
|
||||
|
||||
-if [ "${INFO_DIRECTORY}" != "" ] ; then
|
||||
- INFO_DIRECTORY=${DESTDIR}${INFO_DIRECTORY}
|
||||
-fi
|
||||
+INFO_DIRECTORY=${DESTDIR}${INFO_DIRECTORY}
|
||||
|
||||
# Overrides of other things
|
||||
case "$inst_uid" in ?*) INST_UID="$inst_uid";; esac
|
||||
@@ -218,8 +221,7 @@
|
||||
|
||||
if [ $name = exim${EXE} ]; then
|
||||
exim="./exim -bV -C /dev/null"
|
||||
- version=exim-`$exim 2>/dev/null | \
|
||||
- awk '/Exim version/ { OFS=""; print $3,"-",substr($4,2,length($4)-1) }'`${EXE}
|
||||
+ version=exim
|
||||
|
||||
if [ "${version}" = "exim-${EXE}" ]; then
|
||||
echo $com ""
|
||||
@@ -384,9 +386,8 @@
|
||||
echo $com ' ' ${CONFIGURE_FILE}
|
||||
echo $com Therefore, skipping automatic installation.
|
||||
|
||||
-elif [ ! -f ${CONFIGURE_FILE} ]; then
|
||||
- echo $com Installing default configuration in ${CONFIGURE_FILE}
|
||||
- echo $com because there is no existing configuration file.
|
||||
+else
|
||||
+ echo $com Installing default configuration in ${CONFIGURE_FILE}.sample
|
||||
if [ "${SYSTEM_ALIASES_FILE}" = "" ] ; then
|
||||
SYSTEM_ALIASES_FILE=/etc/aliases
|
||||
echo $com This configuration has system aliases in ${SYSTEM_ALIASES_FILE}.
|
||||
@@ -396,8 +397,8 @@
|
||||
${real} ${MKDIR} -p `${DIRNAME} ${CONFIGURE_FILE}`
|
||||
|
||||
echo sed -e '\\'
|
||||
- echo " \"/SYSTEM_ALIASES_FILE/ s'SYSTEM_ALIASES_FILE'${ACTUAL_SYSTEM_ALIASES_FILE}'\"" '\\'
|
||||
- echo " ../src/configure.default > \${CONFIGURE_FILE}"
|
||||
+ echo " \"/SYSTEM_ALIASES_FILE/ s'SYSTEM_ALIASES_FILE'/etc/aliases'\"" '\\'
|
||||
+ echo " ../src/configure.default > \${CONFIGURE_FILE}.sample"
|
||||
|
||||
# I can't find a way of writing this using the ${real} feature because
|
||||
# it seems that the output redirection always happens, even when -n was
|
||||
@@ -405,8 +406,8 @@
|
||||
|
||||
if [ "$real" = "" ] ; then
|
||||
sed -e \
|
||||
- "/SYSTEM_ALIASES_FILE/ s'SYSTEM_ALIASES_FILE'${ACTUAL_SYSTEM_ALIASES_FILE}'" \
|
||||
- ../src/configure.default > ${CONFIGURE_FILE}
|
||||
+ "/SYSTEM_ALIASES_FILE/ s'SYSTEM_ALIASES_FILE'/etc/aliases'" \
|
||||
+ ../src/configure.default > ${CONFIGURE_FILE}.sample
|
||||
else
|
||||
true
|
||||
fi
|
||||
@@ -416,24 +417,22 @@
|
||||
echo $com "*** Exim installation ${ver}failed ***"
|
||||
exit 1
|
||||
fi
|
||||
- if [ ! -f ${SYSTEM_ALIASES_FILE} ]; then
|
||||
- echo $com '****'
|
||||
- echo $com Installing a dummy ${SYSTEM_ALIASES_FILE} file because you do not have
|
||||
- echo $com one, and the default configuration requires it. You should
|
||||
- echo $com edit ${SYSTEM_ALIASES_FILE} and at least create an alias for postmaster.
|
||||
- echo $com '***'
|
||||
- echo ${CP} ../src/aliases.default ${SYSTEM_ALIASES_FILE}
|
||||
- ${real} ${CP} ../src/aliases.default ${SYSTEM_ALIASES_FILE}
|
||||
- fi
|
||||
+# if [ ! -f ${SYSTEM_ALIASES_FILE} ]; then
|
||||
+# echo $com '****'
|
||||
+# echo $com Installing a dummy ${SYSTEM_ALIASES_FILE} file because you do not have
|
||||
+# echo $com one, and the default configuration requires it. You should
|
||||
+# echo $com edit ${SYSTEM_ALIASES_FILE} and at least create an alias for postmaster.
|
||||
+# echo $com '***'
|
||||
+# echo ${CP} ../src/aliases.default ${SYSTEM_ALIASES_FILE}
|
||||
+# ${real} ${CP} ../src/aliases.default ${SYSTEM_ALIASES_FILE}
|
||||
+# fi
|
||||
|
||||
-else
|
||||
- echo $com Configuration file ${CONFIGURE_FILE} already exists
|
||||
fi
|
||||
|
||||
# Install info files if the directory is defined and the Texinfo
|
||||
# source documentation is present.
|
||||
|
||||
-if [ "${INFO_DIRECTORY}" != "" -a -f ../doc/spec.texinfo ] ; then
|
||||
+if [ "$do_info" != "no" -a -f ../doc/spec.texinfo ] ; then
|
||||
echo $com ""
|
||||
if [ ! -d "${INFO_DIRECTORY}" ] ; then
|
||||
echo mkdir -p ${INFO_DIRECTORY}
|
||||
10
mail/exim/files/patch-src-lookups-mysql.c
Normal file
10
mail/exim/files/patch-src-lookups-mysql.c
Normal file
@ -0,0 +1,10 @@
|
||||
--- src/lookups/mysql.c.orig 2017-03-05 00:21:35.000000000 +0300
|
||||
+++ src/lookups/mysql.c 2017-08-15 01:12:26.508519000 +0300
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "lf_functions.h"
|
||||
|
||||
#include <mysql.h> /* The system header */
|
||||
+#include <mysql_version.h>
|
||||
|
||||
|
||||
/* Structure and anchor for caching connections. */
|
||||
146
mail/exim/files/patch-src__EDITME
Normal file
146
mail/exim/files/patch-src__EDITME
Normal file
@ -0,0 +1,146 @@
|
||||
--- src/EDITME.orig 2025-12-14 13:38:51.000000000 +0100
|
||||
+++ src/EDITME 2025-12-18 03:31:28.070641000 +0100
|
||||
@@ -104,7 +104,7 @@
|
||||
# /usr/local/sbin. The installation script will try to create this directory,
|
||||
# and any superior directories, if they do not exist.
|
||||
|
||||
-BIN_DIRECTORY=/usr/exim/bin
|
||||
+BIN_DIRECTORY=XX_PREFIX_XX/sbin
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@@ -120,7 +120,7 @@
|
||||
# don't exist. It will also install a default runtime configuration if this
|
||||
# file does not exist.
|
||||
|
||||
-CONFIGURE_FILE=/usr/exim/configure
|
||||
+CONFIGURE_FILE=XX_CONFIG_FILE_PATH_XX
|
||||
|
||||
# It is possible to specify a colon-separated list of files for CONFIGURE_FILE.
|
||||
# In this case, Exim will use the first of them that exists when it is run.
|
||||
@@ -137,7 +137,7 @@
|
||||
# deliveries. (Local deliveries run as various non-root users, typically as the
|
||||
# owner of a local mailbox.) Specifying these values as root is not supported.
|
||||
|
||||
-EXIM_USER=
|
||||
+EXIM_USER=ref:XX_EXIM_USER_XX
|
||||
|
||||
# If you specify EXIM_USER as a name, this is looked up at build time, and the
|
||||
# uid number is built into the binary. However, you can specify that this
|
||||
@@ -158,7 +158,7 @@
|
||||
# for EXIM_USER (e.g. EXIM_USER=exim), you don't need to set EXIM_GROUP unless
|
||||
# you want to use a group other than the default group for the given user.
|
||||
|
||||
-# EXIM_GROUP=
|
||||
+EXIM_GROUP=ref:XX_EXIM_GROUP_XX
|
||||
|
||||
# Many sites define a user called "exim", with an appropriate default group,
|
||||
# and use
|
||||
@@ -476,6 +476,7 @@
|
||||
# LDAP_LIB_TYPE=OPENLDAP2
|
||||
# LDAP_LIB_TYPE=NETSCAPE
|
||||
# LDAP_LIB_TYPE=SOLARIS
|
||||
+LDAP_LIB_TYPE=XX_LDAP_TYPE_XX
|
||||
|
||||
# If you don't set any of these, Exim assumes the original University of
|
||||
# Michigan (OpenLDAP 1) library.
|
||||
@@ -524,9 +525,10 @@
|
||||
# LSEARCH, DSEARCH & CDB have no external library needs.
|
||||
# DNSDB needs the resolver library which the core uses anyway.
|
||||
|
||||
-# LOOKUP_INCLUDE=-I /usr/local/ldap/include -I /usr/local/mysql/include -I /usr/local/pgsql/include
|
||||
-# LOOKUP_INCLUDE +=-I /usr/local/include
|
||||
-# LOOKUP_LIBS=-L/usr/local/lib -lldap -llber -lmysqlclient -lpq -lgds -lsqlite3 -llmdb
|
||||
+INCLUDE=-IXX_LOCALBASE_XX/include XX_DB_INCLUDES_XX XX_LMDB_INCLUDES_XX
|
||||
+LOOKUP_INCLUDE=XX_MYSQL_INCLUDE_XX XX_PGSQL_INCLUDE_XX XX_LDAP_INCLUDE_XX
|
||||
+LOOKUP_LIBS=XX_MYSQL_LIBS_XX XX_PGSQL_LIBS_XX XX_LDAP_LIBS_XX XX_LMDB_LIBS_XX
|
||||
+DBMLIB=XX_DB_LIBS_XX
|
||||
|
||||
# LOOKUP_LIBS=-L/usr/local/lib -lldap -llber
|
||||
# Some platforms may need this for LOOKUP_NIS:
|
||||
@@ -715,6 +717,7 @@
|
||||
# Uncomment the following line to add XCLIENT support
|
||||
# EXPERIMENTAL_XCLIENT=yes
|
||||
|
||||
+# EXPERIMENTAL_DCC=yes
|
||||
###############################################################################
|
||||
# THESE ARE THINGS YOU MIGHT WANT TO SPECIFY #
|
||||
###############################################################################
|
||||
@@ -809,6 +812,7 @@
|
||||
|
||||
# ALT_CONFIG_PREFIX=/some/directory/
|
||||
# ALT_CONFIG_PREFIX=/some/directory/exim.conf-
|
||||
+ALT_CONFIG_PREFIX=XX_ALT_CONFIG_PREFIX_XX
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@@ -917,7 +921,7 @@
|
||||
# one that is set in the headers_charset option. The default setting is
|
||||
# defined by this setting:
|
||||
|
||||
-HEADERS_CHARSET="ISO-8859-1"
|
||||
+HEADERS_CHARSET="XX_DEFAULT_CHARSET_XX"
|
||||
|
||||
# If you are going to make use of $header_xxx expansions in your configuration
|
||||
# file, or if your users are going to use them in filter files, and the normal
|
||||
@@ -950,6 +954,8 @@
|
||||
#
|
||||
# but of course there may need to be other things in CFLAGS and EXTRALIBS_EXIM
|
||||
# as well.
|
||||
+CFLAGS=XX_CFLAGS_XX XX_SPF_FLAGS_XX XX_SRS_FLAGS_XX XX_SQLITE_FLAGS_XX
|
||||
+EXTRALIBS=XX_PAM_LIBS_XX XX_ICONV_LIBS_XX XX_SPF_LIBS_XX XX_SRS_LIBS_XX XX_RADIUS_LIBS_XX XX_SQLITE_LIBS_XX XX_DMARC_LIBS_XX XX_REDIS_LIBS_XX XX_DYNAMIC_LDFLAGS_XX XX_IDN_LIBS_XX
|
||||
#
|
||||
# nb: FreeBSD as of 4.89 defines LIBICONV_PLUG to pick up the system iconv
|
||||
# more reliably. If you explicitly want the libiconv Port then as well
|
||||
@@ -1013,7 +1019,7 @@
|
||||
# Once you have done this, "make install" will build the info files and
|
||||
# install them in the directory you have defined.
|
||||
|
||||
-# INFO_DIRECTORY=/usr/share/info
|
||||
+INFO_DIRECTORY=XX_PREFIX_XX/share/info
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@@ -1026,7 +1032,7 @@
|
||||
# %s. This will be replaced by one of the strings "main", "panic", or "reject"
|
||||
# to form the final file names. Some installations may want something like this:
|
||||
|
||||
-# LOG_FILE_PATH=/var/log/exim_%slog
|
||||
+LOG_FILE_PATH=XX_LOG_FILE_PATH_XX
|
||||
|
||||
# which results in files with names /var/log/exim_mainlog, etc. The directory
|
||||
# in which the log files are placed must exist; Exim does not try to create
|
||||
@@ -1114,7 +1120,7 @@
|
||||
# that the local_scan API is made available by the linker. You may also need
|
||||
# to add -ldl to EXTRALIBS so that dlopen() is available to Exim.
|
||||
|
||||
-# EXPAND_DLFUNC=yes
|
||||
+EXPAND_DLFUNC=yes
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@@ -1180,7 +1186,15 @@
|
||||
# CFLAGS += -I/usr/local/include
|
||||
# LDFLAGS += -lspf2
|
||||
|
||||
+# IPv6 is coming. Exim has experimental support that has been tried out on
|
||||
+# one or two OS. See the file README.IPV6 for the current status of this
|
||||
+# support. Do not set this option unless you are working on IPv6 and know
|
||||
+# what you are doing.
|
||||
|
||||
+# HAVE_IPV6=YES
|
||||
+
|
||||
+
|
||||
+
|
||||
#------------------------------------------------------------------------------
|
||||
# Support for authentication via Radius is also available. The Exim support,
|
||||
# which is intended for use in conjunction with the SMTP AUTH facilities,
|
||||
@@ -1534,7 +1548,7 @@
|
||||
# (process id) to a file so that it can easily be identified. The path of the
|
||||
# file can be specified here. Some installations may want something like this:
|
||||
|
||||
-# PID_FILE_PATH=/var/lock/exim.pid
|
||||
+PID_FILE_PATH=/var/run/exim.pid
|
||||
|
||||
# If PID_FILE_PATH is not defined, Exim writes a file in its spool directory
|
||||
# using the name "exim-daemon.pid".
|
||||
42
mail/exim/files/patch-src__configure.default
Normal file
42
mail/exim/files/patch-src__configure.default
Normal file
@ -0,0 +1,42 @@
|
||||
--- src/configure.default.orig Wed May 5 12:08:35 2004
|
||||
+++ src/configure.default Wed May 5 15:09:40 2004
|
||||
@@ -153,6 +153,8 @@
|
||||
# as if it were a normal user. This isn't usually a problem, as most sites have
|
||||
# an alias for root that redirects such mail to a human administrator.
|
||||
|
||||
+exim_user = XX_EXIM_USER_XX
|
||||
+exim_group = XX_EXIM_GROUP_XX
|
||||
never_users = root
|
||||
|
||||
|
||||
@@ -412,7 +414,8 @@
|
||||
allow_fail
|
||||
allow_defer
|
||||
data = ${lookup{$local_part}lsearch{SYSTEM_ALIASES_FILE}}
|
||||
-# user = exim
|
||||
+ user = XX_EXIM_USER_XX
|
||||
+ group = XX_EXIM_GROUP_XX
|
||||
file_transport = address_file
|
||||
pipe_transport = address_pipe
|
||||
|
||||
@@ -454,6 +457,7 @@
|
||||
file_transport = address_file
|
||||
pipe_transport = address_pipe
|
||||
reply_transport = address_reply
|
||||
+ condition = ${if exists{$home/.forward} {yes} {no} }
|
||||
|
||||
|
||||
# This router matches local user mailboxes. If the router fails, the error
|
||||
@@ -506,8 +510,10 @@
|
||||
delivery_date_add
|
||||
envelope_to_add
|
||||
return_path_add
|
||||
-# group = mail
|
||||
-# mode = 0660
|
||||
+ group = XX_EXIM_GROUP_XX
|
||||
+ user = $local_part
|
||||
+ mode = 0660
|
||||
+ no_mode_fail_narrower
|
||||
|
||||
|
||||
# This transport is used for handling pipe deliveries generated by alias or
|
||||
92
mail/exim/files/patch-src_miscmods_radius.c
Normal file
92
mail/exim/files/patch-src_miscmods_radius.c
Normal file
@ -0,0 +1,92 @@
|
||||
--- src/miscmods/radius.c.orig 2025-12-18 03:23:48.333630000 +0100
|
||||
+++ src/miscmods/radius.c 2025-12-18 03:28:22.528909000 +0100
|
||||
@@ -104,37 +104,37 @@
|
||||
|
||||
#ifdef RADIUS_LIB_RADIUSCLIENT
|
||||
if (rc_read_config(RADIUS_CONFIG_FILE) != 0)
|
||||
- *errptr = string_sprintf("RADIUS: can't open %s", RADIUS_CONFIG_FILE);
|
||||
+ *errptr = string_sprintf("%s","RADIUS: can't open %s", RADIUS_CONFIG_FILE);
|
||||
|
||||
else if (rc_read_dictionary(rc_conf_str("dictionary")) != 0)
|
||||
- *errptr = US"RADIUS: can't read dictionary";
|
||||
+ *errptr = string_sprintf("%","RADIUS: can't read dictionary");
|
||||
|
||||
else if (!rc_avpair_add(&send, PW_USER_NAME, user, 0))
|
||||
- *errptr = US"RADIUS: add user name failed";
|
||||
+ *errptr = string_sprintf("%","RADIUS: add user name failed");
|
||||
|
||||
else if (!rc_avpair_add(&send, PW_USER_PASSWORD, CS radius_args, 0))
|
||||
- *errptr = US"RADIUS: add password failed");
|
||||
+ *errptr = string_sprintf("%","RADIUS: add password failed");
|
||||
|
||||
else if (!rc_avpair_add(&send, PW_SERVICE_TYPE, &service, 0))
|
||||
- *errptr = US"RADIUS: add service type failed";
|
||||
+ *errptr = string_sprintf("%","RADIUS: add service type failed");
|
||||
|
||||
#else /* RADIUS_LIB_RADIUSCLIENT unset => RADIUS_LIB_RADIUSCLIENT2 */
|
||||
|
||||
if (!(h = rc_read_config(RADIUS_CONFIG_FILE)))
|
||||
- *errptr = string_sprintf("RADIUS: can't open %s", RADIUS_CONFIG_FILE);
|
||||
+ *errptr = string_sprintf("%","RADIUS: can't open %s", RADIUS_CONFIG_FILE);
|
||||
|
||||
else if (rc_read_dictionary(h, rc_conf_str(h, "dictionary")) != 0)
|
||||
- *errptr = US"RADIUS: can't read dictionary";
|
||||
+ *errptr = string_sprintf("%","RADIUS: can't read dictionary");
|
||||
|
||||
else if (!rc_avpair_add(h, &send, PW_USER_NAME, user, Ustrlen(user), 0))
|
||||
- *errptr = US"RADIUS: add user name failed";
|
||||
+ *errptr = string_sprintf("%","RADIUS: add user name failed");
|
||||
|
||||
else if (!rc_avpair_add(h, &send, PW_USER_PASSWORD, CS radius_args,
|
||||
Ustrlen(radius_args), 0))
|
||||
- *errptr = US"RADIUS: add password failed";
|
||||
+ *errptr = string_sprintf("%","RADIUS: add password failed");
|
||||
|
||||
else if (!rc_avpair_add(h, &send, PW_SERVICE_TYPE, &service, 0, 0))
|
||||
- *errptr = US"RADIUS: add service type failed";
|
||||
+ *errptr = string_sprintf("%","RADIUS: add service type failed");
|
||||
|
||||
#endif /* RADIUS_LIB_RADIUSCLIENT */
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
|
||||
case BADRESP_RC:
|
||||
default:
|
||||
- *errptr = string_sprintf("RADIUS: unexpected response (%d)", result);
|
||||
+ *errptr = string_sprintf("%s","RADIUS: unexpected response (%d)", result);
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
|
||||
if (!(h = rad_auth_open()))
|
||||
{
|
||||
- *errptr = string_sprintf("RADIUS: can't initialise libradius");
|
||||
+ *errptr = string_sprintf("%s","RADIUS: can't initialise libradius");
|
||||
return ERROR;
|
||||
}
|
||||
if (rad_config(h, RADIUS_CONFIG_FILE) != 0 ||
|
||||
@@ -187,7 +187,7 @@
|
||||
rad_put_int(h, RAD_SERVICE_TYPE, RAD_AUTHENTICATE_ONLY) != 0 ||
|
||||
rad_put_string(h, RAD_NAS_IDENTIFIER, CS primary_hostname) != 0)
|
||||
{
|
||||
- *errptr = string_sprintf("RADIUS: %s", rad_strerror(h));
|
||||
+ *errptr = string_sprintf("%s","RADIUS: %s", rad_strerror(h));
|
||||
result = ERROR;
|
||||
}
|
||||
else
|
||||
@@ -202,12 +202,12 @@
|
||||
break;
|
||||
|
||||
case -1:
|
||||
- *errptr = string_sprintf("RADIUS: %s", rad_strerror(h));
|
||||
+ *errptr = string_sprintf("%s","RADIUS: %s", rad_strerror(h));
|
||||
result = ERROR;
|
||||
break;
|
||||
|
||||
default:
|
||||
- *errptr = string_sprintf("RADIUS: unexpected response (%d)", result);
|
||||
+ *errptr = string_sprintf("%s","RADIUS: unexpected response (%d)", result);
|
||||
result= ERROR;
|
||||
break;
|
||||
}
|
||||
20
mail/exim/files/patch-sys-file-include
Normal file
20
mail/exim/files/patch-sys-file-include
Normal file
@ -0,0 +1,20 @@
|
||||
--- src/exim.h.orig 2017-02-14 19:13:41.381402389 +0200
|
||||
+++ src/exim.h 2017-02-14 19:13:53.330916377 +0200
|
||||
@@ -129,7 +129,6 @@
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
-#include <sys/file.h>
|
||||
#include <dirent.h>
|
||||
#include <netdb.h>
|
||||
#ifndef NO_POLL_H
|
||||
--- src/exim_lock.c.orig 2017-02-14 19:21:09.709389008 +0200
|
||||
+++ src/exim_lock.c 2017-02-14 19:21:23.994407794 +0200
|
||||
@@ -27,7 +27,6 @@
|
||||
#include <utime.h>
|
||||
#include <sys/utsname.h>
|
||||
#include <sys/stat.h>
|
||||
-#include <sys/file.h>
|
||||
#include <pwd.h>
|
||||
|
||||
/* Not all systems have flock() available. Those that do must define LOCK_SH
|
||||
132
mail/exim/options
Normal file
132
mail/exim/options
Normal file
@ -0,0 +1,132 @@
|
||||
OPTIONS_DEFINE+= ALT_CONFIG_PREFIX \
|
||||
CONTENT_SCAN \
|
||||
DAEMON \
|
||||
DANE \
|
||||
DEBUG \
|
||||
DISABLE_D_OPT \
|
||||
DKIM \
|
||||
SPF \
|
||||
DNSSEC \
|
||||
DOCS \
|
||||
EMBEDDED_PERL \
|
||||
EXIMON \
|
||||
ICONV \
|
||||
IPV6 \
|
||||
LISTMATCH_RHS \
|
||||
LMTP \
|
||||
OCSP \
|
||||
PRDR \
|
||||
READLINE \
|
||||
SUID \
|
||||
WISHLIST \
|
||||
EVENT \
|
||||
PROXY \
|
||||
SOCKS \
|
||||
INTERNATIONAL
|
||||
|
||||
OPTIONS_DEFAULT+= AUTH_CRAM_MD5 \
|
||||
AUTH_DOVECOT \
|
||||
AUTH_PLAINTEXT \
|
||||
AUTH_SPA \
|
||||
CDB \
|
||||
CONTENT_SCAN \
|
||||
DAEMON \
|
||||
DISABLE_D_OPT \
|
||||
DKIM \
|
||||
DMARC \
|
||||
DNSDB \
|
||||
DNSSEC \
|
||||
DSEARCH \
|
||||
EMBEDDED_PERL \
|
||||
EVENT \
|
||||
ICONV \
|
||||
INTERNATIONAL \
|
||||
LMTP \
|
||||
LSEARCH \
|
||||
MAILDIR \
|
||||
MAILSTORE \
|
||||
MBX \
|
||||
OCSP \
|
||||
PAM \
|
||||
PASSWD \
|
||||
PRDR \
|
||||
SPF \
|
||||
SUID \
|
||||
TLS
|
||||
|
||||
OPTIONS_RADIO_TLS= TLS GNUTLS
|
||||
TLS_DESC= TLS support
|
||||
OPTIONS_RADIO_LS= SA_EXIM
|
||||
LS_DESC= Local scan patch
|
||||
OPTIONS_RADIO_SRSR= SRS OLD_SRS
|
||||
SRSR_DESC= Sender Rewriting Scheme
|
||||
OLD_SRS_DESC= Enable Alternative Sender Rewriting Scheme
|
||||
OPTIONS_RADIO= TLS LS SRSR
|
||||
|
||||
OPTIONS_GROUP_AUTH= AUTH_CRAM_MD5 AUTH_DOVECOT AUTH_PLAINTEXT AUTH_RADIUS AUTH_SASL AUTH_SPA AUTH_TLS SASLAUTHD PAM PASSWD
|
||||
AUTH_DESC= SMTP Authorization
|
||||
OPTIONS_GROUP_LOOKUP= CDB BDB DNSDB DSEARCH LSEARCH MYSQL NIS OPENLDAP PGSQL REDIS SQLITE
|
||||
LOOKUP_DESC= Lookup support
|
||||
OPTIONS_GROUP_STORAGE= MAILDIR MAILSTORE MBX
|
||||
STORAGE_DESC= Supported storage formats
|
||||
OPTIONS_GROUP_EXPERIMENTAL= CERTNAMES DCC DMARC DSN ARC LMDB QUEUEFILE
|
||||
EXPERIMENTAL_DESC= Experimental options
|
||||
OPTIONS_GROUP= AUTH LOOKUP STORAGE EXPERIMENTAL
|
||||
|
||||
ALT_CONFIG_PREFIX_DESC= Restrict the set of configuration files
|
||||
ARC_DESC= Enable experimental ARC support
|
||||
AUTH_CRAM_MD5_DESC= Enable CRAM-MD5 authentication mechanisms
|
||||
AUTH_DOVECOT_DESC= Enable Dovecot authentication mechanisms
|
||||
AUTH_PLAINTEXT_DESC= Enable plaintext authentication
|
||||
AUTH_RADIUS_DESC= Enable radius (RFC 2865) authentication
|
||||
AUTH_SASL_DESC= Enable use of Cyrus SASL auth library
|
||||
AUTH_SPA_DESC= Enable Secure Password Authentication
|
||||
AUTH_TLS_DESC= Enable TLS client certificate authentication
|
||||
CERTNAMES_DESC= Check certiticates ownership
|
||||
BDB_DESC= Enable Berkeley DB lookups
|
||||
CDB_DESC= Enable CDB-style lookups
|
||||
CONTENT_SCAN_DESC= Enable exiscan email content scanner
|
||||
DAEMON_DESC= Install scripts to run as a daemon
|
||||
DANE_DESC= Enable experimental DANE support
|
||||
DCC_DESC= Enable DCC at ACL support via dccifd
|
||||
DISABLE_D_OPT_DESC= Disable macros overrides using option -D
|
||||
DKIM_DESC= Enable support for DKIM
|
||||
DMARC_DESC= Enable DMARC support
|
||||
DNSDB_DESC= Enable DNS-style lookups
|
||||
DNSSEC_DESC= Enable DNSSEC validation
|
||||
DSEARCH_DESC= Enable directory-list lookups
|
||||
DSN_DESC= Enable Delivery Status Notifications
|
||||
EMBEDDED_PERL_DESC= Enable embedded Perl interpreter
|
||||
EVENT_DESC= Messages events support (TPDA namely)
|
||||
EXIMON_DESC= Build eximon monitor (requires X libraries)
|
||||
ICONV_DESC= Enable header charset conversion
|
||||
INTERNATIONAL_DESC= Enable support for the transmission of UTF-8 envelope addresses
|
||||
LISTMATCH_RHS_DESC= Enable pre-4.77 behaviour for match_*
|
||||
LMDB_DESC= Enable LMDB lookups
|
||||
LMTP_DESC= RFC2033 SMTP over command pipe transport
|
||||
LSEARCH_DESC= Enable wildcarded-file lookups
|
||||
MAILDIR_DESC= Enable Maildir mailbox format
|
||||
MAILSTORE_DESC= Enable Mailstore mailbox format
|
||||
MBX_DESC= Enable MBX mailbox format
|
||||
MYSQL_DESC= Enable mysql lookups
|
||||
NIS_DESC= Enable NIS-style lookups
|
||||
OPENLDAP_DESC= Enable LDAP lookups
|
||||
OCSP_DESC= Enable OCSP stapling
|
||||
QUEUEFILE_DESC= Enable queuefile transport
|
||||
PAM_DESC= Enable PAM authentication mechanisms
|
||||
PASSWD_DESC= Enable /etc/passwd lookups
|
||||
PGSQL_DESC= Enable postgresql lookups
|
||||
PRDR_DESC= Enable Per-Recipient-Data-Response support
|
||||
PROXY_DESC= Enable Experimental Proxy Protocol
|
||||
READLINE_DESC= Enable readline(3) library
|
||||
REDIS_DESC= Enable redis lookups
|
||||
SASLAUTHD_DESC= Enable use of Cyrus SASL auth daemon
|
||||
SA_EXIM_DESC= Build with Spamassassin local scan (BROKEN)
|
||||
SOCKS_DESC= Enable smtp transport via socks5 proxies
|
||||
SPF_DESC= Enable Sender Policy Framework checking
|
||||
SQLITE_DESC= Enable SQLite lookups
|
||||
SRS_DESC= Enable Sender Rewriting Scheme
|
||||
SUID_DESC= Install the exim binary suid root
|
||||
TAINTWARN_DESC= Allow insecure tainted data (pre-4.93 config style, deprecated)
|
||||
GNUTLS_DESC= Use GnuTLS instead of OpenSSL for TLS
|
||||
WISHLIST_DESC= Include the unsupported patches
|
||||
7
mail/exim/pkg-descr
Normal file
7
mail/exim/pkg-descr
Normal file
@ -0,0 +1,7 @@
|
||||
Exim is a mail transfer agent for Unix systems connected to the Internet.
|
||||
It is a monolithic MTA designed to be a command line compatible drop-in
|
||||
replacement for Sendmail.
|
||||
|
||||
Exim is an excellent mailer for an ISP, as its control and flexibility
|
||||
are very good and its requeueing and retry algorithms are very powerful.
|
||||
Exim's configuration syntax is well documented.
|
||||
57
mail/exim/pkg-message
Normal file
57
mail/exim/pkg-message
Normal file
@ -0,0 +1,57 @@
|
||||
[
|
||||
{ type: install
|
||||
message: <<EOM
|
||||
All installations having Exim set-uid root and using 'perl_startup' are
|
||||
vulnerable to a local privilege escalation. Any user who can start an
|
||||
instance of Exim (and this is normally *any* user) can gain root
|
||||
privileges. If you do not use 'perl_startup' you *should* be safe.
|
||||
|
||||
New options
|
||||
-----------
|
||||
|
||||
We had to introduce two new configuration options:
|
||||
|
||||
keep_environment =
|
||||
add_environment =
|
||||
|
||||
Both options are empty per default. That is, Exim cleans the complete
|
||||
environment on startup. This affects Exim itself and any subprocesses,
|
||||
as transports, that may call other programs via some alias mechanisms,
|
||||
as routers (queryprogram), lookups, and so on. This may affect used
|
||||
libraries (e.g. LDAP).
|
||||
|
||||
** THIS MAY BREAK your existing installation **
|
||||
|
||||
New behaviour
|
||||
-------------
|
||||
|
||||
Now Exim changes it's working directory to / right after startup,
|
||||
even before reading it's configuration. (Later Exim changes it's working
|
||||
directory to $spool_directory, as usual.)
|
||||
|
||||
Exim only accepts an absolute configuration file path now, when using
|
||||
the -C option.
|
||||
|
||||
EOM
|
||||
}
|
||||
{ type: upgrade
|
||||
maximum_version: 4.80
|
||||
message: <<EOM
|
||||
Upgrades to Exim 4.80
|
||||
=====================
|
||||
|
||||
Exim 4.80 contains some backward-incompatible changes.
|
||||
|
||||
OpenSSL default options have changed to be more secure, including
|
||||
disabling of SSLv2 by default (and adding support for TLSv1.1 and
|
||||
TLSv1.2 if using OpenSSL 1.0.1 or newer); GnuTLS has been updated to use
|
||||
a new API and stop honouring some options starting gnutls_*; users of
|
||||
LDAP can now distinguish "comma in data" from "multi-valued attribute".
|
||||
There are more details, covering more changes, in README.UPDATING.
|
||||
|
||||
We now enable accept_8bitmime by default, as the Exim maintainers agree
|
||||
with Dan Bernstein about the best way to deal with the 8BITMIME
|
||||
extension.
|
||||
EOM
|
||||
}
|
||||
]
|
||||
43
mail/exim/pkg-plist
Normal file
43
mail/exim/pkg-plist
Normal file
@ -0,0 +1,43 @@
|
||||
%%SUID%%@mode 4755
|
||||
%%EXIM%%sbin/exim
|
||||
%%SUID%%@mode
|
||||
%%EXIM%%sbin/exim_checkaccess
|
||||
%%EXIM%%sbin/exim_dbmbuild
|
||||
%%EXIM%%sbin/exim_dumpdb
|
||||
%%EXIM%%sbin/exim_fixdb
|
||||
%%EXIM%%sbin/exim_id_update
|
||||
%%EXIM%%sbin/exim_lock
|
||||
%%EXIM%%sbin/exim_msgdate
|
||||
%%EXIM%%sbin/exim_tidydb
|
||||
%%EXIM%%sbin/exicyclog
|
||||
%%EXIM%%sbin/exigrep
|
||||
%%EXIM%%sbin/eximstats
|
||||
%%EXIM%%sbin/exinext
|
||||
%%EXIM%%sbin/exipick
|
||||
%%EXIM%%sbin/exiqgrep
|
||||
%%EXIM%%sbin/exiqsumm
|
||||
%%EXIM%%sbin/exiwhat
|
||||
%%EXIM%%share/man/man8/exim.8.gz
|
||||
%%EXIMON%%sbin/eximon
|
||||
%%EXIMON%%sbin/eximon.bin
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/ACKNOWLEDGMENTS
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/NOTICE
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/README.UPDATING
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/ChangeLog
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/DANE-draft-notes
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/NewStuff
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/OptionLists.txt
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/POST-INSTALL-NOTES
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/POST-INSTALL-NOTES.clamd
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/README
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/README.SIEVE
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/dbm.discuss.txt
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/experimental-spec.txt
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/filter.txt
|
||||
%%EXIM%%%%PORTDOCS%%%%DOCSDIR%%/spec.txt
|
||||
%%EXIM%%%%PORTDOCS%%%%EXAMPLESDIR%%/transport-filter.pl
|
||||
%%EXIMDAEMON%%etc/periodic/daily/150.exim-tidydb
|
||||
%%EXIMDAEMON%%etc/periodic/daily/460.exim-mail-rejects
|
||||
@sample %%ETCDIR%%/configure.sample
|
||||
%%SA_EXIM%%@sample %%ETCDIR%%/sa-exim.conf.sample
|
||||
%%EXIM%%@dir(%%EXIM_USER%%,%%EXIM_GROUP%%,) /%%LOGDIR%%
|
||||
@ -1,11 +1,10 @@
|
||||
PORTNAME= freeipa-client
|
||||
DISTVERSION= 4.12.2
|
||||
PORTREVISION= 2
|
||||
DISTVERSION= 4.13.0
|
||||
CATEGORIES= net
|
||||
MASTER_SITES= https://releases.pagure.org/freeipa/
|
||||
DISTNAME= freeipa-${DISTVERSION}
|
||||
|
||||
MAINTAINER= kiwi@oav.net
|
||||
MAINTAINER= kiwi@FreeBSD.org
|
||||
COMMENT= FreeIPA Client tools
|
||||
WWW= https://www.freeipa.org/
|
||||
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
TIMESTAMP = 1725364321
|
||||
SHA256 (freeipa-4.12.2.tar.gz) = dc88f5404e7613eb6530d71142ef43a9f89019d59cdc6ec25b778413258c317f
|
||||
SIZE (freeipa-4.12.2.tar.gz) = 5699673
|
||||
TIMESTAMP = 1767596852
|
||||
SHA256 (freeipa-4.13.0.tar.gz) = e2fe3bec07d258ae25a558c23d4c12e7a47874f269850856f9217e8fd9b19080
|
||||
SIZE (freeipa-4.13.0.tar.gz) = 41442218
|
||||
|
||||
@ -1,70 +0,0 @@
|
||||
PORTNAME= check_mk_agent
|
||||
DISTVERSIONPREFIX= v
|
||||
DISTVERSION= 2.3.0p12
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= net-mgmt
|
||||
MASTER_SITES= https://raw.githubusercontent.com/Checkmk/checkmk/${DISTVERSIONFULL}/agents/:agent \
|
||||
https://raw.githubusercontent.com/Checkmk/checkmk/${DISTVERSIONFULL}/doc/agents/:doc \
|
||||
https://raw.githubusercontent.com/Checkmk/checkmk/${DISTVERSIONFULL}/:license
|
||||
DISTFILES= ${_CHECKMK_AGENT}:agent \
|
||||
README.FreeBSD:doc \
|
||||
COPYING:license
|
||||
DIST_SUBDIR= ${PORTNAME}-${PORTVERSION}
|
||||
|
||||
MAINTAINER= ivalentine@arizona.edu
|
||||
COMMENT= Checkmk agent to monitor *nix style systems
|
||||
WWW= https://checkmk.com/
|
||||
|
||||
LICENSE= GPLv2
|
||||
LICENSE_FILE= ${WRKSRC}/COPYING
|
||||
|
||||
RUN_DEPENDS= bash:shells/bash \
|
||||
ipmitool:sysutils/ipmitool \
|
||||
statgrab:devel/libstatgrab \
|
||||
wget:ftp/wget
|
||||
|
||||
USES= perl5 python:3.4+ shebangfix
|
||||
USE_PERL5= run
|
||||
|
||||
SHEBANG_FILES= ${_CHECKMK_AGENT}
|
||||
|
||||
EXTRACT_CMD= ${CP}
|
||||
EXTRACT_BEFORE_ARGS= # none
|
||||
EXTRACT_AFTER_ARGS= ${WRKSRC}
|
||||
|
||||
NO_ARCH= yes
|
||||
NO_BUILD= yes
|
||||
NO_TEST= yes
|
||||
|
||||
SUB_FILES= pkg-message
|
||||
SUB_LIST= PORTNAME=${PORTNAME}
|
||||
|
||||
NO_WRKSUBDIR= yes
|
||||
|
||||
PLIST_FILES= bin/${PORTNAME}
|
||||
|
||||
PORTDOCS= README.FreeBSD
|
||||
|
||||
OPTIONS_DEFINE= DOCS
|
||||
|
||||
_CHECKMK_AGENT= ${PORTNAME}.freebsd
|
||||
_CHECKMK_LIBDIR= ${PREFIX}/lib/check_mk_agent
|
||||
_CHECKMK_CONFDIR= ${PREFIX}/etc/check_mk
|
||||
|
||||
post-patch:
|
||||
@${REINPLACE_CMD} \
|
||||
-e 's|%%CHECKMK_LIBDIR%%|${_CHECKMK_LIBDIR}|' \
|
||||
-e 's|%%CHECKMK_CONFDIR%%|${_CHECKMK_CONFDIR}|' \
|
||||
-e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
|
||||
${WRKSRC}/${_CHECKMK_AGENT}
|
||||
|
||||
do-install:
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/${_CHECKMK_AGENT} \
|
||||
${STAGEDIR}${PREFIX}/bin/${PORTNAME}
|
||||
|
||||
post-install-DOCS-on:
|
||||
@${MKDIR} ${STAGEDIR}${DOCSDIR}
|
||||
${INSTALL_DATA} ${WRKSRC}/README.FreeBSD \
|
||||
${STAGEDIR}${DOCSDIR}
|
||||
|
||||
.include <bsd.port.mk>
|
||||
@ -1,7 +0,0 @@
|
||||
TIMESTAMP = 1723755628
|
||||
SHA256 (check_mk_agent-2.3.0.p12/check_mk_agent.freebsd) = e90757599339de56cab8f5059a1006d20f6bdfe9cb5cfd8460b95deee8039ffd
|
||||
SIZE (check_mk_agent-2.3.0.p12/check_mk_agent.freebsd) = 32404
|
||||
SHA256 (check_mk_agent-2.3.0.p12/README.FreeBSD) = 01094a2197ca0a3a43ac16098c0f800d2ee808db2fd9a2f133f4bad04062ec5f
|
||||
SIZE (check_mk_agent-2.3.0.p12/README.FreeBSD) = 1349
|
||||
SHA256 (check_mk_agent-2.3.0.p12/COPYING) = fbaab079995bef694ef8451f0f763b91b44e5b57b8e2a487d2a240b395187a7f
|
||||
SIZE (check_mk_agent-2.3.0.p12/COPYING) = 15174
|
||||
@ -1,35 +0,0 @@
|
||||
--- check_mk_agent.freebsd.orig 2024-09-09 09:16:10 UTC
|
||||
+++ check_mk_agent.freebsd
|
||||
@@ -118,8 +118,8 @@ set_variable_defaults() {
|
||||
|
||||
set_variable_defaults() {
|
||||
: "${MK_LIBDIR:=/usr/local/lib/check_mk_agent}"
|
||||
- : "${MK_CONFDIR:=/etc/check_mk}"
|
||||
- : "${MK_VARDIR:=/var/lib/check_mk_agent}"
|
||||
+ : "${MK_CONFDIR:=/usr/local/etc/check_mk}"
|
||||
+ : "${MK_VARDIR:=/var/db/check_mk_agent}"
|
||||
: "${MK_LOGDIR:=/var/log/check_mk_agent}"
|
||||
|
||||
# some 'booleans'
|
||||
@@ -597,6 +597,21 @@ run_purely_synchronous_sections() {
|
||||
|
||||
rm -f "${tmpfile}"
|
||||
fi
|
||||
+
|
||||
+ echo '<<<sysctl_mem>>>'
|
||||
+ _page_size=$( sysctl -n vm.stats.vm.v_page_size )
|
||||
+ echo "mem.cache $(( _page_size * $( sysctl -n vm.stats.vm.v_cache_count ) ))"
|
||||
+ echo "mem.free $(( _page_size * $( sysctl -n vm.stats.vm.v_free_count ) ))"
|
||||
+ echo "mem.total $( sysctl -n hw.physmem )"
|
||||
+ echo "mem.used $(( _page_size * ( $( sysctl -n vm.stats.vm.v_active_count ) + $( sysctl -n vm.stats.vm.v_wire_count ) ) ))"
|
||||
+ _swap_total=$( sysctl -n vm.swap_total )
|
||||
+ _swap_used=$(( $( swapinfo | tail -1 | awk '{print $3}' ) * 1024 ))
|
||||
+ echo "swap.free $(( _swap_total - _swap_used ))"
|
||||
+ echo "swap.total ${_swap_total}"
|
||||
+ echo "swap.used ${_swap_used}"
|
||||
+ unset -v _page_size
|
||||
+ unset -v _swap_total
|
||||
+ unset -v _swap_used
|
||||
}
|
||||
|
||||
#
|
||||
@ -1,16 +0,0 @@
|
||||
[
|
||||
{ type: install
|
||||
message: <<EOM
|
||||
Checkmk may collect additional data if the following ports are installed:
|
||||
- sysutils/megacli
|
||||
- mail/postfix
|
||||
- mail/qmail
|
||||
|
||||
See the code of the agent (%%PREFIX%%/bin/%%PORTNAME%%) for details.
|
||||
|
||||
Configuration instructions may be found in one of the following places:
|
||||
- %%DOCSDIR%%/README.FreeBSD
|
||||
- https://docs.checkmk.com/latest/en/agent_freebsd.html
|
||||
EOM
|
||||
}
|
||||
]
|
||||
@ -1,16 +0,0 @@
|
||||
For a monitoring system to receive more information from an endpoint
|
||||
other than that it is simply accessible, help is required from the
|
||||
target system. For example - how else can Checkmk know how full a
|
||||
server's storage volume is without that system somehow providing the
|
||||
information? The component that provides this information is always an
|
||||
active piece of software - namely a monitoring agent, usually just
|
||||
referred to as an agent. An agent collects data relevant to monitoring
|
||||
from a host at specified intervals and transmits that data to the
|
||||
monitoring server.
|
||||
|
||||
For servers and workstations, Checkmk provides its own agents, these
|
||||
are known as Checkmk agents. Checkmk agents are available for a wide
|
||||
variety of operating systems - from the commonplace such as Windows and
|
||||
Linux to exotics such as OpenVMS. The agents are passive and listen on
|
||||
TCP port 6556. Only on receiving a Checkmk server query will these
|
||||
agents be activated and respond with the required data.
|
||||
@ -1,240 +0,0 @@
|
||||
diff --git a/src/etc/poudriere.conf.sample b/src/etc/poudriere.conf.sample
|
||||
index c0ba896d927ca1700cc78e57cb953deec43b5484..337eb1827904daba5bf5df5790d005f6e7fa3de9 100644
|
||||
--- a/src/etc/poudriere.conf.sample
|
||||
+++ b/src/etc/poudriere.conf.sample
|
||||
@@ -383,3 +383,16 @@ DISTFILES_CACHE=/usr/ports/distfiles
|
||||
# be fetched.
|
||||
# Default: everything
|
||||
#PACKAGE_FETCH_WHITELIST="gcc* rust llvm*"
|
||||
+
|
||||
+# Have pkg create the repo such that each package is named with the short hash
|
||||
+# of its file contents in the package filename, with symlinks to the traditional
|
||||
+# package filenames. The packagesite.yaml file will point to the hashed version
|
||||
+# of these files. By using hashed pkg filenames, this allows users to lazily
|
||||
+# cache packages without conflicting with the existing packages, or serving stale
|
||||
+# packages from a cache. Once the packages are synced the much
|
||||
+# smaller meta files can then be synced. Allowing a near atomic update of the repo.
|
||||
+# On caching CDNs this means a need to purge 2-5 files instead of all pkgs that
|
||||
+# have been updated.
|
||||
+# The symlinks are only required for the local poudriere for resovling dependencies,
|
||||
+# they do not need to be uploaded to the CDN.
|
||||
+#PKG_HASH="no"
|
||||
diff --git a/src/man/poudriere-bulk.8 b/src/man/poudriere-bulk.8
|
||||
index 81cf698eeb6670048628d83e819fd84ad433be93..dac4eb3211a9fd0afe451779449693acade24430 100644
|
||||
--- a/src/man/poudriere-bulk.8
|
||||
+++ b/src/man/poudriere-bulk.8
|
||||
@@ -28,7 +28,7 @@
|
||||
.\"
|
||||
.\" Note: The date here should be updated whenever a non-trivial
|
||||
.\" change is made to the manual page.
|
||||
-.Dd July 5, 2022
|
||||
+.Dd September 26, 2022
|
||||
.Dt POUDRIERE-BULK 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@@ -38,7 +38,7 @@
|
||||
.Nm
|
||||
.Fl a
|
||||
.Fl j Ar name
|
||||
-.Op Fl CcFIikNnRrSTtvw
|
||||
+.Op Fl CcFHIikNnRrSTtvw
|
||||
.Op Fl B Ar name
|
||||
.Op Fl b Ar branch
|
||||
.Op Fl J Ar maxjobs Ns Op Cm \&: Ns Ar prebuildmaxjobs
|
||||
@@ -48,7 +48,7 @@
|
||||
.Nm
|
||||
.Fl f Ar file Op Fl f Ar file2 Ar ...
|
||||
.Fl j Ar name
|
||||
-.Op Fl CcFIikNnRrSTtvw
|
||||
+.Op Fl CcFHIikNnRrSTtvw
|
||||
.Op Fl B Ar name
|
||||
.Op Fl b Ar branch
|
||||
.Op Fl J Ar maxjobs Ns Op Cm \&: Ns Ar prebuildmaxjobs
|
||||
@@ -57,7 +57,7 @@
|
||||
.Op Fl z Ar set
|
||||
.Nm
|
||||
.Fl j Ar name
|
||||
-.Op Fl CcFIikNnRrSTtvw
|
||||
+.Op Fl CcFHIikNnRrSTtvw
|
||||
.Op Fl B Ar name
|
||||
.Op Fl b Ar branch
|
||||
.Op Fl J Ar maxjobs Ns Op Cm \&: Ns Ar prebuildmaxjobs
|
||||
@@ -232,6 +232,8 @@ Fetch only from the original
|
||||
Skip
|
||||
.Fx
|
||||
mirrors.
|
||||
+.It Fl H
|
||||
+Create a repository where the package filenames contain the short hash of the contents.
|
||||
.It Fl I
|
||||
Advanced interactive mode.
|
||||
.Pp
|
||||
diff --git a/src/share/poudriere/bulk.sh b/src/share/poudriere/bulk.sh
|
||||
index 3507ceb3548910c8aa688148614f1eadf72dd695..126b3becc6d050ede819bddebc0ae55b6712aaba 100755
|
||||
--- a/src/share/poudriere/bulk.sh
|
||||
+++ b/src/share/poudriere/bulk.sh
|
||||
@@ -47,6 +47,8 @@ Options:
|
||||
-f file. Implies -c for -a.
|
||||
-c -- Clean all the previously built binary packages and logs.
|
||||
-F -- Only fetch from original master_site (skip FreeBSD mirrors)
|
||||
+ -H -- Create a repository where the package filenames contain the
|
||||
+ short hash of the contents.
|
||||
-I -- Advanced Interactive mode. Leaves jail running with ports
|
||||
installed after test.
|
||||
-i -- Interactive mode. Enter jail for interactive testing and
|
||||
@@ -97,7 +99,7 @@ if [ $# -eq 0 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
-while getopts "ab:B:CcFf:iIj:J:knNO:p:RrSTtvwz:" FLAG; do
|
||||
+while getopts "ab:B:CcFf:HiIj:J:knNO:p:RrSTtvwz:" FLAG; do
|
||||
case "${FLAG}" in
|
||||
a)
|
||||
ALL=1
|
||||
@@ -126,6 +128,9 @@ while getopts "ab:B:CcFf:iIj:J:knNO:p:RrSTtvwz:" FLAG; do
|
||||
fi
|
||||
LISTPKGS="${LISTPKGS:+${LISTPKGS} }${OPTARG}"
|
||||
;;
|
||||
+ H)
|
||||
+ PKG_REPO_FLAGS="${PKG_REPO_FLAGS:+${PKG_REPO_FLAGS} }--hash --symlink"
|
||||
+ ;;
|
||||
I)
|
||||
INTERACTIVE_MODE=2
|
||||
;;
|
||||
diff --git a/src/share/poudriere/common.sh b/src/share/poudriere/common.sh
|
||||
index a4907362c76000bc81fb8b7dbd61918fb7426538..e52cfb432e15783e9d3b47a018d8d1735a70a5cf 100755
|
||||
--- a/src/share/poudriere/common.sh
|
||||
+++ b/src/share/poudriere/common.sh
|
||||
@@ -6473,6 +6473,10 @@ delete_old_pkg() {
|
||||
if [ -L "${pkg}" ]; then
|
||||
is_sym=1
|
||||
fi
|
||||
+ if [ -d "${pkg}" ] && [ "${pkgfile}" = "Hashed" ]; then
|
||||
+ msg_debug "Ignoring directory"
|
||||
+ return 0;
|
||||
+ fi
|
||||
if [ "${is_sym}" -eq 1 ] && [ ! -e "${pkg}" ]; then
|
||||
msg "Deleting ${COLOR_PORT}${pkgfile}${COLOR_RESET}: dead symlink"
|
||||
delete_pkg "${pkg}"
|
||||
@@ -9468,12 +9472,16 @@ clean_restricted() {
|
||||
}
|
||||
|
||||
build_repo() {
|
||||
- local origin pkg_repo_list_files
|
||||
+ local origin pkg_repo_list_files hashcmd
|
||||
|
||||
msg "Creating pkg repository"
|
||||
if [ ${DRY_RUN} -eq 1 ]; then
|
||||
return 0
|
||||
fi
|
||||
+ if [ ${PKG_HASH} != "no" ]; then
|
||||
+ hashcmd="--hash --symlink"
|
||||
+ PKG_REPO_FLAGS="${PKG_REPO_FLAGS:+${PKG_REPO_FLAGS} }$hashcmd"
|
||||
+ fi
|
||||
bset status "pkgrepo:"
|
||||
ensure_pkg_installed force_extract || \
|
||||
err 1 "Unable to extract pkg."
|
||||
@@ -9493,12 +9501,20 @@ build_repo() {
|
||||
install -m 0400 "${PKG_REPO_META_FILE}" \
|
||||
"${MASTERMNT:?}/tmp/pkgmeta"
|
||||
fi
|
||||
+
|
||||
+ # Remount rw
|
||||
+ # mount_nullfs does not support mount -u
|
||||
+ umount ${UMOUNT_NONBUSY} ${MASTERMNT}/packages || \
|
||||
+ umount -f ${MASTERMNT}/packages
|
||||
+ mount_packages
|
||||
+
|
||||
mkdir -p ${MASTERMNT}/tmp/packages
|
||||
if [ -n "${PKG_REPO_SIGNING_KEY}" ]; then
|
||||
msg "Signing repository with key: ${PKG_REPO_SIGNING_KEY}"
|
||||
install -m 0400 "${PKG_REPO_SIGNING_KEY}" \
|
||||
"${MASTERMNT:?}/tmp/repo.key"
|
||||
injail ${PKG_BIN:?} repo \
|
||||
+ ${PKG_REPO_FLAGS} \
|
||||
${pkg_repo_list_files:+"${pkg_repo_list_files}"} \
|
||||
-o /tmp/packages \
|
||||
${PKG_META} \
|
||||
@@ -9515,6 +9531,7 @@ build_repo() {
|
||||
# using SSH with DNSSEC as older hosts don't support
|
||||
# it.
|
||||
${MASTERMNT:?}${PKG_BIN:?} repo \
|
||||
+ ${PKG_REPO_FLAGS} \
|
||||
${pkg_repo_list_files:+"${pkg_repo_list_files}"} \
|
||||
-o "${MASTERMNT:?}/tmp/packages" ${PKG_META_MASTERMNT} \
|
||||
"${MASTERMNT:?}/packages" \
|
||||
@@ -9527,6 +9544,7 @@ build_repo() {
|
||||
;;
|
||||
esac
|
||||
JNETNAME="n" injail ${PKG_BIN:?} repo \
|
||||
+ ${PKG_REPO_FLAGS} \
|
||||
${pkg_repo_list_files:+"${pkg_repo_list_files}"} \
|
||||
-o /tmp/packages ${PKG_META} /packages \
|
||||
${SIGNING_COMMAND:+signing_command: ${SIGNING_COMMAND}} ||
|
||||
@@ -9542,6 +9560,11 @@ build_repo() {
|
||||
sign_pkg pubkey "${PACKAGES:?}/Latest/pkg.${PKG_EXT}"
|
||||
fi
|
||||
fi
|
||||
+
|
||||
+ # Remount ro
|
||||
+ umount ${UMOUNT_NONBUSY} ${MASTERMNT}/packages || \
|
||||
+ umount -f ${MASTERMNT}/packages
|
||||
+ mount_packages -o ro
|
||||
}
|
||||
|
||||
calculate_size_in_mb() {
|
||||
@@ -10109,6 +10132,7 @@ esac
|
||||
: ${FLAVOR_DEFAULT_ALL:=no}
|
||||
: ${NULLFS_PATHS:="/rescue /usr/share /usr/tests /usr/lib32"}
|
||||
: ${PACKAGE_FETCH_URL:="pkg+http://pkg.FreeBSD.org/\${ABI}"}
|
||||
+: ${PKG_HASH:=no}
|
||||
|
||||
: ${POUDRIERE_TMPDIR:=$(command mktemp -dt poudriere)}
|
||||
: ${SHASH_VAR_PATH_DEFAULT:=${POUDRIERE_TMPDIR}}
|
||||
diff --git a/src/share/poudriere/include/pkg.sh b/src/share/poudriere/include/pkg.sh
|
||||
index d4821400cb2ad20a6994a5d9145604f8081a98f6..360518520d6f1067531380ea9040ec2d1d4c1f33 100644
|
||||
--- a/src/share/poudriere/include/pkg.sh
|
||||
+++ b/src/share/poudriere/include/pkg.sh
|
||||
@@ -400,6 +400,10 @@ delete_pkg() {
|
||||
local pkg="$1"
|
||||
|
||||
clear_pkg_cache "${pkg}"
|
||||
+
|
||||
+ # If ${pkg} is a symlink, delete the target as well
|
||||
+ [ -L "${pkg}" ] && unlink $(realpath "${pkg}")
|
||||
+
|
||||
# Delete the package and the depsfile since this package is being deleted,
|
||||
# which will force it to be recreated
|
||||
unlink "${pkg}"
|
||||
@@ -417,6 +421,8 @@ delete_pkg_xargs() {
|
||||
# Delete the package and the depsfile since this package is being deleted,
|
||||
# which will force it to be recreated
|
||||
{
|
||||
+ # If ${pkg} is a symlink, delete the target as well
|
||||
+ [ -L "${pkg}" ] && echo $(realpath "${pkg}")
|
||||
echo "${pkg}"
|
||||
echo "${pkg_cache_dir}"
|
||||
} >> "${listfile}"
|
||||
diff --git a/src/share/poudriere/pkgclean.sh b/src/share/poudriere/pkgclean.sh
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
index fafc3c0a547335ddee32033bf9d0700ccf556fca..5458d3d04dd2e05727c1c79ce0ba0d73d3946665
|
||||
--- a/src/share/poudriere/pkgclean.sh
|
||||
+++ b/src/share/poudriere/pkgclean.sh
|
||||
@@ -289,6 +289,8 @@ check_should_delete_pkg() {
|
||||
*".${PKG_EXT}")
|
||||
if should_delete "${file}"; then
|
||||
echo "${file}" >> "${BADFILES_LIST:?}"
|
||||
+ # If the pkg is a symlink to a hashed package, remove the hashed version as well
|
||||
+ [ -L "${file}" ] && echo "$(realpath ${file})" >> ${BADFILES_LIST}
|
||||
fi
|
||||
;;
|
||||
*.txz)
|
||||
@@ -305,6 +307,8 @@ check_should_delete_pkg() {
|
||||
*)
|
||||
msg_verbose "Found incorrect format file: ${file}"
|
||||
echo "${file}" >> "${BADFILES_LIST:?}"
|
||||
+ # If the pkg is a symlink to a hashed package, remove the hashed version as well
|
||||
+ [ -L "${file}" ] && echo "$(realpath ${file})" >> ${BADFILES_LIST}
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@ -1,93 +0,0 @@
|
||||
PORTNAME= poudriere
|
||||
DISTVERSION= 3.4.99.20240826
|
||||
PORTREVISION= 0
|
||||
CATEGORIES= ports-mgmt
|
||||
MASTER_SITES= LOCAL/bdrewery/${PORTNAME}/ \
|
||||
http://mirror.shatow.net/freebsd/${PORTNAME}/ \
|
||||
GH
|
||||
PKGNAMESUFFIX= -devel
|
||||
|
||||
MAINTAINER= bdrewery@FreeBSD.org
|
||||
COMMENT= Port build and test system
|
||||
WWW= https://github.com/freebsd/poudriere/wiki
|
||||
|
||||
LICENSE= BSD2CLAUSE
|
||||
|
||||
CONFLICTS_INSTALL= poudriere
|
||||
|
||||
USE_GITHUB= yes
|
||||
GH_ACCOUNT= freebsd
|
||||
GH_TAGNAME= 3.3.0-1769-gbac754676d
|
||||
|
||||
GNU_CONFIGURE= yes
|
||||
ETCDIR= ${PREFIX}/etc/poudriere.d
|
||||
|
||||
OPTIONS_DEFINE= BASH MANIFESTS PORTCONFIG EXAMPLES QEMU ZSH
|
||||
OPTIONS_DEFAULT=BASH MANIFESTS PORTCONFIG ZSH
|
||||
OPTIONS_SUB= yes
|
||||
|
||||
MANIFESTS_DESC= Install manifests for jail creation
|
||||
MANIFESTS_RUN_DEPENDS+= freebsd-release-manifests>0:misc/freebsd-release-manifests
|
||||
|
||||
PORTCONFIG_DESC= Install portconfig for options command
|
||||
PORTCONFIG_RUN_DEPENDS= portconfig>0:ports-mgmt/portconfig
|
||||
|
||||
QEMU_DESC= Add qemu-user-static for non-x86 architectures
|
||||
QEMU_RUN_DEPENDS= qemu-user-static>0:emulators/qemu-user-static
|
||||
|
||||
|
||||
# gmake is not strictly needed but handles test jobs better
|
||||
TEST_DEPENDS= gmake>0:devel/gmake
|
||||
TEST_ENV= MAKE=gmake
|
||||
.if make(test)
|
||||
MAKE_CMD= gmake
|
||||
.endif
|
||||
TEST_TARGET= check
|
||||
TEST_ARGS= -s
|
||||
TEST_ARGS+= ${_MAKE_JOBS}
|
||||
# ccache passthrough helps for building pkg a few hundred times.
|
||||
# ccache not added as a dependency because it is only used if setup
|
||||
# and provided in the env already.
|
||||
# XXX: Passthrough local PKGREPOSITORY dir for fetch support
|
||||
ccache_vars= CCACHE_DIR_NON_ROOT_SAFE CCACHE_GROUP \
|
||||
CCACHE_GID CCACHE_STATIC_PREFIX CCACHE_TEMPDIR \
|
||||
CCACHE_DIR CCACHE_NLEVELS
|
||||
.for _cv in ${ccache_vars}
|
||||
. if !empty(${_cv})
|
||||
TEST_ENV+= ${_cv}=${${_cv}}
|
||||
. endif
|
||||
.endfor
|
||||
|
||||
.include <bsd.port.options.mk>
|
||||
|
||||
# rm -x support came in 10.0. A bundled rm is used if not supported in base.
|
||||
# While <10 is technically not supported in the Ports Tree, Poudriere
|
||||
# detects this and it being a package build tool it should still be
|
||||
# supported as a user may be installing this to build packages for upgrading
|
||||
# their system to a supported release.
|
||||
.if ${OSVERSION} < 1000000
|
||||
PLIST_SUB+= RM=""
|
||||
.else
|
||||
PLIST_SUB+= RM="@comment "
|
||||
.endif
|
||||
|
||||
post-patch:
|
||||
${REINPLACE_CMD} \
|
||||
-e "s,^\(POUDRIERE_VERSION\)=.*,\1='${PKGVERSION}'," \
|
||||
${WRKSRC}/src/bin/poudriere.in
|
||||
|
||||
post-install:
|
||||
${LN} -fs ${LOCALBASE}/share/freebsd/MANIFESTS \
|
||||
${STAGEDIR}${DATADIR}/MANIFESTS
|
||||
|
||||
post-install-BASH-on:
|
||||
@${MKDIR} ${STAGEDIR}${PREFIX}/share/bash-completion/completions/
|
||||
${INSTALL_DATA} ${WRKSRC}/completions/bash/poudriere \
|
||||
${STAGEDIR}${PREFIX}/share/bash-completion/completions/
|
||||
|
||||
post-install-ZSH-on:
|
||||
@${MKDIR} ${STAGEDIR}${PREFIX}/share/zsh/site-functions/
|
||||
${INSTALL_DATA} ${WRKSRC}/completions/zsh/_poudriere \
|
||||
${STAGEDIR}${PREFIX}/share/zsh/site-functions/
|
||||
|
||||
.include <bsd.port.mk>
|
||||
@ -1,3 +0,0 @@
|
||||
TIMESTAMP = 1724665577
|
||||
SHA256 (freebsd-poudriere-3.4.99.20240826-3.3.0-1769-gbac754676d_GH0.tar.gz) = 57f602eb6de964fa131992879971799bf1192d9bc9ccf0a37bd7925368993f48
|
||||
SIZE (freebsd-poudriere-3.4.99.20240826-3.3.0-1769-gbac754676d_GH0.tar.gz) = 5744773
|
||||
@ -1,19 +0,0 @@
|
||||
--- src/etc/poudriere.conf.sample.orig 2024-08-11 06:43:13 UTC
|
||||
+++ src/etc/poudriere.conf.sample
|
||||
@@ -385,3 +385,16 @@ DISTFILES_CACHE=/usr/ports/distfiles
|
||||
# be fetched.
|
||||
# Default: everything
|
||||
#PACKAGE_FETCH_WHITELIST="gcc* rust llvm*"
|
||||
+
|
||||
+# Have pkg create the repo such that each package is named with the short hash
|
||||
+# of its file contents in the package filename, with symlinks to the traditional
|
||||
+# package filenames. The packagesite.yaml file will point to the hashed version
|
||||
+# of these files. By using hashed pkg filenames, this allows users to lazily
|
||||
+# cache packages without conflicting with the existing packages, or serving stale
|
||||
+# packages from a cache. Once the packages are synced the much
|
||||
+# smaller meta files can then be synced. Allowing a near atomic update of the repo.
|
||||
+# On caching CDNs this means a need to purge 2-5 files instead of all pkgs that
|
||||
+# have been updated.
|
||||
+# The symlinks are only required for the local poudriere for resovling dependencies,
|
||||
+# they do not need to be uploaded to the CDN.
|
||||
+#PKG_HASH="no"
|
||||
@ -1,38 +0,0 @@
|
||||
--- src/man/poudriere-bulk.8.orig 2024-08-11 06:43:13 UTC
|
||||
+++ src/man/poudriere-bulk.8
|
||||
@@ -38,7 +38,7 @@
|
||||
.Nm
|
||||
.Fl a
|
||||
.Fl j Ar name
|
||||
-.Op Fl CcFIikNnRrSTtvw
|
||||
+.Op Fl CcFHIikNnRrSTtvw
|
||||
.Op Fl B Ar name
|
||||
.Op Fl b Ar branch
|
||||
.Op Fl J Ar maxjobs Ns Op Cm \&: Ns Ar prebuildmaxjobs
|
||||
@@ -48,7 +48,7 @@
|
||||
.Nm
|
||||
.Fl f Ar file Op Fl f Ar file2 Ar ...
|
||||
.Fl j Ar name
|
||||
-.Op Fl CcFIikNnRrSTtvw
|
||||
+.Op Fl CcFHIikNnRrSTtvw
|
||||
.Op Fl B Ar name
|
||||
.Op Fl b Ar branch
|
||||
.Op Fl J Ar maxjobs Ns Op Cm \&: Ns Ar prebuildmaxjobs
|
||||
@@ -57,7 +57,7 @@
|
||||
.Op Fl z Ar set
|
||||
.Nm
|
||||
.Fl j Ar name
|
||||
-.Op Fl CcFIikNnRrSTtvw
|
||||
+.Op Fl CcFHIikNnRrSTtvw
|
||||
.Op Fl B Ar name
|
||||
.Op Fl b Ar branch
|
||||
.Op Fl J Ar maxjobs Ns Op Cm \&: Ns Ar prebuildmaxjobs
|
||||
@@ -232,6 +232,8 @@ mirrors.
|
||||
Skip
|
||||
.Fx
|
||||
mirrors.
|
||||
+.It Fl H
|
||||
+Create a repository where the package filenames contain the short hash of the contents.
|
||||
.It Fl I
|
||||
Advanced interactive mode.
|
||||
.Pp
|
||||
@ -1,30 +0,0 @@
|
||||
--- src/share/poudriere/bulk.sh.orig 2024-08-11 06:43:13 UTC
|
||||
+++ src/share/poudriere/bulk.sh
|
||||
@@ -47,6 +47,8 @@ Options:
|
||||
-f file. Implies -c for -a.
|
||||
-c -- Clean all the previously built binary packages and logs.
|
||||
-F -- Only fetch from original master_site (skip FreeBSD mirrors)
|
||||
+ -H -- Create a repository where the package filenames contain the
|
||||
+ short hash of the contents.
|
||||
-I -- Advanced Interactive mode. Leaves jail running with ports
|
||||
installed after test.
|
||||
-i -- Interactive mode. Enter jail for interactive testing and
|
||||
@@ -101,7 +103,7 @@ fi
|
||||
usage
|
||||
fi
|
||||
|
||||
-while getopts "ab:B:CcFf:iIj:J:knNO:p:RrSTtvwz:" FLAG; do
|
||||
+while getopts "ab:B:CcFf:HiIj:J:knNO:p:RrSTtvwz:" FLAG; do
|
||||
case "${FLAG}" in
|
||||
a)
|
||||
ALL=1
|
||||
@@ -129,6 +131,9 @@ while getopts "ab:B:CcFf:iIj:J:knNO:p:RrSTtvwz:" FLAG;
|
||||
OPTARG="${SAVED_PWD}/${OPTARG}"
|
||||
fi
|
||||
LISTPKGS="${LISTPKGS:+${LISTPKGS} }${OPTARG}"
|
||||
+ ;;
|
||||
+ H)
|
||||
+ PKG_REPO_FLAGS="${PKG_REPO_FLAGS:+${PKG_REPO_FLAGS} }--hash --symlink"
|
||||
;;
|
||||
I)
|
||||
INTERACTIVE_MODE=2
|
||||
@ -1,88 +0,0 @@
|
||||
--- src/share/poudriere/common.sh.orig 2024-08-11 06:43:13 UTC
|
||||
+++ src/share/poudriere/common.sh
|
||||
@@ -6626,6 +6626,10 @@ _delete_old_pkg() {
|
||||
if [ -L "${pkg}" ]; then
|
||||
is_sym=1
|
||||
fi
|
||||
+ if [ -d "${pkg}" ] && [ "${pkgfile}" = "Hashed" ]; then
|
||||
+ msg_debug "Ignoring directory"
|
||||
+ return 0;
|
||||
+ fi
|
||||
if [ "${is_sym}" -eq 1 ] && [ ! -e "${pkg}" ]; then
|
||||
msg "Deleting ${COLOR_PORT}${pkgfile}${COLOR_RESET}: dead symlink"
|
||||
delete_pkg "${pkg}"
|
||||
@@ -9835,12 +9839,16 @@ build_repo() {
|
||||
}
|
||||
|
||||
build_repo() {
|
||||
- local origin pkg_repo_list_files
|
||||
+ local origin pkg_repo_list_files hashcmd
|
||||
|
||||
msg "Creating pkg repository"
|
||||
if [ ${DRY_RUN} -eq 1 ]; then
|
||||
return 0
|
||||
fi
|
||||
+ if [ ${PKG_HASH} != "no" ]; then
|
||||
+ hashcmd="--hash --symlink"
|
||||
+ PKG_REPO_FLAGS="${PKG_REPO_FLAGS:+${PKG_REPO_FLAGS} }$hashcmd"
|
||||
+ fi
|
||||
bset status "pkgrepo:"
|
||||
ensure_pkg_installed force_extract || \
|
||||
err 1 "Unable to extract pkg."
|
||||
@@ -9860,12 +9868,20 @@ build_repo() {
|
||||
install -m 0400 "${PKG_REPO_META_FILE}" \
|
||||
"${MASTERMNT:?}/tmp/pkgmeta"
|
||||
fi
|
||||
+
|
||||
+ # Remount rw
|
||||
+ # mount_nullfs does not support mount -u
|
||||
+ umount ${UMOUNT_NONBUSY} ${MASTERMNT}/packages || \
|
||||
+ umount -f ${MASTERMNT}/packages
|
||||
+ mount_packages
|
||||
+
|
||||
mkdir -p ${MASTERMNT}/tmp/packages
|
||||
if [ -n "${PKG_REPO_SIGNING_KEY}" ]; then
|
||||
msg "Signing repository with key: ${PKG_REPO_SIGNING_KEY}"
|
||||
install -m 0400 "${PKG_REPO_SIGNING_KEY}" \
|
||||
"${MASTERMNT:?}/tmp/repo.key"
|
||||
injail ${PKG_BIN:?} repo \
|
||||
+ ${PKG_REPO_FLAGS} \
|
||||
${pkg_repo_list_files:+"${pkg_repo_list_files}"} \
|
||||
-o /tmp/packages \
|
||||
${PKG_META} \
|
||||
@@ -9882,6 +9898,7 @@ build_repo() {
|
||||
# using SSH with DNSSEC as older hosts don't support
|
||||
# it.
|
||||
${MASTERMNT:?}${PKG_BIN:?} repo \
|
||||
+ ${PKG_REPO_FLAGS} \
|
||||
${pkg_repo_list_files:+"${pkg_repo_list_files}"} \
|
||||
-o "${MASTERMNT:?}/tmp/packages" ${PKG_META_MASTERMNT} \
|
||||
"${MASTERMNT:?}/packages" \
|
||||
@@ -9894,6 +9911,7 @@ build_repo() {
|
||||
;;
|
||||
esac
|
||||
JNETNAME="n" injail ${PKG_BIN:?} repo \
|
||||
+ ${PKG_REPO_FLAGS} \
|
||||
${pkg_repo_list_files:+"${pkg_repo_list_files}"} \
|
||||
-o /tmp/packages ${PKG_META} /packages \
|
||||
${SIGNING_COMMAND:+signing_command: ${SIGNING_COMMAND}} ||
|
||||
@@ -9909,6 +9927,11 @@ build_repo() {
|
||||
sign_pkg pubkey "${PACKAGES:?}/Latest/pkg.${PKG_EXT}"
|
||||
fi
|
||||
fi
|
||||
+
|
||||
+ # Remount ro
|
||||
+ umount ${UMOUNT_NONBUSY} ${MASTERMNT}/packages || \
|
||||
+ umount -f ${MASTERMNT}/packages
|
||||
+ mount_packages -o ro
|
||||
}
|
||||
|
||||
calculate_size_in_mb() {
|
||||
@@ -10477,6 +10500,7 @@ esac
|
||||
: ${FLAVOR_DEFAULT_ALL:=no}
|
||||
: ${NULLFS_PATHS:="/rescue /usr/share /usr/tests /usr/lib32"}
|
||||
: ${PACKAGE_FETCH_URL:="pkg+http://pkg.FreeBSD.org/\${ABI}"}
|
||||
+: ${PKG_HASH:=no}
|
||||
|
||||
: ${POUDRIERE_TMPDIR:=$(command mktemp -dt poudriere)}
|
||||
: ${SHASH_VAR_PATH_DEFAULT:=${POUDRIERE_TMPDIR}}
|
||||
@ -1,22 +0,0 @@
|
||||
--- src/share/poudriere/include/pkg.sh.orig 2024-08-11 06:43:13 UTC
|
||||
+++ src/share/poudriere/include/pkg.sh
|
||||
@@ -466,6 +466,10 @@ delete_pkg() {
|
||||
local pkg="$1"
|
||||
|
||||
clear_pkg_cache "${pkg}"
|
||||
+
|
||||
+ # If ${pkg} is a symlink, delete the target as well
|
||||
+ [ -L "${pkg}" ] && unlink $(realpath "${pkg}")
|
||||
+
|
||||
# Delete the package and the depsfile since this package is being deleted,
|
||||
# which will force it to be recreated
|
||||
unlink "${pkg}"
|
||||
@@ -483,6 +487,8 @@ delete_pkg_xargs() {
|
||||
# Delete the package and the depsfile since this package is being deleted,
|
||||
# which will force it to be recreated
|
||||
{
|
||||
+ # If ${pkg} is a symlink, delete the target as well
|
||||
+ [ -L "${pkg}" ] && echo $(realpath "${pkg}")
|
||||
echo "${pkg}"
|
||||
echo "${pkg_cache_dir}"
|
||||
} >> "${listfile}"
|
||||
@ -1,20 +0,0 @@
|
||||
--- src/share/poudriere/pkgclean.sh.orig 2024-08-11 06:43:13 UTC
|
||||
+++ src/share/poudriere/pkgclean.sh
|
||||
@@ -289,6 +289,8 @@ check_should_delete_pkg() {
|
||||
*".${PKG_EXT}")
|
||||
if should_delete "${file}"; then
|
||||
echo "${file}" >> "${BADFILES_LIST:?}"
|
||||
+ # If the pkg is a symlink to a hashed package, remove the hashed version as well
|
||||
+ [ -L "${file}" ] && echo "$(realpath ${file})" >> ${BADFILES_LIST}
|
||||
fi
|
||||
;;
|
||||
*.txz)
|
||||
@@ -305,6 +307,8 @@ check_should_delete_pkg() {
|
||||
*)
|
||||
msg_verbose "Found incorrect format file: ${file}"
|
||||
echo "${file}" >> "${BADFILES_LIST:?}"
|
||||
+ # If the pkg is a symlink to a hashed package, remove the hashed version as well
|
||||
+ [ -L "${file}" ] && echo "$(realpath ${file})" >> ${BADFILES_LIST}
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@ -1,3 +0,0 @@
|
||||
poudriere is a tool primarily designed to test package production on
|
||||
FreeBSD. However, most people will find it useful to bulk build ports
|
||||
for FreeBSD.
|
||||
@ -1,115 +0,0 @@
|
||||
bin/poudriere
|
||||
@sample etc/poudriere.conf.sample
|
||||
%%ETCDIR%%/hooks/bulk.sh.sample
|
||||
%%ETCDIR%%/hooks/pkgbuild.sh.sample
|
||||
@sample(0,0,0) etc/poudriered.conf.sample
|
||||
etc/rc.d/poudriered
|
||||
@comment libexec/poudriere/cachec
|
||||
libexec/poudriere/clock
|
||||
libexec/poudriere/cpdup
|
||||
libexec/poudriere/dirempty
|
||||
libexec/poudriere/dirwatch
|
||||
libexec/poudriere/locked_mkdir
|
||||
libexec/poudriere/nc
|
||||
libexec/poudriere/poudriered
|
||||
libexec/poudriere/ptsort
|
||||
libexec/poudriere/pwait
|
||||
libexec/poudriere/rename
|
||||
%%RM%%libexec/poudriere/rm
|
||||
libexec/poudriere/setsid
|
||||
libexec/poudriere/sh
|
||||
libexec/poudriere/timeout
|
||||
libexec/poudriere/timestamp
|
||||
%%BASH%%share/bash-completion/completions/poudriere
|
||||
share/man/man8/poudriere-bulk.8.gz
|
||||
share/man/man8/poudriere-distclean.8.gz
|
||||
share/man/man8/poudriere-image.8.gz
|
||||
share/man/man8/poudriere-jail.8.gz
|
||||
share/man/man8/poudriere-logclean.8.gz
|
||||
share/man/man8/poudriere-options.8.gz
|
||||
share/man/man8/poudriere-pkgclean.8.gz
|
||||
share/man/man8/poudriere-ports.8.gz
|
||||
share/man/man8/poudriere-queue.8.gz
|
||||
share/man/man8/poudriere-status.8.gz
|
||||
share/man/man8/poudriere-testport.8.gz
|
||||
share/man/man8/poudriere-version.8.gz
|
||||
share/man/man8/poudriere.8.gz
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/Caddyfile.sample
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/httpd.conf.sample
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/nginx.conf.sample
|
||||
%%DATADIR%%/MANIFESTS
|
||||
%%DATADIR%%/api.sh
|
||||
%%DATADIR%%/awk/dependency_loop.awk
|
||||
%%DATADIR%%/awk/file_cmp_reg.awk
|
||||
%%DATADIR%%/awk/humanize.awk
|
||||
%%DATADIR%%/awk/json.awk
|
||||
%%DATADIR%%/awk/json_jail.awk
|
||||
%%DATADIR%%/awk/json_top.awk
|
||||
%%DATADIR%%/awk/parse_MOVED.awk
|
||||
%%DATADIR%%/awk/processonelog.awk
|
||||
%%DATADIR%%/awk/processonelog2.awk
|
||||
%%DATADIR%%/awk/siginfo_buildtime.awk
|
||||
%%DATADIR%%/awk/unique_pkgnames_from_flavored_origins.awk
|
||||
%%DATADIR%%/bulk.sh
|
||||
%%DATADIR%%/common.sh
|
||||
%%DATADIR%%/daemon.sh
|
||||
%%DATADIR%%/distclean.sh
|
||||
%%DATADIR%%/foreachport.sh
|
||||
%%DATADIR%%/html/assets/DataTables-1.13.8/css/dataTables.bootstrap5.min.css
|
||||
%%DATADIR%%/html/assets/DataTables-1.13.8/images/sort_asc.png
|
||||
%%DATADIR%%/html/assets/DataTables-1.13.8/images/sort_asc_disabled.png
|
||||
%%DATADIR%%/html/assets/DataTables-1.13.8/images/sort_both.png
|
||||
%%DATADIR%%/html/assets/DataTables-1.13.8/images/sort_desc.png
|
||||
%%DATADIR%%/html/assets/DataTables-1.13.8/images/sort_desc_disabled.png
|
||||
%%DATADIR%%/html/assets/DataTables-1.13.8/js/dataTables.bootstrap5.min.js
|
||||
%%DATADIR%%/html/assets/DataTables-1.13.8/js/jquery.dataTables.min.js
|
||||
%%DATADIR%%/html/assets/bootstrap-5.3.2/css/bootstrap.min.css
|
||||
%%DATADIR%%/html/assets/bootstrap-5.3.2/js/bootstrap.bundle.min.js
|
||||
%%DATADIR%%/html/assets/favicon.png
|
||||
%%DATADIR%%/html/assets/jquery-3.7.1/jquery-3.7.1.js
|
||||
%%DATADIR%%/html/assets/jquery-3.7.1/jquery-3.7.1.min.js
|
||||
%%DATADIR%%/html/assets/jquery-3.7.1/jquery-3.7.1.min.map
|
||||
%%DATADIR%%/html/assets/jquery.dataTables.rowGrouping-1.2.9.js
|
||||
%%DATADIR%%/html/assets/logo-dark.png
|
||||
%%DATADIR%%/html/assets/logo-light.png
|
||||
%%DATADIR%%/html/assets/poudriere.js
|
||||
%%DATADIR%%/html/build.html
|
||||
%%DATADIR%%/html/index.html
|
||||
%%DATADIR%%/html/jail.html
|
||||
%%DATADIR%%/html/robots.txt
|
||||
%%DATADIR%%/image.sh
|
||||
%%DATADIR%%/image_dump.sh
|
||||
%%DATADIR%%/image_firmware.sh
|
||||
%%DATADIR%%/image_hybridiso.sh
|
||||
%%DATADIR%%/image_iso.sh
|
||||
%%DATADIR%%/image_mfs.sh
|
||||
%%DATADIR%%/image_rawdisk.sh
|
||||
%%DATADIR%%/image_tar.sh
|
||||
%%DATADIR%%/image_usb.sh
|
||||
%%DATADIR%%/image_zfs.sh
|
||||
%%DATADIR%%/image_zsnapshot.sh
|
||||
%%DATADIR%%/include/asserts.sh
|
||||
%%DATADIR%%/include/cache.sh
|
||||
%%DATADIR%%/include/colors.pre.sh
|
||||
%%DATADIR%%/include/colors.sh
|
||||
%%DATADIR%%/include/common.sh.dragonfly
|
||||
%%DATADIR%%/include/common.sh.freebsd
|
||||
%%DATADIR%%/include/display.sh
|
||||
%%DATADIR%%/include/fs.sh
|
||||
%%DATADIR%%/include/hash.sh
|
||||
%%DATADIR%%/include/html.sh
|
||||
%%DATADIR%%/include/parallel.sh
|
||||
%%DATADIR%%/include/pkg.sh
|
||||
%%DATADIR%%/include/pkgqueue.sh
|
||||
%%DATADIR%%/include/shared_hash.sh
|
||||
%%DATADIR%%/include/util.sh
|
||||
%%DATADIR%%/jail.sh
|
||||
%%DATADIR%%/logclean.sh
|
||||
%%DATADIR%%/options.sh
|
||||
%%DATADIR%%/pkgclean.sh
|
||||
%%DATADIR%%/ports.sh
|
||||
%%DATADIR%%/processonelog.sh
|
||||
%%DATADIR%%/queue.sh
|
||||
%%DATADIR%%/status.sh
|
||||
%%DATADIR%%/testport.sh
|
||||
%%ZSH%%share/zsh/site-functions/_poudriere
|
||||
60
security/ca_root_nss/Makefile
Normal file
60
security/ca_root_nss/Makefile
Normal file
@ -0,0 +1,60 @@
|
||||
PORTNAME= ca_root_nss
|
||||
PORTVERSION= ${VERSION_NSS}
|
||||
PORTREVISION= 4
|
||||
CATEGORIES= security
|
||||
MASTER_SITES= MOZILLA/security/nss/releases/${DISTNAME:tu:C/[-.]/_/g}_RTM/src
|
||||
DISTNAME= nss-${VERSION_NSS}${NSS_SUFFIX}
|
||||
|
||||
MAINTAINER= ports-secteam@FreeBSD.org
|
||||
COMMENT= Root certificate bundle from the Mozilla Project
|
||||
|
||||
LICENSE= MPL20
|
||||
LICENSE_FILE= ${WRKSRC}/COPYING
|
||||
|
||||
USES= perl5 ssl:build
|
||||
USE_PERL5= build
|
||||
|
||||
NO_ARCH= yes
|
||||
WRKSRC_SUBDIR= nss
|
||||
|
||||
OPTIONS_DEFINE= ETCSYMLINK
|
||||
OPTIONS_DEFAULT= ETCSYMLINK
|
||||
OPTIONS_EXCLUDE_FreeBSD_15= ETCSYMLINK
|
||||
OPTIONS_EXCLUDE_FreeBSD_16= ETCSYMLINK
|
||||
|
||||
OPTIONS_SUB= yes
|
||||
|
||||
ETCSYMLINK_DESC= Add symlinks to default bundle locations
|
||||
ETCSYMLINK_CONFLICTS_INSTALL= ca-roots-[0-9]*
|
||||
|
||||
CERTDIR?= share/certs
|
||||
PLIST_SUB+= CERTDIR=${CERTDIR}
|
||||
|
||||
VERSION_NSS= 3.115
|
||||
CERTDATA_TXT_PATH= lib/ckfw/builtins/certdata.txt
|
||||
BUNDLE_PROCESSOR= MAca-bundle.pl
|
||||
|
||||
CERTCTL_CMD?= /usr/sbin/certctl
|
||||
|
||||
SUB_FILES= MAca-bundle.pl pkg-deinstall pkg-install pkg-message
|
||||
SUB_LIST= CERTCTL_CMD=${CERTCTL_CMD} VERSION_NSS=${VERSION_NSS}
|
||||
|
||||
do-build:
|
||||
@${SETENV} PATH=${LOCALBASE}/bin:$${PATH} \
|
||||
${PERL} ${WRKDIR}/${BUNDLE_PROCESSOR} \
|
||||
< ${WRKSRC}/${CERTDATA_TXT_PATH} > \
|
||||
${WRKDIR}/ca-root-nss.crt
|
||||
|
||||
do-install:
|
||||
${MKDIR} ${STAGEDIR}${PREFIX}/${CERTDIR}
|
||||
${INSTALL_DATA} ${WRKDIR}/ca-root-nss.crt ${STAGEDIR}${PREFIX}/${CERTDIR}
|
||||
${MKDIR} ${STAGEDIR}${PREFIX}/etc/ssl
|
||||
${LN} -sf ../../${CERTDIR}/ca-root-nss.crt ${STAGEDIR}${PREFIX}/etc/ssl/cert.pem.sample
|
||||
|
||||
do-install-ETCSYMLINK-on:
|
||||
${MKDIR} ${STAGEDIR}${PREFIX}/openssl
|
||||
${LN} -sf ../etc/ssl/cert.pem ${STAGEDIR}${PREFIX}/openssl/cert.pem
|
||||
${MKDIR} ${STAGEDIR}/etc/ssl
|
||||
${LN} -sf ../..${PREFIX}/etc/ssl/cert.pem ${STAGEDIR}/etc/ssl/cert.pem
|
||||
|
||||
.include <bsd.port.mk>
|
||||
3
security/ca_root_nss/distinfo
Normal file
3
security/ca_root_nss/distinfo
Normal file
@ -0,0 +1,3 @@
|
||||
TIMESTAMP = 1755292668
|
||||
SHA256 (nss-3.115.tar.gz) = ac2a47fb33bd79320159144e01c0d4af9a937a2d928c7c77ff06f5d9507861ab
|
||||
SIZE (nss-3.115.tar.gz) = 76656357
|
||||
250
security/ca_root_nss/files/MAca-bundle.pl.in
Normal file
250
security/ca_root_nss/files/MAca-bundle.pl.in
Normal file
@ -0,0 +1,250 @@
|
||||
##
|
||||
## MAca-bundle.pl -- Regenerate ca-root-nss.crt from the Mozilla certdata.txt
|
||||
##
|
||||
## Rewritten in September 2011 by Matthias Andree to heed untrust
|
||||
##
|
||||
|
||||
## Copyright (c) 2011, 2013 Matthias Andree <mandree@FreeBSD.org>
|
||||
## All rights reserved.
|
||||
##
|
||||
## Redistribution and use in source and binary forms, with or without
|
||||
## modification, are permitted provided that the following conditions are
|
||||
## met:
|
||||
##
|
||||
## * Redistributions of source code must retain the above copyright
|
||||
## notice, this list of conditions and the following disclaimer.
|
||||
##
|
||||
## * 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.
|
||||
##
|
||||
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
## "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
|
||||
## COPYRIGHT HOLDER OR CONTRIBUTORS 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.
|
||||
|
||||
use strict;
|
||||
use Carp;
|
||||
use MIME::Base64;
|
||||
|
||||
# configuration
|
||||
print <<EOH;
|
||||
##
|
||||
## ca-root-nss.crt -- Bundle of CA Root Certificates
|
||||
##
|
||||
## This is a bundle of X.509 certificates of public Certificate
|
||||
## Authorities (CA). These were automatically extracted from Mozilla's
|
||||
## root CA list (the file `certdata.txt').
|
||||
##
|
||||
## It contains certificates trusted for server authentication.
|
||||
##
|
||||
## Extracted from nss-%%VERSION_NSS%%
|
||||
##
|
||||
EOH
|
||||
my $debug = 0;
|
||||
$debug++
|
||||
if defined $ENV{'WITH_DEBUG'}
|
||||
and $ENV{'WITH_DEBUG'} !~ m/(?i)^(no|0|false|)$/;
|
||||
|
||||
my %certs;
|
||||
my %trusts;
|
||||
|
||||
# returns a string like YYMMDDhhmmssZ of current time in GMT zone
|
||||
sub timenow()
|
||||
{
|
||||
my ($sec,$min,$hour,$mday,$mon,$year,undef,undef,undef) = gmtime(time);
|
||||
return sprintf "%02d%02d%02d%02d%02d%02dZ", $year-100, $mon+1, $mday, $hour, $min, $sec;
|
||||
}
|
||||
|
||||
sub printcert_plain($$)
|
||||
{
|
||||
my ($label, $certdata) = @_;
|
||||
print "=== $label ===\n" if $label;
|
||||
print
|
||||
"-----BEGIN CERTIFICATE-----\n",
|
||||
MIME::Base64::encode_base64($certdata),
|
||||
"-----END CERTIFICATE-----\n\n";
|
||||
}
|
||||
|
||||
sub printcert_info($$)
|
||||
{
|
||||
my (undef, $certdata) = @_;
|
||||
return unless $certdata;
|
||||
open(OUT, "|openssl x509 -text -inform DER -fingerprint")
|
||||
|| die "could not pipe to openssl x509";
|
||||
print OUT $certdata;
|
||||
close(OUT) or die "openssl x509 failed with exit code $?";
|
||||
}
|
||||
|
||||
sub printcert($$) {
|
||||
my ($a, $b) = @_;
|
||||
printcert_info($a, $b);
|
||||
}
|
||||
|
||||
# converts a datastream that is to be \177-style octal constants
|
||||
# from <> to a (binary) string and returns it
|
||||
sub graboct()
|
||||
{
|
||||
my $data;
|
||||
|
||||
while (<>) {
|
||||
last if /^END/;
|
||||
my (undef,@oct) = split /\\/;
|
||||
my @bin = map(chr(oct), @oct);
|
||||
$data .= join('', @bin);
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
sub grabcert()
|
||||
{
|
||||
my $certdata;
|
||||
my $cka_label = '';
|
||||
my $serial = 0;
|
||||
my $distrust = 0;
|
||||
|
||||
while (<>) {
|
||||
chomp;
|
||||
last if ($_ eq '');
|
||||
|
||||
if (/^CKA_LABEL UTF8 "([^"]+)"/) {
|
||||
$cka_label = $1;
|
||||
}
|
||||
|
||||
if (/^CKA_VALUE MULTILINE_OCTAL/) {
|
||||
$certdata = graboct();
|
||||
}
|
||||
|
||||
if (/^CKA_SERIAL_NUMBER MULTILINE_OCTAL/) {
|
||||
$serial = graboct();
|
||||
}
|
||||
|
||||
if (/^CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL/)
|
||||
{
|
||||
my $distrust_after = graboct();
|
||||
my $time_now = timenow();
|
||||
if ($time_now >= $distrust_after) { $distrust = 1; }
|
||||
if ($debug) {
|
||||
printf STDERR "line $.: $cka_label ser #%d: distrust after %s, now: %s -> distrust $distrust\n", $serial, $distrust_after, timenow();
|
||||
}
|
||||
if ($distrust) {
|
||||
return undef;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ($serial, $cka_label, $certdata);
|
||||
}
|
||||
|
||||
sub grabtrust() {
|
||||
my $cka_label;
|
||||
my $serial;
|
||||
my $maytrust = 0;
|
||||
my $distrust = 0;
|
||||
|
||||
while (<>) {
|
||||
chomp;
|
||||
last if ($_ eq '');
|
||||
|
||||
if (/^CKA_LABEL UTF8 "([^"]+)"/) {
|
||||
$cka_label = $1;
|
||||
}
|
||||
|
||||
if (/^CKA_SERIAL_NUMBER MULTILINE_OCTAL/) {
|
||||
$serial = graboct();
|
||||
}
|
||||
|
||||
if (/^CKA_TRUST_SERVER_AUTH CK_TRUST (\S+)$/)
|
||||
{
|
||||
if ($1 eq 'CKT_NSS_NOT_TRUSTED') {
|
||||
$distrust = 1;
|
||||
} elsif ($1 eq 'CKT_NSS_TRUSTED_DELEGATOR') {
|
||||
$maytrust = 1;
|
||||
} elsif ($1 ne 'CKT_NSS_MUST_VERIFY_TRUST') {
|
||||
confess "Unknown trust setting on line $.:\n"
|
||||
. "$_\n"
|
||||
. "Script must be updated:";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$maytrust && !$distrust && $debug) {
|
||||
print STDERR "line $.: no explicit trust/distrust found for $cka_label\n";
|
||||
}
|
||||
|
||||
my $trust = ($maytrust and not $distrust);
|
||||
return ($serial, $cka_label, $trust);
|
||||
}
|
||||
|
||||
my $untrusted = 0;
|
||||
|
||||
while (<>) {
|
||||
if (/^CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE/) {
|
||||
my ($serial, $label, $certdata) = grabcert();
|
||||
if (defined $certs{$label."\0".$serial}) {
|
||||
warn "Certificate $label duplicated!\n";
|
||||
}
|
||||
if (defined $certdata) {
|
||||
$certs{$label."\0".$serial} = $certdata;
|
||||
} else { # $certdata undefined? distrust_after in effect
|
||||
$untrusted ++;
|
||||
}
|
||||
} elsif (/^CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST/) {
|
||||
my ($serial, $label, $trust) = grabtrust();
|
||||
if (defined $trusts{$label."\0".$serial}) {
|
||||
warn "Trust for $label duplicated!\n";
|
||||
}
|
||||
$trusts{$label."\0".$serial} = $trust;
|
||||
} elsif (/^CVS_ID.*Revision: ([^ ]*).*/) {
|
||||
print "## Source: \"certdata.txt\" CVS revision $1\n##\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub printlabel(@) {
|
||||
my @res = @_;
|
||||
map { s/\0.*//; s/[^[:print:]]/_/g; "\"$_\""; } @res;
|
||||
return wantarray ? @res : $res[0];
|
||||
}
|
||||
|
||||
# weed out untrusted certificates
|
||||
foreach my $it (keys %trusts) {
|
||||
if (!$trusts{$it}) {
|
||||
if (!exists($certs{$it})) {
|
||||
warn "Found trust for nonexistent certificate ".printlabel($it)."\n" if $debug;
|
||||
} else {
|
||||
delete $certs{$it};
|
||||
warn "Skipping untrusted ".printlabel($it)."\n" if $debug;
|
||||
$untrusted++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print "## Untrusted certificates omitted from this bundle: $untrusted\n\n";
|
||||
print STDERR "## Untrusted certificates omitted from this bundle: $untrusted\n";
|
||||
|
||||
my $certcount = 0;
|
||||
foreach my $it (sort {uc($a) cmp uc($b)} keys %certs) {
|
||||
if (!exists($trusts{$it})) {
|
||||
die "Found certificate without trust block,\naborting";
|
||||
}
|
||||
printcert("", $certs{$it});
|
||||
print "\n\n\n";
|
||||
$certcount++;
|
||||
print STDERR "Trusting $certcount: ".printlabel($it)."\n" if $debug;
|
||||
}
|
||||
|
||||
if ($certcount < 25) {
|
||||
die "Certificate count of $certcount is implausibly low.\nAbort";
|
||||
}
|
||||
|
||||
print "## Number of certificates: $certcount\n";
|
||||
print STDERR "## Number of certificates: $certcount\n";
|
||||
print "## End of file.\n";
|
||||
6
security/ca_root_nss/files/pkg-deinstall.in
Normal file
6
security/ca_root_nss/files/pkg-deinstall.in
Normal file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ "$2" = POST-DEINSTALL ]; then
|
||||
CERTCTL_ARGS="-D ${PKG_ROOTDIR}"
|
||||
%%CERTCTL_CMD%% ${CERTCTL_ARGS} rehash
|
||||
fi
|
||||
12
security/ca_root_nss/files/pkg-install.in
Normal file
12
security/ca_root_nss/files/pkg-install.in
Normal file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ "$2" = POST-INSTALL ]; then
|
||||
CERTCTL_ARGS="-D ${PKG_ROOTDIR}"
|
||||
if [ -n "${PKG_METALOG}" ]; then
|
||||
CERTCTL_ARGS="${CERTCTL_ARGS} -U -M ${PKG_METALOG}"
|
||||
fi
|
||||
%%CERTCTL_CMD%% ${CERTCTL_ARGS} rehash
|
||||
|
||||
[ ! -e %%LOCALBASE%%/bin/cert-sync ] || \
|
||||
%%LOCALBASE%%/bin/cert-sync --quiet %%PREFIX%%/share/certs/ca-root-nss.crt
|
||||
fi
|
||||
23
security/ca_root_nss/files/pkg-message.in
Normal file
23
security/ca_root_nss/files/pkg-message.in
Normal file
@ -0,0 +1,23 @@
|
||||
[
|
||||
{ type: install
|
||||
message: <<EOM
|
||||
FreeBSD does not, and can not warrant that the certification authorities
|
||||
whose certificates are included in this package have in any way been
|
||||
audited for trustworthiness or RFC 3647 compliance.
|
||||
|
||||
Assessment and verification of trust is the complete responsibility of
|
||||
the system administrator.
|
||||
|
||||
This package installs symlinks to support root certificate discovery
|
||||
for software that either uses other cryptographic libraries than
|
||||
OpenSSL, or use OpenSSL but do not follow recommended practice.
|
||||
|
||||
If you prefer to do this manually, replace the following symlinks with
|
||||
either an empty file or your site-local certificate bundle.
|
||||
|
||||
* /etc/ssl/cert.pem
|
||||
* %%PREFIX%%/etc/ssl/cert.pem
|
||||
* %%PREFIX%%/openssl/cert.pem
|
||||
EOM
|
||||
}
|
||||
]
|
||||
4
security/ca_root_nss/pkg-descr
Normal file
4
security/ca_root_nss/pkg-descr
Normal file
@ -0,0 +1,4 @@
|
||||
Root certificates from certificate authorities included in the Mozilla
|
||||
NSS library and thus in Firefox and Thunderbird.
|
||||
|
||||
This port directly tracks the version of NSS in the security/nss port.
|
||||
4
security/ca_root_nss/pkg-plist
Normal file
4
security/ca_root_nss/pkg-plist
Normal file
@ -0,0 +1,4 @@
|
||||
%%CERTDIR%%/ca-root-nss.crt
|
||||
@sample etc/ssl/cert.pem.sample
|
||||
%%ETCSYMLINK%%openssl/cert.pem
|
||||
%%ETCSYMLINK%%/etc/ssl/cert.pem
|
||||
163
t/PKGBase.md
Normal file
163
t/PKGBase.md
Normal file
@ -0,0 +1,163 @@
|
||||
# Upgrade FreeBSD von 13.2 zu 14.1 oder 13.3 mit pkgbase
|
||||
Quellen:
|
||||
https://wiki.freebsd.org/PkgBase
|
||||
https://vermaden.wordpress.com/2023/12/09/personal-freebsd-pkgbase-update-server/
|
||||
|
||||
## PKGBase Mirror Server erstellen
|
||||
In unserem Fall auf fippuder01.cc.bka
|
||||
```
|
||||
cd /usr/src
|
||||
#git clone https://github.com/freebsd/freebsd-src.git .
|
||||
#git fetch --all
|
||||
#git reset --hard origin/main #wirft alle Änderungen weg
|
||||
git pull
|
||||
git checkout releng/14.1 --force
|
||||
make -j48 buildworld && make -j48 buildkernel && make -j48 packages
|
||||
```
|
||||
Branches: https://github.com/freebsd/freebsd-src/branches
|
||||
Über den `git checkout releng/13.3` kann über den Branch zwischen Versionen gewechselt werden.
|
||||
Der Make Befehl erstellt die Pakete und legt sie unter `/usr/obj/usr/src/repo/FreeBSD:14:amd64/14.1p2` ab (je nach Version).
|
||||
|
||||
### ccache
|
||||
/etc/make.conf
|
||||
```
|
||||
CCACHE_DIR=/var/cache/ccache
|
||||
WITH_CCACHE_BUILD=yes
|
||||
```
|
||||
### nginx config
|
||||
In der NGINX Config wird der Pfad mit den Paketen dann freigegeben
|
||||
`vim /usr/local/etc/nginx/nginx.conf`
|
||||
```
|
||||
location /FreeBSD:14:amd64 {
|
||||
alias /usr/obj/usr/src/repo/FreeBSD:14:amd64/;
|
||||
autoindex on;
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
service nginx reload
|
||||
```
|
||||
Bzw. für 13.3 jeweils checkout releng/13.3 und location/repo FreeBSD:13:amd64
|
||||
|
||||
### Neue Version erstellen:
|
||||
Analog zu oben in den gewünschten Branch wechseln und build starten.
|
||||
Ggf. muss für neue Versionen (wie 15.0) die NGINX Config angepasst werden.
|
||||
## Auf den Clients
|
||||
### Upgrade auf 14.1
|
||||
Sofern das Verzeichnis noch nicht existiert:
|
||||
`mkdir -p /usr/local/etc/pkg/repos`
|
||||
Erstellen eines upgrade Repos für pkg:
|
||||
`vim /usr/local/etc/pkg/repos/upgrade.conf`
|
||||
|
||||
```
|
||||
freebsd-upgrade: {
|
||||
url = http://pkg.freebsd.org/FreeBSD:14:amd64/14.1p6
|
||||
enabled = yes
|
||||
}
|
||||
```
|
||||
Zum Update muss die ABI der neuen Version als Umgebungsvariable mitgegeben werden.
|
||||
```
|
||||
env ABI=freebsd:14:amd64 pkg-static update -r FreeBSD-base-14.1
|
||||
env ABI=freebsd:14:amd64 IGNORE_OSVERSION=yes pkg-static install -r freebsd-upgrade -g 'FreeBSD-*'
|
||||
```
|
||||
Wenn der Fehler `pkg: Fail to rename /usr/include/c++/v1/.pkgtemp.__string.YaGYjRyeEZcE -> /usr/include/c++/v1/__string:Not a directory` auftritt kann `/usr/include` gelöscht, und die Installation erneut versucht werden.
|
||||
```
|
||||
rm -rf /usr/include
|
||||
env ABI=freebsd:14:amd64 IGNORE_OSVERSION=yes pkg install -r FreeBSD-base-14.1 -g 'FreeBSD-*'
|
||||
```
|
||||
Durch das Update werden alle Konfigurationsdateien in `/etc` mit den Originaldateien überschrieben. Die bearbeiteten Versionen werden in .pkgsave gespeichert.
|
||||
Wird an dieser Stelle ein Neustart ausgeführt gibt es keine User und Passwörter mehr und die sshd_config ist wie bei einem frischen System.
|
||||
Daher werden die wichtigsten pkgsave Dateien zurück kopiert.
|
||||
```
|
||||
cp /etc/ssh/sshd_config.pkgsave /etc/ssh/sshd_config
|
||||
cp /etc/master.passwd.pkgsave /etc/master.passwd
|
||||
cp /etc/group.pkgsave /etc/group
|
||||
cp /etc/sysctl.conf.pkgsave /etc/sysctl.conf
|
||||
```
|
||||
Passwort Datenbank neu aufbauen:
|
||||
```
|
||||
pwd_mkdb -p /etc/master.passwd
|
||||
```
|
||||
Alle anderen .pkgsave Dateien können mit folgendem Befehl gelöscht werden, ggf. ist hier zu prüfen welche Dateien sich noch geändert haben.
|
||||
```
|
||||
find /etc -name \*.pkgsave -delete
|
||||
rm /boot/kernel/linker.hints
|
||||
```
|
||||
Alternativ können auch alle .pkgsave dateien gegen die originale ausgetauscht werden um die Konfiguration vor dem Update wiederherzustellen.
|
||||
```
|
||||
bash
|
||||
cd /etc
|
||||
for file in $(ls *.pkgsave); do echo cp $file ${file/.pkgsave/};done
|
||||
etcupdate
|
||||
find /etc -name \*.pkgsave -delete
|
||||
```
|
||||
Damit kann ggf. allerdings neue Konfigurationsoptionen in der neuen Version nicht mitgenommen werden, besser wäre ein Diff jeder .pkgsave Datei mit dem Original um etwaige Änderungen zusammen zu führen.
|
||||
|
||||
Dann kann der Neustart des Clients durchgeführt werden. Mit `freebsd-version -kru`lassen sich die Versionsstände anzeigen. Runtime wird erst durch einen Neustart auf die neue Version gehoben.
|
||||
```
|
||||
reboot
|
||||
```
|
||||
Nach dem Upgrade muss pkg neu initialisiert und alle Pakete geupdatet werden. An dieser Stelle kann auch das Repository in der upgrade.conf auf `enabled = no` gesetzt werden.
|
||||
`vim /usr/local/etc/pkg/repos/upgrade.conf`
|
||||
```
|
||||
upgrade: {
|
||||
url = http://fippuder01.cc.bka/FreeBSD:14:amd64/14.1p2
|
||||
enabled = no
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
pkg bootstrap -f
|
||||
pkg update
|
||||
pkg upgrade -y
|
||||
```
|
||||
|
||||
### Update auf 13.3
|
||||
Analog zu 14.1, nur einfacher:
|
||||
`vim /usr/local/etc/pkg/repos/upgrade.conf`
|
||||
```
|
||||
upgrade {
|
||||
url = http://fippuder01.i.cc.bka/FreeBSD:13:amd64/13.3p4
|
||||
enabled = yes
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
pkg-static update -r upgrade
|
||||
rm -rf /usr/include
|
||||
pkg-static install -r upgrade -g 'FreeBSD-*'
|
||||
```
|
||||
Auch hier gilt, Konfigurationsdateien zurück kopieren, siehe Upgrade auf 14.1
|
||||
```
|
||||
cp /etc/ssh/sshd_config.pkgsave /etc/ssh/sshd_config
|
||||
cp /etc/master.passwd.pkgsave /etc/master.passwd
|
||||
cp /etc/group.pkgsave /etc/group
|
||||
pwd_mkdb -p /etc/master.passwd
|
||||
service sshd restart
|
||||
cp /etc/sysctl.conf.pkgsave /etc/sysctl.conf
|
||||
find / -name \*.pkgsave -delete
|
||||
rm /boot/kernel/linker.hints
|
||||
reboot
|
||||
pkg bootstrap -f
|
||||
pkg update
|
||||
pkg upgrade -y
|
||||
```
|
||||
|
||||
## Upgrade von 14.1p6 auf 14.2
|
||||
upgrade.conf bearbeiten
|
||||
```
|
||||
vim /usr/local/etc/pkg/repos/upgrade.conf
|
||||
```
|
||||
|
||||
```
|
||||
FreeBSD-base-14.2: {
|
||||
url = http://pkg.freebsd.org/FreeBSD:14:amd64/14.2
|
||||
enabled = yes
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
pkg update
|
||||
pkg upgrade
|
||||
shutdown -r now
|
||||
```
|
||||
108
t/Upgrade_FreeBSD_via_Boot_Environment.md
Normal file
108
t/Upgrade_FreeBSD_via_Boot_Environment.md
Normal file
@ -0,0 +1,108 @@
|
||||
getestet auf fatnetbox01 (vm) und fapelastic30-34
|
||||
|
||||
Boot Environment erstellen und in /mnt einhängen
|
||||
```
|
||||
bectl create 141
|
||||
mkdir /mnt/141
|
||||
bectl mount 141 /mnt/141
|
||||
```
|
||||
Heruntergeladene 14.1-RELEASE base und kernel txz auf Host kopieren und in eingehangenes Boot Environment entpacken
|
||||
|
||||
```
|
||||
tar -xf base.txz -C /mnt/141 --unlink #wirft einige Fehler (not a directory), das ist okay
|
||||
tar -xf kernel.txz -C /mnt/141 --unlink
|
||||
```
|
||||
|
||||
Dateien kopieren anhand von https://git.cc.bka/projektecc15/projekte_ansible/systemkonfiguration/klara-postgres-cluster/-/blob/main/ansible/files/syncbe.conf?ref_type=heads
|
||||
Zum Starten reicht hier meist
|
||||
- `passwd`
|
||||
- `master.passwd`
|
||||
- `group`
|
||||
- `*.db`
|
||||
- `sshd_config`
|
||||
Bestenfalls mit diff vergleichen
|
||||
```
|
||||
cd /mnt/141
|
||||
git diff /etc/ssh/sshd_config /mnt/141/etc/ssh/sshd_config
|
||||
cp /etc/ssh/sshd_config /mnt/141/etc/ssh/sshd_config
|
||||
git diff /etc/passwd /mnt/141/etc/passwd
|
||||
cp /etc/passwd /mnt/141/etc/passwd
|
||||
git diff /etc/group /mnt/141/etc/group
|
||||
cp /etc/group /mnt/141/etc/group
|
||||
cp /etc/*.db /mnt/141/etc/
|
||||
git diff /etc/master.passwd /mnt/141/etc/master.passwd
|
||||
cp /etc/master.passwd /mnt/141/etc/master.passwd
|
||||
```
|
||||
Eventuell müssen die master.passwd Änderungen noch angewendet werden:
|
||||
```
|
||||
chroot /mnt/141 #boot env als chroot betreten
|
||||
pwd_mkdb /etc/master.passwd
|
||||
exit #aus boot env chroot raus
|
||||
```
|
||||
|
||||
ggf. noch weitere (siehe Link) wie Zeitzone, resolv.conf etc. siehe unten.
|
||||
|
||||
Testen:
|
||||
```
|
||||
bectl activate -t 141
|
||||
reboot
|
||||
```
|
||||
|
||||
FreeBSD Version kontrollieren:
|
||||
```
|
||||
freebs-version -kru
|
||||
```
|
||||
|
||||
Wenn alles klappt permanent Boot Environment verwenden
|
||||
```
|
||||
bectl activate 141
|
||||
```
|
||||
|
||||
Danach muss pkg neu installiert werden
|
||||
```
|
||||
pkg bootstrap -f
|
||||
pkg update
|
||||
```
|
||||
|
||||
Weiter für Patches in [PKGBase](PKGBase.md)
|
||||
|
||||
Weitere Dateien nach Upgrade prüfen:
|
||||
im besten Fall via DIFF vergleichen falls Neuerungen in dem Update dazu kamen.
|
||||
```
|
||||
/etc/resolv.conf
|
||||
/etc/ssh/moduli
|
||||
/etc/ssh/host-keys
|
||||
/etc/rc.conf
|
||||
/etc/services (checkmk)
|
||||
/etc/inetd.conf (checkmk)
|
||||
/etc/rc.conf.d/inetd
|
||||
/etc/rc.conf.d/jail
|
||||
/etc/rc.conf.d/ntpd
|
||||
/etc/ssh-banner
|
||||
/etc/localtime
|
||||
/etc/passwd
|
||||
/etc/master.passwd
|
||||
/etc/group
|
||||
/etc/*.db
|
||||
/etc/jail.conf.d/*.conf
|
||||
/etc/ntp.conf
|
||||
/etc/fstab
|
||||
/etc/crontab/periodic
|
||||
boot/loader.conf
|
||||
```
|
||||
|
||||
|
||||
# ZFS Image für Boot Environment erstellen
|
||||
*Doku siehe klara-mariadb-cluster/doc/upgrades*
|
||||
Login auf fippuder02
|
||||
Neues Poudriere Jail erstellen:
|
||||
```
|
||||
poudriere jail -c -j 141BEbuilderamd64 -v 14.1-RELEASE -K GENERIC
|
||||
```
|
||||
|
||||
Dann das Image erstellen:
|
||||
```
|
||||
poudriere image -t zfs+send+be -j 141BEbuilderamd64 -s 4G -h '' -o /usr/local/poudriere/images -n 141BE
|
||||
```
|
||||
|
||||
Dieses landet dann in /usr/local/poudriere/images
|
||||
107
t/poudriere_image_bauen.md
Normal file
107
t/poudriere_image_bauen.md
Normal file
@ -0,0 +1,107 @@
|
||||
*nicht getestet*
|
||||
# Image in poudriere bauen
|
||||
jail erstellen
|
||||
```
|
||||
poudriere jail -c -j 14amd64image -v 14.1-RELEASE -K GENERIC
|
||||
```
|
||||
|
||||
```
|
||||
poudriere image -t firmware -j 14amd64image -s 4g -h 14amd64image-hostname -n 14amd64image
|
||||
```
|
||||
-t image type
|
||||
-j jail
|
||||
-s size
|
||||
-p portstree aus dem die images genommen werden
|
||||
landet in `/usr/local/poudriere/data/images/14amd64image.img`
|
||||
types siehe `man poudriere-image`
|
||||
|
||||
image temporär mounten
|
||||
```
|
||||
mdconfig -a -t vnode -f /usr/local/poudriere/data/images/14amd64image.img
|
||||
gpart show -l md0
|
||||
mount /dev/md0p3 /mnt/
|
||||
```
|
||||
|
||||
eigenes Repo für ports anlegen
|
||||
```
|
||||
poudriere ports -c -p 14amd64imageports
|
||||
```
|
||||
Ports Liste anlegen
|
||||
`/usr/local/etc/poudriere.d/14amd64imageports.list`
|
||||
```
|
||||
lang/python311
|
||||
```
|
||||
portstre bauen
|
||||
```
|
||||
poudriere bulk -j 14amd64 -p 14amd64imageports -f /usr/local/etc/poudriere.d/14amd64imageports.list
|
||||
```
|
||||
image erstellen
|
||||
```
|
||||
poudriere image -t firmware -j 14amd64 -s 4g -p 14amd64imageports -h 14amd64image-hostname -n 14amd64image -c /tmp/image -f 14amd64imageports.list
|
||||
```
|
||||
mit -c kann ein pfad angegeben werden, dessen Inhalt ins Jail gemountet wird.
|
||||
-A würde ein shell Skript einfügen was am Ende ausgeführt wird
|
||||
In diesem Fall wurde in /tmp/image ein Ordner root/.ssh/ mit authorized_keys erstellt um den SSH Key ins Image zu bekommen.
|
||||
|
||||
# Eigenes Installer ISO bauen
|
||||
|
||||
Jail erstellen
|
||||
```
|
||||
poudriere jail -c -j 142imageamd64 -v 14.2-RELEASE -K GENERIC
|
||||
```
|
||||
|
||||
Paket Liste erstellen
|
||||
```
|
||||
vim /usr/local/etc/poudriere.d/142imageamd64.list
|
||||
```
|
||||
mit Inhalt (und ggf. weiteren Paketen)
|
||||
```
|
||||
lang/python
|
||||
```
|
||||
pakete bauen
|
||||
```
|
||||
poudriere bulk -j 142imageamd64 -f /usr/local/etc/poudriere.d/142imageamd64.list
|
||||
```
|
||||
|
||||
in Image zu integrierende Dateien anlegen in `/usr/local/poudriere/images/overlay`
|
||||
```
|
||||
root@fippuder02:/usr/local/poudriere/images/overlay # tree -a
|
||||
.
|
||||
├── etc
|
||||
│ ├── rc.local
|
||||
│ └── ssh
|
||||
│ └── sshd_config
|
||||
├── root
|
||||
│ └── .ssh
|
||||
│ └── authorized_keys
|
||||
└── usr
|
||||
├── freebsd-dist
|
||||
│ ├── MANIFEST
|
||||
│ ├── base.txz
|
||||
│ └── kernel.txz
|
||||
└── local
|
||||
└── etc
|
||||
└── pkg
|
||||
└── repos
|
||||
├── FreeBSD.conf
|
||||
└── poudriere.conf
|
||||
```
|
||||
|
||||
Installer braucht /etc.rc.local um direkt beim Starten aufgerufen zu werden. Diese wurde aus einem offiziellen Installationsimage kopiert.
|
||||
/usr/freebsd-dist enthält Installationsdateien für Installer.
|
||||
Angepasste base.txz erzeugen:
|
||||
```
|
||||
poudriere image -t tar -j 142imageamd64 -f /usr/local/etc/poudriere.d/142imageamd64.list -s 4G -h '' -o /usr/local/poudriere/images/ -c /usr/local/poudriere/images/overlay/ -n base
|
||||
```
|
||||
und aus /usr/local/poudriere/images in overlay/usr/freebsd-dist verschieben
|
||||
|
||||
kernel.txz und Manifest von https://download.freebsd.org/ftp/releases/amd64/14.2-RELEASE/ herunterladen und in Ordner kopieren. Manifest anpassen (sha256sum von base.txz und zusätzliche Einträge außer base und kernel entfernen).
|
||||
pkg repo config anlegen und authorized_keys in root/.ssh anlegen.
|
||||
|
||||
Image bauen
|
||||
```
|
||||
poudriere image -t hybridiso -j 142imageamd64 -f /usr/local/etc/poudriere.d/142imageamd64.list -s 4G -h '' -o /usr/local/poudriere/images/ -c /usr/local/poudriere/images/overlay/ -n 142imageamd64
|
||||
```
|
||||
|
||||
Nach der Installation muss dann noch mit `rm /etc/rc.local` die rc.local entfernt werden damit beim booten nicht der Installer startet.
|
||||
Zudem muss die sshd_config angepasst werden, damit PermitRootLogin aktiviert ist.
|
||||
@ -1,38 +0,0 @@
|
||||
# Created by: Fukang Chen <loader@FreeBSD.org>
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= frappe-bench
|
||||
PORTVERSION= 5.22.9
|
||||
DISTVERSIONPREFIX= v
|
||||
CATEGORIES= www python
|
||||
MASTER_SITES= PYPI
|
||||
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
|
||||
|
||||
MAINTAINER= kiwi@oav.net
|
||||
COMMENT= Frappe / ERPNext apps setup tool
|
||||
|
||||
LICENSE= GPLv3
|
||||
#LICENSE_FILE= ${WRKSRC}/LICENSE.md
|
||||
|
||||
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatchling>=0:devel/py-hatchling@${PY_FLAVOR}
|
||||
|
||||
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}click>0:devel/py-click@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}Jinja2>0:devel/py-Jinja2@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}virtualenv>0:devel/py-virtualenv@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}semantic-version>0:devel/py-semantic-version@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}gitpython>=1.0.1:devel/py-gitpython@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}honcho>0:sysutils/py-honcho@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}python-crontab>0:sysutils/py-python-crontab@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}pip>0:devel/py-pip@${PY_FLAVOR} \
|
||||
git:devel/git
|
||||
|
||||
USE_GITHUB= yes
|
||||
GH_ACCOUNT= frappe
|
||||
GH_PROJECT= bench
|
||||
|
||||
NO_ARCH= yes
|
||||
USES= python
|
||||
USE_PYTHON= pep517 autoplist
|
||||
|
||||
.include <bsd.port.mk>
|
||||
@ -1,3 +0,0 @@
|
||||
TIMESTAMP = 1727357834
|
||||
SHA256 (frappe-bench-v5.22.9_GH0.tar.gz) = 47b1d42b16b5a4f1aadbb8ee0009f8f9795f618ee0c1b048c9fe33413c7a50ac
|
||||
SIZE (frappe-bench-v5.22.9_GH0.tar.gz) = 121494
|
||||
@ -1,11 +0,0 @@
|
||||
--- pyproject.toml.orig 2024-09-27 13:44:50 UTC
|
||||
+++ pyproject.toml
|
||||
@@ -44,7 +44,7 @@ requires = [
|
||||
|
||||
[build-system]
|
||||
requires = [
|
||||
- "hatchling>=1.6.0,<=1.21.0",
|
||||
+ "hatchling>=1.6.0,<=1.30.0",
|
||||
]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
The bench allows you to setup Frappe / ERPNext apps on
|
||||
your local machine or a production server. You can use
|
||||
the bench to serve multiple frappe sites.
|
||||
|
||||
WWW: https://github.com/frappe/bench
|
||||
Reference in New Issue
Block a user