opkg

statically linked package installer
git clone anongit@rnpnr.xyz:opkg.git
Log | Files | Refs | Feed | Submodules | README | LICENSE

Commit: d3964815934d505f860e8a05452dfc416e8d5952
Parent: ce45e33863024f89a5233cd0a0035631df038f39
Author: hovercats
Date:   Wed, 12 Mar 2025 03:52:49 +0100

rc: switch to cinap_lenrek repo

this is a port pulled from 9fronts sourcetree, and more or less
follows 9fronts changes

Diffstat:
M.gitmodules | 2+-
Mpkg/rc/gen.lua | 23++++++++++++++---------
Dpkg/rc/patch/0001-Avoid-multiple-definitions-of-global-variables.patch | 242-------------------------------------------------------------------------------
Apkg/rc/patch/0001-Use-proc-self-fd-0-instead-of-dev-fd-0.patch | 28++++++++++++++++++++++++++++
Dpkg/rc/patch/0002-Use-proc-self-fd-0-instead-of-dev-fd-0.patch | 28----------------------------
Apkg/rc/patch/0002-fix-return-type-for-main.patch | 25+++++++++++++++++++++++++
Dpkg/rc/patch/0003-Use-complete-function-prototype-to-fix-build-with-C2.patch | 34----------------------------------
Mpkg/rc/ver | 2+-
8 files changed, 69 insertions(+), 315 deletions(-)

