diff options
Diffstat (limited to '')
-rw-r--r-- | packaging/makeself/README.md | 48 | ||||
-rwxr-xr-x | packaging/makeself/build-x86_64-static.sh (renamed from makeself/build-x86_64-static.sh) | 4 | ||||
-rwxr-xr-x | packaging/makeself/build.sh (renamed from makeself/build.sh) | 2 | ||||
-rwxr-xr-x | packaging/makeself/functions.sh (renamed from makeself/functions.sh) | 8 | ||||
-rwxr-xr-x | packaging/makeself/install-alpine-packages.sh (renamed from makeself/install-alpine-packages.sh) | 0 | ||||
-rwxr-xr-x | packaging/makeself/install-or-update.sh (renamed from makeself/install-or-update.sh) | 0 | ||||
-rwxr-xr-x | packaging/makeself/jobs/10-prepare-destination.install.sh (renamed from makeself/jobs/10-prepare-destination.install.sh) | 1 | ||||
-rwxr-xr-x | packaging/makeself/jobs/50-bash-4.4.18.install.sh (renamed from makeself/jobs/50-bash-4.4.18.install.sh) | 2 | ||||
-rwxr-xr-x | packaging/makeself/jobs/50-curl-7.60.0.install.sh (renamed from makeself/jobs/50-curl-7.60.0.install.sh) | 0 | ||||
-rwxr-xr-x | packaging/makeself/jobs/50-fping-4.0.install.sh (renamed from makeself/jobs/50-fping-4.0.install.sh) | 0 | ||||
-rwxr-xr-x | packaging/makeself/jobs/70-netdata-git.install.sh (renamed from makeself/jobs/70-netdata-git.install.sh) | 0 | ||||
-rwxr-xr-x | packaging/makeself/jobs/99-makeself.install.sh (renamed from makeself/jobs/99-makeself.install.sh) | 50 | ||||
-rwxr-xr-x | packaging/makeself/makeself-header.sh (renamed from makeself/makeself-header.sh) | 4 | ||||
-rw-r--r-- | packaging/makeself/makeself-help-header.txt (renamed from makeself/makeself-help-header.txt) | 8 | ||||
-rw-r--r-- | packaging/makeself/makeself-license.txt (renamed from makeself/makeself-license.txt) | 8 | ||||
-rw-r--r-- | packaging/makeself/makeself.lsm (renamed from makeself/makeself.lsm) | 0 | ||||
-rwxr-xr-x | packaging/makeself/makeself.sh (renamed from makeself/makeself.sh) | 22 | ||||
-rwxr-xr-x | packaging/makeself/post-installer.sh (renamed from makeself/post-installer.sh) | 0 | ||||
-rwxr-xr-x | packaging/makeself/run-all-jobs.sh (renamed from makeself/run-all-jobs.sh) | 2 |
19 files changed, 92 insertions, 67 deletions
diff --git a/packaging/makeself/README.md b/packaging/makeself/README.md new file mode 100644 index 000000000..eb4c380b1 --- /dev/null +++ b/packaging/makeself/README.md @@ -0,0 +1,48 @@ +# netdata static binary build + +To build the static binary 64-bit distribution package, run: + +```bash +$ cd /path/to/netdata.git +$ ./packaging/makeself/build-x86_64-static.sh +``` + +The program will: + +1. setup a new docker container with Alpine Linux +2. install the required alpine packages (the build environment, needed libraries, etc) +3. download and compile third party apps that are packaged with netdata (`bash`, `curl`, etc) +4. compile netdata + +Once finished, a file named `netdata-vX.X.X-gGITHASH-x86_64-DATE-TIME.run` will be created in the current directory. This is the netdata binary package that can be run to install netdata on any other computer. + +--- + +## building binaries with debug info + +To build netdata binaries with debugging / tracing information in them, use: + +```bash +$ cd /path/to/netdata.git +$ ./packaging/makeself/build-x86_64-static.sh debug +``` + +These binaries are not optimized (they are a bit slower), they have certain features disables (like log flood protection), other features enables (like `debug flags`) and are not stripped (the binary files are bigger, since they now include source code tracing information). + +#### debugging netdata binaries + +Once you have installed a binary package with debugging info, you will need to install `valgrind` and run this command to start netdata: + +```bash +PATH="/opt/netdata/bin:${PATH}" valgrind --undef-value-errors=no /opt/netdata/bin/srv/netdata -D +``` + +The above command, will run netdata under `valgrind`. While netdata runs under `valgrind` it will be 10x slower and use a lot more memory. + +If netdata crashes, `valgrind` will print a stack trace of the issue. Open a github issue to let us know. + +To stop netdata while it runs under `valgrind`, press Control-C on the console. + +> If you omit the parameter `--undef-value-errors=no` to valgrind, you will get hundreds of errors about conditional jumps that depend on uninitialized values. This is normal. Valgrind has heuristics to prevent it from printing such errors for system libraries, but for the static netdata binary, all the required libraries are built into netdata. So, valgrind cannot appply its heuristics and prints them. + +[![analytics](https://www.google-analytics.com/collect?v=1&aip=1&t=pageview&_s=1&ds=github&dr=https%3A%2F%2Fgithub.com%2Fnetdata%2Fnetdata&dl=https%3A%2F%2Fmy-netdata.io%2Fgithub%2Fmakeself%2FREADME&_u=MAC~&cid=5792dfd7-8dc4-476b-af31-da2fdb9f93d2&tid=UA-64295674-3)]() diff --git a/makeself/build-x86_64-static.sh b/packaging/makeself/build-x86_64-static.sh index b0902512c..69ddf2bf5 100755 --- a/makeself/build-x86_64-static.sh +++ b/packaging/makeself/build-x86_64-static.sh @@ -23,7 +23,7 @@ then # (also inside the container) # run sudo docker run -v $(pwd):/usr/src/netdata.git:rw alpine:3.7 \ - /bin/sh /usr/src/netdata.git/makeself/install-alpine-packages.sh + /bin/sh /usr/src/netdata.git/packaging/makeself/install-alpine-packages.sh # save the changes made permanently id=$(sudo docker ps -l -q) @@ -34,7 +34,7 @@ fi run sudo docker run -a stdin -a stdout -a stderr -i -t -v \ $(pwd):/usr/src/netdata.git:rw \ "${DOCKER_CONTAINER_NAME}" \ - /bin/sh /usr/src/netdata.git/makeself/build.sh "${@}" + /bin/sh /usr/src/netdata.git/packaging/makeself/build.sh "${@}" if [ "${USER}" ] then diff --git a/makeself/build.sh b/packaging/makeself/build.sh index e8c1c9ddc..e5804c523 100755 --- a/makeself/build.sh +++ b/packaging/makeself/build.sh @@ -31,7 +31,7 @@ cd $(dirname "$0") || exit 1 # if we don't run inside the netdata repo # download it and run from it -if [ ! -f ../netdata-installer.sh ] +if [ ! -f ../../netdata-installer.sh ] then git clone https://github.com/netdata/netdata.git netdata.git || exit 1 cd netdata.git/makeself || exit 1 diff --git a/makeself/functions.sh b/packaging/makeself/functions.sh index 10b324deb..6c68e5907 100755 --- a/makeself/functions.sh +++ b/packaging/makeself/functions.sh @@ -6,9 +6,9 @@ # allow running the jobs by hand [ -z "${NETDATA_BUILD_WITH_DEBUG}" ] && export NETDATA_BUILD_WITH_DEBUG=0 [ -z "${NETDATA_INSTALL_PATH}" ] && export NETDATA_INSTALL_PATH="${1-/opt/netdata}" -[ -z "${NETDATA_MAKESELF_PATH}" ] && export NETDATA_MAKESELF_PATH="$(dirname "${0}")/.." +[ -z "${NETDATA_MAKESELF_PATH}" ] && export NETDATA_MAKESELF_PATH="$(dirname "${0}")/../.." [ "${NETDATA_MAKESELF_PATH:0:1}" != "/" ] && export NETDATA_MAKESELF_PATH="$(pwd)/${NETDATA_MAKESELF_PATH}" -[ -z "${NETDATA_SOURCE_PATH}" ] && export NETDATA_SOURCE_PATH="${NETDATA_MAKESELF_PATH}/.." +[ -z "${NETDATA_SOURCE_PATH}" ] && export NETDATA_SOURCE_PATH="${NETDATA_MAKESELF_PATH}/../.." export NULL= # make sure the path does not end with / @@ -35,7 +35,7 @@ fetch() { then run wget -O "${NETDATA_MAKESELF_PATH}/tmp/${tar}" "${url}" fi - + if [ ! -d "${NETDATA_MAKESELF_PATH}/tmp/${dir}" ] then cd "${NETDATA_MAKESELF_PATH}/tmp" @@ -49,7 +49,7 @@ fetch() { # ----------------------------------------------------------------------------- # load the functions of the netdata-installer.sh -. "${NETDATA_SOURCE_PATH}/installer/functions.sh" +. "${NETDATA_SOURCE_PATH}/packaging/installer/functions.sh" # ----------------------------------------------------------------------------- diff --git a/makeself/install-alpine-packages.sh b/packaging/makeself/install-alpine-packages.sh index 695be4d4f..695be4d4f 100755 --- a/makeself/install-alpine-packages.sh +++ b/packaging/makeself/install-alpine-packages.sh diff --git a/makeself/install-or-update.sh b/packaging/makeself/install-or-update.sh index bfcbe720a..bfcbe720a 100755 --- a/makeself/install-or-update.sh +++ b/packaging/makeself/install-or-update.sh diff --git a/makeself/jobs/10-prepare-destination.install.sh b/packaging/makeself/jobs/10-prepare-destination.install.sh index 019732636..06dc82f29 100755 --- a/makeself/jobs/10-prepare-destination.install.sh +++ b/packaging/makeself/jobs/10-prepare-destination.install.sh @@ -14,4 +14,3 @@ run cd "${NETDATA_INSTALL_PATH}/usr" run ln -s ../bin bin run ln -s ../sbin sbin run ln -s . local - diff --git a/makeself/jobs/50-bash-4.4.18.install.sh b/packaging/makeself/jobs/50-bash-4.4.18.install.sh index 000765825..3bdf3e751 100755 --- a/makeself/jobs/50-bash-4.4.18.install.sh +++ b/packaging/makeself/jobs/50-bash-4.4.18.install.sh @@ -35,7 +35,7 @@ run ./configure \ # --enable-prompt-string-decoding \ # --enable-readline \ # --enable-select \ - + run make clean run make -j${SYSTEM_CPUS} diff --git a/makeself/jobs/50-curl-7.60.0.install.sh b/packaging/makeself/jobs/50-curl-7.60.0.install.sh index 2b5c8f139..2b5c8f139 100755 --- a/makeself/jobs/50-curl-7.60.0.install.sh +++ b/packaging/makeself/jobs/50-curl-7.60.0.install.sh diff --git a/makeself/jobs/50-fping-4.0.install.sh b/packaging/makeself/jobs/50-fping-4.0.install.sh index 7928f1aa4..7928f1aa4 100755 --- a/makeself/jobs/50-fping-4.0.install.sh +++ b/packaging/makeself/jobs/50-fping-4.0.install.sh diff --git a/makeself/jobs/70-netdata-git.install.sh b/packaging/makeself/jobs/70-netdata-git.install.sh index 71ea0f63a..71ea0f63a 100755 --- a/makeself/jobs/70-netdata-git.install.sh +++ b/packaging/makeself/jobs/70-netdata-git.install.sh diff --git a/makeself/jobs/99-makeself.install.sh b/packaging/makeself/jobs/99-makeself.install.sh index 0e0d5c9da..182c0b57e 100755 --- a/makeself/jobs/99-makeself.install.sh +++ b/packaging/makeself/jobs/99-makeself.install.sh @@ -8,44 +8,25 @@ run cd "${NETDATA_SOURCE_PATH}" || exit 1 # ----------------------------------------------------------------------------- # find the netdata version -NOWNER="unknown" -ORIGIN="$(git config --get remote.origin.url || echo "unknown")" -if [[ "${ORIGIN}" =~ ^git@github.com:.*/netdata.*$ ]] - then - NOWNER="${ORIGIN/git@github.com:/}" - NOWNER="$( echo ${NOWNER} | cut -d '/' -f 1 )" - -elif [[ "${ORIGIN}" =~ ^https://github.com/.*/netdata.*$ ]] - then - NOWNER="${ORIGIN/https:\/\/github.com\//}" - NOWNER="$( echo ${NOWNER} | cut -d '/' -f 1 )" +VERSION="$(git describe --always 2>/dev/null)" +if [ -z "${VERSION}" ]; then + VERSION=$(cat packaging/version) fi -# make sure it does not have any slashes in it -NOWNER="${NOWNER//\//_}" - -if [ "${NOWNER}" = "netdata" ] - then - NOWNER= -else - NOWNER="-${NOWNER}" +if [ "${VERSION}" == "" ]; then + echo >&2 "Cannot find version number. Create makeself executable from source code with git tree structure." + exit 1 fi -VERSION="$(git describe || echo "undefined")" -[ -z "${VERSION}" ] && VERSION="undefined" - -FILE_VERSION="${VERSION}-$(uname -m)-$(date +"%Y%m%d-%H%M%S")${NOWNER}" - - # ----------------------------------------------------------------------------- # copy the files needed by makeself installation run mkdir -p "${NETDATA_INSTALL_PATH}/system" run cp \ - makeself/post-installer.sh \ - makeself/install-or-update.sh \ - installer/functions.sh \ + packaging/makeself/post-installer.sh \ + packaging/makeself/install-or-update.sh \ + packaging/installer/functions.sh \ configs.signatures \ system/netdata-init-d \ system/netdata-lsb \ @@ -84,7 +65,7 @@ run rm "${NETDATA_INSTALL_PATH}/sbin" \ # ----------------------------------------------------------------------------- # create the makeself archive -run sed "s|NETDATA_VERSION|${FILE_VERSION}|g" <"${NETDATA_MAKESELF_PATH}/makeself.lsm" >"${NETDATA_MAKESELF_PATH}/makeself.lsm.tmp" +run sed "s|NETDATA_VERSION|${VERSION}|g" <"${NETDATA_MAKESELF_PATH}/makeself.lsm" >"${NETDATA_MAKESELF_PATH}/makeself.lsm.tmp" run "${NETDATA_MAKESELF_PATH}/makeself.sh" \ --gzip \ @@ -107,11 +88,12 @@ run rm "${NETDATA_MAKESELF_PATH}/makeself.lsm.tmp" # ----------------------------------------------------------------------------- # copy it to the netdata build dir -FILE="netdata-${FILE_VERSION}.gz.run" +FILE="netdata-${VERSION}.gz.run" -run cp "${NETDATA_INSTALL_PATH}.gz.run" "${FILE}" -echo >&2 "Self-extracting installer copied to '${FILE}'" +run mkdir -p artifacts +run mv "${NETDATA_INSTALL_PATH}.gz.run" "artifacts/${FILE}" [ -f netdata-latest.gz.run ] && rm netdata-latest.gz.run -run ln -s "${FILE}" netdata-latest.gz.run -echo >&2 "Self-extracting installer linked to 'netdata-latest.gz.run'" +run ln -s "artifacts/${FILE}" netdata-latest.gz.run + +echo >&2 "Self-extracting installer moved to 'artifacts/${FILE}'" diff --git a/makeself/makeself-header.sh b/packaging/makeself/makeself-header.sh index 19c1c3f99..d77e1717c 100755 --- a/makeself/makeself-header.sh +++ b/packaging/makeself/makeself-header.sh @@ -35,7 +35,7 @@ elif test -x /usr/ucb/echo; then else print_cmd="echo" fi - + if test -d /usr/xpg4/bin; then PATH=/usr/xpg4/bin:\$PATH export PATH @@ -388,7 +388,7 @@ fi if test x"$NEED_ROOT" = xy -a \`id -u\` -ne 0; then echo "Administrative privileges required for this archive (use su or sudo)" >&2 - exit 1 + exit 1 fi if test x"\$copy" \!= xphase2; then diff --git a/makeself/makeself-help-header.txt b/packaging/makeself/makeself-help-header.txt index 6e9e96237..bf482c465 100644 --- a/makeself/makeself-help-header.txt +++ b/packaging/makeself/makeself-help-header.txt @@ -1,7 +1,7 @@ ^ - |.-. .-. .-. .-. . netdata - | '-' '-' '-' '-' real-time performance monitoring, done right! + |.-. .-. .-. .-. . netdata + | '-' '-' '-' '-' real-time performance monitoring, done right! +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+---> (C) Copyright 2017, Costa Tsaousis @@ -32,7 +32,7 @@ - /etc/init.d/netdata will be created - + This package can also update a netdata installation that has been created with another version of it. @@ -42,5 +42,3 @@ netdata re-distributes a lot of open source software components. Check its full license at: https://github.com/netdata/netdata/blob/master/LICENSE.md - - diff --git a/makeself/makeself-license.txt b/packaging/makeself/makeself-license.txt index 6e9e96237..bf482c465 100644 --- a/makeself/makeself-license.txt +++ b/packaging/makeself/makeself-license.txt @@ -1,7 +1,7 @@ ^ - |.-. .-. .-. .-. . netdata - | '-' '-' '-' '-' real-time performance monitoring, done right! + |.-. .-. .-. .-. . netdata + | '-' '-' '-' '-' real-time performance monitoring, done right! +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+---> (C) Copyright 2017, Costa Tsaousis @@ -32,7 +32,7 @@ - /etc/init.d/netdata will be created - + This package can also update a netdata installation that has been created with another version of it. @@ -42,5 +42,3 @@ netdata re-distributes a lot of open source software components. Check its full license at: https://github.com/netdata/netdata/blob/master/LICENSE.md - - diff --git a/makeself/makeself.lsm b/packaging/makeself/makeself.lsm index 6bd4703db..6bd4703db 100644 --- a/makeself/makeself.lsm +++ b/packaging/makeself/makeself.lsm diff --git a/makeself/makeself.sh b/packaging/makeself/makeself.sh index ee89df9a4..f3cb69976 100755 --- a/makeself/makeself.sh +++ b/packaging/makeself/makeself.sh @@ -21,13 +21,13 @@ # support for non-temporary archives. Ideas thanks to Francois Petitjean # - 1.3 : More patches from Bjarni R. Einarsson and Francois Petitjean: # Support for no compression (--nocomp), script is no longer mandatory, -# automatic launch in an xterm, optional verbose output, and -target +# automatic launch in an xterm, optional verbose output, and -target # archive option to indicate where to extract the files. # - 1.4 : Improved UNIX compatibility (Francois Petitjean) # Automatic integrity checking, support of LSM files (Francois Petitjean) # - 1.5 : Many bugfixes. Optionally disable xterm spawning. # - 1.5.1 : More bugfixes, added archive options -list and -check. -# - 1.5.2 : Cosmetic changes to inform the user of what's going on with big +# - 1.5.2 : Cosmetic changes to inform the user of what's going on with big # archives (Quake III demo) # - 1.5.3 : Check for validity of the DISPLAY variable before launching an xterm. # More verbosity in xterms and check for embedded command's return value. @@ -204,9 +204,9 @@ do shift ;; --pigz) - COMPRESS=pigz - shift - ;; + COMPRESS=pigz + shift + ;; --xz) COMPRESS=xz shift @@ -434,7 +434,7 @@ gzip) GZIP_CMD="gzip -c$COMPRESS_LEVEL" GUNZIP_CMD="gzip -cd" ;; -pigz) +pigz) GZIP_CMD="pigz -$COMPRESS_LEVEL" GUNZIP_CMD="gzip -cd" ;; @@ -497,7 +497,7 @@ if test -f "$HEADER"; then SKIP=`expr $SKIP` rm -f "$tmpfile" if test "$QUIET" = "n";then - echo Header is $SKIP lines long >&2 + echo Header is $SKIP lines long >&2 fi archname="$oldarchname" @@ -506,7 +506,7 @@ else exit 1 fi -if test "$QUIET" = "n";then +if test "$QUIET" = "n";then echo fi @@ -598,7 +598,7 @@ if test "$APPEND" = y; then chmod +x "$archname" rm -f "$archname".bak if test "$QUIET" = "n";then - echo Self-extractable archive \"$archname\" successfully updated. + echo Self-extractable archive \"$archname\" successfully updated. fi else filesizes="$fsize" @@ -610,12 +610,12 @@ else # Append the compressed tar data after the stub if test "$QUIET" = "n";then - echo + echo fi cat "$tmpfile" >> "$archname" chmod +x "$archname" if test "$QUIET" = "n";then - echo Self-extractable archive \"$archname\" successfully created. + echo Self-extractable archive \"$archname\" successfully created. fi fi rm -f "$tmpfile" diff --git a/makeself/post-installer.sh b/packaging/makeself/post-installer.sh index 38cc41ef7..38cc41ef7 100755 --- a/makeself/post-installer.sh +++ b/packaging/makeself/post-installer.sh diff --git a/makeself/run-all-jobs.sh b/packaging/makeself/run-all-jobs.sh index 7a35fe648..f7507c2d2 100755 --- a/makeself/run-all-jobs.sh +++ b/packaging/makeself/run-all-jobs.sh @@ -21,7 +21,7 @@ if [ "${NETDATA_MAKESELF_PATH:0:1}" != "/" ] fi # netdata source directory -export NETDATA_SOURCE_PATH="${NETDATA_MAKESELF_PATH}/.." +export NETDATA_SOURCE_PATH="${NETDATA_MAKESELF_PATH}/../.." # make sure ${NULL} is empty export NULL= |