Giter Club home page Giter Club logo

rakudobrew's Introduction

DEPRECATION NOTICE

Rakudobrew has been renamed to Rakubrew. Head over to rakubrew.org for the current version.

rakudobrew

Rakudobrew helps to build one or more versions of Rakudo and quickly switch between them. It's a perlbrew and plenv look alike and supports both flavours of commands.

Rakudobrew can work by modifying $PATH in place (which is a more down to the metal) as well as with shims (which enables advanced features, such as local versions).

Installation

  • On *nix do:
git clone https://github.com/tadzik/rakudobrew ~/.rakudobrew
export PATH=~/.rakudobrew/bin:$PATH
# or fish shell: set -U fish_user_paths ~/.rakudobrew/bin/ $fish_user_paths
rakudobrew init # Instructions for permanent installation.
  • On Windows CMD do:
git clone https://github.com/tadzik/rakudobrew %USERPROFILE%\rakudobrew
SET PATH=%USERPROFILE%\rakudobrew\bin;%PATH%
rakudobrew init # Instructions for permanent installation.
  • On Windows PowerShell do:
git clone https://github.com/tadzik/rakudobrew $Env:USERPROFILE\rakudobrew
$Env:PATH = "$Env:USERPROFILE\rakudobrew\bin;$Env:PATH"
rakudobrew init # Instructions for permanent installation.

Windows notes

Rakudobrew requires Perl 5 and Git to be installed. You can download and install these from

If you want to use the Microsoft compiler cl, you have to make sure the compiler is on your PATH and you have the environment variables cl requires set. This happens automatically when using the Native Tools Command Prompt but has to be done manually when using a normal terminal (or PowerShell). The script vcvars32.bat (which is in the same folder as cl) can set these variables up automatically for you.

On PowerShell this requires some additional trickery as described on StackOverflow: http://stackoverflow.com/q/6140864

It might be necessary to use an Administrative console to work around a problem with permissions that go wrong during the build process.

Bootstrapping a Perl 6 implementation

  • Run something like:
$ rakudobrew build moar

to build the latest Rakudo release (in this case, on the MoarVM backend).

  • Once that's build switch to it (substitute the version rakudobrew just built):
$ rakudobrew switch moar-2019.03.1
  • To install zef (the Perl 6 module manager), do:
$ rakudobrew build-zef

global vs shell vs local

The global version is the one that is active when none of the overrides of shell and local are triggered.

The shell version changes the active Rakudo version just in the current shell. Closing the current shell also looses the shell version.

The local version is specific to a folder. When CWD is in that folder or a sub folder that version of Rakudo is used. Only works in shim mode. To unset a local version one must delete the .PL6ENV_VERSION file in the respective folder.

Modes

Rakudo brew has two modes of operation: env and shim.

In env mode rakudobrew modifies the $PATH variable as needed when switching between versions. This is neat because one then runs the executables directly. This is the default mode on *nix.

In shim mode rakudobrew generates wrapper scripts called shims for all executables it can find in all the different Rakudo installations. These shims forward to the actual executable when called. This mechanism allows for some advanced features, such as local versions. When installing a module that adds scripts one must make rakudobrew aware of these new scripts. This is done with

$ rakudobrew rehash

In env mode this is not necessary.

Registering external versions

To add a Rakudo installation to rakudobrew that was created without rakudobrew one should do:

$ rakudobrew register name-of-version /path/to/rakudo/install/directory

Upgrading your Perl 6 implementation

$ rakudobrew build moar

Upgrading rakudobrew itself

$ rakudobrew self-upgrade

Uninstall rakudobrew and its Perl 6(s)

To remove rakudobrew and any Perl 6 implementations it's installed on your system, just remove or rename the ~/.rakudobrew directory.

Specifying custom git path

In case git is not in any standard PATH on your system, you can specify a custom path to the git binary using a GIT_BINARY environment variable:

$ GIT_BINARY="%USERPROFILE%\Local Settings\Application Data\GitHub\PORTAB~1\bin\git.exe" rakudobrew build all

Specifying a git protocol

By default, rakudobrew will use the git protocol when it clones repositories. To override this setting, use the GIT_PROTOCOL environment variable.

$ GIT_PROTOCOL=ssh rakudobrew list-available
# uses [email protected]:/rakudo/rakudo.git

$ GIT_PROTOCOL=https rakudobrew list-available
# uses https://github.com/rakudo/rakudo.git

Command-line switches

version or current

Show the currently active Rakudo version.

versions or list

List all installed Rakudo installations.

global [version] or switch [version]

Show or set the globally configured Rakudo version.

shell [--unset|version]

Show, set or unset the shell version.

