diff --git a/pkgs/raspberrypi-linux/build.sh b/pkgs/raspberrypi-linux/build.sh new file mode 100644 index 0000000..1a9d0fb --- /dev/null +++ b/pkgs/raspberrypi-linux/build.sh @@ -0,0 +1,45 @@ +pkgver=rpi-5.10.y +pkgname=raspberrypi-linux +ext="dev" + +fetch() { + curl "https://raw.githubusercontent.com/kisslinux/website/master/site/dist/kernel-no-perl.patch" -o kernel-no-perl.patch + curl -L "https://github.com/raspberrypi/linux/archive/refs/heads/rpi-5.10.y.tar.gz" -o $pkgname-$pkgver.tar.gz + tar -xf $pkgname-$pkgver.tar.gz + mv linux-$pkgver $pkgname-$pkgver + cd $pkgname-$pkgver + + patch -p1 < ../kernel-no-perl.patch + patch -p1 < ../../kernel-byacc.patch + patch -p1 < ../../reflex.patch +} + +build() { + cd $pkgname-$pkgver + gmake ARCH=arm64 CC=cc HOSTCC=cc LEX=reflex YACC=yacc LLVM=1 LLVM_IAS=1 bcm2711_defconfig + gmake ARCH=arm64 CC=cc HOSTCC=cc LEX=reflex YACC=yacc LLVM=1 LLVM_IAS=1 +} + +package() { + cd $pkgname-$pkgver + install -d $pkgdir/boot + gmake ARCH=arm64 CC=cc HOSTCC=cc LEX=reflex YACC=yacc LLVM=1 LLVM_IAS=1 INSTALL_PATH=$pkgdir/boot install + gmake ARCH=arm64 CC=cc HOSTCC=cc LEX=reflex YACC=yacc LLVM=1 LLVM_IAS=1 INSTALL_MOD_PATH=$pkgdir/ modules_install +} + +package_dev() { + cd $pkgname-$pkgver + if stat /usr/bin/rsync 2>/dev/null /dev/null; then + gmake ARCH=arm64 CC=cc HOSTCC=cc LEX=reflex YACC=yacc LLVM=1 LLVM_IAS=1 INSTALL_HDR_PATH=$pkgdir/usr headers_install + else + gmake ARCH=arm64 CC=cc HOSTCC=cc LEX=reflex YACC=yacc LLVM=1 LLVM_IAS=1 headers + find -name '.*' -exec rm {} \; + rm usr/include/Makefile + cp -r usr/include $pkgdir/usr + fi +} + +license() { + cd $pkgname-$pkgver + cat COPYING +} diff --git a/pkgs/raspberrypi-linux/kernel-byacc.patch b/pkgs/raspberrypi-linux/kernel-byacc.patch new file mode 100644 index 0000000..b2aa286 --- /dev/null +++ b/pkgs/raspberrypi-linux/kernel-byacc.patch @@ -0,0 +1,35 @@ +diff --git a/scripts/Makefile.host b/scripts/Makefile.host +index 4c51c95d40f4..64e98e1d4825 100644 +--- a/scripts/Makefile.host ++++ b/scripts/Makefile.host +@@ -11,7 +11,7 @@ $(obj)/%.lex.c: $(src)/%.l FORCE + # YACC + # --------------------------------------------------------------------------- + quiet_cmd_bison = YACC $(basename $@).[ch] +- cmd_bison = $(YACC) -o $(basename $@).c --defines=$(basename $@).h -t -l $< ++ cmd_bison = $(YACC) -b $(basename $(basename $@)) -d -t -l $< + + $(obj)/%.tab.c $(obj)/%.tab.h: $(src)/%.y FORCE + $(call if_changed,bison) +--- a/scripts/genksyms/Makefile ++++ b/scripts/genksyms/Makefile +@@ -14,7 +14,7 @@ + ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),) + + quiet_cmd_bison_no_warn = $(quiet_cmd_bison) +- cmd_bison_no_warn = $(YACC) --version >/dev/null; \ ++ cmd_bison_no_warn = $(YACC) -V >/dev/null; \ + $(cmd_bison) 2>/dev/null + + $(obj)/pars%.tab.c $(obj)/pars%.tab.h: $(src)/pars%.y FORCE +--- a/scripts/genksyms/lex.l ++++ b/scripts/genksyms/lex.l +@@ -19,6 +19,8 @@ + #include "genksyms.h" + #include "parse.tab.h" + ++extern YYSTYPE yylval; ++ + /* We've got a two-level lexer here. We let flex do basic tokenization + and then we categorize those basic tokens in the second stage. */ + #define YY_DECL static int yylex1(void) diff --git a/pkgs/raspberrypi-linux/reflex.patch b/pkgs/raspberrypi-linux/reflex.patch new file mode 100644 index 0000000..5f5266a --- /dev/null +++ b/pkgs/raspberrypi-linux/reflex.patch @@ -0,0 +1,60 @@ +--- a/scripts/kconfig/lexer.l ++++ b/scripts/kconfig/lexer.l +@@ -3,9 +3,10 @@ + * Copyright (C) 2002 Roman Zippel + */ + %option nostdinit noyywrap never-interactive full ecs +-%option 8bit nodefault yylineno ++%option 8bit nodefault + %x ASSIGN_VAL HELP STRING + %{ ++int yylineno = 0; + + #include + #include +--- a/scripts/dtc/dtc-lexer.l ++++ b/scripts/dtc/dtc-lexer.l +@@ -3,7 +3,7 @@ + * (C) Copyright David Gibson , IBM Corporation. 2005. + */ + +-%option noyywrap nounput noinput never-interactive ++%option noyywrap nounput noinput never-interactive stack + + %x BYTESTRING + %x PROPNODENAME +@@ -270,7 +270,8 @@ + + yyin = current_srcfile->f; + +- yypush_buffer_state(yy_create_buffer(yyin, YY_BUF_SIZE)); ++// yypush_buffer_state(yy_create_buffer(yyin, YY_BUF_SIZE)); ++ yy_push_state(yy_create_buffer(yyin, YY_BUF_SIZE)); + } + + +@@ -279,7 +280,8 @@ + if (srcfile_pop() == 0) + return false; + +- yypop_buffer_state(); ++// yypop_buffer_state(); ++ yy_pop_state(); + yyin = current_srcfile->f; + + return true; +--- a/scripts/genksyms/genksyms.c ++++ b/scripts/genksyms/genksyms.c +@@ -822,10 +822,10 @@ + } + { + extern int yydebug; +- extern int yy_flex_debug; ++ /* extern int yy_flex_debug; */ + + yydebug = (flag_debug > 1); +- yy_flex_debug = (flag_debug > 2); ++ /* yy_flex_debug = (flag_debug > 2); */ + + debugfile = stderr; + /* setlinebuf(debugfile); */