Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

postgresql17: new port #26043

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions databases/postgresql17-server/Portfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem 1.0

name postgresql17-server
version 17.0
revision 0
categories databases
platforms {darwin any}
maintainers {gmail.com:davidgilman1 @dgilman} \
{@barracuda156 gmail.com:vital.had} \
openmaintainer
license Permissive

set rname postgresql17
description run ${rname} as server
long_description {*}${description}
distfiles

homepage https://www.postgresql.org/
master_sites postgresql

depends_run port:${rname}

supported_archs noarch

use_configure no
build {}

set libdir ${prefix}/lib/${rname}
set dbdir ${prefix}/var/db/${rname}/defaultdb
set logdir ${prefix}/var/log/${rname}
set dbuser postgres
set dbgrp postgres
set dbhome ${prefix}/var/db/${rname}

add_users ${dbuser} shell=/usr/bin/false group=${dbgrp} \
home=${prefix}/var/db \
realname=PostgreSQL-17\ Server

startupitem.create yes
startupitem.init \
"PGCTL=${libdir}/bin/pg_ctl"
startupitem.start \
"sudo -u ${dbuser} /bin/sh -c \"\${PGCTL} -D \${POSTGRESQL17DATA:=${dbdir}} start -l ${logdir}/postgres.log\""
startupitem.stop \
"sudo -u ${dbuser} /bin/sh -c \"\${PGCTL} -D \${POSTGRESQL17DATA:=${dbdir}} stop -s -m fast\""

destroot {
xinstall -m 755 -d ${destroot}${logdir}
touch ${destroot}${logdir}/postgres.log
system "chown ${dbuser}:${dbgrp} ${destroot}${logdir}/postgres.log"
}

notes "\nTo create a database instance, after install do\n\
sudo port select postgresql ${rname}\n\
sudo mkdir -p ${dbdir}\n\
sudo chown ${dbuser}:${dbgrp} ${dbdir}\n\
sudo -u ${dbuser} /bin/sh -c \'cd ${dbhome} && ${libdir}/bin/initdb -D ${dbdir}\' "

livecheck.type none
179 changes: 179 additions & 0 deletions databases/postgresql17/Portfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

Check warning on line 1 in databases/postgresql17/Portfile

View workflow job for this annotation

GitHub Actions / macos-13

port lint postgresql17: Error: Unknown dependency: postgresql_select-17

Check warning on line 1 in databases/postgresql17/Portfile

View workflow job for this annotation

GitHub Actions / macos-14

port lint postgresql17: Error: Unknown dependency: postgresql_select-17

Check warning on line 1 in databases/postgresql17/Portfile

View workflow job for this annotation

GitHub Actions / macos-12

port lint postgresql17: Error: Unknown dependency: postgresql_select-17

Check warning on line 1 in databases/postgresql17/Portfile

View workflow job for this annotation

GitHub Actions / macos-15

port lint postgresql17: Error: Unknown dependency: postgresql_select-17

PortSystem 1.0
PortGroup compilers 1.0
PortGroup compiler_blacklist_versions 1.0
PortGroup muniversal 1.0
PortGroup legacysupport 1.1

name postgresql17
version 17.0
revision 0

categories databases
maintainers {gmail.com:davidgilman1 @dgilman} \
{@barracuda156 gmail.com:vital.had} \
openmaintainer
license Permissive
description The most advanced open-source database available anywhere.
long_description PostgreSQL is Object-Relational Database Management System.\
It supports almost all SQL constructs, including transactions, \
subselects, and user-defined types and functions. Write-ahead \
logging means increased performance while retaining data \
integrity.
conflicts postgresql96-doc postgresql10-doc postgresql11-doc postgresql12-doc \
postgresql13-doc postgresql14-doc postgresql15-doc

homepage https://www.postgresql.org/
master_sites postgresql:source/v${version}/
distname postgresql-${version}

checksums rmd160 eb681ee451d85f8163150f92facd97a09f017629 \
sha256 7e276131c0fdd6b62588dbad9b3bb24b8c3498d5009328dba59af16e819109de \
size 21419388

use_bzip2 yes

# https://trac.macports.org/ticket/66060
# https://trac.macports.org/ticket/67365
# https://postgrespro.ru/list/thread-id/2551610
# The problem is specific to PPC: https://github.com/macports/macports-ports/pull/16460
platform darwin powerpc {
patchfiles-append patch-icu.diff \
patch-fix-ppc-asm.diff
}

depends_lib port:readline path:lib/libssl.dylib:openssl port:zlib \
port:libxml2 port:libxslt \
path:lib/pkgconfig/icu-uc.pc:icu \
path:lib/libgssapi_krb5.dylib:kerberos5 \
path:lib/libzstd.dylib:zstd \
path:lib/liblz4.dylib:lz4
depends_build port:bison port:pkgconfig \
port:docbook-xml-4.5 port:docbook-xsl-nons
depends_run port:postgresql_select-17

