moving default sync configs to userENV

This commit is contained in:
Axel Kittenberger 2018-03-23 17:36:51 +01:00
parent 3b24bfded2
commit a057e14c7f
8 changed files with 94 additions and 44 deletions

View File

@ -15,7 +15,8 @@ set( LSYNCD_SRC
core/core.c core/core.c
core/log.c core/log.c
core/smem.c core/smem.c
luacode.c mantle.c
default.c
) )
# Tell systemd via the sd-daemon library about the status of Lsyncd. # Tell systemd via the sd-daemon library about the status of Lsyncd.
@ -37,12 +38,12 @@ configure_file (
include_directories("${PROJECT_BINARY_DIR}") include_directories("${PROJECT_BINARY_DIR}")
# Building and compiling the part of lsyncd written in Lua # The mantle written in Lua
# #
# Order here matters as the scripts lua will be executed in this order # Order here matters as the scripts lua will be executed in this order
# on initialization of Lsyncd. # on initialization of Lsyncd.
# #
set( LUA_CODE set( MANTLE_CODE
${PROJECT_SOURCE_DIR}/mantle/array.lua ${PROJECT_SOURCE_DIR}/mantle/array.lua
${PROJECT_SOURCE_DIR}/mantle/counter.lua ${PROJECT_SOURCE_DIR}/mantle/counter.lua
${PROJECT_SOURCE_DIR}/mantle/queue.lua ${PROJECT_SOURCE_DIR}/mantle/queue.lua
@ -62,28 +63,49 @@ set( LUA_CODE
${PROJECT_SOURCE_DIR}/mantle/user.lua ${PROJECT_SOURCE_DIR}/mantle/user.lua
${PROJECT_SOURCE_DIR}/mantle/string.lua ${PROJECT_SOURCE_DIR}/mantle/string.lua
${PROJECT_SOURCE_DIR}/mantle/version.lua ${PROJECT_SOURCE_DIR}/mantle/version.lua
${PROJECT_SOURCE_DIR}/mantle/userenv.lua
)
# The default sync implementations.
#
# Order here matters as the scripts lua will be executed in this order
# on initialization of Lsyncd.
#
set( DEFAULT_CODE
${PROJECT_SOURCE_DIR}/default/default.lua ${PROJECT_SOURCE_DIR}/default/default.lua
${PROJECT_SOURCE_DIR}/default/rsync.lua ${PROJECT_SOURCE_DIR}/default/rsync.lua
${PROJECT_SOURCE_DIR}/default/rsyncssh.lua ${PROJECT_SOURCE_DIR}/default/rsyncssh.lua
${PROJECT_SOURCE_DIR}/default/direct.lua ${PROJECT_SOURCE_DIR}/default/direct.lua
${PROJECT_SOURCE_DIR}/mantle/userenv.lua
) )
# Creates the Lua bytecode from Lua source # Compiling the mantle to Lua bytecode
add_custom_command( OUTPUT luacode.out add_custom_command( OUTPUT mantle.out
COMMAND ${CMAKE_COMMAND} -E echo "Compiling luacode" COMMAND ${CMAKE_COMMAND} -E echo "Compiling mantle"
COMMAND ${LUA_COMPILER} -o luacode.out ${LUA_CODE} COMMAND ${LUA_COMPILER} -o mantle.out ${MANTLE_CODE}
DEPENDS ${LUA_CODE} DEPENDS ${MANTLE_CODE}
) )
# Transforms the Lua bytecode into c constants # Compiling the default sync implementations to Lua bytecode
add_custom_command( OUTPUT default.out
COMMAND ${CMAKE_COMMAND} -E echo "Compiling default"
COMMAND ${LUA_COMPILER} -o default.out ${DEFAULT_CODE}
DEPENDS ${DEFAULT_CODE}
)
# Transforms the Lua bytecode into C constants
# It may be possible to use the linker directly to link binary # It may be possible to use the linker directly to link binary
# Code into the resulting ELF-file, but this proofed to be more # Code into the resulting ELF-file, but this proofed to be more
# portable and easier. # portable and easier.
add_custom_command( OUTPUT luacode.c add_custom_command( OUTPUT mantle.c
COMMAND ${CMAKE_COMMAND} -E echo "Generating luacode linkable" COMMAND ${CMAKE_COMMAND} -E echo "Generating mantle linkable"
COMMAND ${LUA_EXECUTABLE} ${PROJECT_SOURCE_DIR}/bin2carray.lua luacode.out luacode luacode.c COMMAND ${LUA_EXECUTABLE} ${PROJECT_SOURCE_DIR}/bin2carray.lua mantle.out mantle mantle.c
DEPENDS luacode.out DEPENDS mantle.out
)
add_custom_command( OUTPUT default.c
COMMAND ${CMAKE_COMMAND} -E echo "Generating default linkable"
COMMAND ${LUA_EXECUTABLE} ${PROJECT_SOURCE_DIR}/bin2carray.lua default.out default default.c
DEPENDS default.out
) )
# The manpage # The manpage

View File

@ -45,8 +45,14 @@
/* /*
| The Lua part of Lsyncd | The Lua part of Lsyncd
*/ */
extern const char luacode_out[]; extern const char mantle_out[];
extern size_t luacode_size; extern size_t mantle_size;
/*
| The Lua coded default sync implementations
*/
extern const char default_out[];
extern size_t default_size;
/* /*
| Makes sure there is one file system monitor. | Makes sure there is one file system monitor.
@ -1953,17 +1959,17 @@ main1( int argc, char *argv[] )
printf( "kernels clocks_per_sec=%ld\n", clocks_per_sec ); printf( "kernels clocks_per_sec=%ld\n", clocks_per_sec );
} }
// loads the lsyncd mantle and defaults // loads the lsyncd mantle
if( luaL_loadbuffer( L, luacode_out, luacode_size, "luacode" ) ) if( luaL_loadbuffer( L, mantle_out, mantle_size, "mantle" ) )
{ {
printlogf( L, "Error", "error loading luacode: %s", lua_tostring( L, -1 ) ); printlogf( L, "Error", "loading mantle: %s", lua_tostring( L, -1 ) );
exit( -1 ); exit( -1 );
} }
// prepares the luacode executing the script // prepares the luacode executing the script
if( lua_pcall( L, 0, 0, 0 ) ) if( lua_pcall( L, 0, 0, 0 ) )
{ {
printlogf( L, "Error", "preparing luacode: %s", lua_tostring( L, -1 ) ); printlogf( L, "Error", "preparing mantle: %s", lua_tostring( L, -1 ) );
exit( -1 ); exit( -1 );
} }
@ -1988,6 +1994,26 @@ main1( int argc, char *argv[] )
lua_pop( L, 1 ); lua_pop( L, 1 );
} }
// loads the default sync implementations
if( luaL_loadbuffer( L, default_out, default_size, "default" ) )
{
printlogf( L, "Error",
"loading default sync implementations: %s", lua_tostring( L, -1 ) );
exit( -1 );
}
// loads the user enivornment
// the default sync implementations are actually not priviledged in any way
lua_getglobal( L, "userENV" );
lua_setupvalue( L, -2, 1 );
// prepares the default sync implementations
if( lua_pcall( L, 0, 0, 0 ) )
{
printlogf( L, "Error",
"preparing default sync implementations: %s", lua_tostring( L, -1 ) );
exit( -1 );
}
// checks if there is a "-help" or "--help" // checks if there is a "-help" or "--help"
{ {

View File

@ -19,8 +19,11 @@
#include <stdlib.h> #include <stdlib.h>
#include <syslog.h> #include <syslog.h>
#include "lsyncd.h" #include <string.h>
#include "lsyncd.h"
#include "smem.h"
#include "log.h"
/* /*
| "Secured" calloc | "Secured" calloc

View File

@ -624,7 +624,6 @@ rsync.prepare = function
end end
end end
-- --
-- By default do deletes. -- By default do deletes.
-- --
@ -647,7 +646,6 @@ rsync.rsync =
protect_args = true protect_args = true
} }
-- --
-- Default delay -- Default delay
-- --

View File

@ -38,22 +38,6 @@ readdir = core.readdir
processCount = 0 processCount = 0
--
-- All valid entries in a settings{} call.
--
local settingsCheckgauge =
{
logfile = true,
statusFile = true,
statusInterval = true,
logfacility = true,
logident = true,
inotifyMode = true,
maxProcesses = true,
maxDelays = true,
}
-- --
-- Settings specified by command line. -- Settings specified by command line.
-- --
@ -455,7 +439,7 @@ function mci.initialize( firstTime )
-- --
if uSettings.statusInterval == nil if uSettings.statusInterval == nil
then then
uSettings.statusInterval = default.statusInterval uSettings.statusInterval = userENV.default.statusInterval
end end
-- makes sure the user gave Lsyncd anything to do -- makes sure the user gave Lsyncd anything to do

View File

@ -199,10 +199,8 @@ local function add
inherit( config, uconfig ) inherit( config, uconfig )
--
-- last and least defaults are inherited -- last and least defaults are inherited
-- inherit( config, userENV.default )
inherit( config, default )
local inheritSettings = local inheritSettings =
{ {

View File

@ -178,6 +178,23 @@ end
alarm = UserAlarms.alarm alarm = UserAlarms.alarm
--
-- All valid entries in a settings{} call.
--
local settingsCheckgauge =
{
logfile = true,
statusFile = true,
statusInterval = true,
logfacility = true,
logident = true,
inotifyMode = true,
maxProcesses = true,
maxDelays = true,
}
-- --
-- The settings call -- The settings call
-- --

View File

@ -4,6 +4,9 @@
-- --
-- Setups up the global environment for a user script. -- Setups up the global environment for a user script.
-- --
-- The default sync implementations will add the 'default' global
-- to this. They are loaded in user context, so they can simply set it.
--
-- --
-- License: GPLv2 (see COPYING) or any later version -- License: GPLv2 (see COPYING) or any later version
-- Authors: Axel Kittenberger <axkibe@gmail.com> -- Authors: Axel Kittenberger <axkibe@gmail.com>
@ -49,7 +52,6 @@ userENV =
-- lsyncd mantle available to user scripts -- lsyncd mantle available to user scripts
Array = Array, Array = Array,
Queue = Queue, Queue = Queue,
default = default,
settings = settings, settings = settings,
spawn = spawn, spawn = spawn,
spawnShell = spawnShell, spawnShell = spawnShell,