`local [version]

Show or set the local version.

nuke [version] or unregister [version]

Removes an installed or registered version. Versions built by rakudobrew are actually deleted, registered versions are only unregistered but not deleted.

rehash

Regenerate all shims. Newly installed scripts will not work unless this is called. This is only necessary in shim mode.

list-available

List all Rakudo versions that can be installed.

build [jvm|moar|moar-blead|all] [tag|branch|sha-1] [--configure-opts=]

Build a Rakudo version. The arguments are:

  • The backend.
    • moar-blead is the moar and nqp backends at the master branch.
    • all will build all backends.
  • The version to build. Call list-available to see a list of available versions. When left empty the latest release is built. It is also possible to specify a commit sha or branch to build.
  • Configure options.

triple [rakudo-ver [nqp-ver [moar-ver]]]

Build a specific set of Rakudo, NQP and MoarVM commits.

register <name> <path>

Register an externaly built / installed Rakudo version with Rakudobrew.

build-zef

Install Zef into the current Rakudo version.

exec <command> [command-args]

Explicitly call an executable. You normally shouldn't need to do this.

rakudobrew which <command>

Show the full path to the executable.

whence [--path] <command>

List all versions that contain the given command. when --path is given the path of the executables is given instead.

mode [env|shim]

Show or set the mode of operation.

self-upgrade

Upgrade Rakudobrew itself.

init

Show installation instructions.

test [version|all]

Run Rakudo tests in the current or given version.

rakudobrew's People

Contributors

abraxxa avatar atroxaper avatar azawawi avatar bestscarper avatar coke avatar colomon avatar diakopter avatar garu avatar hiroraba avatar jj avatar mattoates avatar mimosinnet avatar moritz avatar mouq avatar mvuets avatar niner avatar patrickbkr avatar patzim avatar raydiak avatar shlomif avatar skaji avatar slobo avatar snarkyboojum avatar stmuk avatar tadzik avatar timo avatar ugexe avatar uvtc avatar vyv03354 avatar zoffixznet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rakudobrew's Issues

"file was built for archive which is not the architecture being linked (x86_64)"

Per tpoechtrager/osxcross#11 and https://stackoverflow.com/questions/18500923/issue-with-archive-which-is-not-the-architecture-being-linked-x86-64-in-c , it would appear rakudobrew isn't doing the correct thing on macOS.

Below is the full output of rakudobrew build moar 2016.11. Current OS is macOS 10.12.1 (Sierra).

cal$ rakudobrew build moar 2016.11
HEAD is now at f66f8be... [release] bump VERSION to 2016.11
ATTENTION: no --prefix supplied, building and installing to /Users/cal/.rakudobrew/moar-2016.11/install
sh: /Users/cal/.rakudobrew/moar-2016.11/install/bin/nqp-m: No such file or directory
HEAD is now at e8433d7... Temporarily fudge tests for release
Building NQP ...
/Users/cal/perl5/perlbrew/perls/perl-5.24.0/bin/perl Configure.pl --prefix=/Users/cal/.rakudobrew/moar-2016.11/install --backends=moar --make-install --git-protocol=https --git-reference=/Users/cal/.rakudobrew/bin/../git_reference --gen-moar

Creating tools/build/install-jvm-runner.pl ...
Can't exec "/Users/cal/.rakudobrew/moar-2016.11/install/bin/moar": No such file or directory at tools/lib/NQP/Configure.pm line 284.
HEAD is now at 81fd0ac... Missed a Changelog entry.

Configuring and building MoarVM ...
/Users/cal/perl5/perlbrew/perls/perl-5.24.0/bin/perl Configure.pl --optimize --prefix=/Users/cal/.rakudobrew/moar-2016.11/install --make-install
Welcome to MoarVM!

Updating submodules .................................... OK
Configuring native build environment ................... OK
    trying to compile a simple C program ............... YES
    probing whether your compiler thinks that it is gcc  YES
    probing how your compiler does static inline ....... static __inline__
    your CPU can read unaligned values for all of int32 int64 num64
    probing the size of pointers ....................... 8
JIT isn't supported on darwin-thread-multi-ld-2level yet.
    probing C type support for: _Bool, bool ............ YES: _Bool,bool
    probing computed goto support ...................... YES
    probing pthread_yield support ...................... NO

        make: make
     compile: clang -fno-omit-frame-pointer -fno-optimize-sibling-calls -O3 -DNDEBUG -Wno-logical-op-parentheses -D_DARWIN_USE_64_BIT_INODE=1
    includes:  -I3rdparty/libuv/include -I3rdparty/libuv/src -I3rdparty/libatomic_ops/src -I3rdparty/libtommath -I3rdparty/dynasm -I3rdparty/dyncall/dynload -I3rdparty/dyncall/dyncall -I3rdparty/dyncall/dyncallback
        link: clang  -O3 -DNDEBUG -Wl,-rpath,"/@libdir@" -Wl,-rpath,"@prefix@/share/perl6/site/lib"
        libs: -lpthread

  byte order: little endian

Configuring 3rdparty libs .............................. OK

  3rdparty: 3rdparty/dyncall/dyncall/libdyncall_s.a
            3rdparty/dyncall/dyncallback/libdyncallback_s.a
            3rdparty/dyncall/dynload/libdynload_s.a
            3rdparty/libatomic_ops/src/libatomic_ops.a
            3rdparty/libtommath/libtommath.a
            3rdparty/libuv/libuv.a
            3rdparty/sha1/libsha1.a
            3rdparty/tinymt/libtinymt.a

Generating src/gen/config.c ............................ OK
Generating src/gen/config.h ............................ OK
Generating Makefile .................................... OK
Generating tools/check.mk .............................. OK
Generating build/mk-moar-pc.pl ......................... OK

Configuration SUCCESS.

Type 'make' to build and 'make help' to see a list of
available make targets.
compiling src/main.o
compiling src/core/callsite.o
compiling src/core/args.o
compiling src/core/exceptions.o
compiling src/core/interp.o
compiling src/core/threadcontext.o
compiling src/core/compunit.o
compiling src/core/bytecode.o
compiling src/core/frame.o
compiling src/core/callstack.o
compiling src/core/validation.o
compiling src/core/bytecodedump.o
compiling src/core/threads.o
compiling src/core/ops.o
compiling src/core/hll.o
compiling src/core/loadbytecode.o
compiling src/math/num.o
compiling src/core/coerce.o
compiling src/core/dll.o
compiling src/core/ext.o
compiling src/core/nativecall.o
compiling src/core/nativecall_dyncall.o
compiling src/core/continuation.o
compiling src/core/intcache.o
compiling src/core/fixedsizealloc.o
compiling src/gen/config.o
compiling src/gc/orchestrate.o
compiling src/gc/allocation.o
compiling src/gc/worklist.o
compiling src/gc/roots.o
compiling src/gc/collect.o
compiling src/gc/gen2.o
compiling src/gc/wb.o
compiling src/gc/objectid.o
compiling src/gc/finalize.o
compiling src/io/io.o
compiling src/io/eventloop.o
compiling src/io/syncfile.o
compiling src/io/syncstream.o
compiling src/io/syncpipe.o
compiling src/io/syncsocket.o
compiling src/io/fileops.o
compiling src/io/dirops.o
compiling src/io/procops.o
compiling src/io/timers.o
compiling src/io/filewatchers.o
compiling src/io/signals.o
compiling src/io/asyncsocket.o
compiling src/io/asyncsocketudp.o
compiling src/6model/reprs.o
compiling src/6model/reprconv.o
compiling src/6model/containers.o
compiling src/6model/parametric.o
compiling src/6model/reprs/MVMString.o
compiling src/6model/reprs/MVMArray.o
compiling src/6model/reprs/MVMHash.o
compiling src/6model/reprs/MVMCFunction.o
compiling src/6model/reprs/KnowHOWREPR.o
compiling src/6model/reprs/KnowHOWAttributeREPR.o
compiling src/6model/reprs/P6str.o
compiling src/6model/reprs/P6opaque.o
compiling src/6model/reprs/MVMCode.o
compiling src/6model/reprs/MVMOSHandle.o
compiling src/6model/reprs/MVMCompUnit.o
compiling src/6model/reprs/MVMStaticFrame.o
src/6model/reprs/MVMStaticFrame.c:360:30: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
                while (c_ptr = MVM_gc_worklist_get(tc, ss->gcwl)) {
                       ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/6model/reprs/MVMStaticFrame.c:360:30: note: place parentheses around the assignment to silence this warning
                while (c_ptr = MVM_gc_worklist_get(tc, ss->gcwl)) {
                             ^
                       (                                        )
src/6model/reprs/MVMStaticFrame.c:360:30: note: use '==' to turn this assignment into an equality comparison
                while (c_ptr = MVM_gc_worklist_get(tc, ss->gcwl)) {
                             ^
                             ==
1 warning generated.
compiling src/6model/reprs/P6int.o
compiling src/6model/reprs/P6num.o
compiling src/6model/reprs/Uninstantiable.o
compiling src/6model/reprs/HashAttrStore.o
compiling src/6model/reprs/MVMThread.o
compiling src/6model/reprs/MVMIter.o
compiling src/6model/reprs/MVMContext.o
compiling src/6model/reprs/SCRef.o
compiling src/6model/reprs/Lexotic.o
compiling src/6model/reprs/MVMCallCapture.o
compiling src/6model/reprs/P6bigint.o
compiling src/6model/reprs/NFA.o
compiling src/6model/reprs/MVMException.o
compiling src/6model/reprs/MVMDLLSym.o
compiling src/6model/reprs/MVMMultiCache.o
compiling src/6model/reprs/MVMContinuation.o
compiling src/6model/reprs/NativeCall.o
compiling src/6model/reprs/CPointer.o
compiling src/6model/reprs/CStr.o
compiling src/6model/reprs/CArray.o
compiling src/6model/reprs/CStruct.o
compiling src/6model/reprs/CUnion.o
compiling src/6model/reprs/ReentrantMutex.o
compiling src/6model/reprs/ConditionVariable.o
compiling src/6model/reprs/Semaphore.o
compiling src/6model/reprs/ConcBlockingQueue.o
compiling src/6model/reprs/MVMAsyncTask.o
compiling src/6model/reprs/MVMNull.o
compiling src/6model/reprs/CPPStruct.o
compiling src/6model/reprs/NativeRef.o
compiling src/6model/reprs/MultiDimArray.o
compiling src/6model/reprs/Decoder.o
compiling src/6model/6model.o
compiling src/6model/bootstrap.o
compiling src/6model/sc.o
compiling src/6model/serialization.o
src/6model/serialization.c:1653:89: warning: format specifies type 'int' but the argument has type 'MVMint64' (aka 'long long') [-Wformat]
        fail_deserialize(tc, reader, "Cannot read a c string with negative length %d.", len);
                                                                                  ~~    ^~~
                                                                                  %lld
1 warning generated.
compiling src/mast/compiler.o
compiling src/mast/driver.o
compiling src/spesh/dump.o
compiling src/spesh/graph.o
compiling src/spesh/codegen.o
compiling src/spesh/candidate.o
compiling src/spesh/manipulate.o
compiling src/spesh/args.o
compiling src/spesh/facts.o
compiling src/spesh/optimize.o
compiling src/spesh/deopt.o
compiling src/spesh/log.o
compiling src/spesh/threshold.o
compiling src/spesh/inline.o
compiling src/spesh/osr.o
compiling src/jit/graph.o
compiling src/jit/compile.o
src/jit/compile.c:134:18: warning: format specifies type 'unsigned int' but the argument has type 'void *' [-Wformat]
                 label, code->func_ptr, code->size, ((char*)label) - ((char*)code->func_ptr),
                 ^~~~~
src/jit/compile.c:134:25: warning: format specifies type 'unsigned int' but the argument has type 'MVMJitFunc' (aka 'int (*)(struct MVMThreadContext *, struct
      MVMCompUnit *, void *)') [-Wformat]
                 label, code->func_ptr, code->size, ((char*)label) - ((char*)code->func_ptr),
                        ^~~~~~~~~~~~~~
src/jit/compile.c:134:41: warning: format specifies type 'int' but the argument has type 'size_t' (aka 'unsigned long') [-Wformat]
                 label, code->func_ptr, code->size, ((char*)label) - ((char*)code->func_ptr),
                                        ^~~~~~~~~~
src/jit/compile.c:134:53: warning: format specifies type 'int' but the argument has type 'long' [-Wformat]
                 label, code->func_ptr, code->size, ((char*)label) - ((char*)code->func_ptr),
                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 warnings generated.
compiling src/jit/log.o
compiling src/strings/decode_stream.o
compiling src/strings/ascii.o
compiling src/strings/utf8.o
compiling src/strings/utf8_c8.o
compiling src/strings/nfg.o
compiling src/strings/ops.o
compiling src/strings/unicode.o
compiling src/strings/normalize.o
compiling src/strings/latin1.o
compiling src/strings/utf16.o
compiling src/strings/windows1252.o
compiling src/math/bigintops.o
compiling src/profiler/instrument.o
compiling src/profiler/log.o
compiling src/profiler/profile.o
compiling src/profiler/heapsnapshot.o
src/profiler/heapsnapshot.c:282:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
    while (c_ptr = MVM_gc_worklist_get(tc, ss->gcwl)) {
           ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/profiler/heapsnapshot.c:282:18: note: place parentheses around the assignment to silence this warning
    while (c_ptr = MVM_gc_worklist_get(tc, ss->gcwl)) {
                 ^
           (                                        )
src/profiler/heapsnapshot.c:282:18: note: use '==' to turn this assignment into an equality comparison
    while (c_ptr = MVM_gc_worklist_get(tc, ss->gcwl)) {
                 ^
                 ==
src/profiler/heapsnapshot.c:771:13: warning: format specifies type 'unsigned long' but the argument has type 'unsigned long long' [-Wformat]
            s->references[i].description & ((1 << MVM_SNAPSHOT_REF_KIND_BITS) - 1),
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/secure/_stdio.h:57:62: note: expanded from macro
      'snprintf'
  __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__)
                                                             ^~~~~~~~~~~
src/profiler/heapsnapshot.c:772:13: warning: format specifies type 'unsigned long' but the argument has type 'MVMuint64' (aka 'unsigned long long') [-Wformat]
            s->references[i].description >> MVM_SNAPSHOT_REF_KIND_BITS,
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/secure/_stdio.h:57:62: note: expanded from macro
      'snprintf'
  __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__)
                                                             ^~~~~~~~~~~
src/profiler/heapsnapshot.c:773:13: warning: format specifies type 'unsigned long' but the argument has type 'MVMuint64' (aka 'unsigned long long') [-Wformat]
            s->references[i].collectable_index);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/secure/_stdio.h:57:62: note: expanded from macro
      'snprintf'
  __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__)
                                                             ^~~~~~~~~~~
4 warnings generated.
compiling src/instrument/crossthreadwrite.o
compiling src/moar.o
compiling src/platform/posix/mmap.o
compiling src/platform/posix/time.o
compiling src/platform/posix/sys.o
compiling src/jit/stub.o
linking libmoar.dylib
ld: warning: ld: warning: ld: warning: ignoring file 3rdparty/libatomic_ops/src/libatomic_ops.a, file was built for archive which is not the architecture being linked (x86_64): 3rdparty/libatomic_ops/src/libatomic_ops.aignoring file 3rdparty/tinymt/libtinymt.a, file was built for archive which is not the architecture being linked (x86_64): 3rdparty/tinymt/libtinymt.aignoring file 3rdparty/sha1/libsha1.a, file was built for archive which is not the architecture being linked (x86_64): 3rdparty/sha1/libsha1.a


ld: warning: ld: warning: ignoring file 3rdparty/libtommath/libtommath.a, file was built for archive which is not the architecture being linked (x86_64): 3rdparty/libtommath/libtommath.aignoring file 3rdparty/libuv/libuv.a, file was built for archive which is not the architecture being linked (x86_64): 3rdparty/libuv/libuv.a

Undefined symbols for architecture x86_64:
  "_SHA1Final", referenced from:
      _MVM_sha1 in serialization.o
  "_SHA1Init", referenced from:
      _MVM_sha1 in serialization.o
  "_SHA1Update", referenced from:
      _MVM_sha1 in serialization.o
  "_mp_abs", referenced from:
      _MVM_bigint_abs in bigintops.o
  "_mp_add", referenced from:
      _MVM_bigint_add in bigintops.o
  "_mp_add_d", referenced from:
      _MVM_bigint_or in bigintops.o
      _MVM_bigint_xor in bigintops.o
      _MVM_bigint_and in bigintops.o
      _MVM_bigint_shl in bigintops.o
      _MVM_bigint_shr in bigintops.o
      _MVM_bigint_not in bigintops.o
      _MVM_bigint_radix in bigintops.o
      ...
  "_mp_and", referenced from:
      _MVM_bigint_and in bigintops.o
  "_mp_clamp", referenced from:
      _MVM_bigint_mp_set_uint64 in bigintops.o
      _MVM_bigint_abs in bigintops.o
      _MVM_bigint_neg in bigintops.o
      _MVM_bigint_add in bigintops.o
      _MVM_bigint_sub in bigintops.o
      _MVM_bigint_mul in bigintops.o
      _MVM_bigint_gcd in bigintops.o
      ...
  "_mp_clear", referenced from:
      _gc_free in P6bigint.o
      _gc_cleanup in P6bigint.o
      _MVM_bigint_add in bigintops.o
      _clear_temp_bigints in bigintops.o
      _MVM_bigint_sub in bigintops.o
      _MVM_bigint_mul in bigintops.o
      _MVM_bigint_lcm in bigintops.o
      ...
  "_mp_cmp", referenced from:
      _MVM_bigint_cmp in bigintops.o
  "_mp_cmp_d", referenced from:
      _get_int in P6bigint.o
      _get_uint in P6bigint.o
      _MVM_bigint_div in bigintops.o
      _MVM_bigint_pow in bigintops.o
      _MVM_bigint_is_prime in bigintops.o
  "_mp_copy", referenced from:
      _MVM_bigint_div in bigintops.o
      _MVM_bigint_pow in bigintops.o
      _MVM_bigint_radix in bigintops.o
  "_mp_count_bits", referenced from:
      _get_int in P6bigint.o
      _get_uint in P6bigint.o
  "_mp_div", referenced from:
      _MVM_bigint_div in bigintops.o
  "_mp_div_2d", referenced from:
      _MVM_bigint_shl in bigintops.o
      _MVM_bigint_shr in bigintops.o
      _MVM_bigint_div_num in bigintops.o
  "_mp_expt_d", referenced from:
      _MVM_bigint_pow in bigintops.o
  "_mp_exptmod", referenced from:
      _MVM_bigint_expmod in bigintops.o
  "_mp_gcd", referenced from:
      _MVM_bigint_gcd in bigintops.o
  "_mp_get_int", referenced from:
      _MVM_bigint_pow in bigintops.o
  "_mp_grow", referenced from:
      _MVM_bigint_from_num in bigintops.o
      _grow_and_negate in bigintops.o
  "_mp_init", referenced from:
      _set_int in P6bigint.o
      _set_uint in P6bigint.o
      _deserialize in P6bigint.o
      _MVM_bigint_abs in bigintops.o
      _MVM_bigint_neg in bigintops.o
      _MVM_bigint_add in bigintops.o
      _MVM_bigint_sub in bigintops.o
      ...
  "_mp_init_copy", referenced from:
      _copy_to in P6bigint.o
  "_mp_lcm", referenced from:
      _MVM_bigint_lcm in bigintops.o
  "_mp_mod", referenced from:
      _MVM_bigint_mod in bigintops.o
      _MVM_bigint_rand in bigintops.o
  "_mp_mul", referenced from:
      _MVM_bigint_mul in bigintops.o
  "_mp_mul_2d", referenced from:
      _MVM_bigint_mp_set_uint64 in bigintops.o
      _MVM_bigint_abs in bigintops.o
      _MVM_bigint_neg in bigintops.o
      _MVM_bigint_add in bigintops.o
      _MVM_bigint_sub in bigintops.o
      _MVM_bigint_mul in bigintops.o
      _MVM_bigint_gcd in bigintops.o
      ...
  "_mp_mul_d", referenced from:
      _MVM_bigint_radix in bigintops.o
  "_mp_neg", referenced from:
      _set_int in P6bigint.o
      _get_int in P6bigint.o
      _MVM_bigint_abs in bigintops.o
      _MVM_bigint_neg in bigintops.o
      _MVM_bigint_add in bigintops.o
      _MVM_bigint_sub in bigintops.o
      _MVM_bigint_mul in bigintops.o
      ...
  "_mp_or", referenced from:
      _MVM_bigint_or in bigintops.o
  "_mp_prime_is_prime", referenced from:
      _MVM_bigint_is_prime in bigintops.o
  "_mp_radix_size", referenced from:
      _serialize in P6bigint.o
      _MVM_bigint_to_str in bigintops.o
  "_mp_rand", referenced from:
      _MVM_bigint_rand in bigintops.o
  "_mp_read_radix", referenced from:
      _deserialize in P6bigint.o
      _MVM_bigint_from_str in bigintops.o
  "_mp_set_int", referenced from:
      _MVM_bigint_pow in bigintops.o
      _MVM_bigint_radix in bigintops.o
  "_mp_set_long", referenced from:
      _MVM_bigint_add in bigintops.o
      _MVM_bigint_sub in bigintops.o
      _MVM_bigint_mul in bigintops.o
      _MVM_bigint_lcm in bigintops.o
      _MVM_bigint_gcd in bigintops.o
      _MVM_bigint_or in bigintops.o
      _MVM_bigint_xor in bigintops.o
      ...
  "_mp_shrink", referenced from:
      _MVM_bigint_from_num in bigintops.o
  "_mp_sub", referenced from:
      _MVM_bigint_sub in bigintops.o
  "_mp_sub_d", referenced from:
      _MVM_bigint_div in bigintops.o
      _MVM_bigint_shl in bigintops.o
      _MVM_bigint_shr in bigintops.o
  "_mp_toradix", referenced from:
      _serialize in P6bigint.o
  "_mp_toradix_n", referenced from:
      _MVM_bigint_to_str in bigintops.o
  "_mp_xor", referenced from:
      _MVM_bigint_xor in bigintops.o
      _MVM_bigint_rand in bigintops.o
  "_mp_zero", referenced from:
      _MVM_bigint_mp_set_uint64 in bigintops.o
      _MVM_bigint_abs in bigintops.o
      _MVM_bigint_neg in bigintops.o
      _MVM_bigint_add in bigintops.o
      _MVM_bigint_sub in bigintops.o
      _MVM_bigint_mul in bigintops.o
      _MVM_bigint_gcd in bigintops.o
      ...
  "_tinymt64_generate_double", referenced from:
      _MVM_proc_rand_n in procops.o
      _MVM_proc_randscale_n in procops.o
  "_tinymt64_generate_uint64", referenced from:
      _MVM_proc_rand_i in procops.o
  "_tinymt64_init", referenced from:
      _MVM_proc_seed in procops.o
  "_uv_accept", referenced from:
      _socket_accept in syncsocket.o
      _on_connection in asyncsocket.o
  "_uv_async_init", referenced from:
      _enter_loop in eventloop.o
  "_uv_async_send", referenced from:
      _MVM_gc_enter_from_allocator in orchestrate.o
      _MVM_io_eventloop_queue_work in eventloop.o
      _MVM_io_eventloop_cancel_work in eventloop.o
  "_uv_buf_init", referenced from:
      _read_to_buffer in syncfile.o
      _write_str in syncfile.o
      _write_bytes in syncfile.o
      _MVM_io_syncstream_write_str in syncstream.o
      _MVM_io_syncstream_write_bytes in syncstream.o
      _write_setup in procops.o
      _write_setup in asyncsocket.o
      ...
  "_uv_chdir", referenced from:
      _MVM_dir_chdir in dirops.o
  "_uv_close", referenced from:
      _gc_free in syncstream.o
      _closefh in syncstream.o
      _do_close in syncpipe.o
      _gc_free in syncsocket.o
      _close_socket in syncsocket.o
      _socket_accept in syncsocket.o
      _spawn_on_exit in procops.o
      ...
  "_uv_cond_broadcast", referenced from:
      _MVM_conditionvariable_signal_all in ConditionVariable.o
  "_uv_cond_destroy", referenced from:
      _gc_free in ConditionVariable.o
      _gc_free in ConcBlockingQueue.o
  "_uv_cond_init", referenced from:
      _MVM_conditionvariable_from_lock in ConditionVariable.o
      _initialize in ConcBlockingQueue.o
  "_uv_cond_signal", referenced from:
      _MVM_conditionvariable_signal_one in ConditionVariable.o
      _MVM_concblockingqueue_poll in ConcBlockingQueue.o
      _push in ConcBlockingQueue.o
      _shift in ConcBlockingQueue.o
  "_uv_cond_wait", referenced from:
      _MVM_conditionvariable_wait in ConditionVariable.o
      _shift in ConcBlockingQueue.o
  "_uv_cwd", referenced from:
      _MVM_dir_cwd in dirops.o
  "_uv_default_loop", referenced from:
      _MVM_tc_create in threadcontext.o
  "_uv_fileno", referenced from:
      _mvm_fileno in syncstream.o
      _mvm_fileno in syncpipe.o
  "_uv_fs_chmod", referenced from:
      _MVM_file_chmod in fileops.o
  "_uv_fs_close", referenced from:
      _MVM_cu_map_from_file in compunit.o
      _MVM_file_open_fh in syncfile.o
      _closefh in syncfile.o
      _MVM_file_copy in fileops.o
  "_uv_fs_event_init", referenced from:
      _setup in filewatchers.o
  "_uv_fs_event_start", referenced from:
      _setup in filewatchers.o
  "_uv_fs_fstat", referenced from:
      _MVM_cu_map_from_file_handle in compunit.o
      _MVM_file_open_fh in syncfile.o
      _slurp in syncfile.o
      _mvm_eof in syncfile.o
  "_uv_fs_fsync", referenced from:
      _flush in syncfile.o
  "_uv_fs_ftruncate", referenced from:
      _truncatefh in syncfile.o
  "_uv_fs_link", referenced from:
      _MVM_file_link in fileops.o
  "_uv_fs_lstat", referenced from:
      _MVM_file_stat in fileops.o
      _MVM_file_exists in fileops.o
      _file_info in fileops.o
      _MVM_file_isreadable in fileops.o
      _MVM_file_iswritable in fileops.o
      _MVM_file_isexecutable in fileops.o
      _MVM_file_in_libpath in fileops.o
      ...
  "_uv_fs_open", referenced from:
      _MVM_cu_map_from_file in compunit.o
      _MVM_file_open_fh in syncfile.o
      _MVM_file_copy in fileops.o
  "_uv_fs_read", referenced from:
      _read_to_buffer in syncfile.o
  "_uv_fs_readlink", referenced from:
      _MVM_file_readlink in fileops.o
  "_uv_fs_rename", referenced from:
      _MVM_file_rename in fileops.o
  "_uv_fs_req_cleanup", referenced from:
      _MVM_file_open_fh in syncfile.o
  "_uv_fs_rmdir", referenced from:
      _MVM_dir_rmdir in dirops.o
  "_uv_fs_sendfile", referenced from:
      _MVM_file_copy in fileops.o
  "_uv_fs_stat", referenced from:
      _MVM_cu_map_from_file in compunit.o
      _MVM_file_stat in fileops.o
      _MVM_file_exists in fileops.o
      _file_info in fileops.o
      _MVM_file_copy in fileops.o
      _MVM_file_isreadable in fileops.o
      _MVM_file_iswritable in fileops.o
      ...
  "_uv_fs_symlink", referenced from:
      _MVM_file_symlink in fileops.o
  "_uv_fs_unlink", referenced from:
      _MVM_file_delete in fileops.o
  "_uv_fs_write", referenced from:
      _write_str in syncfile.o
      _write_bytes in syncfile.o
  "_uv_guess_handle", referenced from:
      _is_tty in syncfile.o
      _MVM_file_get_stdstream in fileops.o
  "_uv_hrtime", referenced from:
      _MVM_frame_find_contextual_by_name in frame.o
      _MVM_profile_instrumented_end in instrument.o
      _MVM_profile_log_enter in log.o
      _MVM_profile_log_enter_native in log.o
      _MVM_profile_log_exit in log.o
      _MVM_profile_log_unwind in log.o
      _MVM_profile_log_continuation_control in log.o
      ...
  "_uv_is_closing", referenced from:
      _do_close in syncpipe.o
      _close_perform in asyncsocket.o
      _write_setup in asyncsocket.o
      _close_perform in asyncsocketudp.o
      _write_setup in asyncsocketudp.o
  "_uv_listen", referenced from:
      _socket_bind in syncsocket.o
      _listen_setup in asyncsocket.o
  "_uv_loop_delete", referenced from:
      _MVM_tc_destroy in threadcontext.o
  "_uv_loop_new", referenced from:
      _MVM_tc_create in threadcontext.o
  "_uv_mutex_destroy", referenced from:
      _MVM_fixed_size_destroy in fixedsizealloc.o
      _gc_free in MVMOSHandle.o
      _gc_free in ReentrantMutex.o
      _gc_free in ConcBlockingQueue.o
      _MVM_vm_destroy_instance in moar.o
  "_uv_mutex_init", referenced from:
      _MVM_fixed_size_create in fixedsizealloc.o
      _initialize in MVMOSHandle.o
      _initialize in ReentrantMutex.o
      _deserialize in ReentrantMutex.o
      _initialize in ConcBlockingQueue.o
      _setup_property_mutex in unicode.o
      _MVM_vm_create_instance in moar.o
      ...
  "_uv_mutex_lock", referenced from:
      _MVM_callsite_try_intern in callsite.o
      _MVM_interp_run in interp.o
      _MVM_bytecode_unpack in bytecode.o
      _MVM_hll_get_config_for in hll.o
      _MVM_hll_enter_compilee_mode in hll.o
      _MVM_hll_leave_compilee_mode in hll.o
      _MVM_hll_sym_get in hll.o
      ...
  "_uv_mutex_unlock", referenced from:
      _MVM_callsite_try_intern in callsite.o
      _MVM_interp_run in interp.o
      _MVM_tc_release_ex_release_mutex in threadcontext.o
      _MVM_bytecode_unpack in bytecode.o
      _MVM_hll_get_config_for in hll.o
      _MVM_hll_enter_compilee_mode in hll.o
      _MVM_hll_leave_compilee_mode in hll.o
      ...
  "_uv_once", referenced from:
      _MVM_unicode_init in unicode.o
  "_uv_pipe_init", referenced from:
      _MVM_io_syncpipe in syncpipe.o
      _MVM_file_get_stdstream in fileops.o
      _spawn_setup in procops.o
  "_uv_pipe_open", referenced from:
      _MVM_file_get_stdstream in fileops.o
  "_uv_process_kill", referenced from:
      _spawn_cancel in procops.o
  "_uv_read_start", referenced from:
      _read_to_buffer in syncstream.o
      _spawn_setup in procops.o
      _read_setup in asyncsocket.o
  "_uv_read_stop", referenced from:
      _on_read in syncstream.o
      _on_read in asyncsocket.o
  "_uv_ref", referenced from:
      _read_to_buffer in syncstream.o
      _MVM_io_syncstream_write_str in syncstream.o
      _MVM_io_syncstream_write_bytes in syncstream.o
      _socket_connect in syncsocket.o
      _socket_accept in syncsocket.o
      _MVM_proc_shell in procops.o
      _MVM_proc_spawn in procops.o
      ...
  "_uv_resident_set_memory", referenced from:
      _MVM_gc_enter_from_interrupt in orchestrate.o
      _MVM_gc_enter_from_allocator in orchestrate.o
  "_uv_run", referenced from:
      _MVM_tc_destroy in threadcontext.o
      _enter_loop in eventloop.o
      _read_to_buffer in syncstream.o
      _MVM_io_syncstream_write_str in syncstream.o
      _MVM_io_syncstream_write_bytes in syncstream.o
      _gc_free in syncstream.o
      _do_close in syncpipe.o
      ...
  "_uv_sem_destroy", referenced from:
      _get_or_vivify_loop in eventloop.o
      _gc_free in Semaphore.o
  "_uv_sem_init", referenced from:
      _get_or_vivify_loop in eventloop.o
      _set_int in Semaphore.o
  "_uv_sem_post", referenced from:
      _enter_loop in eventloop.o
      _MVM_semaphore_release in Semaphore.o
  "_uv_sem_trywait", referenced from:
      _MVM_semaphore_tryacquire in Semaphore.o
  "_uv_sem_wait", referenced from:
      _get_or_vivify_loop in eventloop.o
      _MVM_semaphore_acquire in Semaphore.o
  "_uv_signal_init", referenced from:
      _setup in signals.o
  "_uv_signal_start", referenced from:
      _setup in signals.o
  "_uv_spawn", referenced from:
      _MVM_proc_shell in procops.o
      _MVM_proc_spawn in procops.o
      _spawn_setup in procops.o
  "_uv_strerror", referenced from:
      _MVM_cu_map_from_file in compunit.o
      _MVM_cu_map_from_file_handle in compunit.o
      _MVM_fixed_size_create in fixedsizealloc.o
      _get_or_vivify_loop in eventloop.o
      _MVM_file_open_fh in syncfile.o
      _closefh in syncfile.o
      _slurp in syncfile.o
      ...
  "_uv_tcp_bind", referenced from:
      _socket_bind in syncsocket.o
      _listen_setup in asyncsocket.o
  "_uv_tcp_connect", referenced from:
      _socket_connect in syncsocket.o
      _connect_setup in asyncsocket.o
  "_uv_tcp_init", referenced from:
      _socket_connect in syncsocket.o
      _socket_bind in syncsocket.o
      _socket_accept in syncsocket.o
      _connect_setup in asyncsocket.o
      _listen_setup in asyncsocket.o
      _on_connection in asyncsocket.o
  "_uv_thread_create", referenced from:
      _MVM_thread_run in threads.o
  "_uv_thread_join", referenced from:
      _MVM_thread_join in threads.o
      _MVM_thread_join_foreground in threads.o
  "_uv_thread_self", referenced from:
      _start_thread in threads.o
      _MVM_vm_create_instance in moar.o
  "_uv_timer_init", referenced from:
      _setup in timers.o
  "_uv_timer_start", referenced from:
      _setup in timers.o
  "_uv_timer_stop", referenced from:
      _cancel in timers.o
  "_uv_tty_init", referenced from:
      _MVM_file_get_stdstream in fileops.o
  "_uv_udp_bind", referenced from:
      _setup_setup in asyncsocketudp.o
  "_uv_udp_init", referenced from:
      _setup_setup in asyncsocketudp.o
  "_uv_udp_recv_start", referenced from:
      _read_setup in asyncsocketudp.o
  "_uv_udp_recv_stop", referenced from:
      _on_read in asyncsocketudp.o
  "_uv_udp_send", referenced from:
      _write_setup in asyncsocketudp.o
  "_uv_udp_set_broadcast", referenced from:
      _setup_setup in asyncsocketudp.o
  "_uv_unref", referenced from:
      _MVM_io_syncstream_write_str in syncstream.o
      _write_cb in syncstream.o
      _MVM_io_syncstream_write_bytes in syncstream.o
      _on_read in syncstream.o
      _do_close in syncpipe.o
      _socket_bind in syncsocket.o
      _on_connect in syncsocket.o
      ...
  "_uv_write", referenced from:
      _MVM_io_syncstream_write_str in syncstream.o
      _MVM_io_syncstream_write_bytes in syncstream.o
      _write_setup in procops.o
      _write_setup in asyncsocket.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libmoar.dylib] Error 1
sh: /Users/cal/.rakudobrew/moar-2016.11/install/bin/moar: No such file or directory
Cleaning up ...
/Users/cal/perl5/perlbrew/perls/perl-5.24.0/bin/perl -MExtUtils::Command -e mkpath gen/moar/stage1/gen
/Users/cal/perl5/perlbrew/perls/perl-5.24.0/bin/perl tools/build/gen-cat.pl moar src/how/Archetypes.nqp src/how/RoleToRoleApplier.nqp src/how/NQPConcreteRoleHOW.nqp src/how/RoleToClassApplier.nqp src/how/NQPCurriedRoleHOW.nqp src/how/NQPParametricRoleHOW.nqp src/how/NQPClassHOW.nqp src/how/NQPNativeHOW.nqp src/how/NQPAttribute.nqp src/how/NQPModuleHOW.nqp src/how/EXPORTHOW.nqp  > gen/moar/stage1/nqpmo.nqp
/Users/cal/.rakudobrew/moar-2016.11/install/bin/moar --libpath=src/vm/moar/stage0 src/vm/moar/stage0/nqp.moarvm --bootstrap --setting=NULL --no-regex-lib --target=mbc \
	    --output=gen/moar/stage1/nqpmo.moarvm gen/moar/stage1/nqpmo.nqp
sh: /Users/cal/.rakudobrew/moar-2016.11/install/bin/moar: No such file or directory
make: *** [gen/moar/stage1/nqpmo.moarvm] Error 127
Command failed (status 512): make
Command failed (status 512): /Users/cal/perl5/perlbrew/perls/perl-5.24.0/bin/perl Configure.pl --prefix=/Users/cal/.rakudobrew/moar-2016.11/install --backends=moar --make-install --git-protocol=https --git-reference=/Users/cal/.rakudobrew/bin/../git_reference --gen-moar
Failed running /Users/cal/perl5/perlbrew/perls/perl-5.24.0/bin/perl Configure.pl --backends=moar --gen-moar --git-reference="/Users/cal/.rakudobrew/bin/../git_reference" --make-install  at /Users/cal/.rakudobrew/bin/rakudobrew line 58.
	main::run("/Users/cal/perl5/perlbrew/perls/perl-5.24.0/bin/perl Configur"...) called at /Users/cal/.rakudobrew/bin/rakudobrew line 386
	main::build_impl("moar", 2016.11, "") called at /Users/cal/.rakudobrew/bin/rakudobrew line 116
cal$

Git clone should try via https if git protocol fails (usually due to firewalls)

$ rakudobrew build moar
Update git reference: rakudo
Cloning into 'rakudo'...
warning: expected SRV RR, found RR type 1
fatal: unable to connect to github.com:
github.com[0: 192.30.252.131]: errno=Connection refused
github.com[1: 192.30.252.131]: errno=Connection refused

Failed running git clone git://github.com/rakudo/rakudo.git rakudo at /home/nwaddell/.rakudobrew/bin/rakudobrew line 57.
main::run("git clone git://github.com/rakudo/rakudo.git rakudo") called at /home/nwaddell/.rakudobrew/bin/rakudobrew line 400
main::update_git_reference("rakudo") called at /home/nwaddell/.rakudobrew/bin/rakudobrew line 363
main::build_impl("moar", undef, "") called at /home/nwaddell/.rakudobrew/bin/rakudobrew line 113

build-panda fails by trying to pull into the old version

$ rakudobrew self-upgrade
[...]
From https://github.com/tadzik/rakudobrew
   4eba887..1faef20  master     -> origin/master
 * [new branch]      compat     -> origin/compat
 [...]
$ rakudobrew build moar
[...]
Done, moar-nom built
$ rakudobrew build-panda
fatal: bad object 4148627054eb9c1f74724c69bc26320c89f6dd0a
fatal: bad object ca2b8ac4511ca9ab060917ba4101a1f698324a04
fatal: bad object 3a82d4bb1f37ef04fb20bd2473d500e51c723f61
error: The following untracked working tree files would be overwritten by merge:
    ext/File__Find/LICENSE
[...]
Aborting
Failed running git pull -q at /Users/helmut/.rakudobrew/bin/rakudobrew line 56.
    main::run("git pull -q") called at /Users/helmut/.rakudobrew/bin/rakudobrew line 483
    main::build_panda(undef) called at /Users/helmut/.rakudobrew/bin/rakudobrew line 119
$ rakudobrew current
Currently running moar-HEAD

work-around

$ rakudobrew global moar-nom
Switching to moar-nom
$ rakudobrew build-panda
[...]
Done, built panda for moar-nom
Updating shims
$

wishlist: a way to tell if a new version is available

Hi there! First of all thank you for rakudobrew - it's totally awesome!

As I play more and more with Perl 6, I feel I want to stay as up-to-date as possible with the current state of the code. However, I'm having trouble finding a good way to know whether I should update or not.

I mean, I know rakudobrew build moar will build the latest release on moarvm, but a few questions arise:

  • is it the latest stable? Or the latest blead? Or none of the above?
  • do I already have it? (rebuilding takes a while, I don't want to do it unless I have to)

If I type rakudobrew list-available I get a HUGE list of builds with no apparent naming hints to let me know which is stable or which is new (other than a few YYYY.MM releases). Also, when I type "list" I get only "moar-nom", which hints it as the "nom" branch, and from what I could gather "nom" is the name of a "new object model" branch created in 2011, which is... strange :)

So here's what I'd love to see on rakudobrew: a way to tell if there is a new version available for my local build(s) without having to ask for a complete rebuild :)

As a bonus, if list-available would sort by last commit date and show the date, it would definitely help too!

When releases are versioned (like rakudo YYYY.MM and perl 5.22.1), it's easy to see what you have and whether it has been superseded by a newer version or not. But "build moar" currently leaves me wondering in the dark :(

What do you think?

`build moar` claims write error at install stage

rakudobrew reports an error during the make install phase of build moar, even though a switchable perl6 is built.

  • Platform: OS X 10.9.3
  • Host Perl5: 5.20.0
$ rakudobrew build moar
...
/Users/brian/perl5/perlbrew/perls/perl-5.20.0/bin/perl -MExtUtils::Command -e chmod 755 /Users/brian/.rakudobrew/moar-HEAD/install/bin/perl6
make: write error
Failed running make install at /Users/brian/.rakudobrew/bin/rakudobrew line 23.

However, moar-HEAD shows up in list and I can switch to it.

$ rakudobrew list
  moar-HEAD
$ rakudobrew switch moar
Switching to moar-HEAD
Updating shims
$ perl6 --version
This is perl6 version 2014.06-12-ga7b4cba built on MoarVM version 2014.06

Why in a dot-directory?

Hi! Why are you installing into .rakudobrew? Why does this need to be in a dot-directory?

Thanks,
Ricky

perl6-j should not required `rakudobrew switch jvm` first

Unless you explicitly switch to a different VM the shims that point to a different VM do not work:

<after `rakudobrew build jvm` and `rakudobrew rehash`>
rakudobrew: perl6-j: command not found

The 'perl6-j' command exists in these Perl 6 versions:

jvm-nom

"rakudobrew triple" fails with "Couldn't determine correct make program. Aborting."

The triple commands does not seem to be able to build the latest nqp.

I tried it with both of the following combinations:

rakudobrew triple
rakudobrew triple nom master master

The result is the same: It builds moar, but apparently can't build nqp. The last few lines of output are:

Found ../install/bin/moar version 2015.09-86-g071e0a6, which is new enough.
Cleaning up ...
You can now use 'make' to build NQP.
After that, 'make test' will run some tests and
'make install' will install NQP.
Couldn't determine correct make program. Aborting.

Document how to allow the use of https:// rather than git:// URLS for cloning

Some networks don't allow ssh to outside hosts and in those cases an https connection should be used, the symptom is a rather ugly error message:

loning into 'rakudo'...
fatal: unable to connect to github.com:
github.com[0: 192.30.253.112]: errno=Connection refused

Failed running git clone git://github.com/rakudo/rakudo.git rakudo at /home/jns/.rakudobrew/bin/rakudobrew line 58.
    main::run("git clone git://github.com/rakudo/rakudo.git rakudo") called at /home/jns/.rakudobrew/bin/rakudobrew line 409
    main::update_git_reference("rakudo") called at /home/jns/.rakudobrew/bin/rakudobrew line 372
    main::build_impl("moar", undef, "") called at /home/jns/.rakudobrew/bin/rakudobrew line 116

I'll take a look when I get home.

Consider removing support for pre-glr

Or, if we have to leave it in, consider adding more information to the list of available backends, to say that pre-glr is there ONLY for testing legacy (pre-christmas) perl6 code, and then we could consider adding a note to the JVM backend about how it's not up to par with the MoarVM backend.

command line args could use some documentation

The README points to the output of the command, but that doesn't detail what the individual subcommands actually do. It would be nice if we had another markdown file that listed the available options and what they're for.

push users towards tags

Post Christmas, we want users to probably grab the latest tag, not nom, especially if nom isn't where we cut from for each release. (e.g. right now 2016.01.1 is the latest, but the default is to get nom, which reports as 2015.12 still)

feature request: rename folder [backend]-nom to [backend]-sha1

I rebuild rakudo daily, and often find myself wishing I had a copy of the previous version still when I run into certain behaviors or when rakudo fails to build (leaving me with no perl6 installation). Right now I can either:

1) `rakudobrew build moar` && `rakudobrew build moar [last-sha1]'
2) mv ~/.rakudobrew/moar-nom ~/.rakudobrew/moar-[last-sha1]

(1) means rebuilding an install I just delete, including all modules. (2) actually also involves extracting the sha-1 of the old nom for renaming the folder so is less than ideal, and I think renaming the folder would actually break things sometimes.

What I suggest is building all backends into folders with the sha-1 appended (like rakudobrew build moar f1a21af does). Then keep track of the current HEAD similar to how the CURRENT file works, so that you can still map moar-nom or just moar to HEAD. Now when you do rakudobrew build moar and you already have a moar installation it doesn't need its folder name (moar-nom/), instead creating its own folder (moar-[sha1]/). At this point you can default to deleting the old installation or keep it around, and have a flag for doing the other. Maybe this is all better left to an outside script, but I think it may be a nice feature to have integrated

Task::Star *test stage failed for URI: Tests failed

Installing Rakudo Star with Rakudobrew fails.
When installing according to the README, JSON::RPC fails (the maintainer of JSON::RPC is working on that).
When installing with rakudobrew build moar 2015.09 and rakudobrew build-panda 2015.09 the module URI fails:

==> Testing URI
Could not parse URI: http://example.com:80/about/us?foo#bar
  in block  at /home/eric/.panda-work/1444683012_17/lib/URI.pm:42
  in regex unenc-pchar at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:83
  in regex pchar at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:82
  in regex segment-nz-nc at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:77
  in regex path-noscheme at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:71
  in regex relative-part at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:23
  in regex relative-ref at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:20
  in regex URI-reference at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:16
  in regex TOP at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:13
  in method parse at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar.pm:21
  in method parse at /home/eric/.panda-work/1444683012_17/lib/URI.pm:37
  in method new at /home/eric/.panda-work/1444683012_17/lib/URI.pm:135
  in block <unit> at t/01.t:10

