fix: noconfirm auto-selects first AUR match

This commit is contained in:
2026-05-08 11:01:02 +01:00
parent d39cdc3fd9
commit 153cca6132
8056 changed files with 1983098 additions and 779 deletions
@@ -0,0 +1,8 @@
#include"gen_func.h"
int main(void) {
unsigned int i = (unsigned int) gen_func_in_lib();
unsigned int j = (unsigned int) gen_func_in_obj();
unsigned int k = (unsigned int) gen_func_in_src();
return (int)(i + j + k);
}
@@ -0,0 +1,14 @@
project('manygen', 'c')
if meson.is_cross_build()
# FIXME error out with skip message once cross test runner
# recognizes it.
message('Not running this test during cross build.')
else
subdir('subdir')
exe = executable('depuser', 'depuser.c',
generated)
test('depuser test', exe)
endif
@@ -0,0 +1,82 @@
#!/usr/bin/env python3
# Generates a static library, object file, source
# file and a header file.
import sys, os
import subprocess
with open(sys.argv[1]) as f:
funcname = f.readline().strip()
outdir = sys.argv[2]
buildtype_args = sys.argv[3]
compiler_type = sys.argv[4]
compiler = sys.argv[5:]
if not os.path.isdir(outdir):
print('Outdir does not exist.')
sys.exit(1)
if compiler_type == 'msvc':
libsuffix = '.lib'
is_vs = True
if any(['clang-cl' in c for c in compiler]):
linker = 'llvm-lib'
else:
linker = 'lib'
else:
libsuffix = '.a'
is_vs = False
linker = 'ar'
objsuffix = '.o'
outo = os.path.join(outdir, funcname + objsuffix)
outa = os.path.join(outdir, funcname + libsuffix)
outh = os.path.join(outdir, funcname + '.h')
outc = os.path.join(outdir, funcname + '.c')
tmpc = 'diibadaaba.c'
tmpo = 'diibadaaba' + objsuffix
with open(outc, 'w') as f:
f.write('''#include"{}.h"
int {}_in_src(void) {{
return 0;
}}
'''.format(funcname, funcname))
with open(outh, 'w') as f:
f.write('''#pragma once
int {}_in_lib(void);
int {}_in_obj(void);
int {}_in_src(void);
'''.format(funcname, funcname, funcname))
with open(tmpc, 'w') as f:
f.write('''int %s_in_obj(void) {
return 0;
}
''' % funcname)
if is_vs:
subprocess.check_call(compiler + ['/nologo', '/c', buildtype_args, '/Fo' + outo, tmpc])
else:
subprocess.check_call(compiler + ['-c', '-o', outo, tmpc])
with open(tmpc, 'w') as f:
f.write('''int %s_in_lib() {
return 0;
}
''' % funcname)
if is_vs:
subprocess.check_call(compiler + ['/nologo', '/c', '/Fo' + tmpo, tmpc])
subprocess.check_call([linker, '/NOLOGO', '/OUT:' + outa, tmpo])
else:
subprocess.check_call(compiler + ['-c', '-o', tmpo, tmpc])
subprocess.check_call([linker, 'csr', outa, tmpo])
os.unlink(tmpo)
os.unlink(tmpc)
@@ -0,0 +1,26 @@
gen = files('manygen.py')
py3_bin = import('python3').find_python()
buildtype = get_option('buildtype')
buildtype_args = '-Dfooxxx' # a useless compiler argument
cc = meson.get_compiler('c')
if cc.get_argument_syntax() == 'msvc'
# We need our manually generated code to use the same CRT as the executable.
# Taken from compilers.py since build files do not have access to this.
if buildtype == 'debug'
buildtype_args = '/MDd'
elif buildtype == 'debugoptimized'
buildtype_args = '/MDd'
elif buildtype == 'release'
buildtype_args = '/MD'
endif
outfiles = ['gen_func.lib', 'gen_func.c', 'gen_func.h', 'gen_func.o']
else
outfiles = ['gen_func.a', 'gen_func.c', 'gen_func.h', 'gen_func.o']
endif
generated = custom_target('manygen',
output : outfiles,
input : ['funcinfo.def'],
command : [py3_bin, gen[0], '@INPUT@', '@OUTDIR@', buildtype_args, cc.get_argument_syntax(), cc.cmd_array()],
)