As promised.
The file is plain ascii .org mode format:

--- Howto-make-a-release.org -----------------------------------
# 2020-10-12  amforth/erwaelde

* How to properly make a release?

  Somewhat machine readable version.

** Intro

   #+begin_quote
 1. check all version numbers in trunk

    - doc/Makefile being one place. This seems to be used in all
      generated documentation, which is nice.
    - common/words/env-forthversion.asm is another place with different
      syntax!
    Judging by commit r2271, these are all places indeed. Yay!

 2. update doc/source/index.rst and optionally history.rst in
    trunk and commit

 3. "svn copy" trunk to releases/$VERSION; commit message collects
    the accumulated one line change descriptions
    This is the most visible change in the source tree
    e.g. see commit r2244 (rel 6.5)

 4. create all .hex files for target boards in appl/
    arduino,atmega2561,eval-pollin,hifive1,launchpad-arm,launchpad430,
    template

    I had forgotten that these exsisted. They are in the release archive
    only, not in the source tree. Now I understand, why people
    sometimes ask about them.

    This step is detailed in a few .xml files. Matthias used ant to
    build them. I have not built these before, but this looks doable,
    provided I get all relevant toolchains up and running.

 5. create the documentation
    - htdocs, the web page
    - books, did you know that all the content of the webpage shows up
      in amforth.pdf (made with pdflatex) and AmForth.epub (made with
      sphinx-build)? Amazing! These books are part of the download .zip
      archive.

      This step is a "cd doc; make all" --- provided sphinx pdflatex
      and all the good stuff is installed.

 6. create a new temporary tree to collect everything, that goes into
    the release archive:
    - sources
    - some of the scripts, tools, meta-files
    - the generated documentation from releases/$VERSION, without the
      document sources, but including the "books"

    I have not found anything that looks like doing this.

 7. create the .zip and .tar.gz archives (the easy part), and upload
    them to their correct location in the sourceforge.net file tree
    (the not so obvious part).

    I found out that these release archives were built by Matthias.
    The files for 6.8 are about 7 MB in size.

    Whereas if you download "the latest sources", sourceforge will
    generate a snapshot of "trunk". This is a plain copy, without all
    the niceties included in the archives mentioned here. This archive
    is currently 35 MB in size.

 8. sync the generated documentation with the online website

    I have done this a few times now, but I'm still asking myself, if I
    see all relevant pieces or not.

 9. Increment the version numbers in trunk and commit


 So nine easy steps to code nirvana? Hmmm.
   #+end_quote


** Go to the correct directory

   #+begin_src sh
cd ~/eGeek/sourceforge.net/amforth-code
   #+end_src

** Check current Version Strings

   Fortunately only three files:

   #+begin_src sh
(
    cd trunk
    grep '^VERSION' doc/Makefile

    cat common/words/env-forthversion.asm
    cat shared/words/env-forthversion.s
)
   #+end_src

** update doc/source/index.rst

   Do /not/ delete any blank lines in this file, they are sorely needed!

   #+begin_src diff
ew@ceres:~/eGeek/sourceforge.net/amforth-code 7 > svn diff trunk/
Index: trunk/doc/source/index.rst
===================================================================
--- trunk/doc/source/index.rst  (revision 2451)
+++ trunk/doc/source/index.rst  (working copy)
@@ -36,6 +36,9 @@
 See the code section at Sourceforge to get the
 `most recent sources 
<http://sourceforge.net/p/amforth/code/HEAD/tree/trunk/>`__
 
+18.10.2020: release 6.9
+.......................
+
 * tools/amforth-shell.py fixed python3 error (in --no-error-on-output
   option path), fix provided by Tristan Williams.
 * tools/amforth-shell.py fixed indentation error in line 1146, fix provided by 
Tristan Williams.
   #+end_src

   : svn commit trunk/doc/source/index.rst -m 'call it version 6.9'
   : svn up


** create releases/$Version

   #+begin_src sh
svn cp trunk/ releases/6.9
   #+end_src

   Alle ? Dateien werden hier mitkopiert, aber wenigstens nicht mit
   add verziert. Aha.

   edit svn.msg, collect all comments from index.rst since last release

   : svn commit . --file svn.msg
   : svn up


** increment $Version

   : vi trunk/doc/Makefile
   : vi trunk/common/words/env-forthversion.asm
   : vi trunk/shared/words/env-forthversion.s
   : svn commit trunk/doc/Makefile trunk/common/words/env-forthversion.asm 
trunk/shared/words/env-forthversion.s -m 'Increment version to 7.0'


** commit

   see e.g. r2432 .. r2434

** checkout a temp. release tree

   #+begin_src sh
cd ~
mkdir tmp-amforth-code
cd tmp-amforth-code
svn checkout svn://svn.code.sf.net/p/amforth/code/releases/6.9
cd 6.9
# add Atmel AvrAsm2 tree
wget 
https://sourceforge.net/projects/amforth/files/Atmel-AVR8-Assembler/Atmel-Assembler.tgz
tar xf Atmel-Assembler.tgz # unpacks into ./avr8/Atmel

(
    cd appl
    ( cd hifive1 && make )         # hifive1, riscv64-linux-gnu-as
    ( cd linux-arm && make )       # linux-arm, arm-linux-gnueabi-as
    ( cd launchpad-arm && make )   # launchpad-arm, arm-none-eabi-as

    (                              # several, wine AvrAsm2
        for DIR in arduino atmega2561 eval-pollin template
        do
            ( cd $DIR; ant compile )
        done

    )
)
   #+end_src


** in release/$Version create .hex files

   Das hab ich neulich mal ausgetüftelt:
   #+begin_src sh
# once, on Debian 10 at this moment:
(
    sudo -i
    apt install binutils-riscv64-linux-gnu binutils-arm-linux-gnueabi 
binutils-arm-none-eabi
)
(
    cd ~/Projekte/17_naken_asm
    git clone https://github.com/mikeakohn/naken_asm
    cd naken_asm
    ./configure
    make
    ./naken_asm | grep -i version  # Version: March 15, 2020 # BROKEN ???
    cp ./naken_asm ~/bin/
    naken_asm | grep -i version    # Version: December 28, 2015
)
tar xf ~/Forth/amforth/Atmel-Assembler.tgz
mv avr8/Atmel/ .
rmdir avr8
# always:
(
    cd release/6.9
    ( cd avr8 && ln -snf ../../../Atmel . )

    cd appl
    ( cd hifive1 && make )         # hifive1, riscv64-linux-gnu-as
    ( cd linux-arm && make )       # linux-arm, arm-linux-gnueabi-as
    ( cd launchpad-arm && make )   # launchpad-arm, arm-none-eabi-as

    (                              # several, wine AvrAsm2
        for DIR in arduino atmega2561 eval-pollin template
        do
            ( cd $DIR; ant compile )
        done

    )
                                   # launchpad430, naken_asm
    ( cd launchpad430 && make lp-2553.hex lp-5529.hex lp-5969.hex )
)

   #+end_src

   TEST them!!! This is the unresolved bit at this moment ...

   no need to commit the artefacts. They are included in the
   release-$version.tar.gz archive.


** in release/$Version build the documentation

   #+begin_src sh
(
    cd release/6.9/
    rm -fr ./avr8/Atmel ./doc/Projects ./doc/build

    cd doc
    make all sitemap
)
   #+end_src

** create a new release tar archive

   #+begin_src sh
(
    version=6.9
    cd release/${version}
    mkdir ../amforth-${version}

    cp -a examples/ avr8/ LICENSE.txt  \
       risc-v/ appl/ shared/ common/ arm/ readme.txt  msp430/  tests/ \
       ../amforth-${version}/
    mkdir ../amforth-${version}/tools
    cp -a tools/{am4up.c,amforth-upload.py,amforth-shell.py} 
../amforth-${version}/tools
    mkdir ../amforth-${version}/doc
    cp -a doc/build/htdocs/ ../amforth-${version}/doc/
    mkdir ../amforth-${version}/doc/tools
    cp -a doc/tools/{forth.py,_mapping.py} ../amforth-${version}/doc/tools/
    mv ../amforth-${version}/doc/htdocs/AmForth.epub ../amforth-${version}/doc/
    mv ../amforth-${version}/doc/htdocs/amforth.pdf ../amforth-${version}/doc/


    cd ..
    tar -czvf amforth-${version}.tar.gz ./amforth-${version}
    zip -r    amforth-${version}.zip      amforth-${version}

)
   #+end_src

   Wenn man die Unterschiede zum 6.8 tar.gz anguckt:
   - -104 ich hab viele no-jtag.asm weggeschmissen.
   - +4 ich hab in launchpad430 hex files gebaut, die fehlen in 6.8
   - +4 Opinion
   - +58 Projects/ClockWorks
   - +2 Projects/RS485
   - +2 refcard
   - +3 .js .css
   - +20 doc/_images

   Die Zahl kann ich jetzt nicht komplett nachvollziehen, aber die
   Unterschiede sind plausibel. Das passt so schon einigermaßen.

** create the new website and sync

   die wohnt jetzt unter
   : releases/6.9/doc/build/htdocs
   oder?

** Increment Version numbers in trunk and commit

   #+begin_src sh
(
    cd trunk/doc
    sed -i.bak -e '/^VERSION/s/6.9/7.0/' Makefile
)
(
    cd trunk/common/words
    sed -i.bak -e 's/\.dw 69/\.dw 70/' env-forthversion.asm
)
svn st
svn commit trunk/doc/Makefile trunk/common/words/env-forthversion.asm -m 'start 
version 7.0'
   #+end_src


** upload release tar archive(s)


** send announcement


** update the website!!!

   #+begin_src sh
cd ~
mkdir tmp-amforth-website
cd tmp-amforth-website
svn checkout svn://svn.code.sf.net/p/amforth/code/trunk
cd trunk/doc
make htdocs

cd ~/eGeek/sourceforge.net/amforth-web/
mkdir amforth-2020-10-18-upload
cp -a amforth/amforth_config.xml amforth/cgi-bin/ amforth/upload  
amforth-2020-10-18-upload/
cp -a ~/tmp-amforth-website/trunk/doc/build/htdocs/ amforth-2020-10-18-upload/

cd amforth-2020-10-18-upload/
rsync -vax --delete . erwae...@web.sourceforge.net:/home/project-web/amforth
   #+end_src

   puhh.
----------------------------------------------------------------

-- 
May the Forth be with you ...


_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
Amforth-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amforth-devel

Reply via email to