# Looks like you planned 46 tests, but ran 1
t/01.t ................... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 45/46 subtests 
t/escape.t ............... ok
t/november-urlencoded.t .. ok
Could not parse URI: ftp://ftp.is.co.za/rfc/rfc1808.txt
  in block  at /home/eric/.panda-work/1444683012_17/lib/URI.pm:42
  in regex unenc-pchar at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:83
  in regex pchar at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:82
  in regex segment-nz-nc at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:77
  in regex path-noscheme at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:71
  in regex relative-part at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:23
  in regex relative-ref at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:20
  in regex URI-reference at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:16
  in regex TOP at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar/URI.pm:13
  in method parse at /home/eric/.panda-work/1444683012_17/lib/IETF/RFC_Grammar.pm:21
  in method parse at /home/eric/.panda-work/1444683012_17/lib/URI.pm:37
  in method new at /home/eric/.panda-work/1444683012_17/lib/URI.pm:135
  in block <unit> at t/rfc-3986-examples.t:6

t/rfc-3986-examples.t .... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 22/22 subtests 

Test Summary Report
-------------------
t/01.t                 (Wstat: 65280 Tests: 1 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 46 tests but ran 1.
t/rfc-3986-examples.t  (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 22 tests but ran 0.
Files=4, Tests=25,  5 wallclock secs ( 0.02 usr  0.01 sys +  5.32 cusr  0.14 csys =  5.49 CPU)
Result: FAIL
test stage failed for URI: Tests failed
  in method throw at /home/eric/.rakudobrew/moar-2015.09/install/share/perl6/runtime/CORE.setting.moarvm:1
  in method install at /home/eric/.rakudobrew/moar-2015.09/install/share/perl6/site/lib/Panda.pm:142
  in block  at /home/eric/.rakudobrew/moar-2015.09/install/share/perl6/site/lib/Panda.pm:214
  in method resolve at /home/eric/.rakudobrew/moar-2015.09/install/share/perl6/site/lib/Panda.pm:208
  in sub MAIN at /home/eric/.rakudobrew/bin/../moar-2015.09/install/share/perl6/site/bin/panda:18
  in block <unit> at /home/eric/.rakudobrew/bin/../moar-2015.09/install/share/perl6/site/bin/panda:95


Failure Summary
----------------
Task::Star(
    *test stage failed for URI: Tests failed)

Repeatedly building with tag causes git error

I just did a rakudobrew build moar 2014.12 and it errored out because I had some dependencies missing. So installed the missing dependencies, ran the same command again, and got

You are not currently on a branch. Please specify which
branch you want to merge with. See git-pull(1) for details.

    git pull <remote> <branch>

Failed running git pull at /home/rakudobrew/rakudobrew/bin/rakudobrew line 32.

(#git on freenode advises to never pull in a script; rather fetch + checkout the desired revision)

rakudobrew list-available not sorted

Running rakudobrew list-available multiple times gets you an unordered list of backends.

Here are samples from multiple runs:

Available backends:
  jvm
  pre-glr
  moar
  moar
Available backends:
  jvm
  moar
  pre-glr
  moar
Available backends:
  jvm
  pre-glr
  moar
  moar

Windows CMD.exe installation failure

SET PATH "%USERPROFILE%\rakudobrew\bin;%PATH%"
Does not set the path unless an equals sign is present:
SET PATH="%USERPROFILE%\rakudobrew\bin;%PATH%"

The problem with the CMD.exe instructions is that if you manipulate the PATH in the current session, the shell still cannot see the rakudobrew binary, as the shell loads PATH into memory at process startup and it is not update-able thereafter. (even if you start a new sub shell with start cmd).

So what you need to do is this:

> SETX PATH "%PATH%;%USERPROFILE%\rakudobrew\bin"

Quit the shell, start a new cmd.exe

Now rakudobrew will work

>rakudobrew build moar

Please use FindBin qw($Bin);

Hello Tadeusz,
I can not use my current computer to provid you with a merge request, so please find below my suggestion.
You could use the FindBin Module to have rakudobrew working form any directory in which it is cloned.
http://perldoc.perl.org/FindBin.html
Example:

use FindBin qw($Bin);
#...
my $prefix = "$Bin/..";

Even better:

Example:

use FindBin qw($Bin);
use File::Spec qw(rel2abs);
#...
my $prefix = rel2abs "$Bin/..";

Thanks,
Krasimir

build-panda fails - no such file or directory

I followed this guide http://rakudo.org/how-to-get-rakudo/ to install rakudo with rakudobrew. The installation of panda on a clean Fedora 21 fails with the following message:

rakudobrew build-panda
No need to rebootstrap, running normal bootstrap
==> Bootstrapping Panda
==> Installing panda from a local directory '/home/user/.rakudobrew/moar-nom/panda'
==> panda depends on File::Find, Shell::Command, JSON::Fast
==> Shell::Command depends on File::Find
==> Fetching File::Find
==> Building File::Find
==> Testing File::Find
no such file or directory
  in method throw at /home/user/.rakudobrew/moar-nom/install/share/perl6/runtime/CORE.setting.moarvm:1
  in sub run-and-gather-output at /home/user/.rakudobrew/moar-nom/panda/lib/Panda/Common.pm:86
  in block  at /home/user/.rakudobrew/moar-nom/panda/lib/Panda/Tester.pm:24
  in sub indir at /home/user/.rakudobrew/moar-nom/panda/lib/Panda/Common.pm:20
  in method test at /home/user/.rakudobrew/moar-nom/panda/lib/Panda/Tester.pm:5
  in method install at /home/user/.rakudobrew/moar-nom/panda/lib/Panda.pm:141
  in block  at /home/user/.rakudobrew/moar-nom/panda/lib/Panda.pm:214
  in method resolve at /home/user/.rakudobrew/moar-nom/panda/lib/Panda.pm:208
  in sub MAIN at bin/panda:18
  in block <unit> at bin/panda:145

==> Please make sure that /home/user/.rakudobrew/moar-nom/install/share/perl6/site/bin is in your PATH
Updating shims
Done, built panda for moar-nom
Updating shims

Adding /home/user/.rakudobrew/moar-nom/install/share/perl6/site/bin to the $PATH does not fix this issue.

Also it says Done, built panda for moar-nom but executing ~/.rakudobrew/moar-nom/panda/bin/panda throws another error:

===SORRY!===
Could not find Shell::Command in any of:
  file#/home/user/.perl6/2015.09-420-g4b1df7b/lib
  inst#/home/user/.perl6/2015.09-420-g4b1df7b
  file#/home/user/.rakudobrew/moar-nom/install/share/perl6/lib
  file#/home/user/.rakudobrew/moar-nom/install/share/perl6/vendor/lib
  file#/home/user/.rakudobrew/moar-nom/install/share/perl6/site/lib
  inst#/home/user/.rakudobrew/moar-nom/install/share/perl6
  inst#/home/user/.rakudobrew/moar-nom/install/share/perl6/vendor
  inst#/home/user/.rakudobrew/moar-nom/install/share/perl6/site

This issue could be related to #38

"Could not find" for installed package with null author

I installed rakudobrew and panda with it, then used panda to install the Task::Star packages.

panda install Task::Star

However when I tried to test one of the packages that it installed Term::ANSIColor it couldn't find it.

perl6 -e 'use v6; use Term::ANSIColor;'
===SORRY!===
Could not find Term::ANSIColor at line 1 in:
    /home/michael/.perl6
    /home/michael/.rakudobrew/moar-nom/install/share/perl6/site
    /home/michael/.rakudobrew/moar-nom/install/share/perl6/vendor
    /home/michael/.rakudobrew/moar-nom/install/share/perl6
    CompUnit::Repository::AbsolutePath<190578264>
    CompUnit::Repository::NQP<191340712>
    CompUnit::Repository::Perl5<191340736>

I found the file that appeared to define where it was installed and noticed that the author was null.

{
  "files" : { },
  "name" : "Terminal::ANSIColor",
  "provides" : {
    "Terminal::ANSIColor" : {
      "lib/Terminal/ANSIColor.pm" : {
        "cver" : "2016.08.1-46-g6a8278c",
        "file" : "37E2E5D01D62E5D0E4F3CBBCE0D817264CD0C9E3",
        "time" : 1472301598.87669
      }
    }
  },
  "auth" : null,
  "ver" : "*"
}

I tried changing this to "test" and it will now find the package as expected.

After build-panda, told to add moar-nom/install/share/perl6/site/bin to $PATH

After running rakudobrew build-panda, noticed this at the end:

==> Successfully installed panda
==> Please make sure that /home/john/.rakudobrew/moar-nom/install/share/perl6/site/bin is in your PATH
==> Reinstalling 
Done, built panda for moar-nom
Updating shims

Is that correct? Do I really need to add that to my PATH? I've already got ~/.rakudobrew/bin on my PATH and it seems to work fine...

(I also notice another bin dir in there: ~/.rakudobrew/moar-nom/install/bin )

Warn about non-functioning parrot build?

17:15 * sjn notes that "rakudobrew build parrot" doesn't work any more
17:16 < sjn> It bails with the error "Unknown option: gen-parrot"
17:16 < JimmyZ_> sjn: it is known
17:16 < sjn> perhaps turn off the parrot option in rakudobrew?
17:17 < tadzik> Please open a ticket :)
17:17 < sjn> or at least add a short statement that it's for people who want to hack on it to make it work again :)
17:17 < tadzik> And query me, because I want to query you but my mobile client can't

Done! ^^

path to modules bin/ missing

Panda installs binaries supplied by modules under $HOME/rakudobrew/moar-2016.06/install/share/perl6/site/bin/ but .rakudobrew-bash does not contain that path.

No rule to make target `j-clean', needed by `clean'

Tried building rakudo with the JVM backend and got the following error:

nelo@HP-EliteBook-8540w:~$ rakudobrew build jvm
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (46/46), done.
remote: Total 48 (delta 26), reused 0 (delta 0)
Unpacking objects: 100% (48/48), done.
From github.com:rakudo/rakudo
1b0d7af..e2b01fe nom -> origin/nom
ed8670e..9e6831b newio -> origin/newio
Updating 1b0d7af..e2b01fe
Fast-forward
src/core/IO/Symlink.pm | 3 ---
tools/build/Makefile-JVM.in | 3 +--
tools/build/Makefile-Parrot.in | 1 -
tools/build/NQP_REVISION | 2 +-
tools/build/moar_core_sources | 1 -
5 files changed, 2 insertions(+), 8 deletions(-)
delete mode 100644 src/core/IO/Symlink.pm
Your branch is up-to-date with 'origin/nom'.
make: *** No rule to make target `j-clean', needed by `clean'. Stop.
Failed running make realclean at /home/nelo/.rakudobrew/bin/rakudobrew line 26. 

This is the version of my Java installation:

nelo@HP-EliteBook-8540w:~$ java -version
java version "1.7.0_75"
OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~trusty1)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)

