Giter VIP home page Giter VIP logo

kerl's Issues

does not build 14B04

the log says it cannot find libncurses5-dev under Ubuntu.
see detailed log below:
creating /home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/i686-pc-linux-gnu
/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/configure --disable-hipe --cache-file=/dev/null
Ignoring the --cache-file argument since it can cause the system to be erroneously configured
Disabling caching
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for ld... ld
checking for GNU make... yes (make)
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking for ranlib... ranlib
checking ERTS version... 5.8.5
checking OTP release... R14B04
configure: creating ./config.status
config.status: creating Makefile
config.status: creating make/emd2exml
configure: configuring in lib
configure: running /bin/bash '/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/configure' --prefix=/usr/local '--disable-hipe' '--cache-file=/dev/null' 'ERL_TOP=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04' --cache-file=/dev/null --srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib
configure: creating ./config.status
configure: configuring in snmp/.
configure: running /bin/bash '/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/snmp/./configure' --prefix=/usr/local '--prefix=/usr/local' '--disable-hipe' 'ERL_TOP=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04' '--cache-file=/dev/null' '--srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib' --cache-file=/dev/null --srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/snmp/.
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for perl... perl
configure: creating ./config.status
config.status: creating mibs/Makefile
configure: configuring in common_test/.
configure: running /bin/bash '/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/common_test/./configure' --prefix=/usr/local '--prefix=/usr/local' '--disable-hipe' 'ERL_TOP=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04' '--cache-file=/dev/null' '--srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib' --cache-file=/dev/null --srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/common_test/.
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
configure: creating ./config.status
config.status: creating priv/i686-pc-linux-gnu/Makefile
configure: configuring in diameter/.
configure: running /bin/bash '/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/diameter/./configure' --prefix=/usr/local '--prefix=/usr/local' '--disable-hipe' 'ERL_TOP=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04' '--cache-file=/dev/null' '--srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib' --cache-file=/dev/null --srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/diameter/.
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking how to create a directory including parents... /usr/bin/install -c -d
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/app/diameter.mk
config.status: creating make/i686-pc-linux-gnu/rules.mk
configure: configuring in erl_interface/.
configure: running /bin/bash '/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/erl_interface/./configure' --prefix=/usr/local '--prefix=/usr/local' '--disable-hipe' 'ERL_TOP=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04' '--cache-file=/dev/null' '--srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib' --cache-file=/dev/null --srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/erl_interface/.
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking how to run the C preprocessor... gcc -E
checking for ranlib... ranlib
checking for ld.sh... no
checking for ld... ld
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for short... yes
checking size of short... 2
checking for int... yes
checking size of int... 4
checking for long... yes
checking size of long... 4
checking for void *... yes
checking size of void *... 4
checking for long long... yes
checking size of long long... 8
checking for ar... ar
checking for a BSD-compatible install... /usr/bin/install -c
checking how to create a directory including parents... /usr/bin/install -c -d
checking for gethostbyname in -lnsl... yes
checking for getpeername in -lsocket... no
checking for ANSI C header files... (cached) yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for uid_t in sys/types.h... yes
checking for pid_t... yes
checking for size_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking for socklen_t usability... yes
checking for working alloca.h... yes
checking for alloca... yes
checking whether gcc needs -traditional... no
checking for working memcmp... yes
checking for dup2... yes
checking for gethostbyaddr... yes
checking for gethostbyname... yes
checking for gethostbyaddr_r... yes
checking for gethostbyname_r... yes
checking for gethostname... yes
checking for writev... yes
checking for gethrtime... no
checking for gettimeofday... yes
checking for inet_ntoa... yes
checking for memchr... yes
checking for memmove... yes
checking for memset... yes
checking for select... yes
checking for socket... yes
checking for strchr... yes
checking for strerror... yes
checking for strrchr... yes
checking for strstr... yes
checking for uname... yes
checking for res_gethostbyname... no
checking for res_gethostbyname in -lresolv... yes
checking for clock_gettime... no
checking for clock_gettime in -lrt... yes
checking for mixed cygwin and native VC++ environment... no
checking for mixed cygwin and native MinGW environment... no
checking if we mix cygwin with any native compiler... no
checking for native win32 threads... no
checking for pthread_create in -lpthread... yes
checking for getconf... getconf
checking for Native POSIX Thread Library... yes
checking nptl/pthread.h usability... no
checking nptl/pthread.h presence... no
checking for nptl/pthread.h... no
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking pthread/mit/pthread.h usability... no
checking pthread/mit/pthread.h presence... no
checking for pthread/mit/pthread.h... no
configure: creating ./config.status
config.status: creating src/i686-pc-linux-gnu/Makefile
config.status: creating src/i686-pc-linux-gnu/eidefs.mk
config.status: creating src/i686-pc-linux-gnu/config.h
configure: configuring in gs/.
configure: running /bin/bash '/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/gs/./configure' --prefix=/usr/local '--prefix=/usr/local' '--disable-hipe' 'ERL_TOP=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04' '--cache-file=/dev/null' '--srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib' --cache-file=/dev/null --srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/gs/.
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for prebuilt tcl/tk in tcl/binaries/i686_linux-gnu.tar.gz... not found
configure: creating ./config.status
config.status: creating tcl/i686-pc-linux-gnu/Makefile
config.status: creating tcl/win32/Makefile
configure: configuring in megaco/.
configure: running /bin/bash '/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/megaco/./configure' --prefix=/usr/local '--prefix=/usr/local' '--disable-hipe' 'ERL_TOP=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04' '--cache-file=/dev/null' '--srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib' --cache-file=/dev/null --srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/megaco/.
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for flex... no
checking for lex... no
checking for yywrap in -lfl... no
checking for yywrap in -ll... no
checking for usable Dynamic Erlang Driver configuration... yes
checking for perl... perl
configure: creating ./config.status
config.status: creating src/flex/i686-pc-linux-gnu/Makefile
configure: configuring in odbc/.
configure: running /bin/bash '/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/odbc/./configure' --prefix=/usr/local '--prefix=/usr/local' '--disable-hipe' 'ERL_TOP=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04' '--cache-file=/dev/null' '--srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib' --cache-file=/dev/null --srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/odbc/.
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for mixed cygwin and native VC++ environment... no
checking whether make sets $(MAKE)... yes
checking for ld.sh... no
checking for ld... ld
checking for connect... yes
checking for gethostbyname... yes
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking winsock2.h usability... no
checking winsock2.h presence... no
checking for winsock2.h... no
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking for struct sockaddr_in6.sin6_addr... yes
checking for memset... yes
checking for socket... yes
checking for native win32 threads... no
checking for pthread_create in -lpthread... yes
checking for getconf... getconf
checking for Native POSIX Thread Library... yes
checking nptl/pthread.h usability... no
checking nptl/pthread.h presence... no
checking for nptl/pthread.h... no
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking pthread/mit/pthread.h usability... no
checking pthread/mit/pthread.h presence... no
checking for pthread/mit/pthread.h... no
checking for void *... yes
checking size of void *... 4
checking for odbc in standard locations... no
configure: WARNING: No odbc library found skipping odbc
configure: WARNING: "ODBC library - link check failed"
configure: creating ./config.status
config.status: creating c_src/i686-pc-linux-gnu/Makefile
configure: configuring in wx/.
configure: running /bin/bash '/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/wx/./configure' --prefix=/usr/local '--prefix=/usr/local' '--disable-hipe' 'ERL_TOP=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04' '--cache-file=/dev/null' '--srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib' --cache-file=/dev/null --srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/lib/wx/.
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
configure: Building for linux-gnu
checking for mixed cygwin and native VC++ environment... no
checking for mixed cygwin and native MinGW environment... no
checking if we mix cygwin with any native compiler... no
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for void *... yes
checking size of void *... 4
checking GL/gl.h usability... no
checking GL/gl.h presence... no
checking for GL/gl.h... no
checking OpenGL/gl.h usability... no
checking OpenGL/gl.h presence... no
checking for OpenGL/gl.h... no
configure: Checking for OpenGL headers in /usr/X11R6
checking GL/gl.h usability... no
checking GL/gl.h presence... no
checking for GL/gl.h... no
configure: Checking for OpenGL headers in /usr/local
checking GL/gl.h usability... no
checking GL/gl.h presence... no
checking for GL/gl.h... no
configure: WARNING: No OpenGL headers found, wx will NOT be usable
checking for debug build of wxWidgets... checking for wx-config... no
checking for standard build of wxWidgets... checking for wx-config... (cached) no
configure: WARNING:
wxWidgets must be installed on your system.

    Please check that wx-config is in path, the directory
    where wxWidgets libraries are installed (returned by
    'wx-config --libs' or 'wx-config --static --libs' command)
    is in LD_LIBRARY_PATH or equivalent variable and
    wxWidgets version is 2.8.4 or above.

