Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F145720429
D51890.id160316.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
13 KB
Referenced Files
None
Subscribers
None
D51890.id160316.diff
View Options
diff --git a/contrib/libucl/lua/lua_ucl.c b/contrib/libucl/lua/lua_ucl.c
--- a/contrib/libucl/lua/lua_ucl.c
+++ b/contrib/libucl/lua/lua_ucl.c
@@ -30,6 +30,8 @@
#include "lua_ucl.h"
#include <strings.h>
+#include "bootstrap.h"
+
/***
* @module ucl
* This lua module allows to parse objects from strings and to store data into
@@ -1528,3 +1530,5 @@
return (struct ucl_lua_funcdata*)obj->value.ud;
}
+
+FLUA_MODULE(ucl);
diff --git a/contrib/lyaml/ext/yaml/yaml.c b/contrib/lyaml/ext/yaml/yaml.c
index 54478610134fec5853580fd232b711074cf2a37f..6a5ddc605e0fd3640955adda8a2d867915524504
GIT binary patch
literal 2021
zc${rjTW_mI5PmklV&pv3PC3p+eL2bLQHhOXR16m2q*hg-HLT567|`x=EGx?2?sI1V
z$BtXc7wzmf-#0ggn`;BE;lOtJC^5km>y<TkVJ(VO6kFJo65N^*<W&l-c>(JKSVb!N
z9ww~7d!3nZe|!5CF$5cz)j^7FreQE1;>F!BU+!=3@8Oxr1H6pjh1J`P75@jl{d&pV
zaW1&r38h3?fKZTe$uWqnWQFFb2^+~dlp9DgCb!%KT>>i(P;sfyp<HVw3d)5+f`Y_{
zV4We8DmQx1Bu9J-OsO&v3@ITklX}Ms%`{1FM9viqbjG0{b{_p<qmy!$6QL-8u8+5{
z7dk6z4U#J@MM5+tf|9&$s(QT6#ZGi0<lfXm5g$_53R9tgP1u#G*w8<3@~i4~E)-Th
z6~w--H5wHe6JC%PW^;pmQ#@~iLlS`rG)bRgY+xi*QE_!wE=87oR_;FMBbul-wJcDW
zH*RT(<!f~R=7}Z?d2Gr&FZYyVQsM+rYU-iuVubf>UH;%rT5aQtQe)I@DAbYa)amX@
zWh~EO&AalUxM+rltjEkGg`qUggJ3ySI60(ynepft$IOP%pGL1%V1pCFBJf|Fi9Lb7
z72>&X!mAU_{AC1)2rMsJfj<SyTfy&+H!;EfV-eV42!23p&V1oIHkuu8>@Fvc_Y6<y
z>iH44&fJNRH}V_Jj?J+{;+xySc!o#o$#I=%WfIrai9BMS`T<z5u!6`LFI_8u#WGm<
zp^ZUIklAy*X@ElZ-1edo3Zo6|7d${Xvs{<dh|XGK8UY0gV}G#<oab2tGvA%qXne9U
zKI_S~TQ$sX>{`y;go!n`p6$lVN1`T4LbhST>&zxAsap6MM~?4NK4agD0z8_SZV-KV
zzdE69f)zL+Rc0Fa^CnZOE;{)Q54w7GOGK6b+#rO|c^TRtoG`I17wNED-ep6NO<sH&
zg7as6&uO3wRSAj1go^~XOa7Ar+ItTV#|4PbT%B{gZhBm750L(&!Q&df;dCE<ODa~3
zO1b^s>fIQ|RX3pUjh@P4JIcO)vZc9LlkLoy*X%#We%|cjtbcA>m!(ElR<-t&Z$!ai
zzVfWO-Rt$qqkm?8!3JYBdo2L^xM<dr_AjmTKDbLO?jU%&!EbjuQM*)xI1ZyAz8l19
z*c)8M3Vw#W;RWP`=w134hN9(`&?->4>}ux50pCLK=U?!v@pg(A2RB%e2fSU7nn1tr
zMz6zQuXgknlD(mMW~`W0X!~qb2`h>gc~uvv)d?BBH*e{>CeZJ@@&0HSSP<8Fimio%
zgP{$Kw5)g$Q(0kvr#Qq!I9$6!3>yGiy%=9B`08?pk7VoQ&WvPjl9qgno0`i3inhHn
zAvgizs#aMp5WsSReDtp+CWPX8BY2+D^_P2O`GMOS$GhLLNUm`=!`-9tZWvSQ@7$j(
KU3)-ki1`<!foSUh
literal 1977
zc${rjU2p0}5PinKVniMasV_-TUv6@HRR>J4YHVbiq^PQ_#a{4MW{q~&7ojMByU(35
zCM2{HAKJ4s=ggPKH`f+i!+~wfL1u$5R!e8*!%E0p$PKJ31%A!Q<V6W%xP;XK9GNS=
zhcT0QZwecRx3^!>hRjCQ?x4h`Fwh(I@#5~6FT>m65T2Mi!1Dl}S-mNk{6Ev%ub0d%
z=bWpp&{|Xygoc7EjzMe`lZNLutQF@_tsyIz+Hf081xy}b$CXBhYGs&^lna9l1&I%h
zO@U0hTAMvn9PM*pT34B1NC|nB)mttNGbFhdCD+h11&40jdUX4ZPR?0LghB#cpKf6<
zOi|Sa6xT+HjA(2$%F4Q_>gl=^ThWS;ds7Qdd`MkuOoalrVO!;5P5->fZ&$BMp|R?@
zAof*l5Yz-_T#^@NbAx@;yljF)5`hUcNuOhE%t&ZQ#WiiYG$H$<+J4SQG*PW<B~h3+
zZh3{}YjpqSnIVKc)>T<nd&)7ZaDpf`ecyI5!F#r<e()x(W8-CIFzRC{)REn})9sZm
zSXsh~x8*}|(F_lvr_2<Ep$*Q1U?uEua!B_w<H0G8sS9y9NnV`D1uuqq6h3=ncMM%8
z#&g$(7cZHHiv-Xja)M+D;RKvu3BP;6*ar8HdE~}1gb}fMv$^lN2z$ZEUyQxr2_Dfk
z2ovzVnU^4M5;mGGo9D*FH*=%W6pzlM=X=T0Ca#H>1jIZEBXD5uM2R<A_)Y}#MKlj%
z7lRlhbKnJ&2!-648zci1Mhx6%JU~2ke4o^a&RJj@5d{jPaK4PZr)dJy&>y=9KDrp6
z^XR)rHOy}0JKoHOu`_d?+{P<Jq9#eQJcbD`Q<qRub?`GvyfC1AMq!Xdc(gIyD0%mO
z@nY8oC-P#d%p?kDO{P>`bP5|DbPe1i5mo+kgV2P|i`aeVgt6=RNQd1DE*pAk^8C{f
ze0<jToCaFzolrPTxJYojls{>py?1|qT7dY>)g{O4rpIz~fczf=0XOgsr~B|*wqtTo
zsm=GJ-i>8lwF3&@=&6*OLGk?)mX~5h*axtz*?+)p+3ez?i&)OrLUNcb183%TI$gTy
zet@5`kyy3P(Ez%*P*#feEUoP>_zNd(P4IMs-}ZE-_9@vkjgu(7>!rHi>0PB7eulgL
zg~{2XbLnGQnwD5bkG#gERx>}1_y(ds|AJqw*K@o$pwW^%;Pryk2Ks%oI;{=%WJ_-w
z)#=+Gz#UT>vCp8+n3PA$t6HK~D`a(EgN5(gK)-L++k<6cL45Bqb><!pfUz*rYR6?t
zWrZG|(ijuraP9XoYyddwrTF^5SCrp>Agq=90210Ht@s8vGFLqmJ@(3m=xmVgYF(59
q4OmGg@BKRxlZEDHEqIyJ^_L;C{J^b@W87_76gRko;qJkDv;GCB!dqAX
diff --git a/libexec/flua/Makefile b/libexec/flua/Makefile
--- a/libexec/flua/Makefile
+++ b/libexec/flua/Makefile
@@ -1,10 +1,29 @@
.include <src.lua.mk>
-SUBDIR+= libfreebsd
-SUBDIR+= libhash
-SUBDIR+= libjail
-SUBDIR+= libucl
-SUBDIR+= liblyaml
+FLUA_MODULES+= libhash
+FLUA_MODULES+= libjail
+FLUA_MODULES+= libucl
+FLUA_MODULES+= liblyaml
+
+.ifdef BOOTSTRAPPING
+FLUA_MODULES+= libfreebsd/sys/linker
+FLUA_MODULES+= libfreebsd/kenv
+CFLAGS+= -I${.CURDIR} -DBOOTSTRAPPING
+
+SHAREDIR= ${WORLDTMP}/legacy/usr/share/flua
+FLUA_PATH= ${SHAREDIR}/?.lua;${SHAREDIR}/?/init.lua
+CFLAGS+= -DBOOTSTRAP_FLUA_PATH=\"${FLUA_PATH:Q}\"
+
+.for mod in ${FLUA_MODULES}
+.include "${mod}/Makefile.inc"
+.endfor
+
+.else
+
+FLUA_MODULES+= libfreebsd
+SUBDIR+= ${FLUA_MODULES}
+
+.endif
LUASRC?= ${SRCTOP}/contrib/lua/src
.PATH: ${LUASRC}
@@ -14,7 +33,7 @@
CWARNFLAGS.gcc+= -Wno-format-nonliteral
-LIBADD= lua
+LIBADD+= lua
# Entry point
SRCS+= lua.c
diff --git a/libexec/flua/Makefile.inc b/libexec/flua/Makefile.inc
--- a/libexec/flua/Makefile.inc
+++ b/libexec/flua/Makefile.inc
@@ -2,4 +2,9 @@
CFLAGS+= \
-I${SRCTOP}/contrib/lua/src \
- -I${SRCTOP}/lib/liblua
+ -I${SRCTOP}/lib/liblua \
+ -I${SRCTOP}/libexec/flua
+
+.ifdef BOOTSTRAPPING
+CFLAGS+= -DBOOTSTRAPPING
+.endif
diff --git a/libexec/flua/bootstrap.h b/libexec/flua/bootstrap.h
new file mode 100644
--- /dev/null
+++ b/libexec/flua/bootstrap.h
@@ -0,0 +1,30 @@
+/*-
+ * Copyright (c) 2025 Kyle Evans <kevans@FreeBSD.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#ifndef FLUA_BOOTSTRAP_H
+#define FLUA_BOOTSTRAP_H
+
+#ifdef BOOTSTRAPPING
+#include <sys/linker_set.h>
+
+#include <lauxlib.h>
+
+SET_DECLARE(flua_module_set, const luaL_Reg);
+#define FLUA_MODULE_DEF(ident, modname, openfn) \
+ static const luaL_Reg ident = { modname, openfn }; \
+ DATA_SET(flua_module_set, ident)
+
+#define FLUA_MODULE_NAMED(mod, name) \
+ FLUA_MODULE_DEF(module_ ## mod, name, luaopen_ ## mod)
+#define FLUA_MODULE(mod) \
+ FLUA_MODULE_DEF(module_ ## mod, #mod, luaopen_ ## mod)
+#else /* !BOOTSTRAPPING */
+#define FLUA_MODULE_DEF(ident, modname, openfn)
+#define FLUA_MODULE_NAMED(mod, name)
+#define FLUA_MODULE(modname)
+#endif /* BOOTSTRAPPING */
+
+#endif /* FLUA_BOOTSTRAP_H */
diff --git a/libexec/flua/libfreebsd/kenv/Makefile b/libexec/flua/libfreebsd/kenv/Makefile
--- a/libexec/flua/libfreebsd/kenv/Makefile
+++ b/libexec/flua/libfreebsd/kenv/Makefile
@@ -1,5 +1,5 @@
SHLIB_NAME= kenv.so
-SRCS+= kenv.c
MAN= freebsd.kenv.3lua
+.include "Makefile.inc"
.include <bsd.lib.mk>
diff --git a/libexec/flua/libfreebsd/kenv/Makefile.inc b/libexec/flua/libfreebsd/kenv/Makefile.inc
new file mode 100644
--- /dev/null
+++ b/libexec/flua/libfreebsd/kenv/Makefile.inc
@@ -0,0 +1,2 @@
+.PATH: ${.PARSEDIR}
+SRCS+= kenv.c
diff --git a/libexec/flua/libfreebsd/kenv/kenv.c b/libexec/flua/libfreebsd/kenv/kenv.c
--- a/libexec/flua/libfreebsd/kenv/kenv.c
+++ b/libexec/flua/libfreebsd/kenv/kenv.c
@@ -14,6 +14,8 @@
#include <lualib.h>
#include <lauxlib.h>
+#include "bootstrap.h"
+
int luaopen_freebsd_kenv(lua_State *L);
static int
@@ -94,3 +96,5 @@
return (1);
}
+
+FLUA_MODULE_NAMED(freebsd_kenv, "freebsd.kenv");
diff --git a/libexec/flua/libfreebsd/sys/linker/Makefile b/libexec/flua/libfreebsd/sys/linker/Makefile
--- a/libexec/flua/libfreebsd/sys/linker/Makefile
+++ b/libexec/flua/libfreebsd/sys/linker/Makefile
@@ -1,7 +1,6 @@
SHLIB_NAME= linker.so
-SRCS+= linker.c
-
MAN= freebsd.sys.linker.3lua
+.include "Makefile.inc"
.include <bsd.lib.mk>
diff --git a/libexec/flua/libfreebsd/sys/linker/Makefile.inc b/libexec/flua/libfreebsd/sys/linker/Makefile.inc
new file mode 100644
--- /dev/null
+++ b/libexec/flua/libfreebsd/sys/linker/Makefile.inc
@@ -0,0 +1,2 @@
+.PATH: ${.PARSEDIR}
+SRCS+= linker.c
diff --git a/libexec/flua/libfreebsd/sys/linker/linker.c b/libexec/flua/libfreebsd/sys/linker/linker.c
--- a/libexec/flua/libfreebsd/sys/linker/linker.c
+++ b/libexec/flua/libfreebsd/sys/linker/linker.c
@@ -15,6 +15,8 @@
#include <lualib.h>
#include <lauxlib.h>
+#include "bootstrap.h"
+
int luaopen_freebsd_sys_linker(lua_State *L);
static int
@@ -80,3 +82,5 @@
return (1);
}
+
+FLUA_MODULE_NAMED(freebsd_sys_linker, "freebsd.sys.linker");
diff --git a/libexec/flua/libhash/Makefile b/libexec/flua/libhash/Makefile
--- a/libexec/flua/libhash/Makefile
+++ b/libexec/flua/libhash/Makefile
@@ -1,9 +1,6 @@
SHLIB_NAME= hash.so
-SRCS+= lhash.c
-
-LIBADD+= md
-
MAN= hash.3lua
+.include "Makefile.inc"
.include <bsd.lib.mk>
diff --git a/libexec/flua/libhash/Makefile.inc b/libexec/flua/libhash/Makefile.inc
new file mode 100644
--- /dev/null
+++ b/libexec/flua/libhash/Makefile.inc
@@ -0,0 +1,3 @@
+.PATH: ${.PARSEDIR}
+SRCS+= lhash.c
+LIBADD+= md
diff --git a/libexec/flua/libhash/lhash.c b/libexec/flua/libhash/lhash.c
--- a/libexec/flua/libhash/lhash.c
+++ b/libexec/flua/libhash/lhash.c
@@ -11,6 +11,8 @@
#include <sha256.h>
#include <string.h>
+#include "bootstrap.h"
+
#define SHA256_META "SHA256 meta table"
#define SHA256_DIGEST_LEN 32
@@ -175,3 +177,5 @@
return 1;
}
+
+FLUA_MODULE(hash);
diff --git a/libexec/flua/libjail/Makefile b/libexec/flua/libjail/Makefile
--- a/libexec/flua/libjail/Makefile
+++ b/libexec/flua/libjail/Makefile
@@ -1,9 +1,6 @@
SHLIB_NAME= jail.so
-SRCS+= lua_jail.c
-
-LIBADD+= jail
-
MAN= jail.3lua
+.include "Makefile.inc"
.include <bsd.lib.mk>
diff --git a/libexec/flua/libjail/Makefile.inc b/libexec/flua/libjail/Makefile.inc
new file mode 100644
--- /dev/null
+++ b/libexec/flua/libjail/Makefile.inc
@@ -0,0 +1,3 @@
+.PATH: ${.PARSEDIR}
+SRCS+= lua_jail.c
+LIBADD+= jail
diff --git a/libexec/flua/libjail/lua_jail.c b/libexec/flua/libjail/lua_jail.c
--- a/libexec/flua/libjail/lua_jail.c
+++ b/libexec/flua/libjail/lua_jail.c
@@ -38,6 +38,8 @@
#include <lauxlib.h>
#include <lualib.h>
+#include "bootstrap.h"
+
#define JAIL_METATABLE "jail iterator metatable"
/*
@@ -716,3 +718,5 @@
return (1);
}
+
+FLUA_MODULE(jail);
diff --git a/libexec/flua/liblyaml/Makefile b/libexec/flua/liblyaml/Makefile
--- a/libexec/flua/liblyaml/Makefile
+++ b/libexec/flua/liblyaml/Makefile
@@ -1,22 +1,4 @@
SHLIB_NAME= yaml.so
-WARNS= 1
-LYAMLSRC?= ${SRCTOP}/contrib/lyaml
-.PATH: ${LYAMLSRC}/ext/yaml ${LYAMLSRC}/lib/lyaml
-SRCS= emitter.c \
- parser.c \
- scanner.c \
- yaml.c
-CFLAGS+= \
- -I${LYAMLSRC}/ext/yaml \
- -I${SRCTOP}/contrib/libyaml/include \
- -DVERSION=\"6.2.8\"
-LIBADD+= yaml
-
-FILES= explicit.lua \
- functional.lua \
- implicit.lua \
- init.lua
-FILESDIR= ${SHAREDIR}/flua/lyaml
-
+.include "Makefile.inc"
.include <bsd.lib.mk>
diff --git a/libexec/flua/liblyaml/Makefile b/libexec/flua/liblyaml/Makefile.inc
copy from libexec/flua/liblyaml/Makefile
copy to libexec/flua/liblyaml/Makefile.inc
--- a/libexec/flua/liblyaml/Makefile
+++ b/libexec/flua/liblyaml/Makefile.inc
@@ -1,9 +1,8 @@
-SHLIB_NAME= yaml.so
-
WARNS= 1
+
LYAMLSRC?= ${SRCTOP}/contrib/lyaml
.PATH: ${LYAMLSRC}/ext/yaml ${LYAMLSRC}/lib/lyaml
-SRCS= emitter.c \
+SRCS+= emitter.c \
parser.c \
scanner.c \
yaml.c
@@ -13,10 +12,9 @@
-DVERSION=\"6.2.8\"
LIBADD+= yaml
-FILES= explicit.lua \
+FILESGROUPS+= YAML
+YAML= explicit.lua \
functional.lua \
implicit.lua \
init.lua
-FILESDIR= ${SHAREDIR}/flua/lyaml
-
-.include <bsd.lib.mk>
+YAMLDIR= ${SHAREDIR}/flua/lyaml
diff --git a/libexec/flua/libucl/Makefile b/libexec/flua/libucl/Makefile
--- a/libexec/flua/libucl/Makefile
+++ b/libexec/flua/libucl/Makefile
@@ -1,14 +1,4 @@
SHLIB_NAME= ucl.so
-WARNS= 2
-
-UCLSRC?= ${SRCTOP}/contrib/libucl
-.PATH: ${UCLSRC}/lua
-SRCS+= lua_ucl.c
-CFLAGS+= \
- -I${UCLSRC}/include \
- -I${UCLSRC}/src \
- -I${UCLSRC}/uthash
-LIBADD+= ucl
-
+.include "Makefile.inc"
.include <bsd.lib.mk>
diff --git a/libexec/flua/libucl/Makefile b/libexec/flua/libucl/Makefile.inc
copy from libexec/flua/libucl/Makefile
copy to libexec/flua/libucl/Makefile.inc
--- a/libexec/flua/libucl/Makefile
+++ b/libexec/flua/libucl/Makefile.inc
@@ -1,8 +1,8 @@
-SHLIB_NAME= ucl.so
-
+.if ${WARNS:U6} > 2
WARNS= 2
+.endif
-UCLSRC?= ${SRCTOP}/contrib/libucl
+UCLSRC?= ${SRCTOP}/contrib/libucl
.PATH: ${UCLSRC}/lua
SRCS+= lua_ucl.c
CFLAGS+= \
@@ -10,5 +10,3 @@
-I${UCLSRC}/src \
-I${UCLSRC}/uthash
LIBADD+= ucl
-
-.include <bsd.lib.mk>
diff --git a/libexec/flua/linit_flua.c b/libexec/flua/linit_flua.c
--- a/libexec/flua/linit_flua.c
+++ b/libexec/flua/linit_flua.c
@@ -26,8 +26,8 @@
#include "lprefix.h"
-
#include <stddef.h>
+#include <stdlib.h>
#include "lua.h"
@@ -37,6 +37,8 @@
#include "lposix.h"
#include "lfbsd.h"
+#include "bootstrap.h"
+
/*
** these libs are loaded by lua.c and are readily available to any Lua
** program
@@ -62,6 +64,28 @@
{NULL, NULL}
};
+#ifdef BOOTSTRAPPING
+static void __attribute__((constructor)) flua_init_env(void) {
+ /*
+ * This happens in the middle of luaopen_package(). We could move it into
+ * flua_setup_mods(), but it seems better to avoid its timing being so
+ * important that it would break some of our bootstrap modules if someone
+ * were to reorder things.
+ */
+ if (getenv("LUA_PATH") == NULL)
+ setenv("LUA_PATH", BOOTSTRAP_FLUA_PATH, 1);
+}
+
+static void flua_setup_mods (lua_State *L) {
+ const luaL_Reg **flib;
+
+ SET_FOREACH(flib, flua_module_set) {
+ luaL_requiref(L, (*flib)->name, (*flib)->func, 1);
+ lua_pop(L, 1); /* remove lib */
+ }
+};
+#endif
+
LUALIB_API void luaL_openlibs (lua_State *L) {
const luaL_Reg *lib;
/* "require" functions from 'loadedlibs' and set results to global table */
@@ -69,4 +93,7 @@
luaL_requiref(L, lib->name, lib->func, 1);
lua_pop(L, 1); /* remove lib */
}
+#ifdef BOOTSTRAPPING
+ flua_setup_mods(L);
+#endif
}
diff --git a/tools/build/Makefile b/tools/build/Makefile
--- a/tools/build/Makefile
+++ b/tools/build/Makefile
@@ -496,6 +496,7 @@
lib/geom \
usr/include/casper \
usr/include/private/ucl \
+ usr/include/private/yaml \
usr/include/private/zstd \
usr/lib \
usr/libdata/pkgconfig \
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Feb 24, 1:30 PM (2 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28974279
Default Alt Text
D51890.id160316.diff (13 KB)
Attached To
Mode
D51890: flua: support our flua modules in the bootstrap flua
Attached
Detach File
Event Timeline
Log In to Comment