Fail to bootstrap rakudobrew, Ubuntu 14.04 LTS

This is the whole error dump after $ rakudobrew build moar

kpath /home/jmerelo/.rakudobrew/moar-nom/install/share/perl6/site/short
./perl6-m tools/build/install-core-dist.pl
Failed to create directory '/home/jmerelo/.perl6/2015.11-362-g0236c43/precomp' with mode '0o777': Failed to mkdir: 13
  in any  at ././CORE.setting.moarvm:1
  in block <unit> at tools/build/install-core-dist.pl:13

Actually thrown at:
  in block <unit> at tools/build/install-core-dist.pl:13

make: *** [m-install] Error 1
Command failed (status 512): make install
Failed running /home/jmerelo/perl5/perlbrew/perls/perl-5.20.0/bin/perl Configure.pl --backends=moar --gen-moar --git-reference=/home/jmerelo/.rakudobrew/bin/../git_reference --make-install  at /home/jmerelo/.rakudobrew/bin/rakudobrew line 57.
    main::run("/home/jmerelo/perl5/perlbrew/perls/perl-5.20.0/bin/perl Confi"...) called at /home/jmerelo/.rakudobrew/bin/rakudobrew line 377
    main::build_impl("moar", undef, "") called at /home/jmerelo/.rakudobrew/bin/rakudobrew line 113

