Skip to content

Commit 1807fa7

Browse files
committed
Don't require Lua sources for modules in build system
1 parent 7db7526 commit 1807fa7

14 files changed

Lines changed: 97 additions & 40 deletions

File tree

.github/workflows/main.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
4040
build_aarch64_cross_macos:
4141
name: Cross-compile to aarch64-apple-darwin
42-
runs-on: macos-11.0
42+
runs-on: macos-latest
4343
needs: build
4444
strategy:
4545
matrix:
@@ -186,8 +186,8 @@ jobs:
186186
- uses: Swatinem/rust-cache@v1
187187
- name: Run ${{ matrix.lua }} module tests
188188
run: |
189-
(cd examples/module && cargo build --release --features "${{ matrix.lua }},vendored")
190-
(cd tests/module && cargo test --release --features "${{ matrix.lua }},vendored")
189+
(cd tests/module && cargo build --release --features "${{ matrix.lua }}")
190+
(cd tests/module/loader && cargo test --release --features "${{ matrix.lua }},vendored")
191191
shell: bash
192192

193193
test_modules_windows:
@@ -208,8 +208,8 @@ jobs:
208208
pacman -S --noconfirm mingw-w64-x86_64-rust mingw-w64-x86_64-lua mingw-w64-x86_64-luajit mingw-w64-x86_64-pkg-config
209209
- name: Run ${{ matrix.lua }} module tests
210210
run: |
211-
(cd examples/module && cargo build --release --features "${{ matrix.lua }}")
212-
(cd tests/module && cargo test --release --features "${{ matrix.lua }}")
211+
(cd tests/module && cargo build --release --features "${{ matrix.lua }}")
212+
(cd tests/module/loader && cargo test --release --features "${{ matrix.lua }}")
213213
214214
rustfmt:
215215
name: Rustfmt

Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ rustdoc-args = ["--cfg", "docsrs"]
2323
[workspace]
2424
members = [
2525
"mlua_derive",
26-
"examples/module",
27-
"tests/module",
2826
]
2927

3028
[features]

build/find_dummy.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use std::path::PathBuf;
22

33
pub fn probe_lua() -> Option<PathBuf> {
4-
unreachable!()
4+
None
55
}

build/find_normal.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#![allow(dead_code)]
2+
13
use std::env;
24
use std::ops::Bound;
35
use std::path::PathBuf;

build/find_vendored.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#![allow(dead_code)]
2+
13
use std::path::PathBuf;
24

35
pub fn probe_lua() -> Option<PathBuf> {
@@ -20,7 +22,6 @@ pub fn probe_lua() -> Option<PathBuf> {
2022
#[cfg(feature = "luau")]
2123
let artifacts = luau0_src::Build::new().build();
2224

23-
#[cfg(not(feature = "module"))]
2425
artifacts.print_cargo_metadata();
2526

2627
Some(artifacts.include_dir().to_owned())

build/main.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@ fn main() {
105105
+ "Please, use `pkg-config` or custom mode to link to a Lua dll."
106106
);
107107

108+
#[cfg(all(feature = "luau", feature = "module"))]
109+
compile_error!("Luau does not support module mode");
110+
111+
#[cfg(any(not(feature = "module"), target_os = "windows"))]
108112
find::probe_lua();
109113

110114
println!("cargo:rerun-if-changed=build");

examples/module/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@ edition = "2018"
77
[lib]
88
crate-type = ["cdylib"]
99

10+
[workspace]
11+
1012
[features]
1113
lua54 = ["mlua/lua54"]
1214
lua53 = ["mlua/lua53"]
1315
lua52 = ["mlua/lua52"]
1416
lua51 = ["mlua/lua51"]
1517
luajit = ["mlua/luajit"]
16-
vendored = ["mlua/vendored"]
1718

1819
[dependencies]
1920
mlua = { path = "../..", features = ["module"] }

examples/module/src/lib.rs

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,10 @@ fn used_memory(lua: &Lua, _: ()) -> LuaResult<usize> {
88
Ok(lua.used_memory())
99
}
1010

11-
fn check_userdata(_: &Lua, ud: MyUserData) -> LuaResult<i32> {
12-
Ok(ud.0)
13-
}
14-
1511
#[mlua::lua_module]
1612
fn rust_module(lua: &Lua) -> LuaResult<LuaTable> {
1713
let exports = lua.create_table()?;
1814
exports.set("sum", lua.create_function(sum)?)?;
1915
exports.set("used_memory", lua.create_function(used_memory)?)?;
20-
exports.set("check_userdata", lua.create_function(check_userdata)?)?;
21-
Ok(exports)
22-
}
23-
24-
#[derive(Clone, Copy)]
25-
struct MyUserData(i32);
26-
27-
impl LuaUserData for MyUserData {}
28-
29-
#[mlua::lua_module]
30-
fn rust_module_second(lua: &Lua) -> LuaResult<LuaTable> {
31-
let exports = lua.create_table()?;
32-
exports.set("userdata", lua.create_userdata(MyUserData(123))?)?;
3316
Ok(exports)
3417
}
35-
36-
#[mlua::lua_module]
37-
fn rust_module_error(_: &Lua) -> LuaResult<LuaTable> {
38-
Err("custom module error".to_lua_err())
39-
}

tests/module/.cargo/config

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
[target.x86_64-apple-darwin]
2-
rustflags = ["-C", "link-args=-rdynamic"]
2+
rustflags = [
3+
"-C", "link-arg=-undefined",
4+
"-C", "link-arg=dynamic_lookup",
5+
]
36

47
[target.aarch64-apple-darwin]
5-
rustflags = ["-C", "link-args=-rdynamic"]
6-
7-
[target.x86_64-unknown-linux-gnu]
8-
rustflags = ["-C", "link-args=-rdynamic"]
8+
rustflags = [
9+
"-C", "link-arg=-undefined",
10+
"-C", "link-arg=dynamic_lookup",
11+
]

tests/module/Cargo.toml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
[package]
2-
name = "module_runner"
2+
name = "rust_module"
33
version = "0.0.0"
44
authors = ["Aleksandr Orlenko <zxteam@pm.me>"]
55
edition = "2018"
66

7+
[lib]
8+
crate-type = ["cdylib"]
9+
10+
[workspace]
11+
members = [
12+
"loader",
13+
]
14+
715
[features]
816
lua54 = ["mlua/lua54"]
917
lua53 = ["mlua/lua53"]
1018
lua52 = ["mlua/lua52"]
1119
lua51 = ["mlua/lua51"]
1220
luajit = ["mlua/luajit"]
13-
vendored = ["mlua/vendored"]
1421

1522
[dependencies]
16-
mlua = { path = "../.." }
23+
mlua = { path = "../..", features = ["module"] }

0 commit comments

Comments
 (0)