configure: creating i686-pc-linux-gnu/config.status
config.status: creating config.mk
config.status: creating c_src/Makefile
configure: configuring in erts
configure: running /bin/bash '/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/erts/configure' --prefix=/usr/local '--disable-hipe' '--cache-file=/dev/null' 'ERL_TOP=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04' --cache-file=/dev/null --srcdir=/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/erts
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for library containing strerror... none required
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ANSI C... (cached) none needed
checking for mixed cygwin and native VC++ environment... no
checking for mixed cygwin and native MinGW environment... no
checking if we mix cygwin with any native compiler... no
checking for getconf... getconf
checking for large file support CFLAGS... -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
checking for large file support LDFLAGS... none
checking for large file support LIBS... none
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for void *... yes
checking size of void *... 4
checking whether compilation mode forces ARCH adjustment... no
checking if VM has to be linked with Carbon framework... no
checking if we are building a halfword emulator (32bit heap on 64bit machine)... no
checking how to run the C preprocessor... gcc -E
checking for ranlib... ranlib
checking for bison... no
checking for byacc... no
checking for perl5... no
checking for perl... /usr/bin/perl
checking whether ln -s works... yes
checking for ar... ar
checking for rm... /bin/rm
checking for mkdir... /bin/mkdir
checking for xsltproc... xsltproc
checking for fop... no
configure: WARNING: No 'fop' command found: going to generate placeholder PDF files
checking for a BSD-compatible install... /usr/bin/install -c
checking how to create a directory including parents... /usr/bin/install -c -d
checking for extra flags needed to export symbols... -Wl,-export-dynamic
checking for sin in -lm... yes
checking for dlopen in -ldl... yes
checking for main in -linet... no
checking for openpty in -lutil... yes
checking for native win32 threads... no
checking for pthread_create in -lpthread... yes
checking for getconf... (cached) getconf
checking for Native POSIX Thread Library... yes
checking nptl/pthread.h usability... no
checking nptl/pthread.h presence... no
checking for nptl/pthread.h... no
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking pthread/mit/pthread.h usability... no
checking pthread/mit/pthread.h presence... no
checking for pthread/mit/pthread.h... no
checking for kstat_open in -lkstat... no
checking if SIGUSR1 and SIGUSR2 can be used... yes
checking if sigaltstack can be used... yes
checking for pthread.h... (cached) yes
checking for pthread/mit/pthread.h... (cached) no
checking sched.h usability... yes
checking sched.h presence... yes
checking for sched.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for pthread_spin_lock... yes
checking for sched_yield... yes
checking whether sched_yield() returns an int... yes
checking for pthread_yield... yes
checking whether pthread_yield() returns an int... yes
checking for pthread_rwlock_init... yes
checking for pthread_rwlockattr_setkind_np... yes
checking for PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP... yes
checking for pthread_attr_setguardsize... yes
checking for Linux futexes... yes
checking for GCC atomic operations... yes
checking for a usable libatomic_ops implementation... no
checking whether default stack size should be modified... no
checking for void *... (cached) yes
checking size of void *... (cached) 4
checking for int... yes
checking size of int... 4
checking for long... yes
checking size of long... 4
checking for long long... yes
checking size of long long... 8
checking for __int64... no
checking size of __int64... 0
checking whether byte ordering is bigendian... no
checking whether pre pentium 4 compatibility should forced... no
checking whether an emulator with smp support should be built... yes
checking for posix_fadvise... yes
checking whether the emulator should use threads... yes; thread support required and therefore forced
checking whether lock checking should be enabled... no
checking whether lock counters should be enabled... no
checking whether dlopen() needs to be called before first call to dlerror()... no
checking whether the child waiter thread should be enabled... yes on SMP build, but not on non-SMP build
checking for kstat_open in -lkstat... (cached) no
checking for tgetent in -lncurses... no
checking for tgetent in -lcurses... no
checking for tgetent in -ltermcap... no
checking for tgetent in -ltermlib... no
configure: error: No curses library functions found
configure: error: /bin/bash '/home/tfoundry/.kerl/builds/r14b04/otp_src_R14B04/erts/configure' failed for erts

