10 # copy output also to logfile
32 if [[ "$F" != "" ]]; then
33 F="$(cd "$ORIGDIR" && readlink -f "$F")" || exit 55
34 [[ -f "$F" ]] || exit 55
43 local major minor micro
44 local F="${1:-"$GITDIR/configure.ac"}"
46 vars="$(sed -n 's/^m4_define(\[nm_\(major\|minor\|micro\)_version\], *\[\([0-9]\+\)\]) *$/local \1='\''\2'\''/p' "$F" 2>/dev/null)"
49 [[ -n "$major" && -n "$minor" && "$micro" ]] || return 1
50 echo "$major.$minor.$micro"
54 if [[ "x$CHANGELOG" == x ]]; then
56 * $(LC_TIME=C date '+%a %b %d %Y') $USERNAME - %{epoch_version}:%{version}-%{release_version}%{snapshot}%{git_sha_version}
57 - build of NetworkManager ($DATE, uuid: $UUID, git: $COMMIT_FULL)
58 $(git log -n20 --date=local --format='- %h %s [%an] (%ci)')
63 fi > "$TEMP/SOURCES/CHANGELOG"
66 ORIGDIR="$(readlink -f "$PWD")"
67 SCRIPTDIR="$(dirname "$(readlink -f "$0")")"
68 LOG "Change to directory \"$SCRIPTDIR\""
69 cd "$SCRIPTDIR" || die "could not change into $SCRIPTDIR"
70 GITDIR="$(cd "$SCRIPTDIR" && git rev-parse --show-toplevel || die "Could not get GITDIR")"
72 DATE="$(date '+%Y%m%d-%H%M%S')"
74 BUILDLOG="$(mktemp ./.build.log.XXXXXXX)"
77 exec > >(tee "$BUILDLOG")
81 RELEASE_VERSION="${RELEASE_VERSION:-$(git rev-list HEAD | wc -l)}"
82 VERSION="${VERSION:-$(get_version || die "Could not read $VERSION")}"
83 COMMIT_FULL="${COMMIT_FULL:-$(git rev-parse --verify HEAD || die "Error reading HEAD revision")}"
84 COMMIT="${COMMIT:-$(git rev-parse --verify HEAD | sed 's/^\(.\{10\}\).*/\1/' || die "Error reading HEAD revision")}"
85 USERNAME="${USERNAME:-"$(git config user.name) <$(git config user.email)>"}"
86 SPECFILE="$(abs_path "$SPECFILE" "$SCRIPTDIR/NetworkManager.spec")" || die "invalid \$SPECFILE argument"
87 SOURCE_FROM_GIT="$(coerce_bool "$SOURCE_FROM_GIT" "")"
88 SOURCE="$(abs_path "$SOURCE")" || die "invalid \$SOURCE argument"
89 if [ -n "$SOURCE" ]; then
90 [[ "$SOURCE_FROM_GIT" == 1 ]] && die "Cannot set both \$SOURCE and \$SOURCE_FROM_GIT=1"
92 elif [[ "$SOURCE_FROM_GIT" != "0" ]]; then
93 SOURCE="$GITDIR/NetworkManager-${VERSION}.tar."*
94 if [ -f "$SOURCE" ]; then
102 if [[ -z "$SOURCE" && "$SOURCE_FROM_GIT" == "0" ]]; then
103 die "Either set \$SOURCE or set \$SOURCE_FROM_GIT=1"
106 SOURCE_NETWORKMANAGER_CONF="$(abs_path "$SOURCE_NETWORKMANAGER_CONF" "$SCRIPTDIR/NetworkManager.conf")" || die "invalid \$SOURCE_NETWORKMANAGER_CONF argument"
107 SOURCE_CONFIG_SERVER="$(abs_path "$SOURCE_CONFIG_SERVER" "$SCRIPTDIR/00-server.conf")" || die "invalid \$SOURCE_CONFIG_SERVER argument"
108 SOURCE_CONFIG_CONNECTIVITY_FEDORA="$(abs_path "$SOURCE_CONFIG_CONNECTIVITY_FEDORA" "$SCRIPTDIR/20-connectivity-fedora.conf")" || die "invalid \$SOURCE_CONFIG_CONNECTIVITY_FEDORA argument"
110 TEMP="$(mktemp -d "$SCRIPTDIR/NetworkManager.$DATE.XXXXXX")"
111 TEMPBASE="$(basename "$TEMP")"
113 if [[ "$SOURCE_FROM_GIT" == "1" ]]; then
114 SOURCE="$TEMP/NetworkManager-${VERSION}.tar.xz"
115 (cd "$GITDIR" && git archive --prefix="NetworkManager-$VERSION"/ "$COMMIT_FULL") | xz > "$SOURCE"
119 LOG "VERSION=$VERSION"
120 LOG "RELEASE_VERSION=$RELEASE_VERSION"
122 LOG "USERNAME=$USERNAME"
123 LOG "SPECFILE=$SPECFILE"
125 LOG "SOURCE_FROM_GIT=$SOURCE_FROM_GIT"
126 LOG "SOURCE_NETWORKMANAGER_CONF=$SOURCE_NETWORKMANAGER_CONF"
127 LOG "SOURCE_CONFIG_SERVER=$SOURCE_CONFIG_SERVER"
128 LOG "SOURCE_CONFIG_CONNECTIVITY_FEDORA=$SOURCE_CONFIG_CONNECTIVITY_FEDORA"
131 ln -snf "$TEMPBASE" ./latest0
132 ln "$BUILDLOG" "$TEMPBASE/build.log"
135 TEMPSPEC="$TEMP/SPECS/NetworkManager.spec"
136 mkdir -p "$TEMP/SOURCES/" "$TEMP/SPECS/" || die "error creating SPECS directoy"
138 cp "$SOURCE" "$TEMP/SOURCES/" || die "Could not copy source $SOURCE to $TEMP/SOURCES"
139 cp "$SOURCE_NETWORKMANAGER_CONF" "$TEMP/SOURCES/NetworkManager.conf" || die "Could not copy source $SOURCE_NETWORKMANAGER_CONF to $TEMP/SOURCES"
140 cp "$SOURCE_CONFIG_SERVER" "$TEMP/SOURCES/00-server.conf" || die "Could not copy source $SOURCE_CONFIG_SERVER to $TEMP/SOURCES"
141 cp "$SOURCE_CONFIG_CONNECTIVITY_FEDORA" "$TEMP/SOURCES/20-connectivity-fedora.conf" || die "Could not copy source $SOURCE_CONFIG_CONNECTIVITY_FEDORA to $TEMP/SOURCES"
145 sed -e "s/__VERSION__/$VERSION/g" \
146 -e "s/__RELEASE_VERSION__/$RELEASE_VERSION/g" \
147 -e "s/__COMMIT__/$COMMIT/g" \
148 -e "s/__COMMIT_FULL__/$COMMIT_FULL/g" \
149 -e "s/__SOURCE1__/$(basename "$SOURCE")/g" \
151 sed -e "/^__CHANGELOG__$/ \
153 r $TEMPBASE/SOURCES/CHANGELOG
155 }" > "$TEMPSPEC" || die "Error reading spec file"
166 rpmbuild --define "_topdir $TEMP" $RPM_BUILD_OPTION "$TEMPSPEC" $NM_RPMBUILD_ARGS || die "ERROR: rpmbuild FAILED"
168 ln -snf "$TEMPBASE" ./latest
169 TEMP_LATEST="$(readlink -f .)"/latest
173 LOG "Finished with success."
175 LOG "See \"$TEMP_LATEST/\" which symlinks to \"$TEMPBASE\""
178 ls -dla "$TEMP_LATEST" "$(dirname "$TEMP_LATEST")/$TEMPBASE/" "$TEMP_LATEST"/RPMS/*/ "$TEMP_LATEST"/RPMS/*/*.rpm "$TEMP_LATEST"/SRPMS/ "$TEMP_LATEST"/SRPMS/*.rpm 2>/dev/null | sed 's/^/ /'
180 LOG "sudo $(which dnf &>/dev/null && echo dnf || echo yum) install '$TEMP_LATEST/RPMS'/*/*.rpm"