I am running the latest version of amforth on an avrbutterfly.

Brian

On 8/30/20 1:09 PM, Erich =?utf-8?Q?W=C3=A4lde?= wrote:
More details on Point 4 (see below).
Cheers,
Erich

Erich Wälde writes:

Dear AmForthers,

I asked:
  - How do I actually create a new release? Copying the files is
    one thing, but where do I need to change the version? There
    is more than one place, I'm afraid. I also happen to know
    that after 6.9 there cannot be 6.10 due to a limitation
    created very early. Matthias told me that, otherwise I would
    be clueless.
see https://sourceforge.net/p/amforth/mailman/message/37048278/



How to create an official release?

I spent some time to do some code archeology. I still do not know,
how to properly make a release. This is, what I currently
see/expect:

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.
Digging through the ./appl/ subdirectory I think I understand the
following:

- There are currently 8 target directories.

- all of them have either build.xml or Makefile files

- of the AVR8 targets all can be build with the exception of
   "arduino/leonardo" --- this runs into the "8k is too small"
   limitation. There used to be an avr-butterfly target (up to
   6.4), which suffers from the same limitation, iirc.

   AVR needs the wine/avrasm2.exe toolchain.

- the remaining targets need different toolchains, which I have not
   installed at this moment.

   - hifive1         riscv64-linux-gnu-as
     In the download section Matthias has provided a toolchain, see:
     https://sourceforge.net/projects/amforth/files/Risc-V-Tools/
     However, this toolchain is very hip today, so it is available
     at den Debian repositories as well: gcc-riscv64-linux-gnu/stable

     I actually have such a board collecting dust in the corner :-/

   - launchpad-arm   arm-none-eabi-as
     This toolchain is available at the debian repositories as well:
     gcc-arm-none-eabi/stable

   - launchpad430    naken_asm
     This tool is available, maintained and probably quite mature:
     http://www.mikekohn.net/micro/naken_asm.php
     In 2015 I have made experiments with this toolchain, so this
     part is probably doable.

   - inux-arm        arm-linux-gnueabi-as
     This toolchain is available at the debian repositories as well:
     gcc-arm-linux-gnueabi/stable

   I do not have any msp430 or arm boards any more. I have given
   them away.

   So all in all, the toolchains are available. Matthias has
   probably built a bunch of docker containers to run them :-)


A little while later:

Installing the missing toolchains on Debian turns out to be
fairly simple (thank you, Debianistas!):

# apt install binutils-riscv64-linux-gnu \
   binutils-arm-linux-gnueabi \
   binutils-arm-none-eabi

I had a copy of naken_asm (from 201(5) in some corner and with
that executable on the PATH, I could build launchpad430

So with the exception of arduino/leonardo.* I managed to build
everything that shows up in the release archive.


ew@ceres:~/Forth/amforth/trunk/appl 119 > ls -l */*.hex */amforth
-rw-r----- 1 ew ew   239 2020-08-30 11:28 arduino/duemilanove.eep.hex
-rw-r----- 1 ew ew 26843 2020-08-30 11:28 arduino/duemilanove.hex
-rw-r----- 1 ew ew   239 2020-08-30 11:28 arduino/mega128.eep.hex
-rw-r----- 1 ew ew 27959 2020-08-30 11:28 arduino/mega128.hex
-rw-r----- 1 ew ew   239 2020-08-30 11:28 arduino/uno.eep.hex
-rw-r----- 1 ew ew 27157 2020-08-30 11:28 arduino/uno.hex

-rw-r----- 1 ew ew   239 2020-08-30 11:31 atmega2561/atmega256.eep.hex
-rw-r----- 1 ew ew 27481 2020-08-30 11:31 atmega2561/atmega256.hex

-rw-r----- 1 ew ew   239 2020-08-30 11:27 eval-pollin/p1284-16.eep.hex
-rw-r----- 1 ew ew 28096 2020-08-30 11:27 eval-pollin/p1284-16.hex
-rw-r----- 1 ew ew   239 2020-08-30 11:27 eval-pollin/p16-8.eep.hex
-rw-r----- 1 ew ew 27518 2020-08-30 11:27 eval-pollin/p16-8.hex
-rw-r----- 1 ew ew   239 2020-08-30 11:27 eval-pollin/p32-8.eep.hex
-rw-r----- 1 ew ew 27682 2020-08-30 11:27 eval-pollin/p32-8.hex
-rw-r----- 1 ew ew   239 2020-08-30 11:27 eval-pollin/p328-16.eep.hex
-rw-r----- 1 ew ew 27771 2020-08-30 11:27 eval-pollin/p328-16.hex
-rw-r----- 1 ew ew   239 2020-08-30 11:27 eval-pollin/p644-16.eep.hex
-rw-r----- 1 ew ew 27796 2020-08-30 11:27 eval-pollin/p644-16.hex

-rw-r----- 1 ew ew 47833 2020-08-30 13:17 hifive1/hifive1.hex

-rw-r----- 1 ew ew 44449 2020-08-30 13:23 launchpad-arm/lp-stellaris.hex
-rw-r----- 1 ew ew 23068 2020-08-30 13:12 launchpad430/lp-2553.hex
-rw-r----- 1 ew ew 23132 2020-08-30 13:12 launchpad430/lp-5529.hex
-rw-r----- 1 ew ew 22568 2020-08-30 13:12 launchpad430/lp-5969.hex

-rwxr-x--- 1 ew ew 68528 2020-08-30 13:20 linux-arm/amforth*

-rw-r----- 1 ew ew   239 2020-08-30 11:34 template/template.eep.hex
-rw-r----- 1 ew ew 27475 2020-08-30 11:34 template/template.hex
This pretty much solves point 4



So the whole thing more "shell script like"

cd /path/to/../amforth/trunk
( cd avr8; ln -s /path/to/AvrAssembler2 ./Atmel )

cd appl
# these are avr targets
# arduino fails on leonardo (8k too small problem)
for DIR in arduino atmega2561 eval-pollin template
do
     ( cd $DIR; ant compile )
done

sudo apt install binutils-riscv64-linux-gnu \
     binutils-arm-linux-gnueabi \
     binutils-arm-none-eabi

for DIR in hifive1 launchpad-arm linux-arm
do
     ( cd $DIR; make )
done

# remove the "git-info" dependency from launchpad430/build.xml
( cd launchpad430; make lp-2553.hex lp-5529.hex lp-5969.hex )


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.

If anyone has some insight or detail I'm missing, I would be
happy to hear about it. I propose to rework this into a .rst
document and add it to the source tree, once missing bits have
emerged (points 4, 6, 7).

Cheers,
Erich


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


_______________________________________________
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