From 9bbe5788570b58fe9c013666bbc49fd1d5797d86 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sun, 24 May 2020 21:09:41 +0200 Subject: [PATCH 01/15] fix: API of webfuse_adapter was changed in version 0.3.0 --- src/webfused/daemon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webfused/daemon.c b/src/webfused/daemon.c index b57876b..cf36fcc 100644 --- a/src/webfused/daemon.c +++ b/src/webfused/daemon.c @@ -133,7 +133,7 @@ int wfd_daemon_run(int argc, char * argv[]) { while (!shutdown_requested) { - wf_server_service(server, WFD_SERVICE_TIMEOUT); + wf_server_service(server); } wf_server_dispose(server); From 421c76b2e7c460bc5bb7ae228d9727061f78416f Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sun, 24 May 2020 21:10:49 +0200 Subject: [PATCH 02/15] added basic meson.build file --- .gitignore | 4 ++- meson.build | 59 ++++++++++++++++++++++++++++++++++++++++ subprojects/fuse3.wrap | 7 +++++ subprojects/gtest.wrap | 10 +++++++ subprojects/jansson.wrap | 10 +++++++ subprojects/webfuse.wrap | 7 +++++ 6 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 meson.build create mode 100644 subprojects/fuse3.wrap create mode 100644 subprojects/gtest.wrap create mode 100644 subprojects/jansson.wrap create mode 100644 subprojects/webfuse.wrap diff --git a/.gitignore b/.gitignore index 48e8b24..64da4e1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /build/ /.deps/ -/.vscode/ \ No newline at end of file +/.vscode/ +/subprojects/* +!/subprojects/*.wrap \ No newline at end of file diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..e6b198f --- /dev/null +++ b/meson.build @@ -0,0 +1,59 @@ +project('webfused', 'c', 'cpp', version: '0.3.0', license: 'LGPL-3.0+') + +openssl_dep = dependency('openssl', version: '>=1.1.1') +libconfig_dep = dependency('libconfig', version: '>=1.5') +pam_dep = declare_dependency(link_args: ['-lpam']) + +libwebsockets_dep = dependency('libwebsockets', version: '>=4.0.1') +jansson_dep = dependency('jansson', version: '>=2.11', fallback: ['jansson', 'jansson_dep']) +libfuse_dep = dependency('fuse3', version: '>=3.8.0', fallback: ['fuse3', 'libfuse_dep']) +gtest_dep = dependency('gtest', version: '>=1.10.0', fallback: ['gtest', 'gtest_dep']) +gmock_main_dep = dependency('gmock_main', version: '>=1.10.0', fallback: ['gtest', 'gmock_main_main_dep']) +webfuse_adapter_dep = dependency('webfuse_adapter', version: '>=0.3.0', fallback: ['webfuse', 'webfuse_adapter_dep']) + +inc_dir = include_directories('src') + +libuserdb = static_library('userdb', + 'src/userdb/userdb.c', + include_directories: inc_dir, + dependencies: [libconfig_dep, openssl_dep, jansson_dep]) + +libuserdb_dep = declare_dependency( + include_directories: inc_dir, + link_with: libuserdb, + dependencies: [libconfig_dep, openssl_dep, jansson_dep]) + +libwebfused = static_library('webfused', + 'src/webfused/daemon.c', + 'src/webfused/mountpoint_factory.c', + 'src/webfused/change_user.c', + 'src/webfused/config/config.c', + 'src/webfused/config/factory.c', + 'src/webfused/config/settings.c', + 'src/webfused/auth/authenticator.c', + 'src/webfused/auth/factory.c', + 'src/webfused/auth/file_authenticator.c', + 'src/webfused/auth/pam_authenticator.c', + 'src/webfused/log/log.c', + 'src/webfused/log/logger.c', + 'src/webfused/log/manager.c', + 'src/webfused/log/stderr_logger.c', + 'src/webfused/log/syslog_logger.c', + include_directories: inc_dir, + dependencies: [libuserdb_dep, webfuse_adapter_dep, pam_dep], + install: false) + +libwebfused_dep = declare_dependency( + include_directories: inc_dir, + link_with: libwebfused, + dependencies: [libuserdb_dep, webfuse_adapter_dep, pam_dep], + install: false) + +webfused = executable('webfused', + 'src/webfused/main.c', + include_directories: inc_dir, + dependencies: [libwebfused_dep], + install: true) + +install_data('etc/webfused.conf', install_dir: '/etc') + diff --git a/subprojects/fuse3.wrap b/subprojects/fuse3.wrap new file mode 100644 index 0000000..ccb34f5 --- /dev/null +++ b/subprojects/fuse3.wrap @@ -0,0 +1,7 @@ +[wrap-file] +directory = libfuse-fuse-3.8.0 + +source_url = https://github.com/libfuse/libfuse/archive/fuse-3.8.0.tar.gz +source_filename = fuse-3.8.0.tar.gz +source_hash = 1781225ba4d11d76eb105e02e54976939974547eb40bab4b4e91167854224024 + diff --git a/subprojects/gtest.wrap b/subprojects/gtest.wrap new file mode 100644 index 0000000..d52b0b3 --- /dev/null +++ b/subprojects/gtest.wrap @@ -0,0 +1,10 @@ +[wrap-file] +directory = googletest-release-1.10.0 + +source_url = https://github.com/google/googletest/archive/release-1.10.0.zip +source_filename = gtest-1.10.0.zip +source_hash = 94c634d499558a76fa649edb13721dce6e98fb1e7018dfaeba3cd7a083945e91 + +patch_url = https://wrapdb.mesonbuild.com/v1/projects/gtest/1.10.0/1/get_zip +patch_filename = gtest-1.10.0-1-wrap.zip +patch_hash = 04ff14e8880e4e465f6260221e9dfd56fea6bc7cce4c4aff0dc528e4a2c8f514 \ No newline at end of file diff --git a/subprojects/jansson.wrap b/subprojects/jansson.wrap new file mode 100644 index 0000000..6282afd --- /dev/null +++ b/subprojects/jansson.wrap @@ -0,0 +1,10 @@ +[wrap-file] +directory = jansson-2.11 + +source_url = http://www.digip.org/jansson/releases/jansson-2.11.tar.bz2 +source_filename = jansson-2.11.tar.bz2 +source_hash = 783132e2fc970feefc2fa54199ef65ee020bd8e0e991a78ea44b8586353a0947 + +patch_url = https://wrapdb.mesonbuild.com/v1/projects/jansson/2.11/3/get_zip +patch_filename = jansson-2.11-3-wrap.zip +patch_hash = 0bcac510994890048d42658c674e33dd7d88715fc1e3bf49d10012f57b0e0020 \ No newline at end of file diff --git a/subprojects/webfuse.wrap b/subprojects/webfuse.wrap new file mode 100644 index 0000000..88346ef --- /dev/null +++ b/subprojects/webfuse.wrap @@ -0,0 +1,7 @@ +[wrap-file] +directory = webfuse-master + +source_url = https://github.com/falk-werner/webfuse/archive/master.tar.gz +source_filename = master.tar.gz +source_hash = 0a496dd9eab3e14585dc3513dca80e7df046cfe2bb8ddae120bf7d00a9f6b5ec + From 8b11eb0ea7a897f8a6e78345da271971009031cf Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sun, 24 May 2020 22:01:56 +0200 Subject: [PATCH 03/15] switched to branch meson_build --- subprojects/webfuse.wrap | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/subprojects/webfuse.wrap b/subprojects/webfuse.wrap index 88346ef..1ec4384 100644 --- a/subprojects/webfuse.wrap +++ b/subprojects/webfuse.wrap @@ -1,7 +1,7 @@ [wrap-file] -directory = webfuse-master +directory = webfuse-meson_build -source_url = https://github.com/falk-werner/webfuse/archive/master.tar.gz -source_filename = master.tar.gz -source_hash = 0a496dd9eab3e14585dc3513dca80e7df046cfe2bb8ddae120bf7d00a9f6b5ec +source_url = https://github.com/falk-werner/webfuse/archive/meson_build.tar.gz +source_filename = meson_build.tar.gz +source_hash = 8bd4e07d0ff67f77c6465617986a2e698b4c1d6cd0abb66f6056fb9be2a29453 From 6a118f3e8a441c216dc471a6bf5ea9bee6fbae27 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sun, 24 May 2020 22:02:29 +0200 Subject: [PATCH 04/15] skip installation of subproject --- meson.build | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index e6b198f..2650db7 100644 --- a/meson.build +++ b/meson.build @@ -9,7 +9,9 @@ jansson_dep = dependency('jansson', version: '>=2.11', fallback: ['jansson', 'ja libfuse_dep = dependency('fuse3', version: '>=3.8.0', fallback: ['fuse3', 'libfuse_dep']) gtest_dep = dependency('gtest', version: '>=1.10.0', fallback: ['gtest', 'gtest_dep']) gmock_main_dep = dependency('gmock_main', version: '>=1.10.0', fallback: ['gtest', 'gmock_main_main_dep']) -webfuse_adapter_dep = dependency('webfuse_adapter', version: '>=0.3.0', fallback: ['webfuse', 'webfuse_adapter_dep']) +webfuse_adapter_dep = dependency('webfuse_adapter', version: '>=0.3.0', + default_options: ['without_install=true'], + fallback: ['webfuse', 'webfuse_adapter_dep']) inc_dir = include_directories('src') From de8411c15300176a044344b9650cf76f8b693d20 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Mon, 25 May 2020 20:05:43 +0200 Subject: [PATCH 05/15] switched to meson build --- .travis.yml | 54 ++++------------------------------------------------- 1 file changed, 4 insertions(+), 50 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2046703..ec74a93 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,21 +37,9 @@ env: before_install: + - sudo pip3 install --system meson - mkdir .deps - cd .deps - # libfuse - - sudo pip3 install --system meson - - wget https://github.com/libfuse/libfuse/archive/fuse-3.9.1.tar.gz -O fuse.tar.gz - - tar -xf fuse.tar.gz - - cd libfuse-fuse-3.9.1 - - mkdir .build - - cd .build - - meson .. - - ninja - - sudo ninja install - - cd .. - - cd .. - # libwebsockets - wget https://github.com/warmcat/libwebsockets/archive/v3.2.0.tar.gz -O libwebsockets.tar.gz - tar -xf libwebsockets.tar.gz - cd libwebsockets-3.2.0 @@ -62,49 +50,15 @@ before_install: - sudo make install - cd .. - cd .. - # jansson - - wget https://github.com/akheron/jansson/archive/v2.12.tar.gz -O jansson.tar.gz - - tar -xf jansson.tar.gz - - cd jansson-2.12 - - mkdir .build - - cd .build - - cmake .. - - make - - sudo make install - - cd .. - - cd .. - # libwebfuse - - wget https://github.com/falk-werner/webfuse/archive/v0.2.0.tar.gz -O webfuse.tar.gz - - tar -xf webfuse.tar.gz - - cd webfuse-0.2.0 - - mkdir .build - - cd .build - - cmake -DWITHOUT_TESTS=ON .. - - make - - sudo make install - - cd .. - - cd .. - # gtest - - wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz - - tar -xf release-1.10.0.tar.gz - - cd googletest-release-1.10.0 - - mkdir .build - - cd .build - - cmake .. - - make - - sudo make install - - cd .. - - cd .. - cd .. before_script: - - mkdir build + - meson build - cd build - - cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE .. + - ninja script: - - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu" - - make $CHECK_TARGET + - meson test after_success: - bash <(curl -s https://codecov.io/bash) \ No newline at end of file From 343bf6da09fecc550686b3f7545b45970cd9ea63 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Mon, 25 May 2020 20:06:25 +0200 Subject: [PATCH 06/15] removed local .deps directory --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 64da4e1..7921596 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ /build/ -/.deps/ /.vscode/ /subprojects/* !/subprojects/*.wrap \ No newline at end of file From c3ec82535d09d2853cba7e43de1db7343f064931 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Mon, 25 May 2020 20:07:26 +0200 Subject: [PATCH 07/15] exclude build of webfuse provider and webfuse tests --- meson.build | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 2650db7..58ec2c5 100644 --- a/meson.build +++ b/meson.build @@ -10,8 +10,7 @@ libfuse_dep = dependency('fuse3', version: '>=3.8.0', fallback: ['fuse3', 'libfu gtest_dep = dependency('gtest', version: '>=1.10.0', fallback: ['gtest', 'gtest_dep']) gmock_main_dep = dependency('gmock_main', version: '>=1.10.0', fallback: ['gtest', 'gmock_main_main_dep']) webfuse_adapter_dep = dependency('webfuse_adapter', version: '>=0.3.0', - default_options: ['without_install=true'], - fallback: ['webfuse', 'webfuse_adapter_dep']) + fallback: ['webfuse', 'webfuse_adapter_dep'], default_options: ['without_provider=true']) inc_dir = include_directories('src') From 8d430610149aab07ec064bbcd8494bf340ecaf22 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Fri, 5 Jun 2020 16:14:18 +0200 Subject: [PATCH 08/15] updated to webfuse v0.3.0 --- .travis.yml | 13 ------------- meson.build | 8 +++++++- subprojects/libwebsockets.wrap | 6 ++++++ subprojects/webfuse.wrap | 8 ++++---- 4 files changed, 17 insertions(+), 18 deletions(-) create mode 100644 subprojects/libwebsockets.wrap diff --git a/.travis.yml b/.travis.yml index ec74a93..1023a9d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,19 +38,6 @@ env: before_install: - sudo pip3 install --system meson - - mkdir .deps - - cd .deps - - wget https://github.com/warmcat/libwebsockets/archive/v3.2.0.tar.gz -O libwebsockets.tar.gz - - tar -xf libwebsockets.tar.gz - - cd libwebsockets-3.2.0 - - mkdir .build - - cd .build - - cmake .. - - make - - sudo make install - - cd .. - - cd .. - - cd .. before_script: - meson build diff --git a/meson.build b/meson.build index 58ec2c5..4da6ae2 100644 --- a/meson.build +++ b/meson.build @@ -4,7 +4,13 @@ openssl_dep = dependency('openssl', version: '>=1.1.1') libconfig_dep = dependency('libconfig', version: '>=1.5') pam_dep = declare_dependency(link_args: ['-lpam']) -libwebsockets_dep = dependency('libwebsockets', version: '>=4.0.1') +libwebsockets_dep = dependency('libwebsockets', version: '>=4.0.13', required: false) +if not libwebsockets_dep.found() + cmake = import('cmake') + libwebsockets = cmake.subproject('libwebsockets') + libwebsockets_dep = libwebsockets.dependency('websockets_shared') +endif + jansson_dep = dependency('jansson', version: '>=2.11', fallback: ['jansson', 'jansson_dep']) libfuse_dep = dependency('fuse3', version: '>=3.8.0', fallback: ['fuse3', 'libfuse_dep']) gtest_dep = dependency('gtest', version: '>=1.10.0', fallback: ['gtest', 'gtest_dep']) diff --git a/subprojects/libwebsockets.wrap b/subprojects/libwebsockets.wrap new file mode 100644 index 0000000..f1aa3ee --- /dev/null +++ b/subprojects/libwebsockets.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = libwebsockets-4.0.13 + +source_url = https://github.com/warmcat/libwebsockets/archive/v4.0.13.zip +source_filename = v4.0.13.zip +source_hash = 0914ea3fdec496daf6b6a5c00f7ba1b52eb8cc3d55b66685df92920b232fd7a5 \ No newline at end of file diff --git a/subprojects/webfuse.wrap b/subprojects/webfuse.wrap index 1ec4384..d6277c3 100644 --- a/subprojects/webfuse.wrap +++ b/subprojects/webfuse.wrap @@ -1,7 +1,7 @@ [wrap-file] -directory = webfuse-meson_build +directory = webfuse-0.3.0 -source_url = https://github.com/falk-werner/webfuse/archive/meson_build.tar.gz -source_filename = meson_build.tar.gz -source_hash = 8bd4e07d0ff67f77c6465617986a2e698b4c1d6cd0abb66f6056fb9be2a29453 +source_url = https://github.com/falk-werner/webfuse/archive/v0.3.0.tar.gz +source_filename = v0.3.0.tar.gz +source_hash = 3c0c0755be24f36cac563582b931f2fc1ba8e7a87bd240e8fefd4252cc2a10a4 From 57212f1b96fc23e55f8bcd8fd7fd031218166b8e Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Fri, 5 Jun 2020 16:22:03 +0200 Subject: [PATCH 09/15] fix: gmock_main dependency --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 4da6ae2..d100667 100644 --- a/meson.build +++ b/meson.build @@ -14,7 +14,7 @@ endif jansson_dep = dependency('jansson', version: '>=2.11', fallback: ['jansson', 'jansson_dep']) libfuse_dep = dependency('fuse3', version: '>=3.8.0', fallback: ['fuse3', 'libfuse_dep']) gtest_dep = dependency('gtest', version: '>=1.10.0', fallback: ['gtest', 'gtest_dep']) -gmock_main_dep = dependency('gmock_main', version: '>=1.10.0', fallback: ['gtest', 'gmock_main_main_dep']) +gmock_main_dep = dependency('gmock_main', version: '>=1.10.0', fallback: ['gtest', 'gmock_main_dep']) webfuse_adapter_dep = dependency('webfuse_adapter', version: '>=0.3.0', fallback: ['webfuse', 'webfuse_adapter_dep'], default_options: ['without_provider=true']) From b61a281949045f69f05fb0138dcdb9d3f6e93b7f Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Fri, 5 Jun 2020 23:38:28 +0200 Subject: [PATCH 10/15] fix: fixed meson build --- meson.build | 4 +++- subprojects/webfuse.wrap | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/meson.build b/meson.build index d100667..5b83ee6 100644 --- a/meson.build +++ b/meson.build @@ -1,8 +1,10 @@ project('webfused', 'c', 'cpp', version: '0.3.0', license: 'LGPL-3.0+') +c_compiler = meson.get_compiler('c') + openssl_dep = dependency('openssl', version: '>=1.1.1') libconfig_dep = dependency('libconfig', version: '>=1.5') -pam_dep = declare_dependency(link_args: ['-lpam']) +pam_dep = c_compiler.find_library('pam') libwebsockets_dep = dependency('libwebsockets', version: '>=4.0.13', required: false) if not libwebsockets_dep.found() diff --git a/subprojects/webfuse.wrap b/subprojects/webfuse.wrap index d6277c3..1fb4564 100644 --- a/subprojects/webfuse.wrap +++ b/subprojects/webfuse.wrap @@ -1,7 +1,7 @@ [wrap-file] -directory = webfuse-0.3.0 +directory = webfuse-0.3.1 -source_url = https://github.com/falk-werner/webfuse/archive/v0.3.0.tar.gz -source_filename = v0.3.0.tar.gz -source_hash = 3c0c0755be24f36cac563582b931f2fc1ba8e7a87bd240e8fefd4252cc2a10a4 +source_url = https://github.com/falk-werner/webfuse/archive/v0.3.1.tar.gz +source_filename = v0.3.1.tar.gz +source_hash = 46624b5f29e8f87dd1aebfce3b13ca87e766bc59546b6e5f49665d2f8c555d62 From 4da0c4b672d5834e0dbaf729bf204cd90f9941c8 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sat, 6 Jun 2020 11:39:51 +0200 Subject: [PATCH 11/15] enable tes execution --- meson.build | 87 +++++++++++++++++++++++++++++++++++++++++++++++ meson_options.txt | 1 + 2 files changed, 88 insertions(+) create mode 100644 meson_options.txt diff --git a/meson.build b/meson.build index 5b83ee6..b1e920b 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,7 @@ project('webfused', 'c', 'cpp', version: '0.3.0', license: 'LGPL-3.0+') +without_tests = get_option('without_tests') + c_compiler = meson.get_compiler('c') openssl_dep = dependency('openssl', version: '>=1.1.1') @@ -66,3 +68,88 @@ webfused = executable('webfused', install_data('etc/webfused.conf', install_dir: '/etc') + +if not without_tests + +gtest_dep = dependency('gtest', version: '>=1.10.0', fallback: ['gtest', 'gtest_dep']) +gmock_main_dep = dependency('gmock_main', version: '>=1.10.0', fallback: ['gtest', 'gmock_main_dep']) + +webfused_conf = configure_file(input: 'etc/webfused.conf' , output: 'webfused.conf' , copy: true) +invalid_conf = configure_file(input: 'test/invalid.conf' , output: 'invalid.conf' , copy: true) +test_passwd_json = configure_file(input: 'test/test_passwd.json', output: 'test_passwd.json', copy: true) + +alltests = executable('alltests', + 'test/mock/config_builder.cc', + 'test/mock/logger.cc', + 'test/mock/credentials.cc', + 'test/mock/settings.cc', + 'test/mock/pam.cc', + 'test/mock/libconfig.cc', + 'test/mock/linux.cc', + 'test/mock/server.cc', + 'test/config/configfile.cc', + 'test/config/configfile_version.cc', + 'test/config/configfile_server.cc', + 'test/config/configfile_auth.cc', + 'test/config/configfile_filesystem.cc', + 'test/config/configfile_log.cc', + 'test/config/configfile_user.cc', + 'test/config/config.cc', + 'test/config/settings.cc', + 'test/auth/factory.cc', + 'test/auth/file_authenticator.cc', + 'test/auth/pam_authenticator.cc', + 'test/log/log.cc', + 'test/log/log_manager.cc', + 'test/log/stderr_logger.cc', + 'test/log/syslog_logger.cc', + 'test/daemon.cc', + 'test/change_user.cc', + 'test/mountpoint_factory.cc', + 'test/userdb.cc', + include_directories: ['src', 'test'], + link_args: [ + '-Wl,--wrap=wf_credentials_type', + '-Wl,--wrap=wf_credentials_get', + + '-Wl,--wrap=wf_server_create', + + '-Wl,--wrap=wfd_settings_get_string', + '-Wl,--wrap=wfd_settings_get_string_or_default', + '-Wl,--wrap=wfd_settings_get_bool', + + '-Wl,--wrap=wfd_config_create', + '-Wl,--wrap=wfd_config_dispose', + '-Wl,--wrap=wfd_config_set_server_vhostname', + '-Wl,--wrap=wfd_config_set_server_port', + '-Wl,--wrap=wfd_config_set_server_key', + '-Wl,--wrap=wfd_config_set_server_cert', + '-Wl,--wrap=wfd_config_set_server_document_root', + '-Wl,--wrap=wfd_config_add_auth_provider', + '-Wl,--wrap=wfd_config_add_filesystem', + '-Wl,--wrap=wfd_config_set_logger', + '-Wl,--wrap=wfd_config_set_user', + + '-Wl,--wrap=pam_start', + '-Wl,--wrap=pam_end', + '-Wl,--wrap=pam_strerror', + '-Wl,--wrap=pam_authenticate', + '-Wl,--wrap=pam_acct_mgmt', + + '-Wl,--wrap=config_setting_get_elem', + + '-Wl,--wrap=getuid', + '-Wl,--wrap=getgrnam', + '-Wl,--wrap=setgid', + '-Wl,--wrap=setgroups', + '-Wl,--wrap=getpwnam', + '-Wl,--wrap=setuid' + ], + dependencies: [ + libwebfused_dep, + gtest_dep, + gmock_main_dep]) + +test('alltests', alltests) + +endif diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..ba5d687 --- /dev/null +++ b/meson_options.txt @@ -0,0 +1 @@ +option('without_tests', type: 'boolean', value: false, description: 'disable unit tests') \ No newline at end of file From 2b77e415cec40a54ccb62815ea6e0072e9f86a91 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sat, 6 Jun 2020 12:30:37 +0200 Subject: [PATCH 12/15] applied build matrix to meson --- .travis.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1023a9d..c5f1cb5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,6 @@ addons: - ca-certificates - openssl - libssl-dev - - uuid-dev - udev - gettext - python3 @@ -30,22 +29,22 @@ addons: env: matrix: - - BUILD_TYPE=Coverage CHECK_TARGET=check - - BUILD_TYPE=Debug CHECK_TARGET=memcheck - - BUILD_TPYE=Release CHECK_TARGET=check - - BUILD_TYPE=MinSizeRel CHECK_TARGET=check + - BUILD_TYPE=debug COVERAGE=true CHECK_OPTS= + - BUILD_TYPE=debug COVERAGE=false CHECK_OPTS=--wrap='valgrind --error-exitcode=42' + - BUILD_TPYE=release COVERAGE=false CHECK_OPTS= + - BUILD_TYPE=minsize COVERAGE=false CHECK_OPTS= before_install: - sudo pip3 install --system meson before_script: - - meson build + - meson -Dbuildtype=$BUILD_TYPE -Db_coverage=$COVERAGE build - cd build - ninja script: - - meson test + - meson test $CHECK_OPTS after_success: - bash <(curl -s https://codecov.io/bash) \ No newline at end of file From 0328572c543b50765ef45e42154b76f349728670 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sat, 6 Jun 2020 12:38:29 +0200 Subject: [PATCH 13/15] fixed typo --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c5f1cb5..79d18ac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,7 +31,7 @@ env: matrix: - BUILD_TYPE=debug COVERAGE=true CHECK_OPTS= - BUILD_TYPE=debug COVERAGE=false CHECK_OPTS=--wrap='valgrind --error-exitcode=42' - - BUILD_TPYE=release COVERAGE=false CHECK_OPTS= + - BUILD_TYPE=release COVERAGE=false CHECK_OPTS= - BUILD_TYPE=minsize COVERAGE=false CHECK_OPTS= From 45ac961f5701cf9073fd358689c85ed54ac74041 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sat, 6 Jun 2020 12:50:02 +0200 Subject: [PATCH 14/15] switched build instructions to meson --- doc/build.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/doc/build.md b/doc/build.md index 36aa33c..8f4fc45 100644 --- a/doc/build.md +++ b/doc/build.md @@ -2,11 +2,9 @@ To install dependecies, see below. - cd webfused - mkdir build + meson build cd build - cmake .. - make + ninja ./webfused -f webfused.conf ## Dependencies @@ -20,6 +18,10 @@ To install dependecies, see below. - [linux-pam](http://www.linux-pam.org/) - [Google Test](https://github.com/google/googletest) *(Test only)* +It is recommended to provide all dependencies outside of the project. + +To simply development, some dependencies are bundled using meson wrap files. Note that installing webfused will also install subprojects, when they are used (this is typically not what you want). + ### libfuse To install libfuse, meson is needed. Please refer to [meson quick guide](https://mesonbuild.com/Quick-guide.html) for setup instructions. From d03d8e94120b2927210f5df5def710c896f754e1 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sat, 6 Jun 2020 12:50:21 +0200 Subject: [PATCH 15/15] removed cmake build --- CMakeLists.txt | 244 ------------------------------------------- cmake/FindPam.cmake | 22 ---- cmake/coverage.cmake | 30 ------ 3 files changed, 296 deletions(-) delete mode 100644 CMakeLists.txt delete mode 100644 cmake/FindPam.cmake delete mode 100644 cmake/coverage.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 90a78ac..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,244 +0,0 @@ -cmake_minimum_required (VERSION 3.10) -project(webfused VERSION 0.3.0 DESCRIPTION "Webfuse daemon") - -option(WITHOUT_TESTS "disable unit tests" OFF) - -set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/cmake") - -set(THREADS_PREFER_PTHREAD_FLAG ON) -find_package(Threads REQUIRED) - -find_package(PkgConfig REQUIRED) -pkg_check_modules(FUSE3 REQUIRED fuse3) -pkg_check_modules(LWS REQUIRED libwebsockets) -pkg_check_modules(JANSSON REQUIRED jansson) -pkg_check_modules(UUID REQUIRED uuid) -pkg_check_modules(LIBCONFIG REQUIRED libconfig) -pkg_check_modules(OPENSSL REQUIRED openssl) -pkg_check_modules(WEBFUSE REQUIRED libwebfuse-adapter) -find_package(Pam REQUIRED) - -add_definitions(-D_FILE_OFFSET_BITS=64) - -include_directories( - "src" - ${WEBFUSE_INCLUDE_DIRS} -) - -link_directories( - ${WEBFUSE_LIBRARY_DIRS} -) - -set(CMAKE_C_STANDARD 99) -set(CMAKE_CXX_STANDARD 14) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(C_WARNINGS -Wall -Wextra) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -include(coverage) - -add_library(userdb STATIC - src/userdb/userdb.c -) - -target_include_directories(userdb PUBLIC - ${LIBCONFIG_INCLUDE_DIRS} - ${OPENSSL_INCLUDE_DIRS} - ${JANSSON_INCLUDE_DIRS} -) - -target_compile_options(userdb PUBLIC ${OPENSSL_CFLAGS_OTHER}) - -add_library(webfused-static STATIC - src/webfused/daemon.c - src/webfused/mountpoint_factory.c - src/webfused/change_user.c - src/webfused/config/config.c - src/webfused/config/factory.c - src/webfused/config/settings.c - src/webfused/auth/authenticator.c - src/webfused/auth/factory.c - src/webfused/auth/file_authenticator.c - src/webfused/auth/pam_authenticator.c - src/webfused/log/log.c - src/webfused/log/logger.c - src/webfused/log/manager.c - src/webfused/log/stderr_logger.c - src/webfused/log/syslog_logger.c -) - -add_executable(webfused - src/webfused/main.c -) - -target_link_libraries(webfused PUBLIC - webfused-static - userdb - ${LIBCONFIG_LIBRARIES} - ${OPENSSL_LIBRARIES} - ${WEBFUSE_LIBRARIES} - ${UUID_LIBRARIES} - ${PAM_LIBRARIES} -) - -target_compile_options(webfused PUBLIC ${OPENSSL_CFLAGS_OTHER}) -install(TARGETS webfused DESTINATION bin) - -add_executable(webfuse-passwd - src/passwd/main.c -) - -target_link_libraries(webfuse-passwd PUBLIC - userdb - ${OPENSSL_LIBRARIES} - ${JANSSON_LIBRARIES} -) - -target_include_directories(webfuse-passwd PUBLIC - example/passwd - example/lib/userdb/include - ${OPENSSL_INCLUDE_DIRS} - ${JANSSON_INCLUDE_DIRS} -) - -target_compile_options(webfuse-passwd PUBLIC ${OPENSSL_CFLAGS_OTHER}) -install(TARGETS webfuse-passwd DESTINATION bin) - -if(NOT WITHOUT_TESTS) - - -set(THREADS_PREFER_PTHREAD_FLAG ON) -find_package(Threads REQUIRED) - - -include (CTest) - -pkg_check_modules(GTEST gtest_main) -include(GoogleTest) -pkg_check_modules(GMOCK gmock) - -add_executable(alltests - test/mock/config_builder.cc - test/mock/logger.cc - test/mock/credentials.cc - test/mock/settings.cc - test/mock/pam.cc - test/mock/libconfig.cc - test/mock/linux.cc - test/mock/server.cc - test/config/configfile.cc - test/config/configfile_version.cc - test/config/configfile_server.cc - test/config/configfile_auth.cc - test/config/configfile_filesystem.cc - test/config/configfile_log.cc - test/config/configfile_user.cc - test/config/config.cc - test/config/settings.cc - test/auth/factory.cc - test/auth/file_authenticator.cc - test/auth/pam_authenticator.cc - test/log/log.cc - test/log/log_manager.cc - test/log/stderr_logger.cc - test/log/syslog_logger.cc - test/daemon.cc - test/change_user.cc - test/mountpoint_factory.cc - test/userdb.cc -) - -target_include_directories(alltests PRIVATE - src - test - ${GMOCK_INCLUDE_DIRS} - ${GTEST_INCLUDE_DIRS} -) - -target_compile_options(alltests PRIVATE ${GMOCK_CFLAGS} ${GTEST_CFLAGS} "-pthread") - -target_link_libraries(alltests PRIVATE - -Wl,--wrap=wf_credentials_type - -Wl,--wrap=wf_credentials_get - - -Wl,--wrap=wf_server_create - - -Wl,--wrap=wfd_settings_get_string - -Wl,--wrap=wfd_settings_get_string_or_default - -Wl,--wrap=wfd_settings_get_bool - - -Wl,--wrap=wfd_config_create - -Wl,--wrap=wfd_config_dispose - -Wl,--wrap=wfd_config_set_server_vhostname - -Wl,--wrap=wfd_config_set_server_port - -Wl,--wrap=wfd_config_set_server_key - -Wl,--wrap=wfd_config_set_server_cert - -Wl,--wrap=wfd_config_set_server_document_root - -Wl,--wrap=wfd_config_add_auth_provider - -Wl,--wrap=wfd_config_add_filesystem - -Wl,--wrap=wfd_config_set_logger - -Wl,--wrap=wfd_config_set_user - - -Wl,--wrap=pam_start - -Wl,--wrap=pam_end - -Wl,--wrap=pam_strerror - -Wl,--wrap=pam_authenticate - -Wl,--wrap=pam_acct_mgmt - - -Wl,--wrap=config_setting_get_elem - - -Wl,--wrap=getuid - -Wl,--wrap=getgrnam - -Wl,--wrap=setgid - -Wl,--wrap=setgroups - -Wl,--wrap=getpwnam - -Wl,--wrap=setuid - - webfused-static - userdb - ${LIBCONFIG_LIBRARIES} - ${WEBFUSE_LIBRARIES} - ${UUID_LIBRARIES} - ${PAM_LIBRARIES} - ${OPENSSL_LIBRARIES} - ${GMOCK_LIBRARIES} - ${GTEST_LIBRARIES} - ${CMAKE_THREAD_LIBS_INIT} -) - -# copy test data -configure_file(etc/webfused.conf webfused.conf COPYONLY) -configure_file(test/invalid.conf invalid.conf COPYONLY) -configure_file(test/test_passwd.json test_passwd.json COPYONLY) - -enable_testing() -gtest_discover_tests(alltests TEST_PREFIX alltests:) - -add_custom_target(check - ./alltests) -add_dependencies(check alltests) - -add_custom_target(memcheck - valgrind --leak-check=full --error-exitcode=1 ./alltests) -add_dependencies(memcheck alltests) - -add_custom_target(coverage - mkdir -p coverage - COMMAND lcov --initial --capture --directory . --output-file coverage/lcov_base.info --rc lcov_branch_coverage=1 - COMMAND ./alltests - COMMAND lcov --capture --directory . --output-file coverage/lcov.info --rc lcov_branch_coverage=1 - COMMAND lcov -a coverage/lcov_base.info -a coverage/lcov.info --output-file coverage/lcov.info --rc lcov_branch_coverage=1 - COMMAND lcov --remove coverage/lcov.info '/usr/*' --output-file coverage/lcov.info --rc lcov_branch_coverage=1 - COMMAND lcov --remove coverage/lcov.info '*/test/*' --output-file coverage/lcov.info --rc lcov_branch_coverage=1 - COMMAND lcov --remove coverage/lcov.info '*/main.c' --output-file coverage/lcov.info --rc lcov_branch_coverage=1 -) -add_dependencies(coverage alltests) - -add_custom_target(coverage-report - COMMAND genhtml --branch-coverage --highlight --legend coverage/lcov.info --output-directory coverage/report -) -add_dependencies(coverage-report coverage) - - -endif(NOT WITHOUT_TESTS) diff --git a/cmake/FindPam.cmake b/cmake/FindPam.cmake deleted file mode 100644 index 181be36..0000000 --- a/cmake/FindPam.cmake +++ /dev/null @@ -1,22 +0,0 @@ -find_package(PkgConfig) -pkg_check_modules(PC_PAM QUIET pam) -set(PAM_DEFINITIONS ${PC_PAM_CFLAGS_OTHER}) - -find_path(PAM_INCLUDE_DIR security/pam_appl.h - HINTS ${PC_PAM_INCLUDEDIR} ${PC_PAM_INCLUDE_DIRS} -) - -find_library(PAM_LIBRARY NAMES pam - HINTS ${PC_PAM_LIBDIR} ${PC_PAM_LIBRARY_DIRS} -) - -include(FindPackageHandleStandardArgs) - -find_package_handle_standard_args(Pam DEFAULT_MSG - PAM_LIBRARY PAM_INCLUDE_DIR -) - -mark_as_advanced(PAM_INCLUDE_DIR PAM_LIBRARY) - -set(PAM_LIBRARIES ${PAM_LIBRARY}) -set(PAM_INCLUDE_DIRS ${PAM_INCLUDE_DIR}) diff --git a/cmake/coverage.cmake b/cmake/coverage.cmake deleted file mode 100644 index 35b6e0e..0000000 --- a/cmake/coverage.cmake +++ /dev/null @@ -1,30 +0,0 @@ -set(CMAKE_C_FLAGS_COVERAGE - "${CMAKE_C_FLAGS_DEBUG} -pg --coverage -fprofile-arcs -ftest-coverage" - CACHE STRING "Flags used by the C compiler during coverage builds" - FORCE -) - -set(CMAKE_CXX_FLAGS_COVERAGE - "${CMAKE_CXX_FLAGS_DEBUG} -pg --coverage -fprofile-arcs -ftest-coverage" - CACHE STRING "Flags used by the C++ compiler during coverage builds." - FORCE -) - -set(CMAKE_EXE_LINKER_FLAGS_COVERAGE - "" - CACHE STRING "Flags used for linking binaries during coverage builds." - FORCE -) - -set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE - "" - CACHE STRING "Flags used by the shared libraries linker during coverage builds." - FORCE -) - -mark_as_advanced( - CMAKE_C_FLAGS_COVERAGE - CMAKE_CXX_FLAGS_COVERAGE - CMAKE_EXE_LINKER_FLAGS_COVERAGE - CMAKE_SHARED_LINKER_FLAGS_COVERAGE -) \ No newline at end of file