Version of build already exist

I am using kerl with SnapCI and when I run CI I get this error:

  $ ./kerl build 17.4 17.4
  There's already a build named 17.4

Must I do some clean up before install a new build ? If so, how is that done ?

Can't delete builds

I'm using kerl installed from homebrew on OSX, brew takes it from master.

%kerl list builds
R16B03-1,r16b03-1
%kerl delete build r16b03-1
No build named r16b03-1
%kerl delete build  R16B03-1
No build named  R16B03-1

On my other machine, I've resorted to deleting the ~/.kerl directory, but that's kinda clunky.
Same old story, I built Erlang for 32 bit OS, need to delete.

kerl hides the output of configure

The end results of configure tells you if any applications in otp will be skipped due to missing dependencies. It would be nice if kerl could capture and present this information during building.

*********************************************************************
**********************  APPLICATIONS DISABLED  **********************
*********************************************************************

jinterface     : No Java compiler found
odbc           : ODBC library - link check failed

*********************************************************************
*********************************************************************
**********************  APPLICATIONS INFORMATION  *******************
*********************************************************************

wx             : wxWidgets not found, wx will NOT be usable

*********************************************************************
*********************************************************************
**********************  DOCUMENTATION INFORMATION  ******************
*********************************************************************

documentation  : 
                 xsltproc is missing.
                 fop is missing.
                 xmllint is missing.
                 The documentation can not be built.

*********************************************************************

Cannot build R16B02 on Mac OS X 10.8.5

Hi,

I have problems building R16B02 on Mac OS X 10.8.5.

Looking at the log I see pretty early on

...
can't open x86_64-apple-darwin12.5.0/opt/plain/erl_compile_flags.h for writing at utils/make_compiler_flags line 65.
...

And I have similar errors further down.

BUT, I have no problem installing R14B04 or R15B03, therefore I suspect there is something wrong with how kerl tries to build R16B02. It seems some path is bad, but I'm new to Kerl so I dont know where to look and change.

How come R14B04 works but not R16B02?

status, prompt, active - these commands don't work with old installations

After updating my clone of kerl I noticed that kerl status, prompt and active commands no longer work but only with old installations.

This is the cause: 9cf83c9#diff-75743bad0452412b658dabebd6b439f4R653
so now what one should do to make it work with old installations (those installations that are made before the commit I mentioned above) is appending the following to the activate file of each installation

_KERL_ACTIVE_DIR="/path/to/otp-installation"
export _KERL_ACTIVE_DIR

kerl silently produces a build without crypto if libssl headers are missing

Porting issue from evax/kerl#13

If libssl headers are missing in the system, the resulting Erlang build will not include crypto module. Such Erlang build is pretty much useless. For instance, rebar won't be working without crypto.

It would be great if kerl were asking a user whether he wants to continue a build without crypto. A simpler but a still better way of handling this situation would be exiting with an error.

-- originally reported by @alavrik

License

Hi,

Please can you include some kind of license for this project?

Aaron

Add git usage information

It took me some time to find that one has to enter kerl build git .. to start a build from git. Maybe the usage information for git should also be output when entering kerl build. Example:

usage:
    kerl build <release> <build_name>
    kerl git <git_url> <git_version> <build_name>

No curses library functions found

From a fresh install of Ubuntu 11.10 kerl failed to build R14B04. The build log shows:
configure: error: No curses library functions found
configure: error: /bin/bash '/home/bryanhunter/.kerl/builds/r14b04/otp_src_R14B04/erts/configure' failed for erts

I did a "sudo apt-get update" and tried to build with kerl again and it failed in the same way.

I then did a "sudo apt-get -y install libncurses5-dev". I tried again after that, and everything builds successfully.

Let me know if you need more info (I have a VM snapshot where I can reproduce the problem). Next week I can poke around in kerl. If I'm not too out of my depth and I manage to fix it, I'll send you a pull request.

kerl builds the wrong thing if you have ERL_TOP set

I was attempting to use kerl build git ... to build and install Erlang; the build appeared to succeed but kerl install ... failed with Couldn't install Erlang/OTP git (ei-73fc7ca) in /home/roger/erlang/ei-73fc7ca.

It turns out that it's because I had ERL_TOP set (from earlier messing around with building Erlang from source), and that kerl was actually building that copy of Erlang. So when it went to install from ~/.kerl/builds/ei-73fc7ca, it wasn't actually built.

Either kerl should warn if ERL_TOP is already set, or it should be sure to set it correctly in kerl build git....

Setting CFLAGS in KERL_CONFIGURE_OPTIONS

I want to set a CFLAGS (env) parameter in KERL_CONFIGURE_OPTIONS inside .kerlrc with the value as: CFLAGS="-g -C0 -fstack-protector" (Note that CFLAGS value includes whitespaces); could this be possible?

I guess this is rather a shell scripting issue (of source .kerlrc), but I'd be glad if I can obtain a hint. Thanks in advance.

/usr/bin/env escript error

Using kerl, scripts that should be executable with escript fail with

/usr/bin/env: escript: No such file or directory

Build failure for R13B03 on OS X 10.7

Installed kerl from trunk as of a few minutes ago.

Ran a basic build of R13B03 and got a weird error/success response. Went to install this build and ended up getting a flat out error.

$ kerl build R13B03 R13B03-default
Adjust compiler settings for OS X: using gcc-4.2
Downloading otp_src_R13B03.tar.gz to /Users/davisp/.kerl/archives
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 54.8M  100 54.8M    0     0   183k      0  0:05:05  0:05:05 --:--:--  138k
Getting the checksum file from erlang.org...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15390  100 15390    0     0  20544      0 --:--:-- --:--:-- --:--:-- 25778
Verifying archive checksum...
Checksum verified (411fcb29f0819973f71e28f6b56d9948)
Extracting source code
Building Erlang/OTP R13B03 (R13B03-default), please wait...
/usr/local/bin/kerl: line 326: cd: /Users/davisp/.kerl/builds/R13B03-default/release_R13B03: No such file or directory
Erlang/OTP R13B03 (R13B03-default) has been successfully built

$ kerl install R13B03-default ~/otp/R13B03-default
Adjust compiler settings for OS X: using gcc-4.2
Installing Erlang/OTP R13B03 (R13B03-default) in /Users/davisp/otp/R13B03-default...
Couldn't install Erlang/OTP R13B03 (R13B03-default) in /Users/davisp/otp/R13B03-default

Simplify installation process

Hi,

I had a thought: the most common use case for kerl is to install various versions of Erlang, why not make that really simple to do by removing some of the 'extra' steps? For example:

kerl build-install git https://github.com/erlang/otp.git OTP-17.1.2 17.1.2

Builds and installs in .kerl/installations/17.1.2/

when you have no network and try and install things it's still saves them

I was on a train with no network. I re-installed a previous build to see if I could install the documentation:

kerl install r16b02

it failed (obviously) with curl failures.

But when that happened it didn't clean up the output, I had 2 files in my .kerl/archives that were artifacts of the attempt.

You could use curl -f and detect failures and clean up files.

shellcheck issues

In /usr/local/bin/kerl line 49:
if [ -n "KERL_INSTALL_MANPAGES" ]; then
         ^-- SC2157: Argument to -n is always true due to literal strings.


In /usr/local/bin/kerl line 62:
if [ -f "$KERL_CONFIG" ]; then . "$KERL_CONFIG"; fi
                               ^-- SC1090: Can't follow non-constant source. Use a directive to specify location.


In /usr/local/bin/kerl line 92:
KERL_SYSTEM=`uname -s`
            ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 110:
    echo "\n  <command>       Command to be executed\n"
          ^-- SC2028: echo won't expand escape sequences. Consider printf.


In /usr/local/bin/kerl line 172:
    for rel in `cat $KERL_BASE_DIR/otp_releases`; do
               ^-- SC2013: To read lines rather than words, pipe/redirect to a 'while read' loop.
               ^-- SC2006: Use $(..) instead of legacy `..`.
                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 182:
    if ! is_valid_release $1; then
                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 192:
        for l in `cat "$KERL_BASE_DIR/otp_builds"`; do
                 ^-- SC2013: To read lines rather than words, pipe/redirect to a 'while read' loop.
                 ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 193:
            rel=`echo $l | cut -d "," -f 1`
                ^-- SC2006: Use $(..) instead of legacy `..`.
                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 194:
            name=`echo $l | cut -d "," -f 2`
                 ^-- SC2006: Use $(..) instead of legacy `..`.
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 207:
    for rel in `cat $KERL_BASE_DIR/otp_releases | tail -1`; do
               ^-- SC2006: Use $(..) instead of legacy `..`.
                    ^-- SC2086: Double quote to prevent globbing and word splitting.
                    ^-- SC2002: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead.


In /usr/local/bin/kerl line 226:
    if ! is_valid_installation $1; then
                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 236:
        for l in `cat "$KERL_BASE_DIR/otp_builds"`; do
                 ^-- SC2013: To read lines rather than words, pipe/redirect to a 'while read' loop.
                 ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 237:
            name=`echo $l | cut -d "," -f 2`
                 ^-- SC2006: Use $(..) instead of legacy `..`.
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 248:
    assert_build_name_unused $3
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 250:
    GIT=`echo -n "$1" | $MD5SUM | cut -d " " -f $MD5SUM_FIELD`
        ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 252:
    cd "$KERL_GIT_DIR"
    ^-- SC2164: Use cd ... || exit in case cd fails.


In /usr/local/bin/kerl line 261:
    cd "$GIT"
    ^-- SC2164: Use cd ... || exit in case cd fails.


In /usr/local/bin/kerl line 268:
    rm -Rf "$KERL_BUILD_DIR/$3"
           ^-- SC2115: Use "${var:?}" to ensure this never expands to / .


In /usr/local/bin/kerl line 270:
    cd "$KERL_BUILD_DIR/$3"
    ^-- SC2164: Use cd ... || exit in case cd fails.


In /usr/local/bin/kerl line 276:
    cd otp_src_git
    ^-- SC2164: Use cd ... || exit in case cd fails.


In /usr/local/bin/kerl line 277:
    git checkout $2 > /dev/null 2>&1
                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 279:
        git checkout -b $2 $2 > /dev/null 2>&1
                        ^-- SC2086: Double quote to prevent globbing and word splitting.
                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 283:
        rm -Rf "$KERL_BUILD_DIR/$3"
               ^-- SC2115: Use "${var:?}" to ensure this never expands to / .


In /usr/local/bin/kerl line 288:
        rm -Rf "$KERL_BUILD_DIR/$3"
               ^-- SC2115: Use "${var:?}" to ensure this never expands to / .


In /usr/local/bin/kerl line 293:
    ./otp_build autoconf $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1 && \
                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 294:
        ./otp_build configure $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1
                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 302:
            rm ./lib/$i/SKIP
                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 311:
            touch -f ./lib/$i/SKIP
                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 318:
    ./otp_build boot -a $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 325:
    cd "$KERL_BUILD_DIR/$3/release_git"
    ^-- SC2164: Use cd ... || exit in case cd fails.


In /usr/local/bin/kerl line 335:
            if [ `gcc --version | grep llvm | wc -l` = "1" ]; then
                 ^-- SC2046: Quote this to prevent word splitting.
                 ^-- SC2006: Use $(..) instead of legacy `..`.
                                  ^-- SC2126: Consider using grep -c instead of grep|wc.


In /usr/local/bin/kerl line 336:
                if lion_support $1; then
                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 339:
                    if [ -x "`which gcc-4.2`" ]; then
                             ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 351:
    assert_valid_release $1
                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 352:
    assert_build_name_unused $2
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 362:
        (cd "$UNTARDIRNAME" && tar xfz "$KERL_DOWNLOAD_DIR/$FILENAME" && mv * "$KERL_BUILD_DIR/$2/otp_src_$1")
                                                                            ^-- SC2035: Use ./*glob* or -- *glob* so names with dashes won't become options.


In /usr/local/bin/kerl line 367:
    cd "$ERL_TOP"
    ^-- SC2164: Use cd ... || exit in case cd fails.


In /usr/local/bin/kerl line 370:
        ./otp_build autoconf $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1 && \
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 371:
            ./otp_build configure $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1
                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 373:
        ./otp_build configure $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1
                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 384:
            rm ./lib/$i/SKIP
                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 394:
            touch -f ./lib/$i/SKIP
                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 401:
    ./otp_build boot -a $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 409:
    cd "$KERL_BUILD_DIR/$2/release_$1"
    ^-- SC2164: Use cd ... || exit in case cd fails.


In /usr/local/bin/kerl line 417:
    rel=`get_release_from_name $1`
        ^-- SC2006: Use $(..) instead of legacy `..`.
                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 427:
    absdir=`cd "$2" && pwd`
           ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 430:
    cd "$ERL_TOP"
    ^-- SC2164: Use cd ... || exit in case cd fails.


In /usr/local/bin/kerl line 515:
        rel=`get_newest_valid_release`
            ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 554:
    rel=`get_name_from_install_path "$2"`
        ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 562:
    ssh $KERL_DEPLOY_SSH_OPTIONS $host true > /dev/null 2>&1
        ^-- SC2086: Double quote to prevent globbing and word splitting.
                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 570:
    rsync -aqz -e "ssh $KERL_DEPLOY_SSH_OPTIONS" $KERL_DEPLOY_RSYNC_OPTIONS "$path/" "$host:$remotepath/"
                                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 576:
    ssh $KERL_DEPLOY_SSH_OPTIONS $host "cd \"$remotepath\" && env ERL_TOP=\`pwd\` ./Install $INSTALL_OPT \`pwd\` > /dev/null 2>&1"
        ^-- SC2086: Double quote to prevent globbing and word splitting.
                                 ^-- SC2086: Double quote to prevent globbing and word splitting.
                                             ^-- SC2029: Note that, unescaped, this expands on the client side.


In /usr/local/bin/kerl line 582:
    ssh $KERL_DEPLOY_SSH_OPTIONS $host "cd \"$remotepath\" && sed -i -e \"s#$path#\`pwd\`#g\" activate"
        ^-- SC2086: Double quote to prevent globbing and word splitting.
                                 ^-- SC2086: Double quote to prevent globbing and word splitting.
                                             ^-- SC2029: Note that, unescaped, this expands on the client side.


In /usr/local/bin/kerl line 596:
    if [ -f $KERL_BASE_DIR/otp_$1 ]; then
            ^-- SC2086: Double quote to prevent globbing and word splitting.
                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 597:
        if [ "`cat "$KERL_BASE_DIR/otp_$1" | wc -l`" != "0" ]; then
              ^-- SC2006: Use $(..) instead of legacy `..`.
                   ^-- SC2002: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead.


In /usr/local/bin/kerl line 601:
                echo `cat "$KERL_BASE_DIR/otp_$1"`
                     ^-- SC2046: Quote this to prevent word splitting.
                     ^-- SC2005: Useless echo? Instead of 'echo $(cmd)', just use 'cmd'.
                     ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 612:
        for l in `cat "$KERL_BASE_DIR/otp_$1"`; do
                 ^-- SC2013: To read lines rather than words, pipe/redirect to a 'while read' loop.
                 ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 633:
        grep $2 "$KERL_BASE_DIR/otp_$1" > /dev/null 2>&1 && return 0
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 661:
        echo $_KERL_ACTIVE_DIR
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 676:
    ACTIVE_PATH=`get_active_path`
                ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 679:
        echo $ACTIVE_PATH
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 697:
    SUM=`$MD5SUM "$KERL_DOWNLOAD_DIR/$1" | cut -d " " -f $MD5SUM_FIELD`
        ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 698:
    ORIG_SUM=`grep -F "$1" "$KERL_DOWNLOAD_DIR/MD5" | cut -d " " -f 2`
             ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 713:
            do_git_build $3 $4 $5
                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                            ^-- SC2086: Double quote to prevent globbing and word splitting.
                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 719:
            do_build $2 $3
                     ^-- SC2086: Double quote to prevent globbing and word splitting.
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 728:
            do_install $2 "$3"
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 731:
              do_install $2 .
                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 733:
              do_install $2 "$KERL_DEFAULT_INSTALL_DIR/$2"
                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 743:
            do_deploy $2 "$3" "$4"
                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 746:
                do_deploy $2 "$3"
                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 748:
                do_deploy $2 .
                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 778:
                list_print $2 space
                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 782:
                list_print $2
                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 785:
                list_print $2
                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 801:
                rel=`get_release_from_name $3`
                    ^-- SC2006: Use $(..) instead of legacy `..`.
                                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 803:
                    rm -Rf "$KERL_BUILD_DIR/$3"
                           ^-- SC2115: Use "${var:?}" to ensure this never expands to / .


In /usr/local/bin/kerl line 804:
                    list_remove $2s "$rel,$3"
                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 814:
                escaped=`echo "$3" | sed $SED_OPT -e 's#/$##' -e 's#\/#\\\/#g'`
                        ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 815:
                list_remove $2s "$escaped"
                            ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 845:
        ACTIVE_PATH=`get_active_path`
                    ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 847:
            ACTIVE_NAME=`get_name_from_install_path "$ACTIVE_PATH"`
                        ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 849:
                VALUE="`basename "$ACTIVE_PATH"`*"
                       ^-- SC2006: Use $(..) instead of legacy `..`.


In /usr/local/bin/kerl line 853:
            printf "$FMT" "$VALUE"
                   ^-- SC2059: Don't use variables in the printf format string. Use printf "..%s.." "$foo".


In /usr/local/bin/kerl line 865:
                rm -rf $KERL_BUILD_DIR/*
                       ^-- SC2115: Use "${var:?}" to ensure this never expands to /* .
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 866:
                rm -rf $KERL_DOWNLOAD_DIR/*
                       ^-- SC2115: Use "${var:?}" to ensure this never expands to /* .
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 867:
                rm -rf $KERL_GIT_DIR/*
                       ^-- SC2115: Use "${var:?}" to ensure this never expands to /* .
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In /usr/local/bin/kerl line 872:
                rm -rf $KERL_BUILD_DIR/$3
                       ^-- SC2115: Use "${var:?}" to ensure this never expands to / .
                       ^-- SC2086: Double quote to prevent globbing and word splitting.
                                       ^-- SC2086: Double quote to prevent globbing and word splitting.

That's 119 warnings / errors.

Install or document how to install manpages

Automatic installation of manpages could be supported for tarball installations, using the other downloads provided by erlang.org. At least, a reference to them should be made in the README file.

Install manpages for R14B03:
curl http://www.erlang.org/download/otp_doc_man_R14B03.tar.gz | tar xzf - -C path/to_R14B03

dot in install directory causes error

I installed my Erlang installation in ~/.erlang/r16b01 which causes an error when using this installation

e:path_eval([".","/Users/phil"],".erlang"): illegal operation on a directory

after moving the installtions to ~/erlang/r16b01 everything works fine. Seems like there is problem setting up the path if it contains a dot.

erl_interface not for the architecture being linked

Howdy!
I am trying to use kerl to manage my erlang releases.

I did a clean install of R15B03, and R16B02.
When trying to compile c ports (for example syslog) I get the following error:

rebar compile
==> syslog (compile)
Compiling c_src/syslog_drv.c
ld: warning: ld: warning: ignoring file /Users/seb/bin/erlang/r15b03/lib/erl_interface-3.7.9/lib/libei.a, file was built for archive which is not the architecture being linked (i386): /Users/seb/bin/erlang/r15b03/lib/erl_interface-3.7.9/lib/libei.aignoring file /Users/seb/bin/erlang/r15b03/lib/erl_interface-3.7.9/lib/liberl_interface.a, file was built for archive which is not the architecture being linked (i386): /Users/seb/bin/erlang/r15b03/lib/erl_interface-3.7.9/lib/liberl_interface.a

For good measure I made sure rebar was compiled with the kerl managed versions of erlang (just to be safe).

Is kerl doing something clever with respect to erl_interface?

I am on new Macbook Air, running MacOSX 10.8.5.

Everything works fine when on an ubuntu laptop...

Any tips and suggestions what I could try? I looked through the kerl command, and I cannot really discover what it is that might be going wrong. Maybe someone with more intimate knowledge of the kerl internals knows something I have been missing that could help me on the way?

Thanks!

Add 'kerl deploy' command support

I added an experimental new 'clone' command to your handy kerl tool. This command copies a kerl managed installation directory to a specified remote host and directory. This command relies on ssh, rsync, and having password-less ssh access to the specified remote host.

The purpose of this command is to allow one to easily copy a kerl installation to a cluster of nodes.

I'd appreciate your review and comments. I understand this 'clone' command might not be appropriate for inclusion to the official kerl tool.

Please see the commit below.

https://github.com/norton/kerl/commit/fc24a6d1fbc40678d9f8f2cfc67017520b3b9fa3

make: execvp: erlc: Permission denied

CentOS 6.2

I get the below error when trying to run a bamboo build. Verified that activate command runs before running "make rel".

02-Nov-2014 09:26:31 The current active installation is:
02-Nov-2014 09:26:31 /opt/erlang/17.1

02-Nov-2014 09:26:32 erlc -o apps/ejabberd/priv/mibs apps/ejabberd/mibs/EJABBERD-MIB.mib
02-Nov-2014 09:26:32 make: execvp: erlc: Permission denied
02-Nov-2014 09:26:32 make: *** [apps/ejabberd/priv/mibs/EJABBERD-MIB.bin] Error 127

Tried to run the command after logging into the box and the same error when I don't run source /opt/erlang/17.1/activate command. When I run the command and run make rel, I don't see the above error.

This happens only in the context of the build agent which has full access (also owner) to /opt/erlang/17.1 directory. Not sure what I'm missing.

Anyone has a workaround or have seen this issue before?

Trying out kerl on drone.io fails

Trying out kerl on drone.io fails with this no so helpful error

$ curl -O https://raw.githubusercontent.com/spawngrid/kerl/master/kerl
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 25589  100 25589    0     0   357k      0 --:--:-- --:--:-- --:--:-- 1249k
$ chmod a+x kerl
$ ./kerl build 17.4 17.4
17.4 is not a valid Erlang/OTP release

Any idea what is wrong ? Trying it on my local box works.

kerl prompt displays two versions

I've got 17.3 and 17.3.4 installed using kerl. I'm using 17.3, and kerl prompt returns

 (17.3
17.3.4)

I was expecting it to return only (17.3)

Install via binary packages

Right now, kerl compiles each Erlang runtime from source when kerl build and kerl install are called. This is a rather time-consuming process, and this makes harder and harder to support multiple versions of Erlang on Travis CI.

Tremendous amount of time will be saved if kerl can install from binary packages offered by Erlang Solutions. (Ubuntu packages are of most interest to Travis CI.) Some binary packages are not conducive to side-by-side installations, but some hacks may be possible.

Can't build R18.1 with SSL - OS-X El Capitan

I've previously built the following OTP with SSL support (required by rebar )

r15b01
r15b02
r15b03
r16b03
r17.0

But for some reason when I try to build R18.1 - AFAIK using the same ~/.kerlrc and build method - it now fails to build with SSL support.

[/basho/meck%]. /erls/r18.1/activate
[/basho/meck%]erl -eval "crypto:start(), halt()." -noshel
Erlang/OTP 18 [erts-7.1] [source] [64-bit] [smp:8:8] [async-threads:10] [kernel-poll:false]

Eshell V7.1  (abort with ^G)
1> {"init terminating in do_boot",{undef,[{crypto,start,[],[]},{erl_eval,do_apply,6,[{file,"erl_eval.erl"},
{line,669}]},{erl_eval,exprs,5,[{file,"erl_eval.erl"},{line,122}]},{init,start_it,1,[]},{init,start_em,1,[]
}]}}

Crash dump is being written to: erl_crash.dump...done
init terminating in do_boot ()

I've got the following ~/.kerlrc and I even tried source ~/.kerlrc before running the usual build and install commands:

kerl build 18.1 R18.1  
kerl install R18.1 /erls/r18.1
export KERL_CONFIGURE_OPTIONS="--disable-hipe --enable-smp-support --enable-threads --enable-kernel-poll --
enable-darwin-64bit"
export CFLAGS="-DOPENSSL_NO_EC=1"

I've deleted the ~/.kerl directory and repeated the steps but it just doesn't seem to be including 'crypto'.

Can anyone suggest something else I could try, desperate to get R18 built and activated.

kerl should not install in non empty directories

Currently kerl does a mkdir -p and checks if the target dir is a directory.

It should also check if the directory is empty and refuse to install in nonempty directories.

This avoids messing up and even overwriting directories that e.g. have been accidentially specified.

Since "delete installation" just does a rm -Rf after checking for activate this can get disastrous. E.g. installing by accident in ones home dir, noticing the error and deleting it again => home dir erased

`kerl status` does not work

Even if a kerl installation is activated, the output of kerl status does not reflect it and says no kerl is activated. Note that _KERL_SAVED_MANPATH and _KERL_SAVED_PATH do not exist.

Environment: OS X 10.9.1, zsh 5.0.5.

get_newest_valid_release() needs changes for Erlang/OTP 17.0

The function get_newest_valid_release() does not work properly with the new versioning scheme. The newest version is not at the end of the file and the introduction of release candidates complicates the sort order.

The following (not soo pretty) implementation works as expected. Any other suggestions? ideas?

get_newest_valid_release()
{
    check_releases
    reltail=`cat $KERL_BASE_DIR/otp_releases | sed -e "s/^R\(.*\)/\1/" | sort | tail -1`
    relbase=`echo $reltail | sed -e "s/^\(.*\)-rc.*/\1/"`
    for rel in `cat $KERL_BASE_DIR/otp_releases | grep -x $relbase | tail -1`; do
        if [ ! -z "$rel" ]; then
            echo "$rel"
            return 0
        fi
    done
    for rel in $reltail; do
        if [ ! -z "$rel" ]; then
            echo "$rel"
            return 0
        fi
    done
    return 1
}

activete kerl paramete on FreeBSD 10.1

I try to use ( . -> dot command) on ubuntu 12.04 ,it's work fine ,but on target platform on my project is
FreeBSD 10.1 Dot commad(.) didn't work, Pls help me for provide solution on active parameter on kerl on activate it:
$ . /path/to/install/dir/activate - ubuntu

R1404 fails to build on Mac OS X 10.8.4

OS: Mac OS X 10.8.4

$ uname -a
Darwin cahwsx01.local 12.4.0 Darwin Kernel Version 12.4.0:\
 Wed May  1 17:57:12 PDT 2013; \
 root:xnu-2050.24.15~1/RELEASE_X86_64 x86_64

I tried both of the following, each of which ended in build failure:

$ kerl build R14B04 erlang-r14b04 --disable-hipe
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr \
  --with-gxx-include-dir=/usr/include/c++/4.2.1
Verifying archive checksum...
Checksum verified (4b469729f103f52702bfb1fb24529dc0)
Building Erlang/OTP R14B04 (erlang-r14b04), please wait...
Build failed, see \
  /Users/oubiwann/.kerl/builds/erlang-r14b04/otp_build_R14B04.log

and

$ KERL_CONFIGURE_OPTIONS="--disable-hipe" kerl build R14B04 erlang-r14b04
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr \
  --with-gxx-include-dir=/usr/include/c++/4.2.1
Verifying archive checksum...
Checksum verified (4b469729f103f52702bfb1fb24529dc0)
Building Erlang/OTP R14B04 (erlang-r14b04), please wait...
Build failed, see \
  /Users/oubiwann/.kerl/builds/erlang-r14b04/otp_build_R14B04.log

The final error in the log file is this one:

Undefined symbols for architecture i386:
  "_bp_sched2ix", referenced from:
      _load_nif_2 in erl_nif.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

(everything prior to that seems to be warnings).

Note that kerl did actually successfully build R13b04...

A note about Fedora 16

Having recently installed Erlang via kerl on a Fedora machine I've noticed the following, which might be of help for someone.

By default, the sudoers configuration for Fedora doesn't keep the value of the $HOME variable, which is used by kerl script.

This means that if you run the kerl build command from normal user, sudoing just to run the kerl install command, this will fail, kerl not being able to find any build:

$ ./kerl build R15B01 r15b01
Getting the available releases from erlang.org...
[...]
Agner has been successfully built
$ sudo ./kerl install r15b01 /opt/erlang/r15b01
No build named r15b01
$ ./kerl build R15B01 r15b01
There's already a build named r15b01
./kerl list builds
R15B01,r15b01

I understand this is not a bug in kerl, but it would be useful to provide a more verbose output to the user, for example showing where kerl is looking for builds.

Relative Path Activate

It appears activate requires the full path which is semi annoying. Would be nice if activate allowed the use of relative paths.

Example

./erlang/r15b/activate doesn't work but...

. /home/tburdick/erlang/r15b/activate does

Would like the first method to work.

can't work on mac os x

i chmod u+x /Users/yy/erlang/r15b02/activate

and excute /Users/yy/erlang/r15b02/activate

just get:

zsh: command not found: erl

please help..

also pull in rebar?

I find it a little annoying that I have to pull in rebar separately.

If I build an erlang would it not be useful to mix in rebar?

Agner missing installing r14b04

After a successful build when I install it can not find agner:

$ ./kerl build R14B04 r14b04
Verifying archive checksum...
Checksum verified (4b469729f103f52702bfb1fb24529dc0)
Building Erlang/OTP R14B04 (r14b04), please wait...
Erlang/OTP R14B04 (r14b04) has been successfully built
Fetching and building agner...
Agner has been successfully built

$ kerl install r14b04
Installing Erlang/OTP R14B04 (r14b04) in /home/tristan/.kerl/installs/r14b04...
Installing agner in /home/tristan/.kerl/installs/r14b04...
cp: cannot stat `/home/tristan/.kerl/builds/r14b04/agner_R14B04/agner': No such file or directory

I checked to see if agner existed anywhere under .kerl and it does not:

$ find /home/tristan/.kerl/builds/ -name agner

What is the role of kerl in Erlang version management?

Is kerl intended to manage Erlang versions? It makes it easy to install different versions of Erlang easy but management of versions is hard. For example suppose I have Erlang 16 and Erlang 17 installed. To use Erlang 17 I must run . ~/.kerl/builds/17.1/release_17.1/activate. Then I can use Erlang 17 in the current session. If I start another session and what to use the same version of Erlang I must run the same command again.

Is kerl meant to be used to manage Erlang versions? Or is there another piece of software used for switching between Erlang versions that I should be using?

If kerl is meant to be used for management of Erlang versions I see many ways in which it can be improved (for example, it could be updated so kerl activate 17.1 could be run instead of . ~/.kerl/builds/17.1/release_17.1/activate). I would happy to create a PR that adds this functionality to kerl.

Compiling with --enable-native-libs

Hello,

If you do the following with current kerl it fails to compile everything natively:

KERL_CONFIGURE_OPTIONS=--enable-native-libs kerl build 17.0 17.0_native
kerl install 17.0_native ~/erlang/17.0_native
. /home/essen/erlang/17.0_native/activate
% erl                                          
Erlang/OTP 17 [erts-6.0] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V6.0  (abort with ^G)
1> code:is_module_native(lists).
false
2> 

The reason for this is best explained in this email: http://erlang.org/pipermail/erlang-questions/2014-April/078460.html

Modifying kerl this way made it work as expected:

    if [ -n "$KERL_USE_AUTOCONF" ]; then
        ./otp_build autoconf $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1 && \
            ./otp_build configure $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1
        make clean
        ./otp_build configure $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1
    else
        ./otp_build configure $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1
        make clean
        ./otp_build configure $KERL_CONFIGURE_OPTIONS > "$LOGFILE" 2>&1
    fi

However this may or may not be something you guys want. AFAIK it's only needed for native libs so perhaps this can only be done then?

Errors when installing in a folder with "."

Hello everyone,

After installing erlang with kerl using "kerl install 18.2 ~/.erlang", the installation worked fine but everytime that I interact with erlang I get an error, because of the folder name. The error is:

file:path_eval([".","/home/dguedes"],".erlang"): illegal operation on a directory

After installing in a folder without dot (".") in its name, everything worked fine.

cheers.

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.