# # Maintainer Makefile # # WARNING: # THIS IS EXPERIMENTAL - DO NOT USE (YET) ! # * This Makefile is only useful to RTEMS maintainers # * You must have write access to RTEMS CVS # * Running this Makefile modifies RTEMS CVS # * Watch out for warning and error messages - Do NOT IGNORE them! # MAINTAINER notes: # Cutting a new release: # 1. Perform a non-anonymous cvs checkout of the BRANCH # you want to cut a release tarball from # 2. Run "make -f Makefile.maint new-revision" # (rsp. "make -f Makefile.maint new-minor"). # 3. Run "make -f Makefile.maint commit" # 4. Run "make -f Makefile.maint tag" # 5. Run "make -f Makefile.maint tarball" # ----------------- # SECURITY: Append a string to tag to avoid accidentially screwing up cvs-tags # For "hot runs" you will want to use "make -f Makefile.maint TAG_SUFFIX= " TAG_SUFFIX = -test1 rtems_version := $(shell cat VERSION | sed -n '/.* Version /{s/^.*Version[ ]*\([0-9\.]\+\)/\1/p};') rtems_tag := $(shell echo "rtems-$(rtems_version)" | tr . -) rtems_api := 4.10 PATH := /opt/rtems-$(rtems_api)/bin:$(PATH) # ----------------- # Cleanup check out and cvs-tag the files inside tag: cvs -q -z9 up -dP ./bootstrap -p >/dev/null cvs -q tag -c $(rtems_tag)$(TAG_SUFFIX) # ----------------- # Different stages of cvs-exporting rtems-$(rtems_version)/stamp.export.$(rtems_tag)$(TAG_SUFFIX): rm -rf rtems-$(rtems_version) @cvs -q -z9 export -d rtems-$(rtems_version) -r $(rtems_tag)$(TAG_SUFFIX) rtems @if ! test -f rtems-$(rtems_version)/VERSION; then \ echo "ERROR export failed"; \ echo " Did you run 'make -f Makefile.maint tag' ?"; exit 1; fi echo "$(rtems_tag)$(TAG_SUFFIX)" > rtems-$(rtems_version)/stamp.export.$(rtems_tag)$(TAG_SUFFIX) rtems-$(rtems_version)$(TAG_SUFFIX).tar.bz2: rtems-$(rtems_version)/stamp.autofiles \ rtems-$(rtems_version)/excludes \ rtems-$(rtems_version)/TOOL_VERSIONS cd rtems-$(rtems_version) ; \ touch doc/ada_user/ada_user.texi doc/bsp_howto/bsp_howto.texi \ doc/cpu_supplement/cpu_supplement.texi \ doc/develenv/develenv.texi doc/filesystem/filesystem.texi \ doc/networking/networking.texi \ doc/new_chapters/new_chapters.texi \ doc/porting/porting.texi doc/posix1003.1/posix1003_1.texi \ doc/posix_users/posix_users.texi doc/relnotes/relnotes.texi \ doc/started/started.texi doc/user/c_user.texi tar -cj -X rtems-$(rtems_version)/excludes \ -f rtems-$(rtems_version)$(TAG_SUFFIX).tar.bz2 rtems-$(rtems_version) ## Touching the top pages in the various manuals results in the date ## on their title page matching the release date. rtems-$(rtems_version)/stamp.cleanup: rtems-$(rtems_version)/stamp.export.$(rtems_tag)$(TAG_SUFFIX) find rtems-$(rtems_version) -name .cvsignore -exec rm -f {} \; find rtems-$(rtems_version) -name preinstall.am -exec touch {} \; rm -rf rtems-$(rtems_version)/contrib touch rtems-$(rtems_version)/stamp.cleanup rtems-$(rtems_version)/stamp.autofiles: rtems-$(rtems_version)/stamp.cleanup cd rtems-$(rtems_version) && ./bootstrap -r touch rtems-$(rtems_version)/stamp.autofiles rtems-$(rtems_version)/excludes: Makefile.maint @echo "Generating $@" @echo "excludes" > $@ @echo "stamp.*" >> $@ @echo "autom4te.cache" >> $@ @echo "Makefile.maint" >> $@ tarball: rtems-$(rtems_version)$(TAG_SUFFIX).tar.bz2 rtems-$(rtems_version)/TOOL_VERSIONS: Makefile.maint ( \ date ; \ echo ; \ echo "This file contains configuration information on the " ; \ echo "primary computer used to test and make the $(rtems_version)" ; \ echo "version of RTEMS" ; \ echo ; \ echo "OS Version: " `head -1 /etc/issue` ; \ echo ; \ echo "The following RTEMS RPMs were installed on the machine" ; \ echo "where this release was made:" ; \ echo ; \ rpm -qa 'rtems-$(rtems_api)-*' | sort | sed -e 's/^/ /' ; \ echo \ ) > $@ # ----------------- # Create a new minor release # increments the 2nd digit of the version number # set the 3rd digit of the version number to 0 # Example: 4.6.99.4 -> 4.7.0 new-minor: @v=$$(echo $(rtems_version) | sed 's,^\([0-9]\+\).*,\1,'); \ r=$$(echo $(rtems_version) | sed 's,^[0-9]\+\.\([0-9]\+\).*,\1,'); \ r=$$(($$r + 1)); version="$$v.$$r.0"; \ echo "New minor release: $$version"; \ sed -i -e "s|\[_RTEMS_VERSION\],\[.*\]|\[_RTEMS_VERSION\],\[$$version\]|" \ $(VERSION_FILES); \ sed -i -e "s,\(^RTEMS Version\).*,\1 $$version," VERSION # Create a new revision release # increments the last digit of the version number # Examples: 4.6.99.4 -> 4.6.99.5 # 4.7.0 -> 4.7.1 new-revision: @m=$$(echo $(rtems_version) | sed 's,^\(.*\)\.[0-9]\+,\1,'); \ n=$$(echo $(rtems_version) | sed 's,^.*\.\([0-9]\+\),\1,'); \ n=$$(($$n + 1)); version="$$m.$$n";\ echo "New revision release: $$version"; \ sed -i -e "s|\[_RTEMS_VERSION\],\[.*\]|\[_RTEMS_VERSION\],\[$$version\]|" \ $(VERSION_FILES); \ sed -i -e "s,\(^RTEMS Version\).*,\1 $$version," VERSION # ----------------- # Create a new branch # increments the 2nd digit of the version number # set the 3rd digit of the version number to 99 # set the 4rd digit of the version number to 0 # Example: 4.6.34.4 -> 4.7.99.0 new-branch: v=$$(echo $(rtems_version) | sed 's,^\([0-9]\+\).*,\1,'); \ r=$$(echo $(rtems_version) | sed 's,^[0-9]\+\.\([0-9]\+\).*,\1,'); \ r=$$(($$r + 1)); version="$$v.$$r.99.0"; \ api="$$v.$$(($$r + 1))"; \ echo "New branch release: $$version"; \ sed -i -e "s|\[_RTEMS_VERSION\],\[.*\]|\[_RTEMS_VERSION\],\[$$version\]|" \ -e "s|\[_RTEMS_API\],\[.*\]|\[_RTEMS_API\],\[$$api\]|" \ $(VERSION_FILES); \ sed -i -e "s,\(^RTEMS Version\).*,\1 $$version," VERSION VERSION_FILES += aclocal/version.m4 VERSION_FILES += cpukit/aclocal/version.m4 VERSION_FILES += c/src/aclocal/version.m4 VERSION_FILES += testsuites/aclocal/version.m4 CVS_RUN := $(shell if [ -n "$(TAG_SUFFIX)" ]; then echo "cvs -n"; else echo "cvs"; fi) commit: $(CVS_RUN) commit -m "Upgrade to $(rtems_version)" \ $(VERSION_FILES) VERSION .PHONY: commit new-minor new-revision new-branch tag tarball