mirror of
https://github.com/samba-team/samba.git
synced 2025-01-25 06:04:04 +03:00
9a9e3423d8
When ctdb is built in standalone mode, it turned off the python requirement for submodules by setting Options.options.disable_python to True before checking for its own (non-optional) python support. Ad ctdb does not need python for itself or any of the submodules it is built against, the safest solution seems to be to allow the python and python-headers checks to not find python. Signed-off-by: Ian Stakenvicius <axs@gentoo.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
1043 lines
41 KiB
Python
1043 lines
41 KiB
Python
#!/usr/bin/env python
|
|
|
|
APPNAME = 'ctdb'
|
|
|
|
blddir = 'bin'
|
|
|
|
import sys, os
|
|
|
|
# find the buildtools directory
|
|
srcdir = '.'
|
|
while not os.path.exists(srcdir+'/buildtools') and len(srcdir.split('/')) < 5:
|
|
srcdir = srcdir + '/..'
|
|
sys.path.insert(0, srcdir + '/buildtools/wafsamba')
|
|
|
|
import wafsamba, samba_dist, Options, Logs, Utils
|
|
import samba_utils, samba_version
|
|
|
|
env = samba_utils.LOAD_ENVIRONMENT()
|
|
if os.path.isfile('./VERSION'):
|
|
vdir = '.'
|
|
elif os.path.isfile('../VERSION'):
|
|
vdir = '..'
|
|
else:
|
|
Logs.error("VERSION file not found")
|
|
|
|
version = samba_version.samba_version_file('%s/VERSION' % vdir, vdir, env)
|
|
VERSION = version.STRING.replace('-', '.')
|
|
|
|
default_prefix = Options.default_prefix = '/usr/local'
|
|
|
|
samba_dist.DIST_DIRS('''ctdb:. lib/replace:lib/replace lib/talloc:lib/talloc
|
|
lib/tevent:lib/tevent lib/tdb:lib/tdb
|
|
lib/socket_wrapper:lib/socket_wrapper
|
|
third_party/popt:third_party/popt
|
|
lib/util:lib/util lib/tdb_wrap:lib/tdb_wrap
|
|
lib/ccan:lib/ccan libcli/util:libcli/util
|
|
lib/async_req:lib/async_req
|
|
buildtools:buildtools third_party/waf:third_party/waf''')
|
|
|
|
manpages_binary = [
|
|
'ctdb.1',
|
|
'ctdbd.1',
|
|
'ltdbtool.1',
|
|
'ping_pong.1'
|
|
]
|
|
|
|
manpages_misc = [
|
|
'ctdb_diagnostics.1',
|
|
'ctdbd_wrapper.1',
|
|
'onnode.1',
|
|
'ctdbd.conf.5',
|
|
'ctdb.7',
|
|
'ctdb-statistics.7',
|
|
'ctdb-tunables.7',
|
|
]
|
|
|
|
manpages_etcd = [
|
|
'ctdb-etcd.7',
|
|
]
|
|
|
|
manpages_ceph = [
|
|
'ctdb_mutex_ceph_rados_helper.7',
|
|
]
|
|
|
|
|
|
def set_options(opt):
|
|
opt.PRIVATE_EXTENSION_DEFAULT('ctdb')
|
|
|
|
opt.RECURSE('lib/replace')
|
|
|
|
opt.RECURSE('lib/util')
|
|
|
|
opt.RECURSE('lib/talloc')
|
|
opt.RECURSE('lib/tevent')
|
|
opt.RECURSE('lib/tdb')
|
|
|
|
opt.add_option('--enable-infiniband',
|
|
help=("Turn on infiniband support (default=no)"),
|
|
action="store_true", dest='ctdb_infiniband', default=False)
|
|
opt.add_option('--enable-pmda',
|
|
help=("Turn on PCP pmda support (default=no)"),
|
|
action="store_true", dest='ctdb_pmda', default=False)
|
|
opt.add_option('--enable-etcd-reclock',
|
|
help=("Enable etcd recovery lock helper (default=no)"),
|
|
action="store_true", dest='ctdb_etcd_reclock', default=False)
|
|
opt.add_option('--enable-ceph-reclock',
|
|
help=("Enable Ceph CTDB recovery lock helper (default=no)"),
|
|
action="store_true", dest='ctdb_ceph_reclock', default=False)
|
|
|
|
opt.add_option('--with-logdir',
|
|
help=("Path to log directory"),
|
|
action="store", dest='ctdb_logdir', default=None)
|
|
opt.add_option('--with-socketpath',
|
|
help=("path to CTDB daemon socket"),
|
|
action="store", dest='ctdb_sockpath', default=None)
|
|
|
|
|
|
def configure(conf):
|
|
|
|
# No need to build python bindings for talloc/tevent/tdb
|
|
if conf.IN_LAUNCH_DIR():
|
|
conf.env.standalone_ctdb = True
|
|
Options.options.disable_python = True
|
|
|
|
conf.RECURSE('lib/replace')
|
|
|
|
if conf.env.standalone_ctdb:
|
|
conf.SAMBA_CHECK_PERL(mandatory=True)
|
|
|
|
conf.SAMBA_CHECK_PYTHON(mandatory=False, version=(2,5,0))
|
|
conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=False)
|
|
|
|
if conf.CHECK_FOR_THIRD_PARTY():
|
|
conf.RECURSE('third_party/popt')
|
|
else:
|
|
if not conf.CHECK_POPT():
|
|
raise Utils.WafError('popt development packages have not been found\nIf third_party is installed, check that it is in the proper place.')
|
|
else:
|
|
conf.define('USING_SYSTEM_POPT', 1)
|
|
|
|
conf.RECURSE('lib/util')
|
|
|
|
conf.RECURSE('lib/talloc')
|
|
conf.RECURSE('lib/tevent')
|
|
conf.RECURSE('lib/tdb')
|
|
if conf.env.standalone_ctdb or conf.CONFIG_GET('ENABLE_SELFTEST'):
|
|
conf.RECURSE('lib/socket_wrapper')
|
|
conf.env.SOCKET_WRAPPER_SO_PATH = conf.CONFIG_GET('LIBSOCKET_WRAPPER_SO_PATH')
|
|
|
|
conf.CHECK_HEADERS('sched.h')
|
|
conf.CHECK_HEADERS('procinfo.h')
|
|
if sys.platform.startswith('aix') and not conf.CHECK_FUNCS('thread_setsched'):
|
|
Logs.error('Need thread_setsched() on AIX')
|
|
sys.exit(1)
|
|
elif not conf.CHECK_FUNCS('sched_setscheduler'):
|
|
Logs.error('Need sched_setscheduler()')
|
|
sys.exit(1)
|
|
conf.CHECK_FUNCS('mlockall')
|
|
|
|
if not conf.CHECK_VARIABLE('ETIME', headers='errno.h'):
|
|
conf.DEFINE('ETIME', 'ETIMEDOUT')
|
|
|
|
if sys.platform.startswith('linux'):
|
|
conf.SET_TARGET_TYPE('pcap', 'EMPTY')
|
|
else:
|
|
if not conf.CHECK_HEADERS('pcap.h'):
|
|
Logs.error('Need libpcap')
|
|
sys.exit(1)
|
|
if not conf.CHECK_FUNCS_IN('pcap_open_live', 'pcap', headers='pcap.h'):
|
|
Logs.error('Need libpcap')
|
|
sys.exit(1)
|
|
|
|
if not conf.CHECK_FUNCS_IN('backtrace backtrace_symbols', 'execinfo',
|
|
checklibc=True, headers='execinfo.h'):
|
|
Logs.error('backtrace support not available')
|
|
|
|
have_pmda = False
|
|
if Options.options.ctdb_pmda:
|
|
pmda_support = True
|
|
|
|
if not conf.CHECK_HEADERS('pcp/pmapi.h pcp/impl.h pcp/pmda.h',
|
|
together=True):
|
|
pmda_support = False
|
|
if not conf.CHECK_FUNCS_IN('pmProgname', 'pcp'):
|
|
pmda_support = False
|
|
if not conf.CHECK_FUNCS_IN('pmdaDaemon', 'pcp_pmda'):
|
|
pmda_support = False
|
|
if pmda_support:
|
|
have_pmda = True
|
|
else:
|
|
Logs.error("PMDA support not available")
|
|
sys.exit(1)
|
|
if have_pmda:
|
|
Logs.info('Building with PMDA support')
|
|
conf.define('HAVE_PMDA', 1)
|
|
conf.env.CTDB_PMDADIR = os.path.join(conf.env.LOCALSTATEDIR,
|
|
'lib/pcp/pmdas/ctdb')
|
|
|
|
have_infiniband = False
|
|
if Options.options.ctdb_infiniband:
|
|
ib_support = True
|
|
|
|
if not conf.CHECK_HEADERS('infiniband/verbs.h rdma/rdma_cma.h'):
|
|
ib_support = False
|
|
if not conf.CHECK_FUNCS_IN('ibv_create_qp', 'ibverbs'):
|
|
ib_support = False
|
|
if not conf.CHECK_FUNCS_IN('rdma_connect', 'rdmacm'):
|
|
ib_support = False
|
|
if ib_support:
|
|
have_infiniband = True
|
|
else:
|
|
Logs.error("Infiniband support not available")
|
|
sys.exit(1)
|
|
if have_infiniband:
|
|
Logs.info('Building with Infiniband support')
|
|
conf.define('HAVE_INFINIBAND', 1)
|
|
conf.define('USE_INFINIBAND', 1)
|
|
|
|
have_etcd_reclock = False
|
|
if Options.options.ctdb_etcd_reclock:
|
|
try:
|
|
conf.check_python_module('etcd')
|
|
have_etcd_reclock = True
|
|
except:
|
|
Logs.error('etcd support not available')
|
|
sys.exit(1)
|
|
if have_etcd_reclock:
|
|
Logs.info('Building with etcd support')
|
|
conf.env.etcd_reclock = have_etcd_reclock
|
|
|
|
if Options.options.ctdb_ceph_reclock:
|
|
if (conf.CHECK_HEADERS('rados/librados.h', False, False, 'rados') and
|
|
conf.CHECK_LIB('rados', shlib=True)):
|
|
Logs.info('Building with Ceph librados recovery lock support')
|
|
conf.define('HAVE_LIBRADOS', 1)
|
|
else:
|
|
Logs.error("Missing librados for Ceph recovery lock support")
|
|
sys.exit(1)
|
|
|
|
conf.env.CTDB_BINDIR = os.path.join(conf.env.EXEC_PREFIX, 'bin')
|
|
conf.env.CTDB_ETCDIR = os.path.join(conf.env.SYSCONFDIR, 'ctdb')
|
|
conf.env.CTDB_VARDIR = os.path.join(conf.env.LOCALSTATEDIR, 'lib/ctdb')
|
|
conf.env.CTDB_RUNDIR = os.path.join(conf.env.LOCALSTATEDIR, 'run/ctdb')
|
|
conf.env.CTDB_HELPER_BINDIR = os.path.join(conf.env.LIBEXECDIR, 'ctdb')
|
|
|
|
if Options.options.ctdb_logdir:
|
|
conf.env.CTDB_LOGDIR = Options.options.ctdb_logdir
|
|
else:
|
|
conf.env.CTDB_LOGDIR = os.path.join(conf.env.LOCALSTATEDIR, 'log')
|
|
|
|
if Options.options.ctdb_sockpath:
|
|
conf.env.CTDB_SOCKPATH = Options.options.ctdb_sockpath
|
|
else:
|
|
conf.env.CTDB_SOCKPATH = os.path.join(conf.env.CTDB_RUNDIR,
|
|
'ctdbd.socket')
|
|
conf.define('CTDB_SOCKET', conf.env.CTDB_SOCKPATH)
|
|
|
|
conf.ADD_CFLAGS('''-DCTDB_HELPER_BINDIR=\"%s\"
|
|
-DLOGDIR=\"%s\"
|
|
-DCTDB_ETCDIR=\"%s\"
|
|
-DCTDB_VARDIR=\"%s\"
|
|
-DCTDB_RUNDIR=\"%s\"''' % (
|
|
conf.env.CTDB_HELPER_BINDIR,
|
|
conf.env.CTDB_LOGDIR,
|
|
conf.env.CTDB_ETCDIR,
|
|
conf.env.CTDB_VARDIR,
|
|
conf.env.CTDB_RUNDIR))
|
|
|
|
conf.env.CTDB_TEST_DATADIR = os.path.join(conf.env.EXEC_PREFIX,
|
|
'share/ctdb/tests')
|
|
conf.env.CTDB_TEST_LIBEXECDIR = os.path.join(conf.env.LIBEXECDIR, 'ctdb/tests')
|
|
|
|
# Allow unified compilation and separate compilation of utilities
|
|
# to find includes
|
|
if not conf.env.standalone_ctdb:
|
|
conf.ADD_EXTRA_INCLUDES('#include/public #ctdb/include #ctdb')
|
|
else:
|
|
if srcdir == '.':
|
|
# Building from tarball
|
|
conf.ADD_EXTRA_INCLUDES('#include')
|
|
else:
|
|
# Building standalone CTDB from within Samba tree
|
|
conf.ADD_EXTRA_INCLUDES('#ctdb/include')
|
|
conf.ADD_EXTRA_INCLUDES('#ctdb')
|
|
conf.ADD_EXTRA_INCLUDES('#lib #lib/replace')
|
|
|
|
conf.DEFINE('HAVE_CONFIG_H', 1, add_to_cflags=True)
|
|
conf.DEFINE('SAMBA_UTIL_CORE_ONLY', 1, add_to_cflags=True)
|
|
conf.SAMBA_CONFIG_H()
|
|
|
|
if 'XSLTPROC_MANPAGES' in conf.env and conf.env['XSLTPROC_MANPAGES']:
|
|
conf.env.ctdb_generate_manpages = True
|
|
else:
|
|
conf.env.ctdb_generate_manpages = False
|
|
|
|
Logs.info("xsltproc unavailable, checking for pre-built manpages")
|
|
conf.env.ctdb_prebuilt_manpages = []
|
|
manpages = manpages_binary + manpages_misc
|
|
if conf.env.etcd_reclock:
|
|
manpages += manpages_etcd
|
|
if conf.env.HAVE_LIBRADOS:
|
|
manpages += manpages_ceph
|
|
for m in manpages:
|
|
if os.path.exists(os.path.join("doc", m)):
|
|
Logs.info(" %s: yes" % (m))
|
|
conf.env.ctdb_prebuilt_manpages.append(m)
|
|
else:
|
|
Logs.info(" %s: no" % (m))
|
|
|
|
def build(bld):
|
|
if bld.env.standalone_ctdb:
|
|
# enable building of public headers in the build tree
|
|
bld.env.build_public_headers = 'include/public'
|
|
|
|
version_h = samba_utils.os_path_relpath(os.path.join(Options.launch_dir,
|
|
"version.h"),
|
|
bld.curdir)
|
|
|
|
if bld.env.standalone_ctdb:
|
|
ctdb_mkversion = '../packaging/mkversion.sh'
|
|
t = bld.SAMBA_GENERATOR('ctdb-version-header',
|
|
target='include/ctdb_version.h',
|
|
rule='%s ${TGT} %s' % (ctdb_mkversion, VERSION),
|
|
dep_vars=['VERSION'])
|
|
t.env.VERSION = VERSION
|
|
|
|
t = bld.SAMBA_GENERATOR('ctdb-samba-version-header',
|
|
target=version_h,
|
|
rule='printf "#include \\"ctdb_version.h\\" \\n#define SAMBA_VERSION_STRING CTDB_VERSION_STRING\\n" > ${TGT}',
|
|
dep_vars=['VERSION'])
|
|
t.env.VERSION = VERSION
|
|
else:
|
|
t = bld.SAMBA_GENERATOR('ctdb-samba-version-header',
|
|
target='include/ctdb_version.h',
|
|
rule='printf "#include \\"%s\\" \\n#define CTDB_VERSION_STRING SAMBA_VERSION_STRING\\n" > ${TGT}' % version_h,
|
|
dep_vars=['VERSION'])
|
|
t.env.VERSION = VERSION
|
|
|
|
bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig'
|
|
|
|
bld.RECURSE('lib/replace')
|
|
if bld.CHECK_FOR_THIRD_PARTY():
|
|
bld.RECURSE('third_party/popt')
|
|
|
|
bld.RECURSE('lib/tdb_wrap')
|
|
bld.RECURSE('lib/util')
|
|
bld.RECURSE('lib/async_req')
|
|
|
|
bld.RECURSE('lib/talloc')
|
|
bld.RECURSE('lib/tevent')
|
|
bld.RECURSE('lib/tdb')
|
|
if bld.env.standalone_ctdb or bld.CONFIG_GET('SOCKET_WRAPPER'):
|
|
bld.RECURSE('lib/socket_wrapper')
|
|
|
|
if bld.env.standalone_ctdb:
|
|
# If a combined build is implemented, CTDB will want to
|
|
# build against samba-util rather than samba-util-core.
|
|
# Similarly, other Samba subsystems expect samba-util. So,
|
|
# for a standalone build, just define a fake samba-util
|
|
# subsystem that pulls in samba-util-core.
|
|
bld.SAMBA_SUBSYSTEM('samba-util',
|
|
source='',
|
|
deps='samba-util-core')
|
|
|
|
bld.SAMBA_SUBSYSTEM('ctdb-tcp',
|
|
source=bld.SUBDIR('tcp',
|
|
'tcp_connect.c tcp_init.c tcp_io.c'),
|
|
includes='include',
|
|
deps='replace tdb talloc tevent')
|
|
|
|
ib_deps = ''
|
|
if bld.env.HAVE_INFINIBAND:
|
|
bld.SAMBA_SUBSYSTEM('ctdb-ib',
|
|
source=bld.SUBDIR('ib',
|
|
'''ibwrapper.c ibw_ctdb.c
|
|
ibw_ctdb_init.c'''),
|
|
includes='include',
|
|
deps='replace talloc tevent tdb')
|
|
ib_deps = ' ctdb-ib rdmacm ibverbs'
|
|
|
|
if sys.platform.startswith('linux'):
|
|
CTDB_SYSTEM_SRC = bld.SUBDIR('common', 'system_linux.c')
|
|
elif sys.platform.startswith('aix'):
|
|
CTDB_SYSTEM_SRC = bld.SUBDIR('common', 'system_aix.c')
|
|
elif sys.platform.startswith('freebsd'):
|
|
CTDB_SYSTEM_SRC = bld.SUBDIR('common', 'system_freebsd.c')
|
|
elif sys.platform.startswith('gnukfreebsd'):
|
|
CTDB_SYSTEM_SRC = bld.SUBDIR('common', 'system_kfreebsd.c')
|
|
elif sys.platform == 'gnu':
|
|
CTDB_SYSTEM_SRC = bld.SUBDIR('common', 'system_gnu.c')
|
|
else:
|
|
Logs.error("Platform %s not supported" % sys.platform)
|
|
|
|
bld.SAMBA_SUBSYSTEM('ctdb-system',
|
|
source=bld.SUBDIR('common',
|
|
'system_common.c system_util.c') +
|
|
CTDB_SYSTEM_SRC,
|
|
includes='include',
|
|
deps='replace talloc tevent tdb pcap samba-util')
|
|
|
|
bld.SAMBA_SUBSYSTEM('ctdb-common',
|
|
source=bld.SUBDIR('common',
|
|
'''ctdb_io.c ctdb_util.c ctdb_ltdb.c
|
|
sock_io.c'''),
|
|
includes='include',
|
|
deps='replace popt talloc tevent tdb popt ctdb-system')
|
|
|
|
bld.SAMBA_SUBSYSTEM('ctdb-util',
|
|
source=bld.SUBDIR('common',
|
|
'''db_hash.c srvid.c reqid.c
|
|
pkt_read.c pkt_write.c comm.c
|
|
logging.c rb_tree.c tunable.c
|
|
pidfile.c run_proc.c'''),
|
|
deps='''samba-util sys_rw tevent-util
|
|
replace talloc tevent tdb''')
|
|
|
|
bld.SAMBA_SUBSYSTEM('ctdb-protocol',
|
|
source=bld.SUBDIR('protocol',
|
|
'''protocol_header.c protocol_packet.c
|
|
protocol_types.c protocol_call.c
|
|
protocol_message.c
|
|
protocol_control.c
|
|
protocol_client.c
|
|
protocol_debug.c
|
|
protocol_util.c
|
|
protocol_event.c'''),
|
|
includes='include',
|
|
deps='replace talloc tdb')
|
|
|
|
bld.SAMBA_SUBSYSTEM('ctdb-client',
|
|
source=bld.SUBDIR('client', 'ctdb_client.c'),
|
|
includes='include',
|
|
deps='''replace popt talloc tevent tdb
|
|
samba-util tdb-wrap ctdb-util''')
|
|
|
|
bld.SAMBA_SUBSYSTEM('ctdb-client2',
|
|
source=bld.SUBDIR('client',
|
|
'''client_connect.c client_call.c
|
|
client_message.c client_control.c
|
|
client_message_sync.c
|
|
client_control_sync.c
|
|
client_db.c client_util.c
|
|
client_event.c
|
|
'''),
|
|
includes='include',
|
|
deps='replace talloc tevent tdb tdb-wrap')
|
|
|
|
bld.SAMBA_SUBSYSTEM('ctdb-server-util',
|
|
source=bld.SUBDIR('common',
|
|
'''sock_daemon.c'''),
|
|
deps='''samba-util ctdb-util tevent-util
|
|
replace talloc tevent''')
|
|
|
|
bld.SAMBA_SUBSYSTEM('ctdb-ipalloc',
|
|
source=bld.SUBDIR('server',
|
|
'''ipalloc_deterministic.c
|
|
ipalloc_nondeterministic.c
|
|
ipalloc_lcp2.c
|
|
ipalloc_common.c
|
|
ipalloc.c
|
|
'''),
|
|
includes='include',
|
|
deps='ctdb-protocol replace talloc tevent')
|
|
|
|
bld.SAMBA_BINARY('ctdbd',
|
|
source='server/ctdbd.c ' +
|
|
bld.SUBDIR('server',
|
|
'''ctdb_daemon.c ctdb_recoverd.c
|
|
ctdb_recover.c ctdb_freeze.c
|
|
ctdb_tunables.c ctdb_monitor.c
|
|
ctdb_server.c ctdb_control.c
|
|
ctdb_call.c ctdb_ltdb_server.c
|
|
ctdb_traverse.c eventscript.c
|
|
ctdb_takeover.c
|
|
ctdb_persistent.c ctdb_keepalive.c
|
|
ctdb_cluster_mutex.c
|
|
ctdb_logging.c
|
|
ctdb_uptime.c
|
|
ctdb_vacuum.c ctdb_banning.c
|
|
ctdb_statistics.c
|
|
ctdb_update_record.c
|
|
ctdb_lock.c ctdb_fork.c'''),
|
|
includes='include',
|
|
deps='''ctdb-ipalloc ctdb-client ctdb-common ctdb-system
|
|
ctdb-tcp ctdb-util replace sys_rw popt
|
|
talloc tevent tdb talloc_report''' +
|
|
ib_deps,
|
|
install_path='${SBINDIR}',
|
|
manpages='ctdbd.1')
|
|
|
|
bld.SAMBA_BINARY('ctdb',
|
|
source='tools/ctdb.c',
|
|
deps='''ctdb-client2 ctdb-protocol ctdb-util ctdb-system
|
|
samba-util sys_rw popt''',
|
|
install_path='${BINDIR}',
|
|
manpages='ctdb.1')
|
|
|
|
bld.SAMBA_BINARY('ctdb_killtcp',
|
|
source='tools/ctdb_killtcp.c',
|
|
deps='''ctdb-protocol ctdb-util ctdb-system
|
|
samba-util replace''',
|
|
install_path='${CTDB_HELPER_BINDIR}')
|
|
|
|
bld.SAMBA_BINARY('ctdb_event',
|
|
source='tools/ctdb_event.c',
|
|
deps='''ctdb-client2 ctdb-protocol ctdb-util ctdb-system
|
|
samba-util replace''',
|
|
install_path='${CTDB_HELPER_BINDIR}')
|
|
|
|
bld.SAMBA_BINARY('ltdbtool',
|
|
source='tools/ltdbtool.c',
|
|
includes='include',
|
|
deps='tdb',
|
|
install_path='${BINDIR}',
|
|
manpages='ltdbtool.1')
|
|
|
|
bld.SAMBA_BINARY('ctdb_eventd',
|
|
source='server/ctdb_eventd.c',
|
|
deps='''ctdb-server-util ctdb-protocol ctdb-util
|
|
samba-util LIBASYNC_REQ replace popt''',
|
|
install_path='${CTDB_HELPER_BINDIR}')
|
|
|
|
bld.SAMBA_BINARY('ctdb_lock_helper',
|
|
source='server/ctdb_lock_helper.c',
|
|
deps='''samba-util sys_rw ctdb-system tevent-util
|
|
talloc tevent tdb''',
|
|
includes='include',
|
|
install_path='${CTDB_HELPER_BINDIR}')
|
|
|
|
bld.SAMBA_BINARY('ctdb_recovery_helper',
|
|
source='server/ctdb_recovery_helper.c',
|
|
deps='''ctdb-client2 ctdb-protocol ctdb-util
|
|
samba-util sys_rw replace tdb''',
|
|
install_path='${CTDB_HELPER_BINDIR}')
|
|
|
|
bld.SAMBA_BINARY('ctdb_takeover_helper',
|
|
source='server/ctdb_takeover_helper.c',
|
|
deps='''ctdb-client2 ctdb-protocol ctdb-util
|
|
samba-util sys_rw replace ctdb-ipalloc popt''',
|
|
install_path='${CTDB_HELPER_BINDIR}')
|
|
|
|
bld.SAMBA_BINARY('ctdb_mutex_fcntl_helper',
|
|
source='server/ctdb_mutex_fcntl_helper.c',
|
|
deps='sys_rw ctdb-system',
|
|
includes='include',
|
|
install_path='${CTDB_HELPER_BINDIR}')
|
|
|
|
bld.SAMBA_GENERATOR('ctdb-smnotify-h',
|
|
source='utils/smnotify/smnotify.x',
|
|
target='utils/smnotify/smnotify.h',
|
|
rule='rpcgen -h ${SRC} > ${TGT}')
|
|
|
|
xdr_buf_hack = 'sed -e "s@^\([ \t]*register int32_t \*buf\);@\\1 = buf;@"'
|
|
|
|
bld.SAMBA_GENERATOR('ctdb-smnotify-x',
|
|
source='utils/smnotify/smnotify.x',
|
|
target='utils/smnotify/gen_xdr.c',
|
|
rule='rpcgen -c ${SRC} | ' + xdr_buf_hack + ' > ${TGT}')
|
|
|
|
bld.SAMBA_GENERATOR('ctdb-smnotify-c',
|
|
source='utils/smnotify/smnotify.x',
|
|
target='utils/smnotify/gen_smnotify.c',
|
|
rule='rpcgen -l ${SRC} > ${TGT}')
|
|
|
|
bld.SAMBA_BINARY('smnotify',
|
|
source=bld.SUBDIR('utils/smnotify',
|
|
'smnotify.c gen_smnotify.c gen_xdr.c'),
|
|
deps='ctdb-smnotify-h ctdb-smnotify-c ctdb-smnotify-x popt',
|
|
includes='utils utils/smnotify',
|
|
install_path='${CTDB_HELPER_BINDIR}')
|
|
|
|
bld.SAMBA_BINARY('ping_pong',
|
|
source='utils/ping_pong/ping_pong.c',
|
|
deps='',
|
|
install_path='${BINDIR}',
|
|
manpages='ping_pong.1')
|
|
|
|
if bld.env.HAVE_PMDA:
|
|
bld.SAMBA_BINARY('pmdactdb',
|
|
source='utils/pmda/pmda_ctdb.c',
|
|
includes='include',
|
|
deps='''ctdb-client2 ctdb-protocol ctdb-util
|
|
samba-util pcp_pmda pcp''',
|
|
install_path='${CTDB_PMDADIR}')
|
|
bld.INSTALL_FILES('${CTDB_PMDADIR}', 'utils/pmda/Install',
|
|
destname='Install')
|
|
bld.INSTALL_FILES('${CTDB_PMDADIR}', 'utils/pmda/Remove',
|
|
destname='Remove')
|
|
bld.INSTALL_FILES('${CTDB_PMDADIR}', 'utils/pmda/pmns',
|
|
destname='pmns')
|
|
bld.INSTALL_FILES('${CTDB_PMDADIR}', 'utils/pmda/domain.h',
|
|
destname='domain.h')
|
|
bld.INSTALL_FILES('${CTDB_PMDADIR}', 'utils/pmda/help',
|
|
destname='help')
|
|
bld.INSTALL_FILES('${CTDB_PMDADIR}', 'utils/pmda/README',
|
|
destname='README')
|
|
|
|
if bld.env.HAVE_LIBRADOS:
|
|
bld.SAMBA_BINARY('ctdb_mutex_ceph_rados_helper',
|
|
source='utils/ceph/ctdb_mutex_ceph_rados_helper.c',
|
|
deps='talloc tevent rados',
|
|
includes='include',
|
|
install_path='${CTDB_HELPER_BINDIR}')
|
|
|
|
sed_expr1 = 's|/usr/local/var/lib/ctdb|%s|g' % (bld.env.CTDB_VARDIR)
|
|
sed_expr2 = 's|/usr/local/etc/ctdb|%s|g' % (bld.env.CTDB_ETCDIR)
|
|
sed_expr3 = 's|/usr/local/var/log|%s|g' % (bld.env.CTDB_LOGDIR)
|
|
sed_expr4 = 's|/usr/local/var/run/ctdb|%s|g' % (bld.env.CTDB_RUNDIR)
|
|
sed_expr5 = 's|/usr/local/sbin|%s|g' % (bld.env.SBINDIR)
|
|
sed_expr6 = 's|/usr/local/libexec/ctdb|%s|g' % (bld.env.CTDB_HELPER_BINDIR)
|
|
sed_expr7 = 's|/usr/local/bin|%s|g' % (bld.env.BINDIR)
|
|
sed_cmdline = '-e "%s" -e "%s" -e "%s" -e "%s" -e "%s" -e "%s" -e "%s"' % \
|
|
(sed_expr1, sed_expr2, sed_expr3, sed_expr4, sed_expr5,
|
|
sed_expr6, sed_expr7)
|
|
|
|
manpages_extra = manpages_misc
|
|
if bld.env.etcd_reclock:
|
|
manpages_extra += manpages_etcd
|
|
if bld.env.HAVE_LIBRADOS:
|
|
manpages_extra += manpages_ceph
|
|
for f in manpages_binary + manpages_extra:
|
|
x = '%s.xml' % (f)
|
|
bld.SAMBA_GENERATOR(x,
|
|
source=os.path.join('doc', x),
|
|
target=x,
|
|
rule='sed %s ${SRC} > ${TGT}' % (sed_cmdline))
|
|
|
|
if bld.env.ctdb_generate_manpages:
|
|
bld.MANPAGES(' '.join(manpages_extra), True)
|
|
else:
|
|
for m in bld.env.ctdb_prebuilt_manpages:
|
|
bld.SAMBA_GENERATOR(m,
|
|
source=os.path.join("doc", m),
|
|
target=m,
|
|
rule='sed %s ${SRC} > ${TGT}' % (sed_cmdline))
|
|
bld.INSTALL_FILES('${MANDIR}/man%s' % m[-1], m)
|
|
|
|
bld.SAMBA_GENERATOR('ctdb-onnode',
|
|
source='tools/onnode',
|
|
target='onnode',
|
|
rule='sed %s ${SRC} > ${TGT}' % (sed_cmdline))
|
|
bld.INSTALL_FILES('${BINDIR}', 'onnode',
|
|
destname='onnode', chmod=0755)
|
|
|
|
bld.SAMBA_GENERATOR('ctdb-diagnostics',
|
|
source='tools/ctdb_diagnostics',
|
|
target='ctdb_diagnostics',
|
|
rule='sed %s ${SRC} > ${TGT}' % (sed_cmdline))
|
|
bld.INSTALL_FILES('${BINDIR}', 'ctdb_diagnostics',
|
|
destname='ctdb_diagnostics', chmod=0755)
|
|
|
|
if bld.env.etcd_reclock:
|
|
bld.SAMBA_GENERATOR('ctdb-etcd-lock',
|
|
source='utils/etcd/ctdb_etcd_lock',
|
|
target='ctdb_etcd_lock',
|
|
rule='sed %s ${SRC} > ${TGT}' % (sed_cmdline))
|
|
bld.INSTALL_FILES('${CTDB_HELPER_BINDIR}', 'ctdb_etcd_lock',
|
|
destname='ctdb_etcd_lock', chmod=0744)
|
|
|
|
bld.SAMBA_GENERATOR('ctdb-natgw',
|
|
source='tools/ctdb_natgw',
|
|
target='ctdb_natgw',
|
|
rule='sed %s ${SRC} > ${TGT}' % (sed_cmdline))
|
|
bld.INSTALL_FILES('${CTDB_HELPER_BINDIR}', 'ctdb_natgw',
|
|
destname='ctdb_natgw', chmod=0755)
|
|
|
|
bld.SAMBA_GENERATOR('ctdb-lvs',
|
|
source='tools/ctdb_lvs',
|
|
target='ctdb_lvs',
|
|
rule='sed %s ${SRC} > ${TGT}' % (sed_cmdline))
|
|
bld.INSTALL_FILES('${CTDB_HELPER_BINDIR}', 'ctdb_lvs',
|
|
destname='ctdb_lvs', chmod=0755)
|
|
|
|
bld.SAMBA_GENERATOR('ctdbd-wrapper',
|
|
source='config/ctdbd_wrapper',
|
|
target='ctdbd_wrapper',
|
|
rule='sed %s ${SRC} > ${TGT}' % (sed_cmdline))
|
|
bld.INSTALL_FILES('${SBINDIR}', 'ctdbd_wrapper',
|
|
destname='ctdbd_wrapper', chmod=0755)
|
|
|
|
def SUBDIR_MODE_callback(arg, dirname, fnames):
|
|
for f in fnames:
|
|
fl = os.path.join(dirname, f)
|
|
if os.path.isdir(fl) or os.path.islink(fl):
|
|
continue
|
|
mode = os.lstat(fl).st_mode & 0777
|
|
if arg['trim_path']:
|
|
fl = samba_utils.os_path_relpath(fl, arg['trim_path'])
|
|
arg['file_list'].append([fl, mode])
|
|
|
|
def SUBDIR_MODE(path, trim_path=None):
|
|
pd = {'trim_path': trim_path, 'file_list': []}
|
|
os.path.walk(path, SUBDIR_MODE_callback, pd)
|
|
return pd['file_list']
|
|
|
|
etc_subdirs = [
|
|
'events.d',
|
|
'nfs-checks.d'
|
|
]
|
|
|
|
if bld.env.standalone_ctdb:
|
|
configdir = 'config'
|
|
else:
|
|
configdir = 'ctdb/config'
|
|
|
|
for t in etc_subdirs:
|
|
files = SUBDIR_MODE('%s/%s' % (configdir, t), trim_path=configdir)
|
|
for fmode in files:
|
|
bld.INSTALL_FILES(bld.env.CTDB_ETCDIR, 'config/%s' % fmode[0],
|
|
destname=fmode[0], chmod=fmode[1])
|
|
|
|
bld.SAMBA_GENERATOR('ctdb-functions',
|
|
source='config/functions',
|
|
target='functions',
|
|
rule='sed %s ${SRC} > ${TGT}' % (sed_cmdline))
|
|
bld.INSTALL_FILES(bld.env.CTDB_ETCDIR, 'functions', destname='functions')
|
|
|
|
etc_scripts = [
|
|
'ctdb-crash-cleanup.sh',
|
|
'debug-hung-script.sh',
|
|
'debug_locks.sh',
|
|
'gcore_trace.sh',
|
|
'nfs-linux-kernel-callout',
|
|
'notify.sh',
|
|
'statd-callout'
|
|
]
|
|
|
|
for t in etc_scripts:
|
|
bld.INSTALL_FILES(bld.env.CTDB_ETCDIR, 'config/%s' % t,
|
|
destname=t, chmod=0755)
|
|
|
|
bld.SAMBA_GENERATOR('ctdb-sudoers',
|
|
source='config/ctdb.sudoers',
|
|
target='ctdb.sudoers',
|
|
rule='sed %s ${SRC} > ${TGT}' % (sed_cmdline))
|
|
bld.INSTALL_FILES('${SYSCONFDIR}/sudoers.d', 'ctdb.sudoers',
|
|
destname='ctdb')
|
|
|
|
bld.INSTALL_FILES('${CTDB_ETCDIR}/notify.d', 'config/notify.d.README',
|
|
destname='README')
|
|
|
|
bld.install_dir(bld.env.CTDB_LOGDIR)
|
|
bld.install_dir(bld.env.CTDB_RUNDIR)
|
|
bld.install_dir(bld.env.CTDB_VARDIR)
|
|
|
|
# Unit tests
|
|
ctdb_unit_tests = [
|
|
'db_hash_test',
|
|
'srvid_test',
|
|
'pkt_read_test',
|
|
'pkt_write_test',
|
|
'comm_test',
|
|
'comm_server_test',
|
|
'comm_client_test',
|
|
'protocol_types_test',
|
|
'protocol_client_test',
|
|
'pidfile_test',
|
|
'run_proc_test',
|
|
'sock_daemon_test',
|
|
'sock_io_test',
|
|
]
|
|
|
|
for target in ctdb_unit_tests:
|
|
src = 'tests/src/' + target + '.c'
|
|
|
|
bld.SAMBA_BINARY(target,
|
|
source=src,
|
|
deps='''talloc tevent tdb tevent-util
|
|
LIBASYNC_REQ samba-util sys_rw''',
|
|
install_path='${CTDB_TEST_LIBEXECDIR}')
|
|
|
|
bld.SAMBA_BINARY('reqid_test',
|
|
source='tests/src/reqid_test.c',
|
|
deps='samba-util',
|
|
install_path='${CTDB_TEST_LIBEXECDIR}')
|
|
|
|
bld.SAMBA_BINARY('rb_test',
|
|
source='tests/src/rb_test.c',
|
|
deps='samba-util talloc',
|
|
install_path='${CTDB_TEST_LIBEXECDIR}')
|
|
|
|
bld.SAMBA_BINARY('ctdb_packet_parse',
|
|
source='tests/src/ctdb_packet_parse.c',
|
|
deps='talloc tevent tdb ctdb-protocol',
|
|
install_path='${CTDB_TEST_LIBEXECDIR}')
|
|
|
|
bld.SAMBA_BINARY('porting_tests',
|
|
source='tests/src/porting_tests.c',
|
|
deps='samba-util ctdb-system popt',
|
|
install_path='${CTDB_TEST_LIBEXECDIR}')
|
|
|
|
|
|
bld.SAMBA_SUBSYSTEM('ctdb-tests-common',
|
|
source=bld.SUBDIR('tests/src',
|
|
'cluster_wait.c test_options.c'),
|
|
includes='include',
|
|
deps='replace popt talloc tevent tdb')
|
|
|
|
bld.SAMBA_BINARY('protocol_util_test',
|
|
source='tests/src/protocol_util_test.c',
|
|
deps='talloc ctdb-protocol samba-util',
|
|
install_path='${CTDB_TEST_LIBEXECDIR}')
|
|
|
|
# Test binaries
|
|
ctdb_tests = [
|
|
'g_lock_loop',
|
|
'message_ring',
|
|
'fetch_ring',
|
|
'fetch_loop',
|
|
'fetch_loop_key',
|
|
'fetch_readonly',
|
|
'fetch_readonly_loop',
|
|
'transaction_loop',
|
|
'update_record',
|
|
'update_record_persistent',
|
|
'lock_tdb'
|
|
]
|
|
|
|
for target in ctdb_tests:
|
|
src = 'tests/src/' + target + '.c'
|
|
|
|
bld.SAMBA_BINARY(target,
|
|
source=src,
|
|
includes='include',
|
|
deps='''ctdb-client2 ctdb-protocol ctdb-util
|
|
samba-util ctdb-tests-common''',
|
|
install_path='${CTDB_TEST_LIBEXECDIR}')
|
|
|
|
bld.SAMBA_BINARY('ctdb_takeover_tests',
|
|
source='''tests/src/ctdb_takeover_tests.c
|
|
tests/src/ipalloc_read_known_ips.c''',
|
|
deps='''replace popt tdb tevent talloc ctdb-system
|
|
samba-util tdb-wrap talloc_report
|
|
ctdb-ipalloc ctdb-protocol ctdb-util''',
|
|
includes='include',
|
|
install_path='${CTDB_TEST_LIBEXECDIR}')
|
|
|
|
bld.SAMBA_BINARY('fake_ctdbd',
|
|
source='''tests/src/fake_ctdbd.c
|
|
tests/src/ipalloc_read_known_ips.c''',
|
|
deps='''ctdb-util ctdb-protocol ctdb-system
|
|
samba-util tevent-util LIBASYNC_REQ popt''',
|
|
install_path='${CTDB_TEST_LIBEXECDIR}')
|
|
|
|
if bld.env.HAVE_INFINIBAND:
|
|
bld.SAMBA_BINARY('ibwrapper_test',
|
|
source='ib/ibwrapper_test.c',
|
|
includes='include',
|
|
deps='replace talloc ctdb-client ctdb-common sys_rw' +
|
|
ib_deps,
|
|
install_path='${CTDB_TEST_LIBEXECDIR}')
|
|
|
|
if bld.env.HAVE_ROBUST_MUTEXES and sys.platform.startswith('linux'):
|
|
bld.SAMBA_BINARY('test_mutex_raw',
|
|
source='tests/src/test_mutex_raw.c',
|
|
deps='pthread',
|
|
install_path='${CTDB_TEST_LIBEXECDIR}')
|
|
|
|
test_subdirs = [
|
|
'complex',
|
|
'cunit',
|
|
'eventd',
|
|
'events.d',
|
|
'eventscripts',
|
|
'onnode',
|
|
'shellcheck',
|
|
'simple',
|
|
'takeover',
|
|
'takeover_helper',
|
|
'tool'
|
|
]
|
|
|
|
if bld.env.standalone_ctdb:
|
|
testdir = 'tests'
|
|
else:
|
|
testdir = 'ctdb/tests'
|
|
|
|
for t in test_subdirs:
|
|
files = SUBDIR_MODE('%s/%s' % (testdir, t), trim_path=testdir)
|
|
for fmode in files:
|
|
bld.INSTALL_FILES(bld.env.CTDB_TEST_DATADIR, 'tests/%s' % fmode[0],
|
|
destname=fmode[0], chmod=fmode[1])
|
|
|
|
# Install tests/scripts directory without test_wrap
|
|
test_scripts = [
|
|
'common.sh',
|
|
'integration.bash',
|
|
'unit.sh'
|
|
]
|
|
|
|
for t in test_scripts:
|
|
bld.INSTALL_FILES(bld.env.CTDB_TEST_DATADIR,
|
|
os.path.join('tests/scripts', t),
|
|
destname=os.path.join('scripts', t))
|
|
|
|
sed_expr = 's@^TEST_SCRIPTS_DIR=.*@&\\nexport TEST_BIN_DIR=\"%s\"@' % (
|
|
bld.env.CTDB_TEST_LIBEXECDIR)
|
|
bld.SAMBA_GENERATOR('ctdb-test-wrap',
|
|
source='tests/scripts/test_wrap',
|
|
target='test_wrap',
|
|
rule='sed -e "%s" ${SRC} > ${TGT}' % sed_expr)
|
|
bld.INSTALL_FILES(bld.env.CTDB_TEST_DATADIR+"/scripts", 'test_wrap',
|
|
destname='test_wrap', chmod=0755)
|
|
|
|
bld.SAMBA_GENERATOR('ctdb-test-script-install-paths',
|
|
source='tests/scripts/script_install_paths.sh',
|
|
target='script_install_paths.sh',
|
|
rule='sed %s ${SRC} > ${TGT}' % (sed_cmdline))
|
|
bld.INSTALL_FILES(bld.env.CTDB_TEST_DATADIR+"/scripts",
|
|
'script_install_paths.sh',
|
|
destname='script_install_paths.sh', chmod=0644)
|
|
|
|
sed_expr1 = 's@^test_dir=.*@test_dir=%s\\nexport TEST_BIN_DIR=\"%s\"@' % (
|
|
bld.env.CTDB_TEST_DATADIR, bld.env.CTDB_TEST_LIBEXECDIR)
|
|
sed_expr2 = 's@^\(export CTDB_TESTS_ARE_INSTALLED\)=false@\\1=true@'
|
|
bld.SAMBA_GENERATOR('ctdb-test-runner',
|
|
source='tests/run_tests.sh',
|
|
target='ctdb_run_tests.sh',
|
|
rule='sed -e "%s" -e "%s" ${SRC} > ${TGT}' % (
|
|
sed_expr1, sed_expr2))
|
|
bld.INSTALL_FILES('${BINDIR}', 'ctdb_run_tests.sh',
|
|
destname='ctdb_run_tests', chmod=0755)
|
|
bld.symlink_as(os.path.join(bld.env.BINDIR, 'ctdb_run_cluster_tests'),
|
|
'ctdb_run_tests')
|
|
|
|
test_eventscript_links = [
|
|
'events.d',
|
|
'functions',
|
|
'nfs-checks.d',
|
|
'nfs-linux-kernel-callout',
|
|
'statd-callout'
|
|
]
|
|
|
|
test_link_dir = os.path.join(bld.env.CTDB_TEST_DATADIR,
|
|
'eventscripts/etc-ctdb')
|
|
for t in test_eventscript_links:
|
|
bld.symlink_as(os.path.join(test_link_dir, t),
|
|
os.path.join(bld.env.CTDB_ETCDIR, t))
|
|
|
|
# Tests that use onnode need to overwrite link to in-tree
|
|
# functions file when installed
|
|
bld.symlink_as(os.path.join(bld.env.CTDB_TEST_DATADIR, 'onnode/functions'),
|
|
os.path.join(bld.env.CTDB_ETCDIR, 'functions'))
|
|
bld.symlink_as(os.path.join(bld.env.CTDB_TEST_DATADIR, 'simple/functions'),
|
|
os.path.join(bld.env.CTDB_ETCDIR, 'functions'))
|
|
|
|
# Need a link to nodes file because $CTDB_BASE is overridden
|
|
bld.symlink_as(os.path.join(bld.env.CTDB_TEST_DATADIR, 'simple/nodes'),
|
|
os.path.join(bld.env.CTDB_ETCDIR, 'nodes'))
|
|
|
|
|
|
def testonly(ctx):
|
|
cmd = 'tests/run_tests.sh -V tests/var'
|
|
ret = samba_utils.RUN_COMMAND(cmd)
|
|
if ret != 0:
|
|
print('tests exited with exit status %d' % ret)
|
|
sys.exit(ret)
|
|
|
|
|
|
def test(ctx):
|
|
import Scripting
|
|
Scripting.commands.append('build')
|
|
Scripting.commands.append('testonly')
|
|
|
|
|
|
def autotest(ctx):
|
|
env = samba_utils.LOAD_ENVIRONMENT()
|
|
ld = 'LD_PRELOAD=%s' % env.SOCKET_WRAPPER_SO_PATH
|
|
cmd = '%s tests/run_tests.sh -e -S -C' % ld
|
|
ret = samba_utils.RUN_COMMAND(cmd)
|
|
if ret != 0:
|
|
print('autotest exited with exit status %d' % ret)
|
|
sys.exit(ret)
|
|
|
|
|
|
def show_version(ctx):
|
|
print VERSION
|
|
|
|
|
|
def manpages(ctx):
|
|
BASE_URL = 'http://docbook.sourceforge.net/release/xsl/current'
|
|
MAN_XSL = '%s/manpages/docbook.xsl' % BASE_URL
|
|
HTML_XSL = '%s/html/docbook.xsl' % BASE_URL
|
|
CMD_TEMPLATE = 'xsltproc --xinclude -o %s --nonet %s %s'
|
|
manpages = manpages_binary + manpages_misc + manpages_etcd + manpages_ceph
|
|
for t in manpages:
|
|
cmd = CMD_TEMPLATE % ('doc/%s' % t, MAN_XSL, 'doc/%s.xml' % t)
|
|
ret = samba_utils.RUN_COMMAND(cmd)
|
|
if ret != 0:
|
|
print('Command %s failed with exit status %d' % (cmd, ret))
|
|
sys.exit(ret)
|
|
|
|
cmd = CMD_TEMPLATE % ('doc/%s.html' % t, HTML_XSL, 'doc/%s.xml' % t)
|
|
ret = samba_utils.RUN_COMMAND(cmd)
|
|
if ret != 0:
|
|
print('Command %s failed with exit status %d' % (cmd, ret))
|
|
sys.exit(ret)
|
|
|
|
|
|
def distonly(ctx):
|
|
samba_dist.DIST_FILES('VERSION:VERSION', extend=True)
|
|
|
|
t = 'include/ctdb_version.h'
|
|
cmd = 'packaging/mkversion.sh %s %s' % (t, VERSION)
|
|
ret = samba_utils.RUN_COMMAND(cmd)
|
|
if ret != 0:
|
|
print('Command "%s" failed with exit status %d' % (cmd, ret))
|
|
sys.exit(ret)
|
|
samba_dist.DIST_FILES('ctdb/%s:%s' % (t, t), extend=True)
|
|
|
|
t = 'ctdb.spec'
|
|
sed_expr1 = 's/@VERSION@/%s/g' % VERSION
|
|
sed_expr2 = 's/@RELEASE@/%s/g' % '1'
|
|
cmd = 'sed -e "%s" -e "%s" packaging/RPM/ctdb.spec.in > %s' % (
|
|
sed_expr1, sed_expr2, t)
|
|
ret = samba_utils.RUN_COMMAND(cmd)
|
|
if ret != 0:
|
|
print('Command "%s" failed with exit status %d' % (cmd, ret))
|
|
sys.exit(ret)
|
|
samba_dist.DIST_FILES('ctdb/%s:%s' % (t, t), extend=True)
|
|
|
|
manpages = manpages_binary + manpages_misc + manpages_etcd + manpages_ceph
|
|
for t in manpages:
|
|
samba_dist.DIST_FILES('ctdb/doc/%s:doc/%s' % (t, t), extend=True)
|
|
samba_dist.DIST_FILES('ctdb/doc/%s.html:doc/%s.html' % (t, t),
|
|
extend=True)
|
|
|
|
samba_dist.dist()
|
|
|
|
|
|
def dist():
|
|
import Scripting
|
|
Scripting.commands.append('manpages')
|
|
Scripting.commands.append('distonly')
|
|
|
|
|
|
def rpmonly(ctx):
|
|
opts = os.getenv('RPM_OPTIONS') or ''
|
|
cmd = 'rpmbuild -ta --clean --rmsource %s ctdb-%s.tar.gz' % (opts, VERSION)
|
|
ret = samba_utils.RUN_COMMAND(cmd)
|
|
if ret != 0:
|
|
print('rpmbuild exited with exit status %d' % ret)
|
|
sys.exit(ret)
|
|
|
|
|
|
def rpm(ctx):
|
|
import Scripting
|
|
Scripting.commands.append('manpages')
|
|
Scripting.commands.append('distonly')
|
|
Scripting.commands.append('rpmonly')
|
|
|
|
|
|
def ctags(ctx):
|
|
"build 'tags' file using ctags"
|
|
import Utils
|
|
source_root = os.path.dirname(Utils.g_module.root_path)
|
|
cmd = 'ctags $(find %s -name "*.[ch]")' % source_root
|
|
print("Running: %s" % cmd)
|
|
ret = samba_utils.RUN_COMMAND(cmd)
|
|
if ret != 0:
|
|
print('ctags failed with exit status %d' % ret)
|
|
sys.exit(ret)
|