From 6850a4d25d06a1f58c440fa27ab93e5f180a0709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Mon, 2 Mar 2015 17:21:52 +0100 Subject: [PATCH] Progress on deb and rpm packaging, init.d script etc, #1476 --- build.go | 59 ++++++++++++++++++++++++++++++++++--------------- package.json | 2 +- scripts/init.sh | 8 +++---- 3 files changed, 46 insertions(+), 23 deletions(-) diff --git a/build.go b/build.go index a4a1f0fa0f8..b84a6e64081 100644 --- a/build.go +++ b/build.go @@ -5,6 +5,7 @@ package main import ( "bytes" "crypto/md5" + "encoding/json" "flag" "fmt" "io" @@ -24,7 +25,7 @@ var ( versionRe = regexp.MustCompile(`-[0-9]{1,3}-g[0-9a-f]{5,10}`) goarch string goos string - version string = "2.0.0-alpha" + version string = "v1" race bool workingDir string @@ -40,6 +41,9 @@ func main() { log.SetFlags(0) ensureGoPath() + readVersionFromPackageJson() + + log.Printf("Version: %s\n", version) //os.Setenv("PATH", fmt.Sprintf("%s%cbin%c%s", os.Getenv("GOPATH"), os.PathSeparator, os.PathListSeparator, os.Getenv("PATH"))) @@ -69,10 +73,10 @@ func main() { test("./pkg/...") case "package": - //checkCleanTree() - //test("./pkg/...") - //build(".", []string{}) - //buildFrontend() + checkCleanTree() + test("./pkg/...") + build(".", []string{}) + buildFrontend() createRpmAndDeb() case "build-ui": @@ -86,6 +90,24 @@ func main() { } } +func readVersionFromPackageJson() { + reader, err := os.Open("package.json") + if err != nil { + log.Fatal("Failed to open package.json") + return + } + defer reader.Close() + + jsonObj := map[string]interface{}{} + jsonParser := json.NewDecoder(reader) + + if err := jsonParser.Decode(&jsonObj); err != nil { + log.Fatal("Failed to decode package.json") + } + + version = jsonObj["version"].(string) +} + func createRpmAndDeb() { packageRoot, _ := ioutil.TempDir("", "grafana-linux-pack") postInstallScriptPath, _ := ioutil.TempFile("", "postinstall") @@ -122,22 +144,23 @@ func createRpmAndDeb() { func GeneratePostInstallScript(path string) { content := ` -rm -f $INSTALL_ROOT_DIR/grafana -rm -f $INSTALL_ROOT_DIR/init.sh -ln -s $INSTALL_ROOT_DIR/versions/$VERSION/grafana $INSTALL_ROOT_DIR/grafana -ln -s $INSTALL_ROOT_DIR/versions/$VERSION/scripts/init.sh $INSTALL_ROOT_DIR/init.sh +rm -f $INSTALL_ROOT_DIR/current +ln -s $INSTALL_ROOT_DIR/versions/$VERSION/ $INSTALL_ROOT_DIR/current + if [ ! -L /etc/init.d/grafana ]; then - ln -sfn $INSTALL_ROOT_DIR/init.sh /etc/init.d/grafana - chmod +x /etc/init.d/grafana - if which update-rc.d > /dev/null 2>&1 ; then - update-rc.d -f grafana remove - update-rc.d grafana defaults - else - chkconfig --add grafana - fi + ln -sfn $INSTALL_ROOT_DIR/current/scripts/init.sh /etc/init.d/grafana fi + +chmod +x /etc/init.d/grafana +if which update-rc.d > /dev/null 2>&1 ; then + update-rc.d -f grafana remove + update-rc.d grafana defaults +else + chkconfig --add grafana +fi + if ! id grafana >/dev/null 2>&1; then - useradd --system -U -M grafana + useradd --system -U -M grafana fi chown -R -L grafana:grafana $INSTALL_ROOT_DIR chmod -R a+rX $INSTALL_ROOT_DIR diff --git a/package.json b/package.json index a5985fe54b0..43372b92e06 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "company": "Coding Instinct AB" }, "name": "grafana", - "version": "2.0.0-alpha", + "version": "2.0.2-alpha", "repository": { "type": "git", "url": "http://github.com/torkelo/grafana.git" diff --git a/scripts/init.sh b/scripts/init.sh index dc0843ea5ac..0ff0298ecb7 100644 --- a/scripts/init.sh +++ b/scripts/init.sh @@ -17,9 +17,9 @@ DAEMON_NAME="grafana" DAEMON_USER="grafana" -DAEMON_PATH="%BIN_PATH%" +DAEMON_PATH="/opt/grafana/current/grafana" DAEMON_OPTS="web" -DAEMON_PWD="/opt/grafana" +DAEMON_PWD="/opt/grafana/current" DAEMON_PID="/var/run/${DAEMON_NAME}.pid" DAEMON_NICE=0 DAEMON_LOG='/var/log/grafana/grafana.log' @@ -43,7 +43,7 @@ do_start() { --nicelevel $DAEMON_NICE \ --chdir "${DAEMON_PWD}" \ --pidfile "${DAEMON_PID}" --make-pidfile \ - --exec "${DAEMON_PATH}" -- -c $DAEMON_OPTS + --exec "${DAEMON_PATH}" -- $DAEMON_OPTS result=$? else start-stop-daemon --start --quiet --oknodo --background \ @@ -51,7 +51,7 @@ do_start() { --chdir "${DAEMON_PWD}" \ --pidfile "${DAEMON_PID}" --make-pidfile \ --chuid "${DAEMON_USER}" \ - --exec "${DAEMON_PATH}" -- -c ${DAEMON_OPTS} + --exec "${DAEMON_PATH}" -- $DAEMON_OPTS result=$? fi log_end_msg $result