[squeak-dev] Building with a strict(er) C99 compiler

David T. Lewis lewis at mail.msen.com
Thu Dec 1 01:21:49 UTC 2022


Hi Florian,

On Tue, Nov 29, 2022 at 01:10:45PM +0100, Florian Weimer wrote:
> I'm trying to build the VM with a C compiler which does not accept
> implicit function declarations or implici int.
> 
> This is in preparation for a future change in GCC and Clang defaults.
> More information is here:
> 
>   <https://fedoraproject.org/wiki/Changes/PortingToModernC>
>   <https://fedoraproject.org/wiki/Toolchain/PortingToModernC>
> 
> (The second link points to a container image with an instrumented GCC
> that can be used for experiments, or you can just inject
> -Werror=implicit-function-declaration -Werror=implicit-int into the
> build, which has the same results if compiler flags injection works
> reliably throughout the build environment.)
> 
> According to Fedora's records Squeak-4.10.2.2614-src-no-mp3 was
> downloaded from <http://squeakvm.org/unix/release/>.
> 

This is the traditional Squeak VM, which is useful for Squeak images
up through Squeak 4.6. This VM is hosted at http://squeakvm.org.
Newer and current Squeak images use the opensmalltalk-vm VM, which
is hosted at https://github.com/OpenSmalltalk/opensmalltalk-vm.

Recently we had some work under way to update the Debian distribution,
which currently has only the older traditional Squeak VM, so that
the installed VMs on Debian would include both the older and newer
VMs. This would enable users to run various Squeak images without
worrying about what VM to select. The work is incomplete and I
don't know if it will ever be finished, but the basic package
strategy would presumably be similar for RH and Debian.

I am attaching a script that you can use to pull the latest sources
for the traditional VM, and create a source tarball. This is the
tarball that we were using for the Debian package update (unfinished)
and it would give you a set of up to date sources that would
probably be suitable for RH also. You will need to install Subversion,
then just run the script in a clean directory to produce the source
tar Squeak-4.19.15-3822-src.tar.gz.

For reference, the script comes from the Subversion repository at
http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/platforms/unix/cmake/mkunixtar?revision=3814&view=markup

General information on building the VM for unix is at https://wiki.squeak.org/squeak/6354.

HTH,
Dave

-------------- next part --------------
#!/bin/sh
# Thu Nov 25 20:51:04 EST 2021
#
# Make a unix tarball to support Debian package creation.
# Run this script in a clean directory.

if test ! -d platforms
then
  svn co http://squeakvm.org/svn/squeak/trunk/platforms
fi

if test ! -d src
then
  svn co http://squeakvm.org/svn/squeak/trunk/src
fi

unix=platforms/unix
change_log=${unix}/ChangeLog # a file under SVN version control
interp_h=src/vm/interp.h # generated code containing VMM version information

# vmmversion and svnversion logic copied from platforms/unix/cmake/configure
vmmversion="`tr '\015 ' '\012\012' < \"${interp_h}\" | sed '1,/VMMaker/d;q'`"
if test -d "${unix}/../.svn" -o -d "${unix}/../../.svn"; then
    svnversion=`svn info "${unix}/ChangeLog" | fgrep Revision: | awk '{print $2}'`
    echo "${svnversion}" > "${unix}/svnversion"
else
    svnversion=`cat "${unix}/svnversion"`
fi

dirname=Squeak-${vmmversion}-${svnversion}
tarname=${dirname}-src.tar.gz

# copy platforms and src, removing obsolete unix src dir
# and excluding .svn meta information
find src/* platforms/Cross platforms/unix \
  -wholename "platforms/unix/src" -prune -o -print \
  | cpio -pmd ${dirname}

# prepare a build directory for the final tarball
mkdir ${dirname}/build
cp platforms/unix/cmake/Makefile.example ${dirname}/build/Makefile

tar czvf $tarname ${dirname}

rm -rf ${dirname}
echo created unix squeakvm tarball $tarname



More information about the Squeak-dev mailing list