Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Dec 2006 00:38:49 +0100
From:      VeeJay <maanjee@gmail.com>
To:        maanjee@gmail.com, FreeBSD-Questions <freebsd-questions@freebsd.org>
Subject:   Makefile question... please help...
Message-ID:  <2cd0a0da0612051538n6dfc999es3c465c311365e487@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi there,

Is it possible to make configuration changes in Makefile to install a port
as per one's requirments?

I want to accomplish two tasks....

1. I want to configure mysql port before installation with following
parameters: Could someone tell me that where in the Makefile, I need to put
these paramenters in order to get my required results? Makefile is at the
end of my message.
Required Configuration paramenters:

--prefix=/usr/local/mysql
--with-mysqld-user=mysql
--with-unix-socket-path=/tmp/mysql.sock
--with-mysqld-ldflags=-all-static


2. I want to install mysql at my given path, so I could be able to assign
the path to mysql user and chroot it.... PLEASE HELP!!!

Becuase, with default Makefile configuration, mysql installs all scripts
under /usr/local/sbin folder which other deamons also access for example
apache. so, if I alow the access only for mysql ... then other deamons will
not have any access...

chown -R root /usr/local/bin/mysql
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql




# New ports collection makefile for:    MySQL-server
# Date created:                         Fri Apr 11 10:06:26 CET 2003
# Whom:                                 Alex Dupre <sysadmin@alexdupre.com>
#
# $FreeBSD: ports/databases/mysql50-server/Makefile,v 1.188 2005/03/21
14:08:49 pav Exp $
#

PORTNAME?=      mysql
PORTVERSION=    5.0.2
PORTREVISION?=  0
CATEGORIES=     databases
MASTER_SITES=   ${MASTER_SITE_MYSQL}
MASTER_SITE_SUBDIR=     MySQL-5.0
PKGNAMESUFFIX?= -server
DISTNAME=       ${PORTNAME}-${PORTVERSION}-alpha

MAINTAINER=     ale@FreeBSD.org
COMMENT?=       Multithreaded SQL database (server)

WRKSRC=         ${WRKDIR}/${PORTNAME}-${PORTVERSION}-alpha
SLAVEDIRS=      databases/mysql50-client
PKGINSTALL?=    ${WRKDIR}/pkg-install
DB_DIR?=        /var/db/mysql
USE_LIBTOOL_VER=15
USE_REINPLACE=  yes
USE_RC_SUBR=    yes

CONFIGURE_TARGET=--build=${MACHINE_ARCH}-portbld-freebsd${OSREL}
CONFIGURE_ARGS= --localstatedir=${DB_DIR} \
                --without-debug \
                --without-readline \
                --without-libedit \
                --without-bench \
                --without-extra-tools \
                --with-libwrap \
                --with-mysqlfs \
                --with-vio \
                --with-low-memory \
                --with-comment='FreeBSD port: ${PKGNAME}' \
                --enable-thread-safe-client