Invalid option '--git-reference' on older Rakudo builds

When building rakudos older than 2015.02, Configure.pl fails because it doesn't recognize the --git-reference option. For example:

$ perl bin/rakudobrew build jvm 2014.07
Update git reference: rakudo
Current branch nom is up to date.
Update git reference: nqp
Current branch master is up to date.
Cloning into 'jvm-2014.07'...
Checking connectivity... done.
Note: checking out '2014.07'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 0aaba7e... Add some more advent tests
Unknown option: git-reference
Configure.pl - Rakudo Configure

General Options:
    --help             Show this text
    --prefix=dir       Install files in dir; also look for executables there
    --backends=parrot,jvm,moar
                       Which backend(s) to use (or ALL for all of them)
    --gen-nqp[=branch]
                       Download and build a copy of NQP
        --gen-moar[=branch]
                       Download and build a copy of MoarVM to use
        --moar-option='--option=value'
                       Options to pass to MoarVM's Configure.pl
        --gen-parrot[=branch]
                       Download and build a copy of Parrot
        --parrot-option='--option'
                       Options to pass to Parrot's Configure.pl
        --parrot-make-option='--option'
                       Options to pass to Parrot's make, for example:
                       --parrot-make-option='--jobs=4'
        --git-protocol={ssh,https,git}
                       Protocol used for cloning git repos
    --makefile-timing  Enable timing of individual makefile commands

