emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Native compilation on Windows, was Re: Bootstrap Compilation Speed


From: Phillip Lord
Subject: Re: Native compilation on Windows, was Re: Bootstrap Compilation Speed
Date: Wed, 19 Jan 2022 18:28:46 +0000
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.91 (gnu/linux)

"H. Dieter Wilhelm" <dieter@duenenhof-wilhelm.de> writes:

> Phillip Lord <phillip.lord@russet.org.uk> writes:
>>> And when we are at it, please tell me your recipe how to build a
>>> snapshot of the master branch.  I think my build tree is damaged, I
>>> don't manage to build a snapshot of emacs-29 with a date included..
>>>
>>> Shouldn't it be just:
>>>
>>> $ build-zips.sh -g
>>> $ build-zips.sh -s
>>
>> Yes, I think that should do it.
>>
>> Then, the I build the source like so.
>>
>> ./make-dist --snapshot --no-check --no-changelog
>> rename .tar _`date +%Y-%m-%d`.tar emacs*.tar.gz
>> mv emacs-*.tar.gz ~/emacs-upload
>>
>> I don't think I ever automated this bit.
>
> Uups, I thought this - or similar - would be done by below part of
> build-zips.sh?
>
>
>     make -j 4 $INSTALL_TARGET \
>          prefix=$HOME/emacs-build/install/emacs-$VERSION
>     cd $HOME/emacs-build/install/emacs-$VERSION
>     zip -r -9 emacs-$OF_VERSION-no-deps.zip *
>     mv emacs-$OF_VERSION-no-deps.zip $HOME/emacs-upload
>
>     if [ -z $SNAPSHOT ];
>     then
>         DEPS_FILE=$HOME/emacs-build/deps/emacs-$MAJOR_VERSION-deps.zip
>     else
>         ## Pick the most recent snapshot whatever that is
>         DEPS_FILE=`ls $HOME/emacs-build/deps/emacs-$MAJOR_VERSION-*-deps.zip 
> | tail -n 1`
>     fi
>
>     echo [build] Using $DEPS_FILE
>     unzip -d bin $DEPS_FILE
>
>     zip -r -9 emacs-$OF_VERSION.zip *
>     mv emacs-$OF_VERSION.zip ~/emacs-upload

I was struggling to remember what was going on there, and then it hit
me!

This bit of code adds the dependencies. I have to ship the source code
for the dependencies also, but that is produced with build-deps-zips.py.
That doesn't change for an Emacs release cycle (I normally make a deps
bundle at the time of the first pre-test, then do not change it for a
major version).

Source for Emacs is different. I do *not* make source for an Emacs
release build, because I put the Windows binaries on ftp.gnu.org which
is also where the main Emacs release goes which is already a source
release; and as I don't build the binaries till after the source release
happens, this means I fulfil GPL that way.

For the snapshot, I have to release the source code along with the
binaries because no one builds snapshot tarballs (I mean what would be
the point).

This bit does that:

./make-dist --snapshot --no-check --no-changelog

The overly complicated command line was to stop configure being re-run
which then forces a full build when I build snapshots
incrementally. When I used to do them every month or so this was a big
advantage.

>
>> The model of build-zips.sh is probably a bit complicated and could be
>> simplified. The addition of snapshots and the ability to build from a
>> branch makes it much more so and the documentation isn't always well
>> done. I have been trying to remember why I called the variable
>> "OF_VERSION" so, or what "OF" stands for, and have failed!
>
> Not only above is confusing, but also why is
>
>     INSTALL_TARGET="install-strip"
>
> in the script?  (Back to pretest building) I've got an error for
>
> $ build-zips.sh -V28
>
> in the emacs-28 worktree, maybe, that is a wrong usage of the scrip?
> Anyway, "install-strip" seems not to be a valid target for make!?


Eli suggested it! I think install-strip follows the GNU standards. It
makes the release smaller and the binaries faster, IIRC.


>> Apologies for this.
>
> No reason to apologise, it was working for you.  Rather, thank you for
> your work. :-)


Yeah, but now I struggle to remember what some of it was for. I always
teach my students to comment for this reason and, yet, here I am. Do as
I say, I guess.

Phil



reply via email to

[Prev in Thread] Current Thread [Next in Thread]