This is a list of things I do when getting a release ready, mostly
here for me to follow when doing a release.
After everything is ready, on Linux(x86_64 and arm64), Windows, MacOS,
and FreeBSD do:
mkdir Ztest
../configure --enable-internal-trace
make -j<n>
make check
make install DESTDIR=$HOME/tmp/install
rm -rf $HOME/tmp/install
cd ..
rm -rf Ztest
(on FreeBSD use gmake instead of make)
and obviously everything should pass on all platforms. Before running
tests on Linux, make sure the serialsim driver is installed so it will
be able to run all the tests.
Install it on a local system, make sure the serialsim driver is
installed, and run the ser2net tests.
Then create the new version. To do this:
- Edit configure.ac, change the version in both places right at the
top. Also fix it in gensio.iss in MyAppVersion.
- If necessary, update GENSIO_LIB_VERSION in configure.ac. Do an
"info libtool" and look under "Versioning" then "Updating version
info" for the rules, which are complicated. The library version
will be "C - A", if that changes from the previous version, you
need to update MyAppLibVersion in gensio.iss. Note that if you
change C and A together (like if there were only additions and
not removals or changes to the API) the version doesn't change.
- Commit those changes with the subject "Move to version x.x.x"
- Tag the current version with "git tag -s vx.x.x". I usually just
use "Gensio x.x.x" for the tag text, as it's not that important.
- Do a "git push" then "git push origin vx.x.x" to get it into git.
- Create the tarball. I do "make distcheck" on Linux and make sure
everything builds, installs, uninstalls, etc. ok.
So now we have a tarball and everything in git. Now we have to build
on Windows, after doing a get pull to get everthing:
- rm -rf $HOME/install/Gensio
- I have a build directory lying around set up with "../configure".
From there do "make -j<x>" then "make install DESTDIR=$HOME/install".
- rm $HOME/install/Gensio/lib/*.la
- Then run the "Inno Setup Compiler" and select gensio.iss in the
main gensio directory.
- The output will be named "Gensio.exe" in the home directory. Rename
it "Gensio-x.x.x-windows.exe" and copy that to the Linux system
where you upload everything.
Now on github, create the release and upload Gensio-x.x.x-windows.exe
and gensio-x.x.x.tar.gz as part of the release.
Now we can check homebrew on MacOS. On a MacOS system, do:
- Do a sha256sum on the gensio-x-x-x.tar.gz file.
- vi /opt/homebrew/cd Library/Taps/homebrew/homebrew-core/Formula/g/gensio.rb
and edit the version number and set the sha256.
- HOMEBREW_NO_INSTALL_FROM_API=1 brew reinstall --build-from-source
gensio It should complete without error. Well, there may be errors
about being unable to uninstall the old version, but that's ok. It
will tell you how to remove it by hand. Then do a "brew test
gensio" and "brew audit gensio"
- Do "sudo sudo brew services stop gensio" then "sudo sudo brew
services start gensio" and test that gtlsshd works.
- Do "sudo sudo brew services stop ser2net" then "sudo sudo brew
services start ser2net" and test that ser2net works.
If MacOS fails for some reason, you have to back everything out and
start over :(.