Configure.pl also reads options from 'config.default' in the current directory.
Failed running /home/rob/.perlbrew/perls/5.20/bin/perl Configure.pl --backends=jvm --gen-nqp --git-reference=/home/rob/.rakudobrew/bin/../git_reference --make-install  at bin/rakudobrew line 45.
    main::run("/home/rob/.perlbrew/perls/5.20/bin/perl Configure.pl --backen"...) called at bin/rakudobrew line 231
    main::build_impl("jvm", 2014.07, "") called at bin/rakudobrew line 90

translating `rakudobrew init` for fish shell?

i use fish shell

(i honestly barely learned bash in the first place,
and still don't know fish super well)

so,
the bash function that comes out of rakudobrew init -,
should i translate that to an auto-loading fish function?

i tried just naively translating it line-by-line

#bash rakudobrew() {
function rakudobrew
#bash   local command
#bash   command="$1"
    set --local command $argv[1]

#bash   if [ "$#" -gt 0 ]; then
    if test (count $argv) -gt 0
#bash     shift
        if test (count $argv) -gt 1
            set argv $argv[2..-1]
        else
            set --erase argv
        end
#bash   fi
    end

#bash   case "$command" in
    switch "$command"
#bash   shell)
        case shell
#bash     eval "`rakudobrew "sh" "$@"`";;
            eval (rakudobrew "sh" $argv)
#bash   *)
        case "*"
#bash     command rakudobrew "$command" "$@";;
            command rakudobrew $command $argv
#bash   esac
    end
#bash }
end

but it came out as an unreadable mess,
because i don't actually understand,
what is the purpose of this function?

like, in terms of the list of test inputs
and what it's supposed to do with them

like, is it just supposed to turn "shell" to "sh"?

rakudobrew                  >   command rakudobrew
rakudobrew foo              >   command rakudobrew foo
rakudobrew foo bar          >   command rakudobrew foo bar
rakudobrew shell            >   command rakudobrew sh
rakudobrew shell foo        >   command rakudobrew sh foo
rakudobrew shell foo bar    >   command rakudobrew sh foo bar

or something else...?

(
also,

it said to add this to my (implicitly bash) profile:

export PATH="/home/o1/.rakudobrew/bin:${PATH}"

which would mean, naively translating, adding this to my config.fish:

set --export PATH $HOME/.rakudobrew/bin $PATH

but i already have that in my path from following the direction in the readme to run:

set -U fish_user_paths ~/.rakudobrew/bin/ $fish_user_paths

)

Rakudobrew build moar fails

./perl6-m tools/build/install-core-dist.pl /home/jmerelo/.rakudobrew/moar-nom/install/share/perl6
===SORRY!=== Error while compiling /home/jmerelo/.rakudobrew/moar-nom/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall)
An exception occurred while evaluating a constant
at /home/jmerelo/.rakudobrew/moar-nom/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall):13
Exception details:
  Could not find symbol '&bool'
    in block  at sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) line 13


  in block <unit> at tools/build/install-core-dist.pl line 13

make: *** [m-install] Error 1
Command failed (status 512): make install
Failed running /home/jmerelo/perl5/perlbrew/perls/perl-5.20.0/bin/perl Configure.pl --backends=moar --gen-moar --git-reference=/home/jmerelo/.rakudobrew/bin/../git_reference --make-install  at /home/jmerelo/.rakudobrew/bin/rakudobrew line 58.
    main::run("/home/jmerelo/perl5/perlbrew/perls/perl-5.20.0/bin/perl Confi"...) called at /home/jmerelo/.rakudobrew/bin/rakudobrew line 378
    main::build_impl("moar", undef, "") called at /home/jmerelo/.rakudobrew/bin/rakudobrew line 114

This is Ubuntu 14.04, latest version of rakudobrew

build-panda task tells me panda's up to date, but then proceeds to build it

Haven't run rakudobrew build moar in a while. After doing so, did this:

$ rakudobrew build-panda
Already up-to-date.
==> Bootstrapping Panda
==> Fetching File::Find
==> Building File::Find
Compiling lib/File/Find.pm to mbc
==> Testing File::Find
t/01-file-find.t .. ok
{snip}

So, it gives me the impression that its panda is up to date, but then it goes on to rebuild it anyway.

rakudobrew list-available completes with warnings

If you don't have a rakudo installed yet, you get the following warnings when running rakudobrew list-available

Available Rakudo versions:
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
Use of uninitialized value $cur_rakudo in string eq at /Users/williamcoleda/.rakudobrew/bin/rakudobrew line 92.
  2009-02
  2009-03
  2009-04
  2009-05
  2009-06
  2009-07
  2009-08
  2009-09
  2009-10
  2009-11
  2010-01
  2010.02
  2010.03
  2010.04
  2010.05
  2010.06
  2010.07
  2010.08
  2010.09
  2010.10
  2010.11
  2010.12
  2011.01
  2011.02
  2011.03
  2011.04
  2011.05
  2011.06
  2011.07
  2011.09
  2011.10
  2011.11
  2011.12
  2012.01
  2012.02
  2012.03
  2012.04
  2012.04.1
  2012.05
  2012.06
  2012.07
  2012.08
  2012.09
  2012.09.1
  2012.10
  2012.11
  2012.12
  2013.01
  2013.02
  2013.02.1
  2013.03
  2013.04
  2013.05
  2013.06
  2013.07
  2013.08
  2013.09
  2013.10
  2013.11
  2013.12
  2014.01
  2014.02
  2014.03
  2014.03.01
  2014.04
  2014.05
  2014.06
  2014.07
  2014.08
  2014.09
  2014.10
  2014.11
  2014.12
  2015.01
  2015.01.1
  2015.02
  2015.03
  2015.04
  2015.05
  2015.06
  2015.07
  2015.07.1
  2015.07.2
  2015.09
  2015.10
  2015.11
  2015.12
  2016.01
  2016.01-RC1
  2016.01.1
  2016.02
  2016.03
  2016.04
  v6.b
  v6.c

Available backends:
  jvm
  moar
  pre-glr
  moar

Cannot install "Command failed (status 512): make install"

Installing the latest version on MacOSX El Capitan following the instructions on https://perl6.org/downloads/ I get the following result when running rakudobrew build moar 2015.12

./perl6-m tools/build/install-core-dist.pl
Failed to create directory '/Users/gu/.perl6/2015.12/precomp' with mode '0o777': Failed to mkdir: 13
  in any  at ././CORE.setting.moarvm line 1
  in block <unit> at tools/build/install-core-dist.pl line 12

Actually thrown at:
  in block <unit> at tools/build/install-core-dist.pl line 12

make: *** [m-install] Error 1
Command failed (status 512): make install
Failed running perl Configure.pl --backends=moar --gen-moar --git-reference=/Users/gu/.rakudobrew/bin/../git_reference --make-install  at /Users/gu/.rakudobrew/bin/rakudobrew line 57.
    main::run('perl Configure.pl --backends=moar --gen-moar --git-reference=...') called at /Users/gu/.rakudobrew/bin/rakudobrew line 377
    main::build_impl('moar', 2015.12, '') called at /Users/gu/.rakudobrew/bin/rakudobrew line 113

If i try to sudo it with sudo rakudobrew build moar 2015.12 I get the following error instead:

./perl6-m tools/build/install-core-dist.pl
No writeable path found
  in block <unit> at tools/build/install-core-dist.pl line 12

make: *** [m-install] Error 1
Command failed (status 512): make install
Failed running perl Configure.pl --backends=moar --gen-moar --git-reference=/Users/gu/.rakudobrew/bin/../git_reference --make-install  at /Users/gu/.rakudobrew/bin/rakudobrew line 57.
    main::run('perl Configure.pl --backends=moar --gen-moar --git-reference=...') called at /Users/gu/.rakudobrew/bin/rakudobrew line 377
    main::build_impl('moar', 2015.12, '') called at /Users/gu/.rakudobrew/bin/rakudobrew line 113

"rakudobrew build panda" fails if PERL5LIB env var is set

On a completely fresh install of of rakudobrew, I get this:

