- new: Status=Integration: RELEASE will be automatically created
- new: Add winst variable: IconFile - new: Add new winst variables: VENDOR PN VERSION RELEASE PRIORITY ADVICE TYPE CREATOR_TAG CREATOR_NAME CREATOR_EMAIL - optimize code, docu
This commit is contained in:
parent
8b262b2b46
commit
6c83a4ba2a
@ -3,6 +3,7 @@
|
||||
# Default values for OPSI builder system
|
||||
####################################################
|
||||
|
||||
|
||||
##################################
|
||||
# Global variables
|
||||
#################################
|
||||
@ -12,7 +13,8 @@ TMP_DIR=/tmp
|
||||
# CREATOR
|
||||
###############################
|
||||
# Part of the published OPSI-package name
|
||||
CREATOR_TAG=unknown
|
||||
# Limitation: max 3 chars (beause OPSI limites REVISION to 16 chars)
|
||||
CREATOR_TAG=xx
|
||||
|
||||
# Additonal information from the person creating the packages
|
||||
CREATOR_NAME="Your name"
|
||||
@ -30,6 +32,7 @@ OPSI_REPOS_PRODUCT_DIR=${OPSI_REPOS_BASE_DIR}/${STATUS}/${VENDOR}/${PN}/${VERSIO
|
||||
# OPSI-package filepattern
|
||||
OPSI_REPOS_FILE_PATTERN=${PN}_${VERSION}-${CREATOR_TAG}${RELEASE}.opsi
|
||||
|
||||
|
||||
# Force alway upload to opsi repos
|
||||
# OPSI_REPOS_FORCE_UPLOAD=1
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
# Read config
|
||||
####################
|
||||
builder_config() {
|
||||
|
||||
# Check temp dir
|
||||
test -d ${TMP_DIR}
|
||||
builder_check_error "temp directory not available: $TMP_DIR"
|
||||
@ -18,6 +19,13 @@ builder_config() {
|
||||
builder_check_error "can't read release configuration: ${PRODUCT_DIR}/product.cfg"
|
||||
. $PRODUCT_DIR/builder-product.cfg
|
||||
|
||||
# change some variable dynamically
|
||||
# - autogenerate release number, if we are in status "integration"
|
||||
if [ "$STATUS" = "integration" ] ; then
|
||||
# OPSI/control:RELEASE is limited to max 16 chars - take care in regards to the CREATOR_TAG
|
||||
RELEASE="`date +%Y%m%d%H%M`"
|
||||
fi
|
||||
|
||||
# set default build configuration and source the user dependent file
|
||||
. $BASEDIR/conf/opsi-builder.cfg
|
||||
|
||||
@ -30,7 +38,7 @@ builder_config() {
|
||||
echo "configuration error: OPSI_REPOS_BASE_DIR directory does not exist: $OPSI_REPOS_BASE_DIR"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
|
||||
}
|
||||
|
||||
#####################
|
||||
@ -48,7 +56,7 @@ builder_prepare() {
|
||||
echo "Distribution directory: $DIST_CACHE_DIR"
|
||||
|
||||
# setup work directory
|
||||
output_dir=$(mktemp -d $TMP_DIR/opsi-builder.XXXXXXXXXX) || { echo "Failed to create temp dir"; exit 1; }
|
||||
OUTPUT_DIR=$(mktemp -d $TMP_DIR/opsi-builder.XXXXXXXXXX) || { echo "Failed to create temp dir"; exit 1; }
|
||||
|
||||
}
|
||||
|
||||
@ -60,10 +68,10 @@ builder_prepare() {
|
||||
builder_retrieve() {
|
||||
|
||||
for (( i = 0 ; i < ${#SOURCE[@]} ; i++ )) ; do
|
||||
basename=${FILE[$i]}
|
||||
urls=${SOURCE[$i]}
|
||||
arch=${ARCH[$i]}
|
||||
downloaded=0
|
||||
local basename=${FILE[$i]}
|
||||
local urls=${SOURCE[$i]}
|
||||
local arch=${ARCH[$i]}
|
||||
local downloaded=0
|
||||
|
||||
# Add private repos to the urls
|
||||
if [ ! -z ${DIST_PRIVATE_REPOS} ]; then
|
||||
@ -117,10 +125,10 @@ builder_retrieve() {
|
||||
builder_create() {
|
||||
|
||||
# converting icon file
|
||||
iconfile=${DIST_FILE[$ICON_FILE_INDEX]}
|
||||
echo iconfile=$iconfile
|
||||
convert -colorspace rgb $iconfile -transparent white -background transparent -resize 160x160 \
|
||||
-size 160x160 xc:transparent +swap -gravity center -composite $output_dir/$PN.png
|
||||
local iconfile_src=${DIST_FILE[$ICON_FILE_INDEX]}
|
||||
ICONFILE=$OUTPUT_DIR/$PN.png
|
||||
convert -colorspace rgb $iconfile_src -transparent white -background transparent -resize 160x160 \
|
||||
-size 160x160 xc:transparent +swap -gravity center -composite $ICONFILE
|
||||
builder_check_error "converting image"
|
||||
|
||||
}
|
||||
@ -131,17 +139,14 @@ builder_create() {
|
||||
builder_package() {
|
||||
|
||||
# prepare
|
||||
inst_dir=$output_dir/$PN
|
||||
local inst_dir=$OUTPUT_DIR/$PN
|
||||
mkdir $inst_dir
|
||||
|
||||
# Copy files and convert text files to dos format
|
||||
cp -Rv ${PRODUCT_DIR}/OPSI $inst_dir
|
||||
cp -Rv ${PRODUCT_DIR}/CLIENT_DATA $inst_dir
|
||||
find $inst_dir/CLIENT_DATA -type f | xargs -n1 -iREP sh -c 'file -i $0 | grep "text/plain" && dos2unix $0' REP
|
||||
|
||||
# copy image
|
||||
cp -a $output_dir/$PN.png $inst_dir/CLIENT_DATA
|
||||
|
||||
|
||||
# copy binaries
|
||||
for (( i = 0 ; i < ${#SOURCE[@]} ; i++ )) ; do
|
||||
distfile=${DIST_FILE[$i]}
|
||||
@ -150,14 +155,26 @@ builder_package() {
|
||||
done
|
||||
|
||||
# create variables
|
||||
var_file=$output_dir/variable.ins
|
||||
local var_file=$OUTPUT_DIR/variable.ins
|
||||
echo -n >$var_file
|
||||
for (( i = 0 ; i < ${#SOURCE[@]} ; i++ )) ; do
|
||||
if [ -z ${WINST[$i]} ] ; then continue ; fi
|
||||
if [ ! -z "${ARCH[$i]}" ] ; then arch_str="${ARCH[$i]}\\" ; fi
|
||||
echo "DefVar \$${WINST[$i]}\$" >>$var_file
|
||||
echo "Set \$${WINST[$i]}\$ = \"%ScriptPath%\\$arch_str${FILE[$i]}\"" >>$var_file
|
||||
echo "Set \$${WINST[$i]}\$ = \"%ScriptPath%\\$arch_str${FILE[$i]}\"" >>$var_file
|
||||
done
|
||||
|
||||
# publish some other variables
|
||||
for var in VENDOR PN VERSION RELEASE PRIORITY ADVICE TYPE CREATOR_TAG CREATOR_NAME CREATOR_EMAIL ; do
|
||||
echo "DefVar \$${var}\$" >>$var_file
|
||||
echo "Set \$${var}\$ = \"${!var}\"" >>$var_file
|
||||
done
|
||||
|
||||
# copy image and create variable
|
||||
cp -a $ICONFILE $inst_dir/CLIENT_DATA
|
||||
echo "DefVar \$IconFile\$" >>$var_file
|
||||
echo "Set \$IconFile\$ = \"%ScriptPath%\\`basename $ICONFILE`\"" >>$var_file
|
||||
|
||||
echo >>$var_file
|
||||
|
||||
# add the new vaiables to all *.ins winst files
|
||||
@ -169,7 +186,8 @@ builder_package() {
|
||||
done
|
||||
|
||||
# replace variables from OPSI control
|
||||
sed -e "s!VERSION!$VERSION!g" -e "s!RELEASE!$RELEASE!g" -e "s!PRIORITY!$PRIORITY!g" -e "s!ADVICE!$ADVICE!g" ${PRODUCT_DIR}/OPSI/control >$inst_dir/OPSI/control
|
||||
local release_new=${CREATOR_TAG}${RELEASE}
|
||||
sed -e "s!VERSION!$VERSION!g" -e "s!RELEASE!${release_new}!g" -e "s!PRIORITY!$PRIORITY!g" -e "s!ADVICE!$ADVICE!g" ${PRODUCT_DIR}/OPSI/control >$inst_dir/OPSI/control
|
||||
|
||||
# Create changelog based on git - if available
|
||||
if [ -d "${PRODUCT_DIR}/.git" ] ; then
|
||||
@ -187,15 +205,17 @@ builder_package() {
|
||||
call_entry_point result cb_package_makeproductfile
|
||||
|
||||
# building package
|
||||
pushd ${output_dir}
|
||||
rm -f ${PN}_${VERSION}-${RELEASE}.opsi $OPSI_REPOS_FILE_PATTERN
|
||||
local opsi_file=${PN}_${VERSION}-${release_new}.opsi
|
||||
pushd ${OUTPUT_DIR}
|
||||
rm -f ${opsi_file} $OPSI_REPOS_FILE_PATTERN
|
||||
opsi-makeproductfile -v $inst_dir
|
||||
builder_check_error "Building OPSI-package"
|
||||
popd
|
||||
|
||||
# rename opsi package file
|
||||
if [ "${PN}_${VERSION}-${RELEASE}.opsi" != "$OPSI_REPOS_FILE_PATTERN" ]; then
|
||||
mv ${output_dir}/${PN}_${VERSION}-${RELEASE}.opsi ${output_dir}/$OPSI_REPOS_FILE_PATTERN
|
||||
if [ "${opsi_file}" != "$OPSI_REPOS_FILE_PATTERN" ]; then
|
||||
mv ${OUTPUT_DIR}/${opsi_file} ${OUTPUT_DIR}/$OPSI_REPOS_FILE_PATTERN
|
||||
builder_check_error "can't move file ${OUTPUT_DIR}/${opsi_file} ${OUTPUT_DIR}/$OPSI_REPOS_FILE_PATTERN"
|
||||
fi
|
||||
|
||||
}
|
||||
@ -207,7 +227,7 @@ builder_publish() {
|
||||
|
||||
# Upload file to repository
|
||||
mkdir -p ${OPSI_REPOS_PRODUCT_DIR}
|
||||
local src=$output_dir/${OPSI_REPOS_FILE_PATTERN}
|
||||
local src=$OUTPUT_DIR/${OPSI_REPOS_FILE_PATTERN}
|
||||
local dst=${OPSI_REPOS_PRODUCT_DIR}/${OPSI_REPOS_FILE_PATTERN}
|
||||
echo "Publishing opsi-package to $dst"
|
||||
cp $src $dst
|
||||
@ -231,7 +251,7 @@ builder_commit() {
|
||||
#####################
|
||||
builder_cleanup() {
|
||||
# Paranoia
|
||||
if [ -d "$output_dir" ] && [[ $output_dir == $TMP_DIR/opsi-builder.* ]] ; then
|
||||
rm -rf $output_dir
|
||||
if [ -d "$OUTPUT_DIR" ] && [[ $OUTPUT_DIR == $TMP_DIR/opsi-builder.* ]] ; then
|
||||
rm -rf $OUTPUT_DIR
|
||||
fi
|
||||
}
|
||||
|
@ -8,6 +8,17 @@ RELEASE="3"
|
||||
PRIORITY="0"
|
||||
ADVICE=""
|
||||
|
||||
# STATUS - defines the stabability of the build
|
||||
# Valid values:
|
||||
# integration: this is used by a continuous integration server.
|
||||
# Note: The RELEASE will be set AUTOMATICALLY !!
|
||||
# testing : it's in the testing/QM process
|
||||
# release : passed the testing and go's to productive
|
||||
STATUS="integration"
|
||||
|
||||
# TYPE - defines, if the install files are public or restricted.
|
||||
# Valid value: restrict | public
|
||||
TYPE="public"
|
||||
|
||||
|
||||
#################
|
||||
|
@ -13,6 +13,9 @@
|
||||
# the defined builder script itself. Also, calling the predefined
|
||||
# targets builder_<targetname> is possible.
|
||||
#
|
||||
# Abstract:
|
||||
# target order: config, prepare, retrieve, create, package, publish, commit, cleanup
|
||||
# callbacks: cb_package_makeproductfile
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user