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