From 30851d4971997e1263ef5bc07229c600b9ecd7dd Mon Sep 17 00:00:00 2001 From: Matheus Date: Wed, 2 Aug 2023 21:27:24 -0300 Subject: [PATCH] ports: tar and xz --- kernel-src/include/kernel/vmm.h | 5 +---- kernel-src/mm/vmm.c | 6 +----- patches/tar/jinx-working-patch.patch | 13 +++++++++++++ recipes/tar | 19 +++++++++++++++++++ recipes/xz | 18 ++++++++++++++++++ source-recipes/tar | 9 +++++++++ source-recipes/xz | 10 ++++++++++ 7 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 patches/tar/jinx-working-patch.patch create mode 100644 recipes/tar create mode 100644 recipes/xz create mode 100644 source-recipes/tar create mode 100644 source-recipes/xz diff --git a/kernel-src/include/kernel/vmm.h b/kernel-src/include/kernel/vmm.h index b1c64dc2..35d4231a 100644 --- a/kernel-src/include/kernel/vmm.h +++ b/kernel-src/include/kernel/vmm.h @@ -11,16 +11,13 @@ #define VMM_FLAGS_FILE 8 #define VMM_FLAGS_EXACT 16 #define VMM_FLAGS_SHARED 32 -#define VMM_FLAGS_COPY 64 -#define VMM_PERMANENT_FLAGS_MASK (VMM_FLAGS_FILE | VMM_FLAGS_SHARED | VMM_FLAGS_COPY) +#define VMM_PERMANENT_FLAGS_MASK (VMM_FLAGS_FILE | VMM_FLAGS_SHARED) #define VMM_ACTION_READ 1 #define VMM_ACTION_WRITE 2 #define VMM_ACTION_EXEC 4 -#define VMM_DESTROY_FLAGS_NOSYNC 1 - typedef struct { vnode_t *node; uintmax_t offset; diff --git a/kernel-src/mm/vmm.c b/kernel-src/mm/vmm.c index 134a9c63..2dc9c662 100644 --- a/kernel-src/mm/vmm.c +++ b/kernel-src/mm/vmm.c @@ -206,7 +206,6 @@ static void insertrange(vmmspace_t *space, vmmrange_t *newrange) { static void destroyrange(vmmrange_t *range, uintmax_t _offset, size_t size, int flags) { uintmax_t top = _offset + size; - __assert(!(range->flags & VMM_FLAGS_COPY)); // TODO unimplemented for (uintmax_t offset = _offset; offset < top; offset += PAGE_SIZE) { void *vaddr = (void *)((uintptr_t)range->start + offset); @@ -218,7 +217,7 @@ static void destroyrange(vmmrange_t *range, uintmax_t _offset, size_t size, int proc_t *proc = thread ? thread->proc : NULL; cred_t *cred = proc ? &proc->cred : NULL; - if ((range->flags & VMM_FLAGS_FILE) && (range->flags & VMM_FLAGS_SHARED) && (flags & VMM_DESTROY_FLAGS_NOSYNC) == 0) { + if ((range->flags & VMM_FLAGS_FILE) && (range->flags & VMM_FLAGS_SHARED)) { __assert(VOP_MUNMAP(range->vnode, vaddr, range->offset + offset, mmuflagstovnodeflags(range->mmuflags) | (range->flags & VMM_FLAGS_SHARED ? V_FFLAGS_SHARED : 0), cred) == 0); } else { pmm_release(physical); @@ -402,8 +401,6 @@ void *vmm_map(void *addr, volatile size_t size, int flags, mmuflags_t mmuflags, range->flags = VMM_PERMANENT_FLAGS_MASK & flags; range->mmuflags = mmuflags; - // TODO CoW - if (flags & VMM_FLAGS_FILE) { // XXX make sure that writes can't happen to executable memory mapped files and check file permissions vmmfiledesc_t *desc = private; @@ -526,7 +523,6 @@ void vmm_destroycontext(vmmcontext_t *context) { } vmmcontext_t *vmm_fork(vmmcontext_t *oldcontext) { - // TODO copy on write vmmcontext_t *newcontext = vmm_newcontext(); if (newcontext == NULL) return NULL; diff --git a/patches/tar/jinx-working-patch.patch b/patches/tar/jinx-working-patch.patch new file mode 100644 index 00000000..0834aebf --- /dev/null +++ b/patches/tar/jinx-working-patch.patch @@ -0,0 +1,13 @@ +diff --git tar-clean/build-aux/config.sub tar-workdir/build-aux/config.sub +index f6ede1d..5b7f3f8 100755 +--- tar-clean/build-aux/config.sub ++++ tar-workdir/build-aux/config.sub +@@ -1727,7 +1727,7 @@ case $os in + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. +- gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ ++ gnu* | android* | astral* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ diff --git a/recipes/tar b/recipes/tar new file mode 100644 index 00000000..b54e75bd --- /dev/null +++ b/recipes/tar @@ -0,0 +1,19 @@ +name=tar +revision=1 +from_source=tar +imagedeps="base-devel" +hostdeps="xgcc xbinutils" +deps="mlibc xz" + +configure() { + cp -rpf ${source_dir}/* . + ./configure --host=x86_64-astral --prefix=${prefix} +} + +build() { + make -j ${parallelism} +} + +install() { + make install DESTDIR=${dest_dir} +} diff --git a/recipes/xz b/recipes/xz new file mode 100644 index 00000000..04513fbf --- /dev/null +++ b/recipes/xz @@ -0,0 +1,18 @@ +name=xz +revision=1 +from_source=xz +imagedeps="base-devel" +hostdeps="xgcc xbinutils" +deps="mlibc" + +configure() { + ${source_dir}/configure --host=x86_64-astral --prefix=${prefix} --disable-static +} + +build() { + make -j${parallelism} +} + +install() { + make install DESTDIR="${dest_dir}" +} diff --git a/source-recipes/tar b/source-recipes/tar new file mode 100644 index 00000000..7d2481b7 --- /dev/null +++ b/source-recipes/tar @@ -0,0 +1,9 @@ +name=tar +version=1.35 +source_method=tarball +tarball_url="https://ftp.gnu.org/gnu/tar/tar-${version}.tar.gz" +tarball_sha512=38dca8fbc193859770902c31aa6a6cf7a8fcd28687792b5aa8ba938bf39ce1e25c1b0de05f2a982b7b371eeb13502eb67cd27428ae1ade439bd6771aa9d05271 + +regenerate() { + true +} diff --git a/source-recipes/xz b/source-recipes/xz new file mode 100644 index 00000000..631c5ee4 --- /dev/null +++ b/source-recipes/xz @@ -0,0 +1,10 @@ +name=xz +version=5.4.4 +source_method=tarball +tarball_url="https://tukaani.org/xz/xz-${version}.tar.xz" +tarball_sha512=2b233a924b82190ff15e970c5a4a59f1c53a0b39a96bde228c9dfc9b103b4a3e5888f5024da4834e180f6010620ff23caf9f7135a38724eb2c8d01bff7a9a9e1 +hostdeps="autoconf automake libtool pkgconfig" + +regenerate() { + autoreconf -vfi +}