diff --git a/.gitmodules b/.gitmodules @@ -65,7 +65,7 @@ ignore = all [submodule "pkg/rc/src"] path = pkg/rc/src - url = https://github.com/benavento/rc.git + url = git://shithub.us/cinap_lenrek/rc ignore = all [submodule "pkg/samurai/src"] path = pkg/samurai/src diff --git a/pkg/rc/gen.lua b/pkg/rc/gen.lua @@ -1,7 +1,13 @@ -cflags({ +cflags{ '-Wpedantic', - ([['-D PREFIX="%s"']]):format(config.prefix) -}) + '-I $srcdir', + '-I $outdir', + ([['-D PREFIX="%s"']]):format(config.prefix), +} + +pkg.deps = {'$outdir/y.tab.h'} + +yacc('y', 'syn.y') exe('rc', { 'code.c', @@ -18,14 +24,14 @@ exe('rc', { 'trap.c', 'tree.c', 'var.c', - 'y.tab.c', - 'unix.c', 'havefork.c', - 'prompt-null.c', + 'unix.c', + + '$outdir/y.tab.c', }) file('bin/rc', '755', '$outdir/rc') -man({'rc.1'}) +man{'rc.1'} file('lib/rcmain', '644', '$srcdir/rcmain.unix') -fetch('git') -\ No newline at end of file +fetch('git') diff --git a/pkg/rc/patch/0001-Avoid-multiple-definitions-of-global-variables.patch b/pkg/rc/patch/0001-Avoid-multiple-definitions-of-global-variables.patch @@ -1,242 +0,0 @@ -From 8d15541e85b391c1cd86907089d33f70d7ca0f65 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Mon, 4 Nov 2019 20:50:08 -0800 -Subject: [PATCH] Avoid multiple definitions of global variables - ---- - exec.c | 9 ++++++++- - exec.h | 12 ++++++------ - io.c | 1 + - io.h | 2 +- - lex.c | 3 +++ - rc.h | 30 +++++++++++++++--------------- - simple.c | 2 ++ - subr.c | 1 + - var.c | 1 + - 9 files changed, 38 insertions(+), 23 deletions(-) - -diff --git a/exec.c b/exec.c -index 3ad8a0d..268f429 100644 ---- a/exec.c -+++ b/exec.c -@@ -3,10 +3,17 @@ - #include "exec.h" - #include "io.h" - #include "fns.h" -+int mypid; -+thread *runq; -+code *codebuf; -+int ntrap; -+int trap[NSIG]; -+int eflagok; -+ - /* - * Start executing the given code at the given pc with the given redirection - */ --char *argv0="rc"; -+char *argv0 = "rc"; - - void - start(code *c, int pc, var *local) -diff --git a/exec.h b/exec.h -index 06d2991..ab0bfb4 100644 ---- a/exec.h -+++ b/exec.h -@@ -56,18 +56,18 @@ struct thread{ - tree *treenodes; /* tree nodes created by this process */ - thread *ret; /* who continues when this finishes */ - }; --thread *runq; -+extern thread *runq; - code *codecopy(code*); --code *codebuf; /* compiler output */ --int ntrap; /* number of outstanding traps */ --int trap[NSIG]; /* number of outstanding traps per type */ -+extern code *codebuf; /* compiler output */ -+extern int ntrap; /* number of outstanding traps */ -+extern int trap[NSIG]; /* number of outstanding traps per type */ - struct builtin{ - char *name; - void (*fnc)(void); - }; - extern struct builtin Builtin[]; --int eflagok; /* kludge flag so that -e doesn't exit in startup */ --int havefork; -+extern int eflagok; /* kludge flag so that -e doesn't exit in startup */ -+extern int havefork; - - void execcd(void), execwhatis(void), execeval(void), execexec(void); - int execforkexec(void); -diff --git a/io.c b/io.c -index bb8af4a..228ec56 100644 ---- a/io.c -+++ b/io.c -@@ -3,6 +3,7 @@ - #include "exec.h" - #include "io.h" - #include "fns.h" -+io *err; - int pfmtnest = 0; - - void -diff --git a/io.h b/io.h -index 21cc6b8..68b9e89 100644 ---- a/io.h -+++ b/io.h -@@ -10,7 +10,7 @@ struct io{ - int fd; - char *bufp, *ebuf, *strp, buf[NBUF]; - }; --io *err; -+extern io *err; - io *openfd(int), *openstr(void), *opencore(char *, int); - int emptybuf(io*); - void pchr(io*, int); -diff --git a/lex.c b/lex.c -index d2bef32..943112a 100644 ---- a/lex.c -+++ b/lex.c -@@ -22,6 +22,7 @@ idchr(int c) - return c>' ' && !strchr("!\"#$%&'()+,-./:;<=>?@[\\]^`{|}~", c); - } - int future = EOF; -+char *promptstr; - int doprompt = 1; - int inquote; - int incomm; -@@ -36,6 +37,7 @@ nextc(void) - future = getnext(); - return future; - } -+int lastc; - /* - * Consume the lookahead character. - */ -@@ -131,6 +133,7 @@ nextis(int c) - } - return 0; - } -+char tok[NTOK]; - - char* - addtok(char *p, int val) -diff --git a/rc.h b/rc.h -index 8a6a5bb..cbec275 100644 ---- a/rc.h -+++ b/rc.h -@@ -53,7 +53,7 @@ tree *mung1(tree*, tree*), *mung2(tree*, tree*, tree*); - tree *mung3(tree*, tree*, tree*, tree*), *epimung(tree*, tree*); - tree *simplemung(tree*), *heredoc(tree*); - void freetree(tree*); --tree *cmdtree; -+extern tree *cmdtree; - /* - * The first word of any code vector is a reference count. - * Always create a new reference to a code vector by calling codecopy(.). -@@ -64,10 +64,10 @@ union code{ - int i; - char *s; - }; --char *promptstr; --int doprompt; -+extern char *promptstr; -+extern int doprompt; - #define NTOK 8192 --char tok[NTOK]; -+extern char tok[NTOK]; - #define APPEND 1 - #define WRITE 2 - #define READ 3 -@@ -87,7 +87,7 @@ struct var{ - }; - var *vlook(char*), *gvlook(char*), *newvar(char*, var*); - #define NVAR 521 --var *gvar[NVAR]; /* hash for globals */ -+extern var *gvar[NVAR]; /* hash for globals */ - #define new(type) ((type *)emalloc(sizeof(type))) - void *emalloc(long); - void *Malloc(ulong); -@@ -98,7 +98,7 @@ struct here{ - char *name; - struct here *next; - }; --int mypid; -+extern int mypid; - /* - * Glob character escape in strings: - * In a string, GLOB must be followed by *?[ or GLOB. -@@ -117,10 +117,10 @@ int mypid; - #define threebyte(c) ((c&0xf0)==0xe0) - #define fourbyte(c) ((c&0xf8)==0xf0) - --char **argp; --char **args; --int nerror; /* number of errors encountered during compilation */ --int doprompt; /* is it time for a prompt? */ -+extern char **argp; -+extern char **args; -+extern int nerror; /* number of errors encountered during compilation */ -+extern int doprompt; /* is it time for a prompt? */ - /* - * Which fds are the reading/writing end of a pipe? - * Unfortunately, this can vary from system to system. -@@ -129,14 +129,14 @@ int doprompt; /* is it time for a prompt? */ - */ - #define PRD 0 - #define PWR 1 --char *Rcmain, *Fdprefix; -+extern char *Rcmain, *Fdprefix; - #define register - /* - * How many dot commands have we executed? - * Used to ensure that -v flag doesn't print rcmain. - */ --int ndot; -+extern int ndot; - char *getstatus(void); --int lastc; --int lastword; --int kidpid; -+extern int lastc; -+extern int lastword; -+extern int kidpid; -diff --git a/simple.c b/simple.c -index d587227..7f1ee12 100644 ---- a/simple.c -+++ b/simple.c -@@ -6,6 +6,8 @@ - #include "exec.h" - #include "io.h" - #include "fns.h" -+int ndot; -+ - /* - * Search through the following code to see if we're just going to exit. - */ -diff --git a/subr.c b/subr.c -index a2d8a18..f031be5 100644 ---- a/subr.c -+++ b/subr.c -@@ -23,6 +23,7 @@ efree(void *p) - else pfmt(err, "free 0\n"); - } - extern int lastword, lastdol; -+int nerror; - - void - yyerror(char *m) -diff --git a/var.c b/var.c -index 2564ba2..b4a3ef5 100644 ---- a/var.c -+++ b/var.c -@@ -1,6 +1,7 @@ - #include "rc.h" - #include "exec.h" - #include "fns.h" -+var *gvar[NVAR]; - - int - hash(char *s, int n) --- -2.24.0 - diff --git a/pkg/rc/patch/0001-Use-proc-self-fd-0-instead-of-dev-fd-0.patch b/pkg/rc/patch/0001-Use-proc-self-fd-0-instead-of-dev-fd-0.patch @@ -0,0 +1,28 @@ +From 40656566e36b0eb4b557a522c9c309bd5d845cec Mon Sep 17 00:00:00 2001 +From: Michael Forney <mforney@mforney.org> +Date: Mon, 4 Nov 2019 20:59:30 -0800 +Subject: [PATCH] Use /proc/self/fd/0 instead of /dev/fd/0 + +--- + rcmain.unix | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/rcmain.unix b/rcmain.unix +index 7ccbe1b..2aa9ddb 100644 +--- a/rcmain.unix ++++ b/rcmain.unix +@@ -29,9 +29,9 @@ if not if(flag i){ + } + status='' + if(! ~ $#* 0) . $* +- . -i /dev/fd/0 ++ . -i /proc/self/fd/0 + } +-if not if(~ $#* 0) . /dev/fd/0 ++if not if(~ $#* 0) . /proc/self/fd/0 + if not{ + status='' + . $* +-- +2.45.2 + diff --git a/pkg/rc/patch/0002-Use-proc-self-fd-0-instead-of-dev-fd-0.patch b/pkg/rc/patch/0002-Use-proc-self-fd-0-instead-of-dev-fd-0.patch @@ -1,28 +0,0 @@ -From 56359f53946306347ef9bb1f8f3c402adb8f8a5b Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Mon, 4 Nov 2019 20:59:30 -0800 -Subject: [PATCH] Use /proc/self/fd/0 instead of /dev/fd/0 - ---- - rcmain.unix | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/rcmain.unix b/rcmain.unix -index 42b3be4..1b5d6d2 100644 ---- a/rcmain.unix -+++ b/rcmain.unix -@@ -25,9 +25,9 @@ if not if(flag i){ - if(flag l && test -r $profile) . $profile - status='' - if(! ~ $#* 0) . $* -- . -i /dev/fd/0 -+ . -i /proc/self/fd/0 - } --if not if(~ $#* 0) . /dev/fd/0 -+if not if(~ $#* 0) . /proc/self/fd/0 - if not{ - status='' - . $* --- -2.24.0 - diff --git a/pkg/rc/patch/0002-fix-return-type-for-main.patch b/pkg/rc/patch/0002-fix-return-type-for-main.patch @@ -0,0 +1,25 @@ +From 64d1d3403037d9ec1895555b8015825c75815f85 Mon Sep 17 00:00:00 2001 +From: hovercats <hovercatswithlasereyes@protonmail.com> +Date: Wed, 12 Mar 2025 03:36:44 +0100 +Subject: [PATCH] fix return type for main + +--- + exec.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/exec.c b/exec.c +index 32e7644..e3d12e5 100644 +--- a/exec.c ++++ b/exec.c +@@ -221,7 +221,7 @@ shuffleredir(void) + * fabricate bootstrap code and start it (*=(argv);. -bq /usr/lib/rcmain $*) + * start interpreting code + */ +-void ++int + main(int argc, char *argv[]) + { + code bootstrap[20]; +-- +2.45.2 + diff --git a/pkg/rc/patch/0003-Use-complete-function-prototype-to-fix-build-with-C2.patch b/pkg/rc/patch/0003-Use-complete-function-prototype-to-fix-build-with-C2.patch @@ -1,34 +0,0 @@ -From 39da3936cd5cf89e97de197181a05bb405e114b9 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Tue, 29 Apr 2025 00:48:53 -0700 -Subject: [PATCH] Use complete function prototype to fix build with C23 - ---- - unix.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/unix.c b/unix.c -index 3f7bf9d..7052075 100644 ---- a/unix.c -+++ b/unix.c -@@ -402,7 +402,7 @@ gettrap(int sig) - ntrap++; - if(ntrap>=NSIG){ - pfmt(err, "rc: Too many traps (trap %d), dumping core\n", sig); -- signal(SIGABRT, (void (*)())0); -+ signal(SIGABRT, (void (*)(int))0); - kill(getpid(), SIGABRT); - } - } -@@ -411,7 +411,7 @@ void - Trapinit(void) - { - int i; -- void (*sig)(); -+ void (*sig)(int); - - if(1 || flag['d']){ /* wrong!!! */ - sig = signal(SIGINT, gettrap); --- -2.49.0 - diff --git a/pkg/rc/ver b/pkg/rc/ver @@ -1 +1 @@ -50b729e65d r1 +3e907e648d r0