From 053477789d6f964880c7fc4dbeb5423d3a219a60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Peccatte?= Date: Thu, 20 Dec 2018 12:03:53 +0100 Subject: [PATCH 1/3] Fixes #14018: Update rudder reports to match modern packaging recommendation --- rudder-inventory-ldap/SOURCES/Makefile | 1 + .../SPECS/rudder-inventory-ldap.spec | 6 +- rudder-reports/BUILD/.placeholder | 0 rudder-reports/RPMS/.placeholder | 0 rudder-reports/SOURCES/Makefile | 54 ++++++-- .../SOURCES/rudder-reports-postinst | 100 ++++++++++++++ rudder-reports/SPECS/rudder-reports.spec | 124 ++---------------- rudder-reports/SRPMS/.placeholder | 0 rudder-reports/debian/README.Debian | 6 - rudder-reports/debian/compat | 2 +- rudder-reports/debian/docs | 4 - rudder-reports/debian/postinst | 57 +------- rudder-reports/debian/rules | 61 ++------- 13 files changed, 175 insertions(+), 240 deletions(-) delete mode 100644 rudder-reports/BUILD/.placeholder delete mode 100644 rudder-reports/RPMS/.placeholder create mode 100755 rudder-reports/SOURCES/rudder-reports-postinst delete mode 100644 rudder-reports/SRPMS/.placeholder delete mode 100644 rudder-reports/debian/README.Debian delete mode 100644 rudder-reports/debian/docs diff --git a/rudder-inventory-ldap/SOURCES/Makefile b/rudder-inventory-ldap/SOURCES/Makefile index f3d33b5d3..1ee165033 100644 --- a/rudder-inventory-ldap/SOURCES/Makefile +++ b/rudder-inventory-ldap/SOURCES/Makefile @@ -97,6 +97,7 @@ localclean: rm -rf rudder-sources rm -rf openldap-source +distclean: veryclean veryclean: clean rm -f ./rudder-sources.tar.bz2 diff --git a/rudder-inventory-ldap/SPECS/rudder-inventory-ldap.spec b/rudder-inventory-ldap/SPECS/rudder-inventory-ldap.spec index 79811b302..9c3304b33 100644 --- a/rudder-inventory-ldap/SPECS/rudder-inventory-ldap.spec +++ b/rudder-inventory-ldap/SPECS/rudder-inventory-ldap.spec @@ -106,10 +106,10 @@ rm -rf %{buildroot} make install DESTDIR=%{buildroot} -%pre -n rudder-inventory-ldap #================================================= # Pre Installation #================================================= +%pre -n rudder-inventory-ldap # Only do this on package upgrade if [ $1 -ne 1 ] @@ -126,10 +126,10 @@ if [ $1 -ne 1 ] /opt/rudder/sbin/slapcat -b "cn=rudder-configuration" -l /var/rudder/ldap/backup/openldap-data-pre-upgrade-${TIMESTAMP}.ldif fi -%post -n rudder-inventory-ldap #================================================= # Post Installation #================================================= +%post -n rudder-inventory-ldap # ldconfig only necessary when upgrading from 4.1 to >4.2 if [[ $1 -gt 1 ]]; then @@ -150,10 +150,10 @@ echo -n "INFO: Restarting rudder-slapd..." systemctl restart rudder-slapd >/dev/null echo " Done" -%preun -n rudder-inventory-ldap #================================================= # Pre Un-installation #================================================= +%preun -n rudder-inventory-ldap if [[ $1 -eq 0 ]] then diff --git a/rudder-reports/BUILD/.placeholder b/rudder-reports/BUILD/.placeholder deleted file mode 100644 index e69de29bb..000000000 diff --git a/rudder-reports/RPMS/.placeholder b/rudder-reports/RPMS/.placeholder deleted file mode 100644 index e69de29bb..000000000 diff --git a/rudder-reports/SOURCES/Makefile b/rudder-reports/SOURCES/Makefile index 7138c7356..44b87386b 100644 --- a/rudder-reports/SOURCES/Makefile +++ b/rudder-reports/SOURCES/Makefile @@ -16,23 +16,59 @@ # ##################################################################################### -.DEFAULT_GOAL := localdepends +.DEFAULT_GOAL := build -RUDDER_VERSION_TO_PACKAGE = +#RUDDER_VERSION_TO_PACKAGE = +RUDDER_VERSION_TO_PACKAGE = 5.0.1 -localdepends: ./rudder-sources +# GENERIC_GET: do not remove this line +# This is a generic get code that is common to many of our Makefiles. +# The tag is here to find them. Rudder agent has an even more generic one. +# If you change this code, change all the places where you can find this tag too. +# It is duplicated because it is the code that is used to manage dependency +# to other repositories, hence allowing deduplication of other code. +# Autodetect wget, curl or fetch usage and proxy configuration +# Usage: $(GET) +PROXY_ENV = $(if $(PROXY), http_proxy=$(PROXY) ftp_proxy=$(PROXY)) +# No accept encoding to prevent the webserver form altering the distributed file +WGET = wget -q --header="accept-encoding:" -O +CURL = curl -s -L -o +ifneq (,$(wildcard /usr/bin/curl)) +_GET = $(PROXY_ENV) $(CURL) +else +_GET = $(PROXY_ENV) $(WGET) +endif +# Pass an empty string to skip hash check +GET=get() { $(_GET) "$$1.part" "$$2" && { openssl dgst -sha256 "$$1.part" | grep -q "$$3" || { echo "Wrong checksum, aborting"; exit 1; }; } && mv "$$1.part" "$$1"; }; get -./rudder-sources.tar.bz2: - $(WGET) -O rudder-sources.tar.bz2 https://www.rudder-project.org/archives/rudder-sources-${RUDDER_VERSION_TO_PACKAGE}.tar.bz2 -./rudder-sources: ./rudder-sources.tar.bz2 +localdepends: + +rudder-sources.tar.bz2: + $(GET) rudder-sources.tar.bz2 http://repository.rudder.io/sources/$(RUDDER_VERSION_TO_PACKAGE)/rudder-sources-$(RUDDER_VERSION_TO_PACKAGE).tar.bz2 "" + +rudder-sources: rudder-sources.tar.bz2 tar -xjf rudder-sources.tar.bz2 mv rudder-sources-*/ rudder-sources/ +build: rudder-sources + +# Install into DESTDIR +install: build + mkdir -p $(DESTDIR)/opt/rudder/etc/postgresql/ + mkdir -p $(DESTDIR)/opt/rudder/etc/server-roles.d/ + mkdir -p $(DESTDIR)/opt/rudder/share/package-scripts/ + install -m 644 rudder-sources/rudder/rudder-core/src/main/resources/reportsSchema.sql $(DESTDIR)/opt/rudder/etc/postgresql/ + install -m 644 rudder-reports $(DESTDIR)/opt/rudder/etc/server-roles.d/ + install -m 644 rudder-db $(DESTDIR)/opt/rudder/etc/server-roles.d/ + install -m 755 rudder-reports-postinst $(DESTDIR)/opt/rudder/share/package-scripts/ + +clean: localclean localclean: - rm -rf ./rudder-sources + rm -rf rudder-sources -veryclean: +distclean: veryclean +veryclean: clean rm -f ./rudder-sources.tar.bz2 -.PHONY: localclean localdepends veryclean +.PHONY: build install clean localclean localdepends veryclean diff --git a/rudder-reports/SOURCES/rudder-reports-postinst b/rudder-reports/SOURCES/rudder-reports-postinst new file mode 100755 index 000000000..0fb801b94 --- /dev/null +++ b/rudder-reports/SOURCES/rudder-reports-postinst @@ -0,0 +1,100 @@ +#!/bin/bash + +DB_NOT_INITIALIZED="$1" + +# Try with systemd +POSTGRESQL_SERVICE_NAME=$(systemctl list-unit-files --type service | awk -F'.' '{print $1}' | grep -E "^postgresql[0-9]*$" | tail -n 1) + +# If nothing try with chkconfig (sles 12 only) +if [ -z "${POSTGRESQL_SERVICE_NAME}" ] && ! type chkconfig >/dev/null 2>/dev/null ; then + POSTGRESQL_SERVICE_NAME=$(chkconfig 2>/dev/null | awk '{ print $1 }' | grep "postgresql" | tail -n 1) +fi + +# If nothin try default name (should not happen) +if [ -z "${POSTGRESQL_SERVICE_NAME}" ]; then + POSTGRESQL_SERVICE_NAME="postgresql" +fi + +# Check if PostgreSQL is started +systemctl status ${POSTGRESQL_SERVICE_NAME} > /dev/null + +# Start if necessary +if [ $? -ne 0 ] +then + if [ "${DB_NOT_INITIALIZED}" != "" ]; then + echo -n "INFO: Initializing PostgreSQL ..." + # rhel package doesn't initialize database + service ${POSTGRESQL_SERVICE_NAME} initdb + echo " Done" + fi + systemctl start ${POSTGRESQL_SERVICE_NAME} >/dev/null +fi + +# TODO RPM only ?? + PG_HBA_FILE=$(su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';") + if [ $? -ne 0 ]; then + echo "Postgresql failed to start! Halting" + exit 1 + fi + + #HACK: Give rights for login without unix account + if [ -f ${PG_HBA_FILE} ]; then + RUDDER_PG_DEFINED=`grep "rudder" ${PG_HBA_FILE} | wc -l` + if [ ${RUDDER_PG_DEFINED} -le 0 ]; then + sed -i 1i"host all rudder ::1/128 md5" ${PG_HBA_FILE} + sed -i 1i"host all rudder 127.0.0.1/32 md5" ${PG_HBA_FILE} + + # Apply changes in PostgreSQL + # TODO just after a start ? + systemctl reload ${POSTGRESQL_SERVICE_NAME} + fi + fi +# ODOT + +# RHEL doesn't autostart service +if [ "${DB_NOT_INITIALIZED}" != "" ]; then + echo -n "INFO: Setting PostgreSQL as a boot service..." + systemctl enable ${POSTGRESQL_SERVICE_NAME} >/dev/null + echo " Done" +fi + + +echo -n "INFO: Waiting for PostgreSQL to be up..." +CPT=0 +TIMEOUT=60 +while ! su - postgres -c "psql -q --output /dev/null -c \"SELECT COUNT(*) FROM pg_catalog.pg_authid\"" >/dev/null 2>&1 +do + echo -n "." + sleep 1 + CPT=$((${CPT}+1)) + if [ ${CPT} -eq ${TIMEOUT} ] + then + echo -e "\nERROR: Connection to PostgreSQL has not been established before timeout. Exiting" + exit 1 + fi +done +echo " Done" + +DBNAME="rudder" +USERNAME="rudder" +CHK_PG_DB=$(su - postgres -c "psql -t -c \"select count(1) from pg_catalog.pg_database where datname = '${DBNAME}'\"") +CHK_PG_USER=$(su - postgres -c "psql -t -c \"select count(1) from pg_user where usename = '${USERNAME}'\"") + +# Rudder user +if [ ${CHK_PG_USER} -eq 0 ] +then + echo -n "INFO: Creating Rudder PostgreSQL user..." + su - postgres -c "psql -q -c \"CREATE USER ${USERNAME} WITH PASSWORD 'Normation'\"" >/dev/null 2>&1 + echo "Done" +fi + +# Rudder database +if [ ${CHK_PG_DB} -eq 0 ] +then + echo -n "INFO: Creating Rudder PostgreSQL database..." + su - postgres -c "psql -q -c \"CREATE DATABASE ${DBNAME} WITH OWNER = ${USERNAME}\"" >/dev/null 2>&1 + echo "localhost:5432:${DBNAME}:${USERNAME}:Normation" > /root/.pgpass + chmod 600 /root/.pgpass + psql -q -U rudder -h localhost -d rudder -f /opt/rudder/etc/postgresql/reportsSchema.sql >/dev/null 2>&1 + echo " Done" +fi diff --git a/rudder-reports/SPECS/rudder-reports.spec b/rudder-reports/SPECS/rudder-reports.spec index d593195a2..6132932f4 100644 --- a/rudder-reports/SPECS/rudder-reports.spec +++ b/rudder-reports/SPECS/rudder-reports.spec @@ -30,11 +30,6 @@ %define real_name rudder-reports %define real_epoch 1398866025 -%define rudderdir /opt/rudder -%define ruddervardir /var/rudder -%define rudderlogdir /var/log/rudder -%define suse_rsyslog_pgsql rsyslog-module-pgsql - #================================================= # Header #================================================= @@ -48,20 +43,15 @@ URL: http://www.rudder-project.org Group: Applications/System -Source1: rudder-sources -Source2: rudder-reports -Source3: rudder-db BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch - Requires: postgresql-server >= 9.2 Requires: rsyslog >= 4 -# Reference for suse_version : https://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howto %if 0%{?suse_version} -Requires: %{suse_rsyslog_pgsql} >= 4 +Requires: rsyslog-module-pgsql >= 4 %endif %if 0%{?rhel} @@ -76,11 +66,6 @@ sent from nodes managed with Rudder. These reports are used by rudder-webapp to calculate compliance to given configuration rules. -#================================================= -# Source preparation -#================================================= -%prep - #================================================= # Building #================================================= @@ -91,111 +76,21 @@ calculate compliance to given configuration rules. #================================================= %install rm -rf %{buildroot} -# Directories -mkdir -p %{buildroot}%{rudderdir}/etc/postgresql/ -mkdir -p %{buildroot}%{rudderdir}/etc/server-roles.d/ -cp %{SOURCE1}/rudder/rudder-core/src/main/resources/reportsSchema.sql %{buildroot}%{rudderdir}/etc/postgresql/ - -install -m 644 %{SOURCE2} %{buildroot}/opt/rudder/etc/server-roles.d/ -install -m 644 %{SOURCE3} %{buildroot}/opt/rudder/etc/server-roles.d/ - -%pre -n rudder-reports -#================================================= -# Pre Installation -#================================================= +make install DESTDIR=%{buildroot} -%post -n rudder-reports #================================================= # Post Installation #================================================= +%post -n rudder-reports -POSTGRESQL_SERVICE_NAME=$(systemctl list-unit-files --type service | awk -F'.' '{print $1}' | grep -E "^postgresql[0-9]*$" | tail -n 1) -%if 0%{?suse_version} < 1500 - POSTGRESQL_SERVICE_NAME=$(chkconfig 2>/dev/null | awk '{ print $1 }' | grep "postgresql" | tail -n 1) -%endif - -if [ -z "${POSTGRESQL_SERVICE_NAME}" ]; then - POSTGRESQL_SERVICE_NAME="postgresql" -fi - -# Check if PostgreSQL is started -systemctl status ${POSTGRESQL_SERVICE_NAME} - -if [ $? -ne 0 ]; then -%if 0%{?rhel} - echo -n "INFO: Initializing PostgreSQL ..." - # rhel package doesn't initialize database - service ${POSTGRESQL_SERVICE_NAME} initdb - echo " Done" -%endif - systemctl start ${POSTGRESQL_SERVICE_NAME} -fi - -PG_HBA_FILE=$(su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';") -if [ $? -ne 0 ]; then - echo "Postgresql failed to start! Halting" - exit 1 -fi - -#HACK: Give rights for login without unix account -if [ -f ${PG_HBA_FILE} ]; then - RUDDER_PG_DEFINED=`grep "rudder" ${PG_HBA_FILE} | wc -l` - if [ ${RUDDER_PG_DEFINED} -le 0 ]; then - sed -i 1i"host all rudder ::1/128 md5" ${PG_HBA_FILE} - sed -i 1i"host all rudder 127.0.0.1/32 md5" ${PG_HBA_FILE} - - # Apply changes in PostgreSQL - systemctl reload ${POSTGRESQL_SERVICE_NAME} - fi -fi - -echo -n "INFO: Setting PostgreSQL as a boot service..." %if 0%{?rhel} - systemctl enable ${POSTGRESQL_SERVICE_NAME} >/dev/null + /opt/rudder/share/package-scripts/rudder-reports-postinst true +%else + /opt/rudder/share/package-scripts/rudder-reports-postinst %endif -echo " Done" - -echo -n "INFO: Waiting for PostgreSQL to be up..." -CPT=0 -TIMEOUT=60 -while ! su - postgres -c "psql -q --output /dev/null -c \"SELECT COUNT(*) FROM pg_catalog.pg_authid\"" >/dev/null 2>&1 -do - echo -n "." - sleep 1 - CPT=$((${CPT}+1)) - if [ ${CPT} -eq ${TIMEOUT} ] - then - echo -e "\nERROR: Connection to PostgreSQL has not been established before timeout. Exiting" - exit 1 - fi -done -echo " Done" - -DBNAME="rudder" -USERNAME="rudder" -CHK_PG_DB=$(su - postgres -c "psql -t -c \"select count(1) from pg_catalog.pg_database where datname = '${DBNAME}'\"") -CHK_PG_USER=$(su - postgres -c "psql -t -c \"select count(1) from pg_user where usename = '${USERNAME}'\"") - -# Rudder user -if [ ${CHK_PG_USER} -eq 0 ] -then - echo -n "INFO: Creating Rudder PostgreSQL user..." - su - postgres -c "psql -q -c \"CREATE USER ${USERNAME} WITH PASSWORD 'Normation'\"" >/dev/null 2>&1 - echo " Done" -fi - -# Rudder database -if [ ${CHK_PG_DB} -eq 0 ] -then - echo -n "INFO: Creating Rudder PostgreSQL database..." - su - postgres -c "psql -q -c \"CREATE DATABASE ${DBNAME} WITH OWNER = ${USERNAME}\"" >/dev/null 2>&1 - echo "localhost:5432:${DBNAME}:${USERNAME}:Normation" > /root/.pgpass - chmod 600 /root/.pgpass - psql -q -U rudder -h localhost -d rudder -f %{rudderdir}/etc/postgresql/reportsSchema.sql >/dev/null 2>&1 - echo " Done" -fi + #================================================= # Cleaning @@ -208,8 +103,9 @@ rm -rf %{buildroot} #================================================= %files -n rudder-reports %defattr(-, root, root, 0755) -%{rudderdir}/etc/postgresql/reportsSchema.sql -%{rudderdir}/etc/server-roles.d/ +/opt/rudder/etc/postgresql/reportsSchema.sql +/opt/rudder/etc/server-roles.d/ +/opt/rudder/share/package-scripts/ #================================================= # Changelog diff --git a/rudder-reports/SRPMS/.placeholder b/rudder-reports/SRPMS/.placeholder deleted file mode 100644 index e69de29bb..000000000 diff --git a/rudder-reports/debian/README.Debian b/rudder-reports/debian/README.Debian deleted file mode 100644 index 81832b889..000000000 --- a/rudder-reports/debian/README.Debian +++ /dev/null @@ -1,6 +0,0 @@ -rudder-jetty for Debian ------------------------ - - - - -- root Mon, 17 Jan 2011 08:19:10 -0500 diff --git a/rudder-reports/debian/compat b/rudder-reports/debian/compat index 7f8f011eb..ec635144f 100644 --- a/rudder-reports/debian/compat +++ b/rudder-reports/debian/compat @@ -1 +1 @@ -7 +9 diff --git a/rudder-reports/debian/docs b/rudder-reports/debian/docs deleted file mode 100644 index 28ecdc445..000000000 --- a/rudder-reports/debian/docs +++ /dev/null @@ -1,4 +0,0 @@ -LICENSE-APACHE-2.0.txt -README.txt -README.txt -VERSION.txt diff --git a/rudder-reports/debian/postinst b/rudder-reports/debian/postinst index d11042da4..b48f18a4b 100755 --- a/rudder-reports/debian/postinst +++ b/rudder-reports/debian/postinst @@ -20,62 +20,9 @@ set -e case "$1" in configure) - - POSTGRESQL_SERVICE_NAME=$(systemctl list-unit-files --type service | awk -F'.' '{print $1}' | grep -E "^postgresql[0-9]*$" | tail -n 1) - - if [ -z "${POSTGRESQL_SERVICE_NAME}" ]; then - POSTGRESQL_SERVICE_NAME="postgresql" - fi - - #Check if PostgreSQL is started - systemctl status ${POSTGRESQL_SERVICE_NAME} > /dev/null - - if [ $? -ne 0 ] - then - systemctl start ${POSTGRESQL_SERVICE_NAME} >/dev/null - fi - - echo -n "INFO: Waiting for PostgreSQL to be up..." - CPT=0 - TIMEOUT=60 - while ! su - postgres -c "psql -q --output /dev/null -c \"SELECT COUNT(*) FROM pg_catalog.pg_authid\"" >/dev/null 2>&1 - do - echo -n "." - sleep 1 - CPT=$((${CPT}+1)) - if [ ${CPT} -eq ${TIMEOUT} ] - then - echo -e "\nERROR: Connection to PostgreSQL has not been established before timeout. Exiting" - exit 1 - fi - done - echo " Done" - - DBNAME="rudder" - USERNAME="rudder" - CHK_PG_DB=$(su - postgres -c "psql -t -c \"select count(1) from pg_catalog.pg_database where datname = '${DBNAME}'\"") - CHK_PG_USER=$(su - postgres -c "psql -t -c \"select count(1) from pg_user where usename = '${USERNAME}'\"") - - # Rudder user - if [ ${CHK_PG_USER} -eq 0 ] - then - echo -n "INFO: Creating Rudder PostgreSQL user..." - su - postgres -c "psql -q -c \"CREATE USER ${USERNAME} WITH PASSWORD 'Normation'\"" >/dev/null 2>&1 - echo "Done" - fi - - # Rudder database - if [ ${CHK_PG_DB} -eq 0 ] - then - echo -n "INFO: Creating Rudder PostgreSQL database..." - su - postgres -c "psql -q -c \"CREATE DATABASE ${DBNAME} WITH OWNER = ${USERNAME}\"" >/dev/null 2>&1 - echo "localhost:5432:${DBNAME}:${USERNAME}:Normation" > /root/.pgpass - chmod 600 /root/.pgpass - psql -q -U rudder -h localhost -d rudder -f /opt/rudder/etc/postgresql/reportsSchema.sql >/dev/null 2>&1 - echo " Done" - fi + /opt/rudder/share/package-scripts/rudder-reports-postinst ;; - abort-upgrade|abort-remove|abort-deconfigure) + reconfigure|abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 diff --git a/rudder-reports/debian/rules b/rudder-reports/debian/rules index 8dfdeaf92..846e61754 100755 --- a/rudder-reports/debian/rules +++ b/rudder-reports/debian/rules @@ -1,65 +1,30 @@ #!/usr/bin/make -f # -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. # Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 +export DH_VERBOSE=1 +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/buildflags.mk - -build: build-stamp - -build-stamp: +build: dh_testdir - - # Add here commands to compile the package. - + cd SOURCES && make build touch $@ clean: dh_testdir dh_testroot - rm -f build-stamp configure-stamp - - # Add here commands to clean up after the build process. - - - dh_clean + rm -f build install + cd SOURCES && make clean + dh_clean install: build dh_testdir dh_testroot - dh_clean -k - dh_installdirs - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. + cd SOURCES && make install DESTDIR=$(CURDIR)/debian/rudder-reports + touch $@ -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs -# dh_installdocs - dh_install --sourcedir=$(CURDIR)/SOURCES/rudder-sources/rudder/rudder-core/src/main/resources/ reportsSchema.sql /opt/rudder/etc/postgresql/ - dh_install --SOURCEDIR=$(CURDIR)/SOURCES/ rudder-reports /opt/rudder/etc/server-roles.d/ - dh_install --SOURCEDIR=$(CURDIR)/SOURCES/ rudder-db /opt/rudder/etc/server-roles.d/ - dh_link - dh_strip - dh_compress - dh_fixperms -# dh_perl -# dh_makeshlibs - dh_installdeb -# dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb +# Default rule that guess what to do for missing targets +%: + dh $@ -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure From fd6e680f3fe205332e00a2dde1f1fd157e4e0075 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Peccatte?= Date: Thu, 20 Dec 2018 15:34:13 +0100 Subject: [PATCH 2/3] Fixes #14020: Update rudder server root to match modern packaging recommendation --- rudder-inventory-ldap/SOURCES/Makefile | 2 + rudder-reports/SOURCES/Makefile | 1 + rudder-server-root/BUILD/.placeholder | 0 rudder-server-root/RPMS/.placeholder | 0 rudder-server-root/SOURCES/Makefile | 40 +++---------------- .../SPECS/rudder-server-root.spec | 11 ++--- rudder-server-root/SRPMS/.placeholder | 0 rudder-server-root/debian/compat | 2 +- rudder-server-root/debian/control | 2 +- rudder-server-root/debian/dirs | 3 -- rudder-server-root/debian/install | 2 - rudder-server-root/debian/postinst | 9 ++--- rudder-server-root/debian/postrm | 0 rudder-server-root/debian/preinst | 0 14 files changed, 19 insertions(+), 53 deletions(-) delete mode 100644 rudder-server-root/BUILD/.placeholder delete mode 100644 rudder-server-root/RPMS/.placeholder delete mode 100644 rudder-server-root/SRPMS/.placeholder delete mode 100644 rudder-server-root/debian/dirs delete mode 100644 rudder-server-root/debian/install mode change 100644 => 100755 rudder-server-root/debian/postinst mode change 100644 => 100755 rudder-server-root/debian/postrm mode change 100644 => 100755 rudder-server-root/debian/preinst diff --git a/rudder-inventory-ldap/SOURCES/Makefile b/rudder-inventory-ldap/SOURCES/Makefile index 1ee165033..1d547e5c5 100644 --- a/rudder-inventory-ldap/SOURCES/Makefile +++ b/rudder-inventory-ldap/SOURCES/Makefile @@ -43,6 +43,8 @@ endif # Pass an empty string to skip hash check GET=get() { $(_GET) "$$1.part" "$$2" && { openssl dgst -sha256 "$$1.part" | grep -q "$$3" || { echo "Wrong checksum, aborting"; exit 1; }; } && mv "$$1.part" "$$1"; }; get +DESTDIR = $(CURDIR)/target + localdepends: openldap-source openldap-source: diff --git a/rudder-reports/SOURCES/Makefile b/rudder-reports/SOURCES/Makefile index 44b87386b..63a3f5188 100644 --- a/rudder-reports/SOURCES/Makefile +++ b/rudder-reports/SOURCES/Makefile @@ -41,6 +41,7 @@ endif # Pass an empty string to skip hash check GET=get() { $(_GET) "$$1.part" "$$2" && { openssl dgst -sha256 "$$1.part" | grep -q "$$3" || { echo "Wrong checksum, aborting"; exit 1; }; } && mv "$$1.part" "$$1"; }; get +DESTDIR = $(CURDIR)/target localdepends: diff --git a/rudder-server-root/BUILD/.placeholder b/rudder-server-root/BUILD/.placeholder deleted file mode 100644 index e69de29bb..000000000 diff --git a/rudder-server-root/RPMS/.placeholder b/rudder-server-root/RPMS/.placeholder deleted file mode 100644 index e69de29bb..000000000 diff --git a/rudder-server-root/SOURCES/Makefile b/rudder-server-root/SOURCES/Makefile index 82f8faa86..7ffd4b534 100644 --- a/rudder-server-root/SOURCES/Makefile +++ b/rudder-server-root/SOURCES/Makefile @@ -20,14 +20,6 @@ RUDDER_VERSION_TO_PACKAGE = -# Autodetect presence of gnu tools -TAR := $(shell type gtar >/dev/null 2>&1 && echo gtar || echo tar) -PATCH := $(shell type gpatch >/dev/null 2>&1 && echo gpatch || echo patch) -SED := $(shell type gsed >/dev/null 2>&1 && echo gsed || echo sed) -INSTALL := $(shell type ginstall >/dev/null 2>&1 && echo ginstall || echo install) -CP_A := cp -rp -FIND := find - # GENERIC_GET: do not remove this line # This is a generic get code that is common to many of our Makefiles. # The tag is here to find them. Rudder agent has an even more generic one. @@ -49,45 +41,25 @@ endif GET=get() { $(_GET) "$$1.part" "$$2" && { openssl dgst -sha256 "$$1.part" | grep -q "$$3" || { echo "Wrong checksum, aborting"; exit 1; }; } && mv "$$1.part" "$$1"; }; get # Defauth PATHs -RUDDER_DIR = /opt/rudder DESTDIR = $(CURDIR)/target -INSTALL_DIR = $(DESTDIR)$(RUDDER_DIR) - -localdepends: ./rudder-sources - -rudder-sources.tar.bz2: - $(GET) rudder-sources.tar.bz2 https://www.rudder-project.org/archives/rudder-sources-$(RUDDER_VERSION_TO_PACKAGE).tar.bz2 "" +INSTALL_DIR = $(DESTDIR)/opt/rudder -rudder-sources: rudder-sources.tar.bz2 - bunzip2 < rudder-sources.tar.bz2 | $(TAR) xf - - mv rudder-sources-$(RUDDER_VERSION_TO_PACKAGE)*/ rudder-sources/ # the '*' is needed for nightly release - touch rudder-sources # to make it younger than the bzip source file +localdepends: build: - true install: - # Init files -ifneq (true,$(NO_INIT)) # By default install init script mkdir -p $(DESTDIR)/etc/init.d/ - $(INSTALL) -m 755 rudder-server.init $(DESTDIR)/etc/init.d/rudder-server -endif - - # Directories mkdir -p $(INSTALL_DIR)/etc/server-roles.d/ - - $(INSTALL) -m 644 rudder-server-root $(INSTALL_DIR)/etc/server-roles.d/ - - # Add postinst script mkdir -p $(INSTALL_DIR)/share/package-scripts/ + $(INSTALL) -m 755 rudder-server.init $(DESTDIR)/etc/init.d/rudder-server + $(INSTALL) -m 644 rudder-server-root $(INSTALL_DIR)/etc/server-roles.d/ $(INSTALL) -m 755 rudder-server-root-postinst $(INSTALL_DIR)/share/package-scripts/ - clean: localclean localclean: - rm -rf ./rudder-sources -veryclean: - rm -f ./rudder-sources.tar.bz2 +distclean: veryclean +veryclean: clean .PHONY: clean localclean localdepends veryclean diff --git a/rudder-server-root/SPECS/rudder-server-root.spec b/rudder-server-root/SPECS/rudder-server-root.spec index be4da7ba9..eae4b1b75 100644 --- a/rudder-server-root/SPECS/rudder-server-root.spec +++ b/rudder-server-root/SPECS/rudder-server-root.spec @@ -29,9 +29,6 @@ #================================================= %define real_name rudder-server-root %define real_epoch 1398866025 -%define rudderdir /opt/rudder -%define ruddervardir /var/rudder -%define rudderlogdir /var/log/rudder #================================================= # Header @@ -51,7 +48,7 @@ Source1: rudder-sources BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch -Requires: rudder-jetty = %{real_epoch}:%{real_version}, rudder-webapp = %{real_epoch}:%{real_version}, rudder-inventory-endpoint = %{real_epoch}:%{real_version}, rudder-inventory-ldap = %{real_epoch}:%{real_version}, rudder-reports = %{real_epoch}:%{real_version}, rudder-agent = %{real_epoch}:%{real_version}, curl +Requires: rudder-webapp = %{real_epoch}:%{real_version}, rudder-inventory-ldap = %{real_epoch}:%{real_version}, rudder-reports = %{real_epoch}:%{real_version}, rudder-agent = %{real_epoch}:%{real_version}, curl %if 0%{?sle_version} && 0%{?sle_version} >= 150000 Requires: insserv-compat @@ -118,7 +115,7 @@ fi CFRUDDER_FIRST_INSTALL=$1 -%{rudderdir}/share/package-scripts/rudder-server-root-postinst "${CFRUDDER_FIRST_INSTALL}" +/opt/rudder/share/package-scripts/rudder-server-root-postinst "${CFRUDDER_FIRST_INSTALL}" %postun #================================================= @@ -144,8 +141,8 @@ rm -rf %{buildroot} #================================================= %files %defattr(-, root, root, 0755) -%{rudderdir}/etc/ -%{rudderdir}/share/package-scripts/rudder-server-root-postinst +/opt/rudder/etc/ +/opt/rudder/share/package-scripts/rudder-server-root-postinst /etc/init.d/rudder-server #================================================= diff --git a/rudder-server-root/SRPMS/.placeholder b/rudder-server-root/SRPMS/.placeholder deleted file mode 100644 index e69de29bb..000000000 diff --git a/rudder-server-root/debian/compat b/rudder-server-root/debian/compat index 7f8f011eb..ec635144f 100644 --- a/rudder-server-root/debian/compat +++ b/rudder-server-root/debian/compat @@ -1 +1 @@ -7 +9 diff --git a/rudder-server-root/debian/control b/rudder-server-root/debian/control index 8005902a4..9a227b90a 100644 --- a/rudder-server-root/debian/control +++ b/rudder-server-root/debian/control @@ -8,7 +8,7 @@ Homepage: http://www.rudder-project.org Package: rudder-server-root Architecture: all -Depends: ${shlibs:Depends}, ${misc:Depends}, rudder-jetty, rudder-webapp (= ${binary:Version}), rudder-inventory-endpoint (= ${binary:Version}), rudder-inventory-ldap (= ${binary:Version}), rudder-reports (= ${binary:Version}), rudder-agent (= ${binary:Version}), curl, systemd +Depends: ${shlibs:Depends}, ${misc:Depends}, rudder-webapp (= ${binary:Version}), rudder-inventory-ldap (= ${binary:Version}), rudder-reports (= ${binary:Version}), rudder-agent (= ${binary:Version}), curl, systemd Description: Configuration management and audit tool - root server base package Rudder is an open source configuration management and audit solution. . diff --git a/rudder-server-root/debian/dirs b/rudder-server-root/debian/dirs deleted file mode 100644 index 60c13e826..000000000 --- a/rudder-server-root/debian/dirs +++ /dev/null @@ -1,3 +0,0 @@ -opt/rudder -opt/rudder/etc -opt/rudder/bin diff --git a/rudder-server-root/debian/install b/rudder-server-root/debian/install deleted file mode 100644 index 6c35d5af6..000000000 --- a/rudder-server-root/debian/install +++ /dev/null @@ -1,2 +0,0 @@ -opt/rudder -etc diff --git a/rudder-server-root/debian/postinst b/rudder-server-root/debian/postinst old mode 100644 new mode 100755 index 0cb1a7294..ff0d40948 --- a/rudder-server-root/debian/postinst +++ b/rudder-server-root/debian/postinst @@ -21,12 +21,11 @@ set -e case "$1" in configure) - # Is this the first installation? - CFRUDDER_FIRST_INSTALL=0 - if [ ! -x /var/rudder/cfengine-community/bin/cf-execd ]; then CFRUDDER_FIRST_INSTALL=1; fi - - /opt/rudder/share/package-scripts/rudder-server-root-postinst "${CFRUDDER_FIRST_INSTALL}" + # Is this the first installation? + CFRUDDER_FIRST_INSTALL=0 + if [ ! -x /var/rudder/cfengine-community/bin/cf-execd ]; then CFRUDDER_FIRST_INSTALL=1; fi + /opt/rudder/share/package-scripts/rudder-server-root-postinst "${CFRUDDER_FIRST_INSTALL}" ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/rudder-server-root/debian/postrm b/rudder-server-root/debian/postrm old mode 100644 new mode 100755 diff --git a/rudder-server-root/debian/preinst b/rudder-server-root/debian/preinst old mode 100644 new mode 100755 From 4981cbbbdb063cbf7a5ec2ad64bbcf9ed8d4bc9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Peccatte?= Date: Thu, 20 Dec 2018 16:46:59 +0100 Subject: [PATCH 3/3] Fixes #14020: Update rudder server root to match modern packaging recommendation --- rudder-reports/SOURCES/Makefile | 6 +-- rudder-reports/debian/rules | 2 - rudder-server-root/SOURCES/Makefile | 4 +- rudder-server-root/debian/rules | 65 +++++------------------------ 4 files changed, 16 insertions(+), 61 deletions(-) diff --git a/rudder-reports/SOURCES/Makefile b/rudder-reports/SOURCES/Makefile index 63a3f5188..633863ebd 100644 --- a/rudder-reports/SOURCES/Makefile +++ b/rudder-reports/SOURCES/Makefile @@ -18,8 +18,7 @@ .DEFAULT_GOAL := build -#RUDDER_VERSION_TO_PACKAGE = -RUDDER_VERSION_TO_PACKAGE = 5.0.1 +RUDDER_VERSION_TO_PACKAGE = # GENERIC_GET: do not remove this line # This is a generic get code that is common to many of our Makefiles. @@ -46,13 +45,14 @@ DESTDIR = $(CURDIR)/target localdepends: rudder-sources.tar.bz2: - $(GET) rudder-sources.tar.bz2 http://repository.rudder.io/sources/$(RUDDER_VERSION_TO_PACKAGE)/rudder-sources-$(RUDDER_VERSION_TO_PACKAGE).tar.bz2 "" + $(GET) rudder-sources.tar.bz2 https://repository.rudder.io/sources/$(RUDDER_VERSION_TO_PACKAGE)/rudder-sources-$(RUDDER_VERSION_TO_PACKAGE).tar.bz2 "" rudder-sources: rudder-sources.tar.bz2 tar -xjf rudder-sources.tar.bz2 mv rudder-sources-*/ rudder-sources/ build: rudder-sources + touch $@ # Install into DESTDIR install: build diff --git a/rudder-reports/debian/rules b/rudder-reports/debian/rules index 846e61754..fae0b71e8 100755 --- a/rudder-reports/debian/rules +++ b/rudder-reports/debian/rules @@ -3,8 +3,6 @@ # Uncomment this to turn on verbose mode. export DH_VERBOSE=1 -DPKG_EXPORT_BUILDFLAGS = 1 -include /usr/share/dpkg/buildflags.mk build: dh_testdir diff --git a/rudder-server-root/SOURCES/Makefile b/rudder-server-root/SOURCES/Makefile index 7ffd4b534..f46225e77 100644 --- a/rudder-server-root/SOURCES/Makefile +++ b/rudder-server-root/SOURCES/Makefile @@ -48,7 +48,7 @@ localdepends: build: -install: +install: build mkdir -p $(DESTDIR)/etc/init.d/ mkdir -p $(INSTALL_DIR)/etc/server-roles.d/ mkdir -p $(INSTALL_DIR)/share/package-scripts/ @@ -62,4 +62,4 @@ localclean: distclean: veryclean veryclean: clean -.PHONY: clean localclean localdepends veryclean +.PHONY: clean localclean localdepends verycleana diff --git a/rudder-server-root/debian/rules b/rudder-server-root/debian/rules index c54f65f02..b128ca74a 100755 --- a/rudder-server-root/debian/rules +++ b/rudder-server-root/debian/rules @@ -1,71 +1,28 @@ #!/usr/bin/make -f # -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. # Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. +export DH_VERBOSE=1 build: dh_testdir - cd SOURCES && $(MAKE) build $(MAKE_OPTIONS) + cd SOURCES && make build + touch $@ clean: dh_testdir dh_testroot - cd SOURCES && $(MAKE) clean $(MAKE_OPTIONS) - dh_clean + rm -f build install + cd SOURCES && make clean + dh_clean install: build dh_testdir dh_testroot - dh_installdirs - cd SOURCES && $(MAKE) install $(MAKE_OPTIONS) DESTDIR=$(CURDIR)/debian/tmp - # let this file be managed by dh_installinit - mv $(CURDIR)/debian/tmp/etc/init.d/rudder-server debian/rudder-server.init - + cd SOURCES && make install DESTDIR=$(CURDIR)/debian/rudder-server-root + touch $@ -# Build architecture-independent files here. -binary-indep: install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: install - dh_testdir - dh_testroot - dh_install - dh_installchangelogs -# dh_installdocs -# dh_installexamples - # Init script and configuration files - dh_installinit --name=rudder-server --no-start -R # restart after upgrade (instead of stop, upgrade, start) -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installmime -# dh_python -# dh_installcron -# dh_installinfo - dh_installman - dh_link - dh_strip - dh_compress - dh_fixperms -# dh_perl -# dh_makeshlibs - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb +# Default rule that guess what to do for missing targets +%: + dh $@ -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure