Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/code-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ jobs:

- name: Test build
run: |
git submodule update --init --recursive
sed -i "s|android-ndk-r27c|$ANDROID_NDK_HOME|g" aarch64-android-api30.txt

meson setup build \
Expand Down
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[submodule "src/ruri"]
path = src/ruri
url = https://github.com/Moe-hacker/ruri
url = https://github.com/RuriOSS/ruri
[submodule "src/catsh"]
path = src/catsh
url = https://github.com/rurioss/catsh
url = https://github.com/RuriOSS/catsh
22 changes: 22 additions & 0 deletions aarch64-android-api30.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[binaries]
c = 'android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang'
cpp = 'android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang++'
ar = 'android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar'
as = 'android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as'
ld = 'android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ld'
strip = 'android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip'
ranlib = 'android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib'
pkgconfig = '/usr/bin/pkg-config'
cmake = '/usr/bin/cmake'

[host_machine]
system = 'linux'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'

[target_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'aarch64'
endian = 'little'
111 changes: 111 additions & 0 deletions meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
project(
'rurima',
'c',
meson_version : '>= 0.61',
version : '0.9.0',
license : 'MIT',
default_options : [
'warning_level=3',
'b_lto=true',
'b_lto_mode=thin',
],
)

cc = meson.get_compiler('c')
pkgconfig = import('pkgconfig')
pkgconfig_libs = []
libruri_dependencies = []

## Build flags
common_cc_flags = [
'-Wno-pedantic',
'-Wno-newline-eof',
'-Wno-sign-compare',
'-Wno-unused-result',
'-Wno-unused-variable',
'-Wno-unused-function',
'-Wno-unused-parameter',
'-Wno-unused-but-set-variable',
'-Wno-missing-field-initializers',
'-Wno-gnu-zero-variadic-macro-arguments'
]

add_project_arguments(cc.get_supported_arguments(common_cc_flags), language: 'c')

libruri_version = '3.9.3'

prefixdir = get_option('prefix')

# Configuration options.
srcconf = configuration_data()
srcconf.set('_GNU_SOURCE', true)

want_cap = get_option('cap')
want_seccomp = get_option('seccomp')

## Cap.
if want_cap
libcap = dependency('libcap', required: false)
pkgconfig_libs += libcap
libruri_dependencies += libcap
if libcap.found() == false
add_project_arguments(cc.get_supported_arguments('-DDISABLE_LIBCAP=on'), language: 'c')
endif
else
add_project_arguments(cc.get_supported_arguments('-DDISABLE_LIBCAP=on'), language: 'c')
endif

## Seccomp.
if want_seccomp
libseccomp = dependency('libseccomp', required: false)
pkgconfig_libs += libseccomp
libruri_dependencies += libseccomp
if libseccomp.found() == false
add_project_arguments(cc.get_supported_arguments('-DDISABLE_LIBSECCOMP=on'), language: 'c')
endif
else
add_project_arguments(cc.get_supported_arguments('-DDISABLE_LIBSECCOMP=on'), language: 'c')
endif

# src ruri
subdir('src')

rurima_sources = [
'src/archive.c',
'src/checkdep.c',
'src/dockerhub.c',
'src/exec.c',
'src/info.c',
'src/lxcmirror.c',
'src/main.c',
'src/net.c',
'src/shared.c',
'src/signal.c',
'src/subcommand.c'
]

rurima_deps = [
libruri_dep,
libruri_dependencies,
]

executable('rurima',
rurima_sources,
dependencies: rurima_deps,
install: true,
install_dir: get_option('bindir')
)

install_data('README.md', install_dir: get_option('datadir') / 'doc' / meson.project_name())

summary({
'Build type': get_option('buildtype'),
'Install prefix': get_option('prefix'),
'Source directory': meson.project_source_root(),
'Build directory': meson.project_build_root(),
}, section: 'Directories')

summary({
'libcap': libcap.found(),
'libseccomp': libseccomp.found(),
}, section: 'Dependencies')
5 changes: 5 additions & 0 deletions meson_options.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
option('cap', type: 'boolean', value: true,
description: 'use caps')

option('seccomp', type: 'boolean', value: true,
description: 'use seccomp')
124 changes: 124 additions & 0 deletions src/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
# Rurima includes.
rurima_includes = include_directories(
'include',
'ruri')

## libcatsh
libcatsh_include_dir = include_directories('catsh/src/include')

libcatsh_sources = [
'catsh/src/catsh.c',
]

libcatsh = library('catsh',
libcatsh_sources,
include_directories: libcatsh_include_dir,
install: true,
version: '0.5.0',
soversion: '1',
)

pkgconfig.generate(libcatsh,
name: 'libcatsh',
description: 'C ATSH library',
version: '0.5.0',
)

libcatsh_dep = declare_dependency(
link_with: libcatsh,
include_directories: libcatsh_include_dir,
)

install_headers('catsh/src/include/catsh.h', subdir: 'catsh')

## libcprintf
libcprintf_include_dir = include_directories('ruri/src/include')

libcprintf_sources = [
'ruri/src/cprintf.c',
]

libcprintf = library('cprintf',
libcprintf_sources,
include_directories: libcprintf_include_dir,
install: true,
version: '0.2.1',
soversion: '1',
)

pkgconfig.generate(libcprintf,
name: 'libcprintf',
description: 'C formatted print library',
version: '0.2.1',
)

libcprintf_dep = declare_dependency(
link_with: libcprintf,
include_directories: libcprintf_include_dir,
)

install_headers('ruri/src/include/cprintf.h', subdir: 'cprintf')


## libruri
libruri_include_dir = include_directories(
'ruri/src/include',
'ruri/src/easteregg/include')

libruri_sources = [
'ruri/src/easteregg/action.c',
'ruri/src/easteregg/layer.c',
'ruri/src/easteregg/nekofeng.c',
'ruri/src/easteregg/typewriter.c',
'ruri/src/caplist.c',
'ruri/src/cgroup.c',
'ruri/src/chroot.c',
'ruri/src/config.c',
'ruri/src/elf-magic.c',
'ruri/src/info.c',
'ruri/src/k2v.c',
'ruri/src/mount.c',
'ruri/src/passwd.c',
'ruri/src/ps.c',
'ruri/src/rootless.c',
'ruri/src/ruri.c',
'ruri/src/rurienv.c',
'ruri/src/rurifetch.c',
'ruri/src/seccomp.c',
'ruri/src/signal.c',
'ruri/src/umount.c',
'ruri/src/unshare.c'
]

libruri = library('ruri',
libruri_sources,
include_directories: libruri_include_dir,
dependencies: [
libcprintf_dep,
libcatsh_dep,
libruri_dependencies,
],
install: true,
version: libruri_version,
soversion: '1',
)

pkgconfig.generate(
libruri,
name: 'libruri',
description: 'RURI library',
version: libruri_version,
requires: ['libcprintf', 'libcatsh', 'libcap', 'libseccomp'],
)

libruri_dep = declare_dependency(
link_with: libruri,
include_directories: libruri_include_dir,
dependencies: [
libcprintf_dep,
libcatsh_dep,
libruri_dependencies,
],
)

install_headers('ruri/src/include/ruri.h', subdir: 'ruri')