[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT/RUBY PATCH 05/16] core: Build core functionality
Once it's upstreamed, we should also automatically select the /dev/null flag for the configuration, since it is required by the user interaction module. I'm not sure where exactly we should add this, but it would avoid a runtime error. Also, on my gcc version (9.2.0), I encounter some warnings when building Ruby, which could be suppressed with the flag -Wno-address-of-packed-member. I will send a patch to fix these, once this is upstreamed. Reviewed-by: Stefan Teodorescu <stefanl.teodorescu@xxxxxxxxx> On Sun, Dec 8, 2019 at 11:55 AM Costin Lupu <costin.lupu@xxxxxxxxx> wrote: > > From: Andrei Gogonea <andrei.gogonea09@xxxxxxxxx> > > With these changes we only build the Ruby interpreter. In the following > patches > we will add Ruby extensions and encodings as well. The original Ruby build > provides what is called 'miniruby' - the minimalistic variant of the Ruby > intepretor and which doesn't have any extensions. We used the same idea to > provide a minimalistic version for Unikraft when the mini configuration is > checked via menuconfig. > > Signed-off-by: Andrei Gogonea <andrei.gogonea09@xxxxxxxxx> > Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx> > --- > Config.uk | 16 +++- > Makefile.uk | 184 +++++++++++++++++++++++++++++++++++++++++++++ > include/stdalign.h | 10 +++ > 3 files changed, 209 insertions(+), 1 deletion(-) > create mode 100644 Makefile.uk > create mode 100644 include/stdalign.h > > diff --git a/Config.uk b/Config.uk > index a11be34..dd83267 100644 > --- a/Config.uk > +++ b/Config.uk > @@ -1,10 +1,24 @@ > menuconfig LIBRUBY > bool "Ruby" > default n > - select LIBNOLIBC if !HAVE_LIBC > select LIBUKDEBUG > select LIBUKALLOC > select LIBUKSCHED > + select LIBVFSCORE > + select LIBSYSCALL_SHIM > + select LIBUKMMAP > + select UKSYSINFO > + select LIBPOSIX_LIBDL > + select LIBNEWLIBC > + select LIBCOMPILER_RT > + select LIBUNWIND > + select LIBCXX > + select CXX_THREADS > + select LIBPTHREAD_EMBEDDED > + select LIBLWIP > > if LIBRUBY > +config LIBRUBY_MINI > + bool "Mini configuration" > + default n > endif > diff --git a/Makefile.uk b/Makefile.uk > new file mode 100644 > index 0000000..98e738f > --- /dev/null > +++ b/Makefile.uk > @@ -0,0 +1,184 @@ > +# SPDX-License-Identifier: BSD-3-Clause > +# > +# Ruby Makefile.uk > +# > +# Authors: Andrei Gogonea <andrei.gogonea09@xxxxxxxxx> > +# Costin Lupu <costin.lupu@xxxxxxxxx> > +# > +# Copyright (c) 2019, University Politehnica of Bucharest. All rights > reserved. > +# > +# Redistribution and use in source and binary forms, with or without > +# modification, are permitted provided that the following conditions > +# are met: > +# > +# 1. Redistributions of source code must retain the above copyright > +# notice, this list of conditions and the following disclaimer. > +# 2. Redistributions in binary form must reproduce the above copyright > +# notice, this list of conditions and the following disclaimer in the > +# documentation and/or other materials provided with the distribution. > +# 3. Neither the name of the copyright holder nor the names of its > +# contributors may be used to endorse or promote products derived from > +# this software without specific prior written permission. > +# > +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS > IS" > +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE > +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > +# POSSIBILITY OF SUCH DAMAGE. > +# > +# THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY. > +# > + > +################################################################################ > +# Library registration > +################################################################################ > +$(eval $(call addlib_s,libruby,$(CONFIG_LIBRUBY))) > + > +################################################################################ > +# Sources > +################################################################################ > +LIBRUBY_VERSION=2_6 > +LIBRUBY_ARCHIVE=ruby_$(LIBRUBY_VERSION).zip > +LIBRUBY_URL=https://github.com/ruby/ruby/archive/$(LIBRUBY_ARCHIVE) > +LIBRUBY_DIR=ruby-ruby_$(LIBRUBY_VERSION) > +LIBRUBY_PATCHDIR=$(LIBRUBY_BASE)/patches > +$(eval $(call fetch,libruby,$(LIBRUBY_URL),ruby_$(LIBRUBY_ARCHIVE))) > +$(eval $(call patch,libruby,$(LIBRUBY_PATCHDIR),$(LIBRUBY_DIR))) > + > +################################################################################ > +# Global and common flags > +################################################################################ > +# Suppress flags > +LIBRUBY_SUPPRESS_FLAGS = -Wno-cast-function-type -Wno-long-long \ > + -Wno-missing-field-initializers -Wno-overlength-strings \ > + -Wno-packed-bitfield-compat -Wno-tautological-compare \ > + -Wno-unused-parameter -Wno-unused-value -Wno-implicit-fallthrough \ > + -Wno-unused-but-set-variable > +LIBRUBY_SUPRESS_CFLAGS-y += $(LIBRUBY_SUPPRESS_FLAGS) \ > + -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast > +LIBRUBY_SUPRESS_CXXFLAGS-y += $(LIBRUBY_SUPPRESS_FLAGS) > +LIBRUBY_CFLAGS-y += $(LIBRUBY_SUPRESS_CFLAGS-y) > +LIBRUBY_CXXFLAGS-y += $(LIBRUBY_SUPRESS_CXXFLAGS-y) > + > +################################################################################ > +# Helpers > +################################################################################ > +LIBRUBY_SRC=$(LIBRUBY_ORIGIN)/$(LIBRUBY_DIR) > + > +################################################################################ > +# Global and common includes > +################################################################################ > +LIBRUBY_CINCLUDES-y += -I$(LIBRUBY_BASE)/include \ > + -I$(LIBRUBY_BASE)/generated \ > + -I$(LIBRUBY_SRC) \ > + -I$(LIBRUBY_SRC)/include \ > + -I$(LIBRUBY_SRC)/enc/unicode/12.1.0 > + > +################################################################################ > +# Core > +################################################################################ > +# As taken from original build: > +LIBRUBY_CFLAGS-y += -std=gnu99 -D_FORTIFY_SOURCE=2 \ > + -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard > \ > + -DRUBY_EXPORT -DCANONICALIZATION_FOR_MATHN > + > +ifeq ($(CONFIG_LIBRUBY_MINI),y) > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/dmydln.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/miniinit.c > +LIBRUBY_SRCS-y += $(LIBRUBY_BASE)/generated/miniprelude.c > +else > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/dln.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/localeinit.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/loadpath.c > +LIBRUBY_SRCS-y += $(LIBRUBY_BASE)/generated/prelude.c > +endif > + > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/main.c > +LIBRUBY_MAIN_FLAGS-y += -Dmain=ruby_main > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/array.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/ast.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/bignum.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/class.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/compar.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/compile.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/complex.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/cont.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/debug.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/debug_counter.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/dir.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/dln_find.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/encoding.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/enum.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/enumerator.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/error.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/eval.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/file.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/gc.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/hash.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/inits.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/io.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/iseq.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/load.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/marshal.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/math.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/mjit.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/mjit_compile.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/node.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/numeric.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/object.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/pack.c > +LIBRUBY_SRCS-y += $(LIBRUBY_BASE)/generated/parse.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/proc.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/process.c > +LIBRUBY_PROCESS_FLAGS-y += -Wno-incompatible-pointer-types > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/random.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/range.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/rational.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/re.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/regcomp.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/regenc.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/regerror.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/regexec.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/regparse.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/regsyntax.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/ruby.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/safe.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/signal.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/sprintf.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/st.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/strftime.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/string.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/struct.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/symbol.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/thread.c > +LIBRUBY_THREAD_FLAGS += -Wno-unused-function > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/time.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/transcode.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/transient_heap.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/util.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/variable.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/version.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/vm.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/vm_backtrace.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/vm_dump.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/vm_trace.c > +LIBRUBY_SRCS-$(CONFIG_ARCH_X86_64) += > $(LIBRUBY_SRC)/coroutine/amd64/Context.S > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/enc/ascii.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/enc/us_ascii.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/enc/unicode.c > +LIBRUBY_UNICODE_FLAGS-y += -I$(LIBRUBY_BASE)/generated/enc/unicode/12.1.0/ > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/enc/utf_8.c > +LIBRUBY_SRCS-y += $(LIBRUBY_BASE)/generated/enc/trans/newline.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/./missing/setproctitle.c > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/addr2line.c > + > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/dmyext.c > + > +LIBRUBY_SRCS-y += $(LIBRUBY_SRC)/dmyenc.c > + > diff --git a/include/stdalign.h b/include/stdalign.h > new file mode 100644 > index 0000000..80c3e15 > --- /dev/null > +++ b/include/stdalign.h > @@ -0,0 +1,10 @@ > +#ifndef _STDALIGN_H > +#define _STDALIGN_H > + > +#define alignas _Alignas > +#define alignof _Alignof > + > +#define __alignas_is_defined 1 > +#define __alignof_is_defined 1 > + > +#endif > -- > 2.20.1 > > > _______________________________________________ > Minios-devel mailing list > Minios-devel@xxxxxxxxxxxxxxxxxxxx > https://lists.xenproject.org/mailman/listinfo/minios-devel _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |