This build could probably use some cleanup. As it stands you need to build the lambda first because some shared libraries (libcob) are produced from the lambda build image that need to be included with the layer.
If you want to make everything simply do
make all
For other tasks, see the documentation in Makefile
.
- gnucobol compiler is a challenging abstraction on top of GCC, which is complex to build with
- dependency management in C is completely alien to me, so had to try to apply some of my linux user knowledge to get some things working
- documentation about using layers in combination with custom runtimes is sparse and often skips over pieces needed to understand how they work together. this is often times because many people do this with interpreted languages, which are markedly easier to implement
- If you don't want to incur the performance penalty of running an image on lambda, it becomes a pain to manage dependencies because the runtime has no package manager
- since we're building what is essentially a C application that needs to run on lambda, it has to be built on a binary compatible distribution with the correct version of GCC & all that, which forces me to use unfamiliar tooling
- There are no good IDEs for this--the ones that do exist are difficult to configure
- C compilers are complicated
- Building with docker can be interesting
- Issue deploying old code because of caching with COPY vs VOLUME
- GNU COBOL is surprisingly well documented, but there is a lot of implied knowledge about C/GCC
- Making a custom runtime isn't really that complicated, and neither are layers for modern languages
- Layers can be a great way to side-load common dependencies to reduce deployable size
- Layers are somewhat limited - 5 layers/lambda & <250mb in size