.ifdef USE_MYSQL
.error You have `USE_MYSQL' variable defined either in environment or in
make(1) arguments. Please undefine and try again.
.endif

.if defined(WITH_CHARSET) && ${WITH_CHARSET} != ""
CONFIGURE_ARGS+=--with-charset=${WITH_CHARSET}
.endif
.if defined(WITH_XCHARSET) && ${WITH_XCHARSET} != ""
CONFIGURE_ARGS+=--with-extra-charsets=${WITH_XCHARSET}
.endif
.if defined(WITH_OPENSSL)
USE_OPENSSL=    yes
CONFIGURE_ARGS+=--with-openssl=${OPENSSLBASE}
.endif
.if defined(BUILD_STATIC)
CONFIGURE_ARGS+=--with-mysqld-ldflags=-all-static
.endif
.if defined(WITHOUT_INNODB)
CONFIGURE_ARGS+=--without-innodb
.endif
.if defined(WITH_NDB)
CONFIGURE_ARGS+=--with-ndbcluster
.endif
.if defined(WITH_COLLATION) && ${WITH_COLLATION} != ""
CONFIGURE_ARGS+=--with-collation=${WITH_COLLATION}
.endif

.include <bsd.port.pre.mk>

.if ${ARCH} == "i386"
CONFIGURE_ARGS+=--enable-assembler --with-berkeley-db
.endif
.if defined(WITH_LINUXTHREADS)
CONFIGURE_ARGS+=--with-named-thread-libs='-DHAVE_GLIBC2_STYLE_GETHOSTBYNAME_R
CONFIGURE_ARGS+=-D_THREAD_SAFE -I${LOCALBASE}/include/pthread/linuxthreads
CFLAGS+=        -D__USE_UNIX98 -D_REENTRANT -D_THREAD_SAFE
CFLAGS+=        -I${LOCALBASE}/include/pthread/linuxthreads
.if ${OSVERSION} > 500000
LIB_DEPENDS+=   lthread.[35]:${PORTSDIR}/devel/linuxthreads
CONFIGURE_ARGS+=-L${LOCALBASE}/lib -llthread -llgcc_r -llstdc++ -llsupc++'
.else
LIB_DEPENDS+=   lthread.[24]:${PORTSDIR}/devel/linuxthreads
CONFIGURE_ARGS+=-L${LOCALBASE}/lib -llthread -llgcc_r'
.endif
.else
CONFIGURE_ARGS+=--with-named-thread-libs=${PTHREAD_LIBS}
CFLAGS+=        ${PTHREAD_CFLAGS}
.endif

.if ${OSVERSION} < 500000
CXX=            ${CC}
.endif
.if defined(BUILD_OPTIMIZED)
CFLAGS+=        -O3 -fno-omit-frame-pointer
.if ${OSVERSION} > 500000 || (defined(USE_GCC) && (${USE_GCC} == 3.0 ||
${USE_GCC} == 3.1 || ${USE_GCC} == 3.2 || ${USE_GCC} == 3.3))
CFLAGS+=        -fno-gcse
.endif
.endif
CXXFLAGS+=      ${CFLAGS} -felide-constructors -fno-rtti
.if ${OSVERSION} >= 400002
CXXFLAGS+=      -fno-exceptions
.endif

# MySQL-Server part
.if !defined(CLIENT_ONLY) && !defined(SCRIPTS_ONLY)
USE_MYSQL=      yes
WANT_MYSQL_VER= 50

LATEST_LINK=    mysql50-server

CONFLICTS=      mysql-server-3.* mysql-server-4.*

PLIST_SUB=      DB_DIR=${DB_DIR} \
                VER=${PORTVERSION}-alpha
.if defined(WITH_NDB)
PLIST_SUB+=     NDB=""
.else
PLIST_SUB+=     NDB="@comment "
.endif

MAN1=           isamchk.1 isamlog.1 mysqld.1 \
                mysqld_safe.1 perror.1 replace.1

.if !defined(NOPORTDOCS)
PORTDOCS=       manual.html manual.txt manual_toc.html
.endif

INFO=           mysql

pre-fetch:
        @${ECHO} ""
        @${ECHO} "You may use the following build options:"
        @${ECHO} ""
        @${ECHO} "      WITH_CHARSET=charset    Define the primary built-in
charset (latin1)."
        @${ECHO} "      WITH_XCHARSET=list      Define other built-in
charsets (may be 'all')."
        @${ECHO} "      WITH_COLLATION=collate  Define default collation
(latin1_swedish_ci)."
        @${ECHO} "      WITH_OPENSSL=yes        Enable secure connections."
        @${ECHO} "      DB_DIR=directory        Set alternate directory for
database files"
        @${ECHO} "                              (default is /var/db/mysql)."
        @${ECHO} "      WITH_LINUXTHREADS=yes   Use the linuxthreads pthread
library."
        @${ECHO} "      WITH_PROC_SCOPE_PTH=yes Use process scope threads"
        @${ECHO} "                              (try it if you use
libpthread)."
        @${ECHO} "      OVERWRITE_DB=yes        Re-initialize default
databases."
        @${ECHO} "      BUILD_OPTIMIZED=yes     Enable compiler
optimizations"
        @${ECHO} "                              (use it if you need speed)."
        @${ECHO} "      BUILD_STATIC=yes        Build a static version of
mysqld."
        @${ECHO} "                              (use it if you need even
more speed)."
        @${ECHO} "      WITHOUT_INNODB=yes      Disable support for InnoDB
table handler."
        @${ECHO} "      WITH_NDB=yes            Enable support for NDB
Cluster."
        @${ECHO} ""

post-patch:
        @${REINPLACE_CMD} -e "s|SUBDIRS =|SUBDIRS = include @docs_dirs@
@sql_server_dirs@ scripts man support-files|g" ${WRKSRC}/Makefile.in
        @${REINPLACE_CMD} -e "s|all: config.h|all: config.h all-local|g"
${WRKSRC}/Makefile.in
        @${REINPLACE_CMD} -e "s|bin_SCRIPTS =|bin_SCRIPTS = @server_scripts@
mysql_create_system_tables|g" ${WRKSRC}/scripts/Makefile.in
        @${REINPLACE_CMD} -e "s|dist_pkgdata_DATA =|dist_pkgdata_DATA =
fill_help_tables.sql|g" ${WRKSRC}/scripts/Makefile.in
        @${REINPLACE_CMD} -e "s|man_MANS =|man_MANS = ${MAN1}|g"
${WRKSRC}/man/Makefile.in
        @${REINPLACE_CMD} -e "s|install-data-am:
install-pkgincludeHEADERS|install-data-am:|g" ${WRKSRC}/include/Makefile.in
.if defined(WITH_PROC_SCOPE_PTH)
        @${REINPLACE_CMD} -e
"s|PTHREAD_SCOPE_SYSTEM|PTHREAD_SCOPE_PROCESS|g" ${WRKSRC}/sql/mysqld.cc
.endif

post-build:
        @${SED} "s|%%DB_DIR%%|${DB_DIR}|g" ${PKGDIR}/pkg-install >
${WRKDIR}/pkg-install

post-install:
.if !defined(PACKAGE_BUILDING)
.if exists(${DB_DIR}) && defined(OVERWRITE_DB) && ${OVERWRITE_DB:L} != "no"
        @${RM} -r ${DB_DIR}/mysql ${DB_DIR}/test 2>/dev/null || true
.endif
.if !exists(${DB_DIR}) || (defined(OVERWRITE_DB) && ${OVERWRITE_DB:L} !=
"no")
        ${PREFIX}/bin/mysql_install_db --ldata=${DB_DIR}
.endif
        @${SETENV} DB_DIR=${DB_DIR} ${SH} ${PKGINSTALL} ${PKGNAME}
POST-INSTALL
.endif
        @${SED}
"s|%%RC_SUBR%%|${RC_SUBR}|g;s|%%PREFIX%%|${PREFIX}|g;s|%%DB_DIR%%|${DB_DIR}|g"
< \
                ${FILESDIR}/mysql-server.sh > ${PREFIX}/etc/rc.d/mysql-
server.sh
        @${CHMOD} 750 ${PREFIX}/etc/rc.d/mysql-server.sh
.if !defined(NOPORTDOCS)
        @${MKDIR} ${DOCSDIR}
.for doc in ${PORTDOCS}
        @${INSTALL_DATA} ${WRKSRC}/Docs/${doc} ${DOCSDIR}
.endfor
.endif

.else
# MySQL-Client part
.if defined(CLIENT_ONLY)
LATEST_LINK=    mysql50-client

CONFLICTS=      mysql-client-3.* mysql-client-4.*

MAN1=           mysql.1 mysqladmin.1 mysqldump.1 mysqlshow.1

INSTALLS_SHLIB= yes
LDCONFIG_DIRS=  %%PREFIX%%/lib/mysql

CONFIGURE_ARGS+=--without-server

post-patch:
        @${REINPLACE_CMD} -e "s|SUBDIRS =|SUBDIRS = include
@sql_client_dirs@ scripts man|g" ${WRKSRC}/Makefile.in
        @${REINPLACE_CMD} -e "s|install-exec-am:
install-pkglibLIBRARIES|install-exec-am:|g" ${WRKSRC}/strings/Makefile.in
        @${REINPLACE_CMD} -e "s|all: config.h|all: config.h all-local|g"
${WRKSRC}/Makefile.in
        @${REINPLACE_CMD} -e "s|bin_SCRIPTS =|bin_SCRIPTS = mysql_config
mysql_fix_privilege_tables mysqlbug|g" ${WRKSRC}/scripts/Makefile.in
        @${REINPLACE_CMD} -e "s|dist_pkgdata_DATA =|dist_pkgdata_DATA =
mysql_fix_privilege_tables.sql|g" ${WRKSRC}/scripts/Makefile.in
        @${REINPLACE_CMD} -e "s|man_MANS =|man_MANS = ${MAN1}|g"
${WRKSRC}/man/Makefile.in
.if defined(WITH_PROC_SCOPE_PTH)
        @${REINPLACE_CMD} -e
"s|PTHREAD_SCOPE_SYSTEM|PTHREAD_SCOPE_PROCESS|g"
${WRKSRC}/tools/mysqlmanager.c
.endif

post-install:
        @${SED} "s|%%PREFIX%%|${PREFIX}|g" < ${FILESDIR}/mysql-client.sh >
${PREFIX}/etc/rc.d/000.mysql-client.sh
        @${CHMOD} 750 ${PREFIX}/etc/rc.d/000.mysql-client.sh

.else
# MySQL-Scripts part
USE_MYSQL=      yes
WANT_MYSQL_VER= 50
USE_PERL5=      yes

RUN_DEPENDS=
${SITE_PERL}/${PERL_ARCH}/Mysql.pm:${PORTSDIR}/databases/p5-DBD-mysql50
.if ${PERL_LEVEL} <= 500800
RUN_DEPENDS+=   ${SITE_PERL}/File/Temp.pm:${PORTSDIR}/devel/p5-File-Temp
.endif


LATEST_LINK=    mysql50-scripts

CONFLICTS=      mysql-scripts-3.* mysql-scripts-4.*

MAN1=           mysql_zap.1 mysqlaccess.1 mysqld_multi.1
mysql_fix_privilege_tables.1

SCRIPTS=        msql2mysql mysql_fix_extensions mysql_setpermission \
                mysql_secure_installation mysql_zap mysqlaccess \
                mysql_convert_table_format mysql_find_rows mysqlhotcopy \
                mysqldumpslow mysql_explain_log mysql_tableinfo mysqld_multi

post-patch:
        @${REINPLACE_CMD} -e "s|SUBDIRS =|SUBDIRS = scripts man|g"
${WRKSRC}/Makefile.in
        @${REINPLACE_CMD} -e "s|bin_SCRIPTS =|bin_SCRIPTS = ${SCRIPTS}|g"
${WRKSRC}/scripts/Makefile.in
        @${REINPLACE_CMD} -e "s|install-exec-am
install-data-am|install-exec-am|g" ${WRKSRC}/scripts/Makefile.in
        @${REINPLACE_CMD} -e "s|man_MANS =|man_MANS = ${MAN1}|g"
${WRKSRC}/man/Makefile.in
.endif
.endif
# Common part
post-extract:
        @${CP} /usr/include/tcpd.h ${WRKSRC}/sql/mytcpd.h

.if defined(WITH_OPENSSL) && defined(BUILD_STATIC)
pre-configure:
        @${ECHO} "You can't use the BUILD_STATIC option when using OpenSSL."
        @${FALSE}
.endif

.include <bsd.port.post.mk>

-- 
Thanks!

BR / vj



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2cd0a0da0612051538n6dfc999es3c465c311365e487>