$ rakudobrew build panda
<snip>
==> Bootstrapping Panda
==> Installing panda from a local directory '/Users/curtispoe/.rakudobrew/moar-nom/panda'
==> panda depends on File::Find, Shell::Command, JSON::Fast
==> Shell::Command depends on File::Find
==> Fetching File::Find
==> Building File::Find
==> Testing File::Find
Perl v6.0.0 required--this is only v5.18.4, stopped at lib/File/Find.pm line 1.
BEGIN failed--compilation aborted at lib/File/Find.pm line 1.
Compilation failed in require at /Users/curtispoe/perl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/App/Prove/State.pm line 6.
BEGIN failed--compilation aborted at /Users/curtispoe/perl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/App/Prove/State.pm line 6.
Compilation failed in require at /Users/curtispoe/perl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/App/Prove.pm line 10.
BEGIN failed--compilation aborted at /Users/curtispoe/perl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/App/Prove.pm line 10.
Compilation failed in require at /Users/curtispoe/perl5/perlbrew/perls/perl-5.18.4/bin/prove line 8.
BEGIN failed--compilation aborted at /Users/curtispoe/perl5/perlbrew/perls/perl-5.18.4/bin/prove line 8.
test stage failed for File::Find: Tests failed
  in method install at /Users/curtispoe/.rakudobrew/moar-nom/panda/lib/Panda.pm line 156
  in block  at /Users/curtispoe/.rakudobrew/moar-nom/panda/lib/Panda.pm line 228
  in method resolve at /Users/curtispoe/.rakudobrew/moar-nom/panda/lib/Panda.pm line 222
  in sub MAIN at bin/panda line 18
  in block <unit> at bin/panda line 150

However, it works just fine when I clear my PERL5LIB environment variable:

$$ PERL5LIB= rakudobrew build panda                                                                                                                                                                                                            
Already on 'master'
Your branch is up-to-date with 'origin/master'.
==> Bootstrapping Panda
==> Installing panda from a local directory '/Users/curtispoe/.rakudobrew/moar-nom/panda'
==> panda depends on File::Find, Shell::Command, JSON::Fast
==> Shell::Command depends on File::Find
==> Fetching File::Find
==> Building File::Find
==> Testing File::Find
t/01-file-find.t .. ok
<snip>
Updating shims
Done, built panda for moar-nom

Failed zef build

How to reproduce:
1.rakudobrew build moar
2.rakudobrew build zef
3.rakudobrew build moar // After some time to update.
4.After rakudo updating, rakudobrew tries to update zef too.
5.Boom!

===> Testing: zef:auth('github:ugexe')
t/00-load.t ........... ok 
t/identity.t .......... ok 
t/utils-filesystem.t .. ok 
All tests successful.
Files=3, Tests=14,  3 wallclock secs
Result: PASS
===> Testing [OK] for zef:auth('github:ugexe')
===> Installing: zef:auth('github:ugexe')
===> Install [SKIP] for zef:auth('github:ugexe'): zef:ver<*>:auth<github:ugexe>:api<> already installed
!!!> Install failures: zef:auth('github:ugexe')
Failed running /home/yohan/.rakudobrew/bin/../moar-nom/install/bin/perl6 -Ilib bin/zef -v install . at /home/yohan/.rakudobrew/bin/rakudobrew line 58.
	main::run("/home/yohan/.rakudobrew/bin/../moar-nom/install/bin/perl6 -Ili"...) called at /home/yohan/.rakudobrew/bin/rakudobrew line 548
	main::build_zef() called at /home/yohan/.rakudobrew/bin/rakudobrew line 355
	main::build_impl("zef", undef, "") called at /home/yohan/.rakudobrew/bin/rakudobrew line 116
โžœ  ~ 

It looks like the problem is with already installed instance of zef. If we update zef after moar only if zef is installed, then we need to add --force flag to over-write it.

The bug disappears like this:

===> Testing: zef:auth('github:ugexe')
t/00-load.t ........... ok 
t/identity.t .......... ok 
t/utils-filesystem.t .. ok 
All tests successful.
Files=3, Tests=14,  2 wallclock secs
Result: PASS
===> Testing [OK] for zef:auth('github:ugexe')
===> Installing: zef:auth('github:ugexe')
===> Install [OK] for zef:auth('github:ugexe')

1 bin/ script [zef] installed to:
/home/yohan/.rakudobrew/moar-nom/install/share/perl6/site/bin
Updating shims
Done, built zef for moar-nom

with --force flag.

"permission denied" error with rakudobrew build-panda

Hello,

Mac OS 10.9 here, first install. rakudobrew build moar 2015.12 works fine, but the following rakudobrew build-panda fails with an permission denied error, even when I'm using sudo:

% rakudobrew build-panda
Already on 'master'
Your branch is up-to-date with 'origin/master'.
==> Bootstrapping Panda
==> Installing panda from a local directory '/Users/mberndtgen/.rakudobrew/moar-2015.12/panda'
==> panda depends on File::Find, Shell::Command, JSON::Fast
==> Shell::Command depends on File::Find
==> Fetching File::Find
==> Building File::Find
==> Testing File::Find
permission denied
   at gen/moar/m-CORE.setting:19648  (/Users/mberndtgen/.rakudobrew/moar-2015.12/install/share/perl6/runtime/CORE.setting.moarvm:throw:215)
 from gen/moar/m-CORE.setting:31045  (/Users/mberndtgen/.rakudobrew/moar-2015.12/install/share/perl6/runtime/CORE.setting.moarvm:result:113)
...
 from gen/moar/m-main.nqp:37  (/Users/mberndtgen/.rakudobrew/moar-2015.12/install/share/perl6/runtime/perl6.moarvm:MAIN:18)
 from gen/moar/m-main.nqp:33  (/Users/mberndtgen/.rakudobrew/moar-2015.12/install/share/perl6/runtime/perl6.moarvm:<mainline>:189)
 from <unknown>:1  (/Users/mberndtgen/.rakudobrew/moar-2015.12/install/share/perl6/runtime/perl6.moarvm:<main>:8)
 from <unknown>:1  (/Users/mberndtgen/.rakudobrew/moar-2015.12/install/share/perl6/runtime/perl6.moarvm:<entry>:9)
The spawned process exited unsuccessfully (exit code: 1)
  in sub MAIN at bootstrap.pl line 65
  in block <unit> at bootstrap.pl line 7

Failed running /Users/mberndtgen/.rakudobrew/bin/../moar-2015.12/install/bin/perl6 bootstrap.pl at /Users/mberndtgen/.rakudobrew/bin/rakudobrew line 58.
    main::run("/Users/mberndtgen/.rakudobrew/bin/../moar-2015.12/install/bin"...) called at /Users/mberndtgen/.rakudobrew/bin/rakudobrew line 503
    main::build_panda(undef) called at /Users/mberndtgen/.rakudobrew/bin/rakudobrew line 121
Exit 1

Any hints?

rakudobrew nuke - documentation, usage, misc.

$ rakudobrew nuke
Switch to what?
Available builds
moar-2016.05
moar-2016.07.1
moar-debc7c20944ff43e1c5aab8c5f46a0a410cf83ea
moar-nom
Updating shims

I'm guessing that I want: rakudobrew nuke <version> here, but there's no help I can find to say what nuke does or how to use it. (the generic usage doesn't work in my case: "nuke moar" is confused)

The text "Switch to what?" is probably generic text from a version selector, but in nuke's case, it's not a switch, so the message is confusing.

switch moar fails

First I did

bin/rakudobrew build all 

which seemed to work.

Then I did

>bin/rakudobrew switch moar 
Switching to moar-HEAD
Updating shims
say() on closed filehandle $fh at bin/rakudobrew line 149.
say() on closed filehandle $fh at bin/rakudobrew line 149.
say() on closed filehandle $fh at bin/rakudobrew line 149.
say() on closed filehandle $fh at bin/rakudobrew line 149.

support git cloning over https as well

As some people require git: and some https: a command line parameter would be the best solution with maybe a config file or env var to not have to type it every time if you differ from the default.

List dependencies

Rakudobrew requires both Git and Perl to be installed before it will work. Especially on Windows these two are not present by default. The installation instructions fail if Perl is not present with an unhelpful error message ('perl' is not recognized as an internal or external command, operable program or batch file.).

The user should install Strawberry Perl / Activestate Perl and Git for Windows. Then follow the installation instructions.

IO::Socket::SSL missing

Fresh installation on Ubuntu.
GitHub is probably switching communication to https.

# Failed test 'can retrieve http://github.com/'
# at t/issue-7.t line 8
#501 Protocol scheme 'https' is only supported if IO::Socket::SSL is installed <URL:https://github.com/>

# Looks like you failed 1 test of 1
t/issue-7.t ..................... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/1 subtests 
t/parse-url.t ................... ok
t/socket-sanity.t ............... ok
t/stringify-headers.t ........... ok

Test Summary Report
-------------------
t/issue-7.t                   (Wstat: 256 Tests: 1 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
Files=14, Tests=57, 26 wallclock secs ( 0.09 usr  0.02 sys + 17.00 cusr  1.36 csys = 18.47 CPU)
Result: FAIL
test stage failed for LWP::Simple: Tests failed
  in method throw at /home/hans/.rakudobrew/moar-nom/install/share/perl6/runtime/CORE.setting.moarvm line 1
  in method install at /home/hans/.rakudobrew/moar-nom/install/share/perl6/site/sources/582CB7486602954A4601BDCE5A0EAC54B05DA58A (Panda) line 185
  in block  at /home/hans/.rakudobrew/moar-nom/install/share/perl6/site/sources/582CB7486602954A4601BDCE5A0EAC54B05DA58A (Panda) line 257
  in method resolve at /home/hans/.rakudobrew/moar-nom/install/share/perl6/site/sources/582CB7486602954A4601BDCE5A0EAC54B05DA58A (Panda) line 251
  in sub MAIN at /home/hans/.rakudobrew/moar-nom/install/share/perl6/site/resources/E0D978079BB5081DE986D058BB8AB08252F05CC8 line 20
  in block <unit> at /home/hans/.rakudobrew/moar-nom/install/share/perl6/site/resources/E0D978079BB5081DE986D058BB8AB08252F05CC8 line 165


Failure Summary
----------------
Task::Star(
    *test stage failed for LWP::Simple: Tests failed)

'rakudobrew build moar' requires all libraries to be reinstalled.

I'm new to Perl 6, but not Perl. I noticed that when upgrading Perl 6 with rakudobrew, I get a new installation, and then have to reinstall all the libraries I was using. This poses some problems for use in production:

  1. If Perl 6 is used extensively in projects, then dozens of libraries will be used, over time. Having to reinstall these libraries every time the compiler is updated, is problematic. It could take hours, or days, to do so.

  2. If a library is deprecated from the repository, then the upgrade may become untenable. I may have to find a way to manually move the old library to the new location, or alter the production code to use another method which the library was providing. This would put an unexpected delay into my schedule.

  3. If all goes well, and all the libraries are updated, some of the libraries may be updated upon reinstall, without my intention to upgrade those libraries.

I like the idea of keeping different versions of Perl 6 in different locations. Upgrading software always has the potential to cause problems, and being able to restore to an older version is a great idea, and rakudobrew allows this easily. However, the libraries should be maintained in a separate location, and allow the user to update those at his discretion. This would make a production project much more manageable.

Due to these reasons, I think Perl 6 is not yet ready for a production environment.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.