legacysupport.newest_darwin_requires_legacy \
15
worksrcdir postgresql-${version}

if {${universal_possible} && [variant_isset universal]} {
set zicpath ${worksrcpath}-${build_arch}/src/timezone/zic
} else {
set zicpath ${worksrcpath}/src/timezone/zic
}
set libdir ${prefix}/lib/${name}
set mandir ${prefix}/share/doc/${name}/man
configure.args PG_SYSROOT=disabled \
ZIC=${zicpath} \
--sysconfdir=${prefix}/etc/${name} \
--bindir=${libdir}/bin \
--libdir=${libdir} \
--includedir=${prefix}/include/${name} \
--datadir=${prefix}/share/${name} \
--docdir=${prefix}/share/doc/${name} \
--mandir=${mandir} \
--with-includes=${prefix}/include \
--with-libraries=${prefix}/lib \
--with-openssl \
--with-bonjour \
--with-readline \
--with-zlib \
--with-lz4 \
--with-zstd \
--with-libxml \
--with-libxslt \
--with-gssapi \
--with-uuid=e2fs \
--with-icu

configure.universal_args-delete --disable-dependency-tracking

# building psql with clang from Xcode prior to 4.4 causes segfault on query; see #31717
compiler.blacklist-append {clang < 421}
compilers.choose cc cxx
compilers.setup -gcc -fortran -clang33 -clang34 -clang37 -clang90
notes "To use the postgresql server as a startup item install the ${name}-server port."

if {${universal_possible} && [variant_isset universal]} {
configure.cflags-append -DAC_APPLE_UNIVERSAL_BUILD
}

build.type gnu
build.target world

destroot.target install-world

test.run yes
test.target check

# remember to change livecheck with first proper release
livecheck.type regex
#livecheck.regex (17\\.\[.0-9\]*\[a-z\]+\[0-9\])
#livecheck.regex (17\[a-z\]+\[0-9\])
livecheck.regex alt="v(17\\.\[.0-9\]+)"
livecheck.url ${homepage}/ftp/source/

post-destroot {
ln -s ${libdir}/bin/psql ${destroot}${prefix}/bin/psql17

reinplace -E "s#^CFLAGS =#CFLAGS +=#g" \
${destroot}${prefix}/lib/${name}/pgxs/src/Makefile.global
reinplace -E "s#^MKDIR_P.*#MKDIR_P = /bin/mkdir -p#g" \
${destroot}${prefix}/lib/${name}/pgxs/src/Makefile.global

set gzip [findBinary gzip ${portutil::autoconf::gzip_path}]
foreach manpage [glob -type f ${destroot}${mandir}/man\[1-9\]/*] {
system "$gzip -9vf ${manpage}"
}
}

if {!${universal_possible} || ![variant_isset universal]} {
post-destroot {
reinplace -E "s#-arch\[\[:space:\]\]+\[\[:alnum:\]_\]+##g" \
${destroot}${prefix}/lib/${name}/pgxs/src/Makefile.global
}
} else {
merger-post-destroot {
foreach arch ${configure.universal_archs} {
reinplace -E "s#-arch\[\[:space:\]\]+\[\[:alnum:\]_\]+##g" \
${destroot}-${arch}${prefix}/lib/${name}/pgxs/src/Makefile.global

reinplace -E "s#${worksrcpath}-${arch}#${worksrcpath}#g" \
${destroot}-${arch}${prefix}/lib/${name}/pgxs/src/Makefile.global
}
}
}

variant python3 description {add support for python 3.x} {
depends_lib-append port:python312
configure.args-append --with-python
configure.python ${prefix}/bin/python3.12
}

variant perl description {add Perl support} {
depends_lib-append bin:perl:perl5
configure.args-append --with-perl
}

variant tcl description {add Tcl support} {
depends_lib-append port:tcl
configure.args-append --with-tcl --with-tclconfig=${prefix}/lib
configure.env-append TCLSH=${prefix}/bin/tclsh
}

variant llvm description {add support for JIT compilation} {
set llvm_ver 19

foreach clang ${compilers.clang_variants} {
if { [variant_exists ${clang}] && [variant_isset ${clang}] } {
set clang_port_ver [string range ${clang} 5 6]
set llvm_ver ${clang_port_ver}
}
}

depends_lib-append port:llvm-${llvm_ver}
configure.args-append --with-llvm
configure.env-append LLVM_CONFIG=${prefix}/libexec/llvm-${llvm_ver}/bin/llvm-config \
CLANG=${configure.cc}
}
Loading
Loading