unify build systems of buffyboard and unl0kr

This commit is contained in:
Vladimir Stoiakin 2024-09-25 15:56:19 +03:00
parent 20b084c0b4
commit ec21e5ead9
14 changed files with 120 additions and 147 deletions

View file

@ -126,7 +126,7 @@ void ul_cli_parse_opts(int argc, char *argv[], ul_cli_opts *opts) {
opts->verbose = true;
break;
case 'V':
fprintf(stderr, "unl0kr %s\n", UL_VERSION);
fprintf(stderr, "unl0kr %s\n", PROJECT_VERSION);
exit(0);
default:
print_usage();

View file

@ -1,54 +0,0 @@
unl0kr(1) "unl0kr"
# NAME
UNL0KR - LVGL based initramfs disk unlocker
# SYNOPSIS
unl0kr [OPTION]
# DESCRIPTION
UNL0KR is a disk unlocker for the initramfs based on LVGL. By using LVGL and
rendering directly to the framebuffer it can work without relying on GPU
hardware acceleration. This makes for much more managable initramfs sizes.
Unl0kr utilises the CRYPTTAB_TRIED variable. Upon completion, the entered
password is printed to STDOUT. All other output happens on STDERR.
# OPTIONS
## Optional
*-C, --config-override*
Path to a config override file. Can be supplied multiple times. Config
files are merged in the following order:
- /usr/share/unl0kr/unl0kr.conf
- /usr/share/unl0kr/unl0kr.conf.d/\* (alphabetically)
- /etc/unl0kr.conf
- /etc/unl0kr.conf.d/\* (alphabetically)
- Override files (in supplied order)
*-g, --geometry=NxM[@X,Y]*
Force a display size of N horizontal times M vertical pixels, offset
horizontally by X pixels and vertically by Y pixels.
*-d --dpi=N*
Override the display's DPI value.
*-h, --help*
Print this message and exit.
*-v, --verbose*
Enable more detailed logging output on STDERR.
*-V, --version*
Print the unl0kr version and exit.
# EXAMPLES
*Decrypt /dev/sda1 to name "root"*
CRYPTTAB_SOURCE="/dev/sda1" CRYPTTAB_TRIED="0" unl0kr | cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue open "/dev/sda1" root -
# SEE ALSO
*unl0kr.conf*(5)
# AUTHORS
*Undef* <debian@undef.tools>

View file

@ -1,102 +0,0 @@
unl0kr(5) "unl0kr"
# NAME
UNL0KR - configuration file
# DESCRIPTION
UNL0KR expects a configuration file with options in the following format, with
one option/value pair per line:
```
[section]
<option>=<value>
```
On launch, UNL0KR searches for configuration files in various locations and
successively merges all files together into a single configuration. Files are searched
for and, if found, merged in the following order:
- /usr/share/unl0kr/unl0kr.conf
- /usr/share/unl0kr/unl0kr.conf.d/ (alphabetically)
- /etc/unl0kr.conf
- /etc/unl0kr.conf.d/ (alphabetically)
- Override files (in supplied order)
# OPTIONS
## General
*animations* = <true|false>
Enable or disable animations. Useful for slower devices. Default: false.
*backend* = <fbdev|drm>
The rendering backend to use. Default: fbdev.
*timeout* = <value>
The time in seconds before unl0kr will consider the entry a failure
and shutdown. Setting timeout to 0 disables this feature. Default: 0.
## Keyboard
*autohide* = <true|false>
Whether to automatically hide the keyboard when a hardware keyboard
is detected on launch. Default: true.
*layout* = <us|de|fr|...>
The default layout to use. Can be changed from the UI at runtime.
The available options are defined by the available keyboards at build time.
Default: us.
*popovers* = <true|false>
Enable or disable key press popovers showing the selected key.
default: true.
## Textarea
*obscured* = <true|false>
Whether the password in the text entry box can be read. Selectable in
the UI at runtime. Default: true.
*bullet* = <value>
The character that will be used to obscure the password. Default: bullet.
## Theme
*default* = <adwaita-light|adwaita-dark|breezy-light|breezy-dark|nord-light|nord-dark|pmos-light|pmos-dark>
Selects the default theme on boot. Can be changed at runtime to the
alternative theme. Default: breezy-dark.
*alternative* = <breezy-light|breezy-dark|pmos-light|pmos-dark>
Selects the alternative theme which the user can then choose on boot.
Default: breezy-light.
## Input
*keyboard* = <true|false>
Enable or disable the use of hardware keyboards. Default: true
*pointer* = <true|false>
Enable or disable the use of a hardware mouse or other pointing device.
Default: true.
*touchscreen* = <true|false>
Enable or disable the use of the touchscreen.
Default: true.
## Quirks
*fbdev_force_refresh* = <true|false>
If true and using the framebuffer backend, this triggers a display refresh
after every draw operation. This has a negative performance impact.
Default: false.
*terminal_prevent_graphics_mode* = <true|false>
If true, this avoids setting the terminal into graphics mode. This will
show the terminal command prompt. Default: false.
*terminal_allow_keyboard_input* = <true|false>
If true, this avoids turning off terminal keyboard input. This will show
your password on the terminal. Default: false.
# SEE ALSO
*unl0kr*(1)
# AUTHORS
*Undef* <debian@undef.tools>
*Johannes Marbach* <n0-0ne@mailbox.org>

View file

@ -377,7 +377,7 @@ int main(int argc, char *argv[]) {
}
/* Announce ourselves */
bbx_log(BBX_LOG_LEVEL_VERBOSE, "unl0kr %s", UL_VERSION);
bbx_log(BBX_LOG_LEVEL_VERBOSE, "unl0kr %s", PROJECT_VERSION);
/* Parse config files */
ul_config_init_opts(&conf_opts);

View file

@ -1,76 +1,34 @@
# Copyright 2021 Clayton Craft
# SPDX-License-Identifier: GPL-3.0-or-later
depxkbcommon = dependency('xkbcommon')
unl0kr_sources = [
'backends.c',
'command_line.c',
'config.c',
'main.c',
'sq2lv_layouts.c',
'terminal.c',
]
shared_sources = [
'../shared/cursor/cursor.c',
'../shared/fonts/font_32.c',
'../shared/config.c',
'../shared/indev.c',
'../shared/log.c',
'../shared/theme.c',
'../shared/themes.c',
]
squeek2lvgl_sources = [
'../squeek2lvgl/sq2lv.c',
]
man_files = [
'doc/unl0kr.1',
'doc/unl0kr.conf.5',
]
unl0kr_dependencies = [
dependency('inih'),
dependency('libinput'),
dependency('libudev'),
dependency('xkbcommon'),
]
libdrm_dep = dependency('libdrm', required: get_option('with-drm'))
if libdrm_dep.found()
unl0kr_dependencies += [libdrm_dep]
add_project_arguments('-DLV_USE_LINUX_DRM=1', language: ['c'])
endif
lvgl_sources = run_command('../find-lvgl-sources.sh', '../lvgl', check: true).stdout().strip().split('\n')
install_data(sources: 'unl0kr.conf', install_dir : get_option('sysconfdir'))
executable(
'unl0kr',
sources: unl0kr_sources + shared_sources + squeek2lvgl_sources + lvgl_sources,
include_directories: ['..'],
dependencies: unl0kr_dependencies,
install: true
unl0kr_sources = files(
'backends.c',
'command_line.c',
'config.c',
'main.c',
'sq2lv_layouts.c',
'terminal.c'
)
scdoc = dependency('scdoc')
scdoc_prog = find_program(scdoc.get_pkgconfig_variable('scdoc'), native : true)
sh = find_program('sh', native : true)
foreach file : man_files
filename = file + '.scd'
section = file.split('.')[-1]
topic = file.split('.' + section)[-2].split('/')[-1]
output = '@0@.@1@'.format(topic, section)
unl0kr_dependencies = [
common_dependencies,
depxkbcommon
]
deplibdrm = dependency('libdrm', required: get_option('with-drm'))
if deplibdrm.found()
unl0kr_dependencies += deplibdrm
add_project_arguments('-DLV_USE_LINUX_DRM=1', language: 'c')
endif
executable('unl0kr',
include_directories: common_include_dirs,
sources: unl0kr_sources + shared_sources + squeek2lvgl_sources + lvgl_sources,
dependencies: unl0kr_dependencies,
install: true
)
install_data('unl0kr.conf', install_dir: get_option('sysconfdir'))
custom_target(
output,
input : filename,
output : output,
capture : true,
command : [sh, '-c', scdoc_prog.path() + ' < @INPUT@'],
install : true,
install_dir : get_option('mandir') / 'man' + section
)
endforeach

View file

@ -9,8 +9,8 @@
#include "lvgl/lvgl.h"
#ifndef UL_VERSION
#define UL_VERSION "?" /* Just to silence IDE warning. Real version injected by meson during build. */
#ifndef PROJECT_VERSION
#define PROJECT_VERSION "?" /* Just to silence IDE warning. Real version injected by meson during build. */
#endif
/**