diff --git a/package/utils/lua/patches/030-archindependent-bytecode.patch b/package/utils/lua/patches/030-archindependent-bytecode.patch
new file mode 100644
index 0000000..8dfef85
--- /dev/null
+++ b/package/utils/lua/patches/030-archindependent-bytecode.patch
@@ -0,0 +1,111 @@
+--- a/src/ldump.c
++++ b/src/ldump.c
+@@ -67,12 +67,12 @@ static void DumpString(const TString* s,
+ {
+  if (s==NULL || getstr(s)==NULL)
+  {
+-  size_t size=0;
++  unsigned int size=0;
+   DumpVar(size,D);
+  }
+  else
+  {
+-  size_t size=s->tsv.len+1;		/* include trailing '\0' */
++  unsigned int size=s->tsv.len+1;		/* include trailing '\0' */
+   DumpVar(size,D);
+   DumpBlock(getstr(s),size,D);
+  }
+--- a/src/lundump.c
++++ b/src/lundump.c
+@@ -25,6 +25,7 @@ typedef struct {
+  ZIO* Z;
+  Mbuffer* b;
+  const char* name;
++ int swap;
+ } LoadState;
+ 
+ #ifdef LUAC_TRUST_BINARIES
+@@ -40,7 +41,6 @@ static void error(LoadState* S, const ch
+ }
+ #endif
+ 
+-#define LoadMem(S,b,n,size)	LoadBlock(S,b,(n)*(size))
+ #define	LoadByte(S)		(lu_byte)LoadChar(S)
+ #define LoadVar(S,x)		LoadMem(S,&x,1,sizeof(x))
+ #define LoadVector(S,b,n,size)	LoadMem(S,b,n,size)
+@@ -51,6 +51,49 @@ static void LoadBlock(LoadState* S, void
+  IF (r!=0, "unexpected end");
+ }
+ 
++static void LoadMem (LoadState* S, void* b, int n, size_t size)
++{
++ LoadBlock(S,b,n*size);
++ if (S->swap)
++ {
++  char* p=(char*) b;
++  char c;
++  switch (size)
++  {
++   case 1:
++  	break;
++   case 2:
++	while (n--)
++	{
++	 c=p[0]; p[0]=p[1]; p[1]=c;
++	 p+=2;
++	}
++  	break;
++   case 4:
++	while (n--)
++	{
++	 c=p[0]; p[0]=p[3]; p[3]=c;
++	 c=p[1]; p[1]=p[2]; p[2]=c;
++	 p+=4;
++	}
++  	break;
++   case 8:
++	while (n--)
++	{
++	 c=p[0]; p[0]=p[7]; p[7]=c;
++	 c=p[1]; p[1]=p[6]; p[6]=c;
++	 c=p[2]; p[2]=p[5]; p[5]=c;
++	 c=p[3]; p[3]=p[4]; p[4]=c;
++	 p+=8;
++	}
++  	break;
++   default:
++   	IF(1, "bad size");
++  	break;
++  }
++ }
++}
++
+ static int LoadChar(LoadState* S)
+ {
+  char x;
+@@ -82,7 +125,7 @@ static lua_Integer LoadInteger(LoadState
+ 
+ static TString* LoadString(LoadState* S)
+ {
+- size_t size;
++ unsigned int size;
+  LoadVar(S,size);
+  if (size==0)
+   return NULL;
+@@ -196,6 +239,7 @@ static void LoadHeader(LoadState* S)
+  char s[LUAC_HEADERSIZE];
+  luaU_header(h);
+  LoadBlock(S,s,LUAC_HEADERSIZE);
++ S->swap=(s[6]!=h[6]); s[6]=h[6];
+  IF (memcmp(h,s,LUAC_HEADERSIZE)!=0, "bad header");
+ }
+ 
+@@ -230,7 +274,7 @@ void luaU_header (char* h)
+  *h++=(char)LUAC_FORMAT;
+  *h++=(char)*(char*)&x;				/* endianness */
+  *h++=(char)sizeof(int);
+- *h++=(char)sizeof(size_t);
++ *h++=(char)sizeof(unsigned int);
+  *h++=(char)sizeof(Instruction);
+  *h++=(char)sizeof(lua_Number);
+ 
