Navigation Menu

Skip to content

Commit

Permalink
mariadb-10.4: new port
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelld committed Jun 26, 2020
1 parent 53cecb1 commit 016ac96
Show file tree
Hide file tree
Showing 11 changed files with 699 additions and 0 deletions.
344 changes: 344 additions & 0 deletions databases/mariadb-10.4/Portfile
@@ -0,0 +1,344 @@
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem 1.0
PortGroup legacysupport 1.0
legacysupport.newest_darwin_requires_legacy 10

name mariadb-10.4
set name_mysql ${name}
version 10.4.13
set version_branch [join [lrange [split ${version} .] 0 1] .]
# Please set revision_client and revision_server to 0 if you bump
# version; these can be changed independently for the 2 subports, but
# can be changed at the same time if that's what's required.
set revision_client 0
set revision_server 0
categories databases
platforms darwin
license GPL-2
maintainers {michaelld @michaelld} openmaintainer

if {$subport eq $name} {

PortGroup cmake 1.0
PortGroup select 1.0
PortGroup github 1.0

compiler.cxx_standard 2011

github.setup MariaDB server ${version} mariadb-
revision ${revision_client}

license GPL-2
description Multithreaded SQL database server
long_description Mariadb is a fork of the MySQL server, a multi-threaded SQL database.

cmake.out_of_source yes
use_parallel_build yes

# mariadb-connector-c, wsrep-lib and wsrep-API are submodules,
# but because we're not
# cloning into a GIT module in the first place, we can't use the
# git submodule feature. Have to download separately and install
# into the correct location to get this port to work! Which means
# we need a mariadb-connector-c branch and so forth ... basically
# replicate what the github PG does but without using it since it
# is not designed to be used for multiple downloads.

set libmariadb_github_author MariaDB
set libmariadb_github_project mariadb-connector-c
set libmariadb_github_branch 3.1

set wsrep_github_author codership
set wsrep_github_project wsrep-lib
set wsrep_github_branch master

set wsrep_api_github_author codership
set wsrep_api_github_project wsrep-API
set wsrep_api_github_version 26
set wsrep_api_github_branch v${wsrep_api_github_version}

set main_distname ${distname}
set main_distfile ${distfiles}

set libmariadb_distname ${libmariadb_github_project}-${libmariadb_github_branch}
set libmariadb_distfile ${libmariadb_distname}${extract.suffix}

set wsrep_distname ${wsrep_github_project}-${wsrep_github_branch}
set wsrep_distfile ${wsrep_distname}${extract.suffix}

set wsrep_api_distname ${wsrep_api_github_project}-${wsrep_api_github_branch}
set wsrep_api_extracted_distname ${wsrep_api_github_project}-${wsrep_api_github_version}
set wsrep_api_distfile ${wsrep_api_distname}${extract.suffix}

distfiles ${main_distfile}:tagone \
${libmariadb_distfile}:tagtwo \
${wsrep_distfile}:tagthree \
${wsrep_api_distfile}:tagfour

master_sites ${github.homepage}/archive/${git.branch}:tagone \
https://github.com/${libmariadb_github_author}/${libmariadb_github_project}/archive/${libmariadb_github_branch}:tagtwo \
https://github.com/${wsrep_github_author}/${wsrep_github_project}/archive/${wsrep_github_branch}:tagthree \
https://github.com/${wsrep_api_github_author}/${wsrep_api_github_project}/archive/${wsrep_api_github_branch}:tagfour

checksums ${main_distfile} \
rmd160 71bf0e8602bc890de9e5f1815a86ff5c5aaa4226 \
sha256 4f3527e3c9f7f95f135c873d03079b9533d0a43f8371864d7ce2a59cef3ff132 \
size 63409385 \
${libmariadb_distfile} \
rmd160 363c58e6b30a0f8fb72858d413b9ef97f9ec7905 \
sha256 8fe951d5640eea2f66f911ffd699541f5f55ad0429abc44afeaa3103ca57aefb \
size 751613 \
${wsrep_distfile} \
rmd160 1c3d3bc6961fb51f60eae7a2aedf20e5ce086712 \
sha256 a5a9b3bdf0b77fe316aa642b14545b27481923e3dcfd24dc2364a4b42e13b30b \
size 143795 \
${wsrep_api_distfile} \
rmd160 8ff596a9272c1658a94a24a2aa4b70ed400944b1 \
sha256 05574361aa73eef76c7cd13b0eaa4f53955e26f7222dda0d28ac6f8f3e5cb548 \
size 52816

worksrcdir ${github.project}-${git.branch}

post-extract {
# put the libmariadb_github_project directory into position
# remove the original directory
ui_debug "delete ${worksrcpath}/libmariadb"
delete ${worksrcpath}/libmariadb
ui_debug "move ${workpath}/${libmariadb_distname} ${worksrcpath}/libmariadb"
move ${workpath}/${libmariadb_distname} ${worksrcpath}/libmariadb

# put the wsrep_github_project directory into position
# remove the original directory
ui_debug "delete ${worksrcpath}/wsrep-lib"
delete ${worksrcpath}/wsrep-lib
ui_debug "move ${workpath}/${wsrep_distname} ${worksrcpath}/wsrep-lib"
move ${workpath}/${wsrep_distname} ${worksrcpath}/wsrep-lib

# put the wsrep_api_github_project directory into position
# remove the original directory
ui_debug "delete ${worksrcpath}/wsrep-lib/wsrep-API/v26"
delete ${worksrcpath}/wsrep-lib/wsrep-API/v26
ui_debug "move ${workpath}/${wsrep_api_extracted_distname} ${worksrcpath}/wsrep-lib/wsrep-API/v26"
move ${workpath}/${wsrep_api_extracted_distname} ${worksrcpath}/wsrep-lib/wsrep-API/v26
}

depends_lib-append port:zlib port:tcp_wrappers port:ncurses port:judy \
path:lib/libssl.dylib:openssl port:libxml2
depends_run-append port:mysql_select

select.group mysql
select.file ${filespath}/${name_mysql}

post-extract {
file mkdir ${cmake.build_dir}/macports
copy ${filespath}/macports-default.cnf \
${filespath}/my.cnf \
${cmake.build_dir}/macports/
}

patch.pre_args -p1
patchfiles patch-cmake-install_layout.cmake.diff \
patch-CMakeLists.txt.diff \
patch-libmariadb_cmake_install.cmake.diff \
patch-libmariadb_libmariadb_CMakeLists.txt.diff \
patch-libmariadb_mariadb_config_CMakeLists.txt.diff \
patch-cmake_mysql_version.cmake.diff

post-patch {
reinplace "s|@NAME@|${name_mysql}|g" \
${worksrcpath}/cmake/install_layout.cmake
reinplace "s|@NAME@|${name_mysql}|g" \
${worksrcpath}/libmariadb/cmake/install.cmake
reinplace "s|@NAME@|${name_mysql}|g" \
${cmake.build_dir}/macports/macports-default.cnf \
${cmake.build_dir}/macports/my.cnf
reinplace "s|@PREFIX@|${prefix}|g" \
${cmake.build_dir}/macports/macports-default.cnf \
${cmake.build_dir}/macports/my.cnf
move ${worksrcpath}/VERSION ${worksrcpath}/VERSION.txt
}

configure.args-delete \
-DCMAKE_INSTALL_NAME_DIR=${prefix}/lib
configure.args-append \
-DCMAKE_INSTALL_NAME_DIR:STRING=${prefix}/lib/${name_mysql}/mysql \
-DINSTALL_LAYOUT:STRING=MACPORTS \
-DSYSCONFDIR:PATH=${prefix}/etc/${name_mysql} \
-DMYSQL_UNIX_ADDR:PATH=${prefix}/var/run/${name_mysql}/mysqld.sock \
-DMYSQL_DATADIR:PATH=${prefix}/var/db/${name_mysql} \
-DDEFAULT_CHARSET:STRING=utf8 \
-DDEFAULT_COLLATION:STRING=utf8_general_ci \
-DWITH_EMBEDDED_SERVER:BOOL=ON \
-DWITH_ZLIB:STRING=system \
-DWITH_UNIT_TESTS:BOOL=ON \
-DWITHOUT_CASSANDRA_STORAGE_ENGINE:BOOL=ON \
-DWITHOUT_MROONGA_STORAGE_ENGINE:BOOL=ON \
-DWITHOUT_ROCKSDB_STORAGE_ENGINE:BOOL=ON \
-DWITHOUT_TOKUDB_STORAGE_ENGINE:BOOL=ON \
-DENABLE_GCOV:BOOL=OFF \
-DENABLE_DTRACE:BOOL=OFF \
-DWITH_READLINE:BOOL=ON \
-DWITH_LIBWRAP:BOOL=ON \
-DWITH_SSL:STRING=yes \
-DWITH_SSL_PATH=${prefix} \
-DMYSQL_MAINTAINER_MODE:STRING=AUTO \
-DICONV_LIBRARIES=${prefix}/lib/libiconv.dylib \
-DICONV_INCLUDE_DIR:PATH=${prefix}/include \
-DCONNECT_WITH_LIBXML2=ON

post-destroot {
# proc portdestroot::destroot_finish fails to find and compress our man pages
# so borrow the compress command and run on our files now.
set manpath "${destroot}${prefix}/share/man"
set gzip [findBinary gzip ${portutil::autoconf::gzip_path}]
foreach manpage [glob -type f ${destroot}${prefix}/share/man/${name_mysql}/man\[1-9\]/*] {
# Fix paths in manpages
reinplace -q "s|/etc/|${prefix}/etc/${name_mysql}/|g" ${manpage}
# Compress all manpages with gzip
system "$gzip -9vf ${manpage}"
}
#foreach samp_conffile [glob -type f ${destroot}${prefix}/share/${name_mysql}/support-files/my-*.cnf] {
# # Fix paths in sample configuration files
# reinplace -q "s|/etc/my.cnf|${prefix}/etc/${name_mysql}/my.cnf|g" ${samp_conffile}
#}
xinstall -m 755 -o root -d \
${destroot}${prefix}/etc/${name_mysql}
copy ${cmake.build_dir}/macports/macports-default.cnf \
${destroot}${prefix}/etc/${name_mysql}/
xinstall -m 755 -o root -d \
${destroot}${prefix}/share/${name_mysql}/support-files/macports
copy ${cmake.build_dir}/macports/my.cnf \
${destroot}${prefix}/share/${name_mysql}/support-files/macports/
}

post-install {
if {![file exists ${prefix}/etc/LaunchDaemons/org.macports.${name_mysql}/org.macports.${name_mysql}-server.plist]} {
ui_msg "The ${name_mysql} client has been installed."
ui_msg "To install the ${name_mysql} server, install the ${name_mysql}-server port."
}
}

pre-activate {
# The macports-default.cnf is installed by ${name_mysql}.
# Early versions of ${name_mysql}-server installed macports-default.cnf so for a
# reasonable period we need to deactivate older versions of the ${name_mysql}-server.
if { [file exists ${prefix}/etc/${name_mysql}/macports-default.cnf]
&& ![catch {set vers [lindex [registry_active ${name_mysql}-server] 0]}]
&& [vercmp [lindex $vers 1] 5.5.24] < 0 } {

registry_deactivate_composite ${name_mysql}-server "" [list ports_nodepcheck 1]
}
}

post-activate {
if {![file exists ${prefix}/etc/${name_mysql}/my.cnf]} {
copy ${prefix}/share/${name_mysql}/support-files/macports/my.cnf \
${prefix}/etc/${name_mysql}/
}
}

variant system_readline description {Use system readline instead of bundled readline} {
# Add readline support.
# "-DWITH_READLINE:BOOL=OFF" has the peculiar meaning "do not use the bundled copy
# of readline but use the system's (i.e. MacPorts') copy of readline"
depends_lib-append port:readline
configure.args-delete -DWITH_READLINE:BOOL=ON
configure.args-append -DWITH_READLINE:BOOL=OFF
}

notes "
On activation if no ${prefix}/etc/${name_mysql}/my.cnf file exists one
will be created which loads
${prefix}/etc/${name_mysql}/macports-default.cnf.
If a ${prefix}/etc/${name_mysql}/my.cnf file exists MacPorts does not
touch it and any changes you make to ${prefix}/etc/${name_mysql}/my.cnf
will be preserved (e.g., during port upgrades, deactivations or
activations). ${prefix}/etc/${name_mysql}/my.cnf is a good place to
customize your ${name_mysql} installation.
Any changes made to ${prefix}/etc/${name_mysql}/macports-default.cnf
will be lost during port upgrades, deactivations or activations so you
are advised to not make changes here. Currently
${prefix}/etc/${name_mysql}/macports-default.cnf contains only one
directive; to disable networking. With disabled networking it is
possible to install and have running all the MacPorts mysql ports
simultaneously.
"

github.livecheck.regex (${version_branch}.\[0-9\]+)

}

subport ${name_mysql}-server {

revision ${revision_server}
license BSD
description (Beta version) Run ${name_mysql} as server
long_description {*}${description}

supported_archs noarch
distfiles

depends_run port:${name_mysql}

if {"darwin" eq ${os.platform} && ${os.major} > 8} {
set mysqluser _mysql
} else {
set mysqluser mysql
}
add_users ${mysqluser} group=${mysqluser} realname=MySQL\ Server

pre-extract {
copy ${filespath}/org.macports.mysql-server.plist ${workpath}/org.macports.${subport}.plist
}

post-patch {
reinplace "s|@NAMEMYSQL@|${name_mysql}|g" \
${workpath}/org.macports.${subport}.plist
reinplace "s|@PREFIX@|${prefix}|g" \
${workpath}/org.macports.${subport}.plist
reinplace "s|@SUBPORT@|${subport}|g" \
${workpath}/org.macports.${subport}.plist
reinplace "s|@USER@|${mysqluser}|g" \
${workpath}/org.macports.${subport}.plist
reinplace "s|@GROUP@|${mysqluser}|g" \
${workpath}/org.macports.${subport}.plist
}

use_configure no

build {}

destroot {
xinstall -d -m 755 ${destroot}${prefix}/etc/LaunchDaemons/org.macports.${subport}
xinstall -m 0644 -o root -W ${workpath} \
org.macports.${subport}.plist \
${destroot}${prefix}/etc/LaunchDaemons/org.macports.${subport}
xinstall -d -m 755 ${destroot}/Library/LaunchDaemons
ln -s ${prefix}/etc/LaunchDaemons/org.macports.${subport}/org.macports.${subport}.plist \
${destroot}/Library/LaunchDaemons/org.macports.${subport}.plist
xinstall -m 755 -o root -d \
${destroot}${prefix}/var/run
xinstall -m 755 -o ${mysqluser} -g ${mysqluser} -d \
${destroot}${prefix}/etc/${name_mysql} \
${destroot}${prefix}/var/db/${name_mysql} \
${destroot}${prefix}/var/log/${name_mysql} \
${destroot}${prefix}/var/run/${name_mysql}
destroot.keepdirs-append \
${destroot}${prefix}/var/db/${name_mysql} \
${destroot}${prefix}/var/log/${name_mysql} \
${destroot}${prefix}/var/run/${name_mysql}
}

notes "
If this is a new install you might want to run:
\$ sudo -u ${mysqluser} ${prefix}/lib/${name_mysql}/bin/mysql_install_db
"

livecheck.type none
}

homepage https://mariadb.org/
9 changes: 9 additions & 0 deletions databases/mariadb-10.4/files/macports-default.cnf
@@ -0,0 +1,9 @@
# WARNING! ANY CHANGES TO THIS FILE WILL BE LOST ON UNINSTALL/UPGRADES!
# Make your changes to @PREFIX@/etc/@NAME@/my.cnf
# YOU HAVE BEEN WARNED!

# MacPorts default options
[mysqld]
# skip-networking so multple mysql server ports can be loaded
# without each competing for port 3306.
skip-networking

0 comments on commit 016ac96

Please sign in to comment.