Oh, wow, how exciting. Well, maybe I should share something then. Um, well, thank you very much and welcome to uh
Welcome to my talk i'm a little distracted here
I had a friend who came over and just brought me a whole bunch of peanut butter cups homemade peanut butter cups
Maybe i'll show those off. Uh
later
Okay, what okay here, uh, put it right there
All good stuff
Okay, so i'm going to uh get over to my planned uh stuff i'm sharing here
hopefully
Uh, and and we'll jump jump right in because i'm gonna need as much time as I can possibly have today
thanks so much for uh joining me for emacs conference and for
especially for
um
all of you who who participated, you know in the discussions contributing talks and
um, you know, uh, you know, including running the copy the the and it's just so much fun to be here, um
I guess while i'm standing here and and saying stuff that's that i'm gonna have to
transcribe because I didn't uh prepare a
recorded version
Uh, I had a lot of trouble trimming this down so I can solve that problem by just talking a lot at the beginning
about other stuff, um
So in addition to the thanks I just want to say thanks also to the
Folks on the development list that helped me kind of come up to speed on this. I won't make a big list here. But
um
And and for all that i've learned from my previous conferences
It's just I can't stress enough what a great opportunity volunteering for
uh free software related things are
Uh as a way to get involved people will just totally teach you how to be helpful and i'm loving it
Sasha can you please maximize?
Hold on
I can preview the stream, but it's not super easy right now
I got all my screens kind of dedicated to other stuff
so should I pause for a second before I get into the slides because there's
There they'll be hard to see if i'm not full screen
Yeah, yeah, okay, well i'll keep ad-libbing then because I just have a million, uh things I can say, um
Uh, so, uh, let me just quickly talk, uh things that aren't in here. Um,
I'm going to mention the mysis2.org and the that project which provides a port
of the GNU
Of uh glibc and a lot of GNU
and other free software
um, so
Uh, I don't pushing a room to uh a dvd room to stefan
All right, so i'm gonna take mumble out of my uh, pardon me folks just gonna take mumble out of my speakers here
Okay
Okay, in fact we'll take the speakers out of play entirely and i'll just switch to some headphones
All right, so
Gorman you're good to go
Perfect. What an amazing amount of time. All right. So thanks a lot. Uh today i've got a jam-packed talk
Um, i've i've done my best to make
To make this not too overwhelming, but overall we're going to try to try to actually build
Um emacs while we're talking today and we might actually build several emacs
Uh, so let's take a look at that real quick
Um, so over here we have a screen where I am
Just once a minute looking. Uh
Indirectly at whether there have been any pushes, uh upstream to either the emacs 29 or emacs 30 branches
so i've
Arranged for us to sort of keep an eye on that
Um while we talk and you know, maybe that's that's one thing that we'll do and then additionally we'll probably
Fire up a shell. This is the mysis 2 environment that I talked about before
And we'll probably create some directories and things
But before we get into all that let's let's give some some context. I've been doing my best to try to
Uh, make sure all this information is on the emacs wiki as well
So, uh, sorry, as I said, I got a little caught off guard. So i'm moving my foot pedals
To the float back to the floor here
And I should be able to advance slides here. All right, so
um
I kind of provided some special definitions for things i'm going to kind of level set with those
the uh
Um when I say a binary release i'm talking about some some i'm talking about emacs for windows as
Just ready to run out of its folder or in whatever similar form
The when I say a build i'm talking about kind of a process of doing that
Um when emacs.get of course, that's the upstream hosted by gnu savannah
The emacs release is a tarball created from that the sources
For um emacs are going to be one of those two things
Um very specifically so i'm not going to talk about patches patching there's some implications there perhaps we'll get into it
uh
So a snapshot is when I build from anything other than a release source
uh a tarball
um, just if I if I say that i'm talking specifically
about the uh, the xz
Version of the file as as a technical point
Um, so that may come up. All right, nothing else I think up my sleeve. Um
the
Uh as as a key data point it's worth understanding that there's a file called configure ac
It's going to be processed, uh as part of autoconf. We we initially access that when we run
Um autogen as you'll see in a little bit
um
The but before but um, so the autogen script will generally consider this. Uh, so in a release build
Um, this has been thought about kind of for us as part of um making the tarball
um the configure dot a
ac
um
Yeah, I think I pretty much covered covered this so
Um those those that kind of partially built status that's a might be another phrase that you hear me use
so this
Slide unpacks that a little more
Um
So it can be a little confusing to understand what exactly?
the you know, what is it, you know, how stable is emacs depending on what I have so that I got a
It's kind of a set of rules of thumb here right first I want the highest, uh, you know dot
Uh dot release value that I can get assuming that that's higher than one
If it's if it were to only be one, let's say my choices were 29.1 and 30.1
I would take 30.1
um
because that's that's weird, but um
What you'll normally see is you might see a 28.2
You might see a 29.1
So here I think 28.2 has got the most most most stable
um
set, uh the
uh, or set of release binaries
the
29.1 will will have a little more features, but will tend to be more stable
than
Any lower point releases for 29
Uh, certainly than any release candidates for 29, which might even have new features
Um, but are mostly going to just be patches so they're going to become the most stable
thing here
and especially if they they have a
You know if this this is not
Uh, if this were to be 29.2 release candidate one as well looking forward to seeing
um
the
30.0.50
um
And and in between this this pre-test here, we're talking about kind of developer land. Um, so
Um, the expectation is that you know what you're doing that applies to windows users
Uh just as much if you are building anything in the snapshot range any of that is going to be in this
30.0.50 currently that'll change when
the
when the
30 30 an emacs 30 release tags, uh, or release branches come
Okay, so
Let's talk about the local um, there's not much to know about what I have going on
except that I have my my paths mess messed with so
Um, if if that that were to come up if you're wondering how why does this?
Uh in in sys command work that's that's probably the way place where you notice it
Uh, I am using windows 10. I haven't tried windows 11
Uh as mentioned my sys2 is critical to all this
There's one script in particular that will error out if you try to do anything other than use my sys's
My sys's shell and in fact my sys owns
Or provides three shells and of them that script is designed to work with a specific one of them as we'll come to
I don't talk about installing the dependencies, but just as as kind of some kind of help. Um,
You can search using this formula and install
Using this formula good luck with those, you know grep commands
And sys is the tool for building the self-installing self-extracting installer or uh executable self-installer
Um, the script for that is provided along with the emac source
Um, and i've provided a helpful link to the main page for the project download link on the left. It is not
It's kind of scare where the way that this link appears, but I have clicked it and it's working for me
Automation does uh, we'll we have some time we'll be looking at this at a minimum
I wanted to mention that what I do on my local what you're seeing in the crawler, I hope
uh represents a
uh
A simple sleep loop, uh, and we'll we'll look into that if we have time
Um, I do have a little but I do use like a cron job and so on to clean up some hosting that I pay for
Um where i've got where I where I kind of self-host
some uh snapshots
more stuff than I feel comfortable uploading to
uh, to gnu
The um
You know, I never said, uh, my name is corwin bruce for the last couple of years i've been the volunteer making
Uh making the snapshots the quote-unquote official binaries, uh for windows of the
um
Of of emacs for windows. So that's that's all the different versions. Uh help is always welcome with that
I'd be very happy to teach you in more depth. This video is
You know kind of my drop dead file. Uh, I don't have specific plans. Uh, if somebody's like hey get out of the way
This is the one thing I think I can do
Um, hey, that's real relatable
Okay, um, so I haven't tried uh, the I haven't tried a lot of fun things that I won't talk about
um, the uh, the rest of this talk is going to get into the nitty-gritty as I said, um
If we can't convince emacs to start building over on that screen, we'll be opening it up here on the center stage
um
Uh, this begins and there's there's there's there's great insight here too on the wiki, uh
With picking an ftp source for any official release
That is for a stable product. Please visit
Um ftp.gnu.org
Otherwise, you'll want to switch that ftp dot at the beginning to alpha dot and take a pre-test
Uh, or any snapshot or otherwise then they're not published there
The uh next
uh, you know
i'm gonna you have some examples in here that assume that you're doing a release build that you're doing 29.1, but
um, i'm glancing out of the the right side of my face at the
Chat on the optance anybody in there wants to direct me at a particular
Um, we can make some other we can build something
Else if you want to see a snapshot build more mention that um the examples that you're going to see here
That I will without other direction cut and paste
um
Are all based on a release bill
so
Um, and so, uh, we'll use the uh, I mentioned that there are several shells provided by mysis2
To the min-gw64
Shell is the one that we mostly need
Um, I tested all of this as well with the min-gw32 shell
um
So that that should work and and see mix binaries that that work for me
Uh
I as I mentioned, I don't get into the details of installing all your prerequisites
I found that doing it in a headfirst manner wasn't uh,
Wasn't difficult and I also found that there's a number of tutorials. I didn't want to pick one to link here
Um there uh
Here are uh, okay, so
Our general formula for building emacs irrespective of windows
looks like
Does the configure script exist if not run autogen?
from a windows build standpoint
This is if i'm not running a release that release build call the autogen script
Right and this would be in the directory where we want to pack this i'll demonstrate
within
three minutes if uh
If one if nobody's pushed upstream to emacs
um
so, uh the configure, uh, and
configure options
are uh
Uh the configure, you know if the configure sorry if the configure script exists then
Uh doesn't doesn't exist. So the only reason so in my process I will always execute that step because I clean everything
after every build, um in all my contexts
um, however, if you were you know had a
Checkout of emacs dot get and you are building it at several releases
Then maybe you've got a configure script and then you'll want to know
um the you know
Whether you have to bootstrap and the typical complexities, but otherwise you might be able to skip that in in the abstract
um
Is that right or is it is
Make uh, so and if the make file doesn't exist make install. I know i'm
Looking at that and i'm questioning whether it's correct. Sorry about that
Um in any case, uh, so autogen configure make install is our recipe autogen
Creates the configure script configure creates the make file the make file
Um in the case of windows, I almost always want the install
Uh and to specify some location where the installed emacs will land this is
where
all of the recipes for packaging emacs
go
and if I were
You know using this as a movie to upgrade I personally would do that by
by specifying an install path quote unquote on top of
Uh a main installation. I don't do that. I update shortcuts manually based on what specifically I want to try
Uh in an effort to to to notice, uh interesting patches and confirm they work on windows
Which mostly they do there's not a lot of code in my experience that is
Windows specific and very very little around the build process
All right
Huge rabbit hole zone and I still have a minute before I have to kick off the first part of our demo
so
Let's let's keep keep diving in
um
The those specific part windows specific parts beside the dot exe extension that we're going to find slammed onto all of our familiar
Uh executables. We're also going to have emacs client w
Which is a wrapper that hides?
um how hard it is to get
Uh to take it
How bad the abstraction is between the window management layer and the gooey?
And then all the different parts on windows essentially it wants to create a shell window if we just double click emacs.exe
So emacs client w
Uh and run emacs are going to solve that problem
um
Wrapping emacs and emacs client respectively
And
Just uh
All right, so let's let's go ahead and do something i'll i'm going to take away the ticker here for a minute
And what you're not seeing is off stage. I am
Killing that so we don't get builds in parallel
Um
So, um
So at this point i'm going to open up a shell and i'm going to start talking just a little bit about
My local build environment, which we haven't gotten into in fact just to make that even easier
let's um
Let's just take a look at it a little bit probably the easiest spot
Is
Here
All right, so here we have the familiar windows my computer interface
I have the g drive and the h drive
four terabyte drives
um dedicated to
my
um, really overblown emacs build process
Um, this just lets me be super lazy. There's no reason you need any massive amount of storage to do any of this
Um inside here and now i'll actually switch you back to the other screen
um
We'll we'll find
Oops
Sorry about that
It didn't take the time to label that one
Label that one
Um, so here you can see the primary output that
That i'm looking at through this automated process
I come along I look at the bug reports or maybe i'm just restarting my computer and choosing what emacs
version at random and then in that case, I look at this modified date and I say
um my config that I
You know that i'm playing with right now is all set for emacs 30
Or i'm testing them both and i'm relaunching both of these right
So for me that starts by diving into the install folder going into the bin folder
Which looks exactly the way my automation leaves it. I then come in to run the run emacs
And I create a shortcut
um
To it
so
I'm a keyboard person. So that's usually done like this
And then I just know that the context menu is going to come up in the right place so i'll come up and
um
Possibly change the change the shortcut, right?
If I don't mess with it
Um
So here's where i'll add my minus q if that's kind of where my world is at or it kind of depends on what i'm doing
With these which varies week to week
Um, so restarting my emacs, uh involves doing the same thing going to my desktop
And where you'll find a number of emac shortcuts
and
Um updating the shortcut in the same manner
Actually, maybe we'll just let's go back there and just show it. So if we look at for example my erc
You can see it's going to be pointing at one of these
clones, and then it's gonna
Maybe tell me that I want it wants to be full screen. No, not currently and then it might uh,
Have some stuff in there about auto loading a config and what connections i'm going to some commands i've defined to start connections
So
All right, and sorry I got a phone call I was checking it wasn't in an order the organ the other organizers giving me the hook
So, um, all right, so that's that's probably enough on the local system. Let's get back to
To to building emacs and now it hopefully makes a certain amount of sense when I say we're gonna wander over to the h drive
and recreate the structure that
both
My process sort of assumes and the scripts you'll find in the admin nt
Uh build disk folder in source
Used to assume those scripts are in need of some love and in just a little bit i'll be mentioning a build
uh
a uh
A a particular bug that you might want to pay attention to if you're interested in making a self installer
all right, so
um
We're going to create
Uh an emacs build directory
And we've got a handy git clone stage git clone command stage for ourself that would work
um
Do not currently see anybody lobbying for that. So instead we will run the rather faster
Uh w get command
On savannah, which is not pasted in here. Nice. Let's see if I can freehand it not gonna do it
uh
Um
Beg your pardon i'm grabbing a url from the internet
Uh, okay. Yeah, I can't I can't honestly I can't freehand it whatever
Sorry, I uh
I didn't have that bookmarked and all handy like I thought I did
Um, so we'll just say ftp.gnu
.org
Uh, what is it pub emacs emacs-29.1
Uh
Hmm
I
Didn't
Really think i'd have this command sitting around it makes me want to scrap the whole demo i'm not gonna lie
Okay, how am I doing your time?
Um, I think at least 15 minutes. Um, but in the command that you were freehanding should the pub be gnu instead
Oh, thanks
I'm, sorry
There we go, thank you. All right, and then we'll
And i'm not sure I provided commands for this either
But it is trivially easy to do and while that happens we'll get to move on a few slides
Um
The configure script i'm not talking about in a lot of detail
But I do want to mention that the gnu binaries are provided with native
Uh compilation enabled that's the feature that uses gcc
lib gcc get on windows if available that looks gcc get will be used
Um, but when but if if emacs has that feature then it will take by compile
native code and
asynchronously
Compile that as needed
uh with the ahead of time feature
We're going to do as much of that ahead of time and for folks that are consuming the windows binary
The thinking goes that they might not have mysys too. They might not have
Gcc jet they might be
Happy that they're enabled
In a you know a lot of time run emacs on their local environments
At all
You know in a maybe a lockdown at a corporate context
so
aside
that
There's your first glimpse at the configure
Program that we're going to run in a moment. In fact, i'm going to go as far as
Putting it on the clipboard
um
Really just looking at this the aot flag
It's the one i'd call attention to but it's worth understanding that windows doesn't provide a dbus capability
So windows native program isn't gonna be able to depend on dbus. We're gonna
We're gonna explicitly ask that that be left out. I think that's actually optional. It's documentation
I think the configure program is smart enough to know that we don't want dbus
on windows
Um, otherwise we tend to compile with things. Um, there there's missing documentation. We could say the uh,
all of the libraries are treated in the way I mentioned in that
Jpeg support will be available as long as
Jpeg is is available in our environment and configure script certainly notices that
Um, the new provided binaries are provided with minus o2 and that's also my default personally on windows. Um,
However, and i'm going to skip this since I mentioned it
um mentioned
uh, and uh
Um
So I guess i'll say um, you can um say with
the
It's worth knowing that you if you're not one reason that that you're building might be because you want to turn off native
Compilation for whatever reason if you have load juices you get it, but don't want emacs to use it
Uh, especially as that default looks like it could be changing with emacs 30
um
the uh
the debug configuration, um, this is this is the uh, kind of
Uh, what what i'm currently using this on commentary. Uh, i've seen on the emacs development list
Um
All right, let's check on our checkout and see if we can't get a build running
Um, this is a release build so I won't be starting with
Uh, so we'll start by hopping into its directory
And we um we have
Uh
But not
Okay, so that tells us we're gonna run
Our configure program
But we don't need to run uh config ic
So
So let's get that going and
uh
Hopefully that's showing through just enough to be fun not too much to be distracting
Um the uh the unoptimized
Um, please report issues if your emacs is crashing, uh to the emacs development list not to me personally
Um, although you are of course welcome to copy me
Um, if you especially i'm subscribed to that list so I get all the mail so I don't mind being copied
uh, and
as well
if you think it's
uh
You know related to packaging that actually makes sense
Or windows related even and uh, it can be tested with an extra snapchat that should be uploaded to the gnu alpha side
I could look at that if I have time
Okay
That is with the configure script to make file for
Emacs is really really complicated if time permits which i'm, you know now confident it will not
We will look at a makefile that I tried writing that orchestrates this whole process that i'm talking about
Um as uh, let's see, so the build uh build process I run my builds with
Uh explicitly specifying the max cpu, uh
with minus j
But minus b1 to get the full build, uh full login to your recipes. That is probably the magic thing
that um
shouldn't to understand with uh
Or that uh that that uh that i'm glad that I know, uh as i'm trying to write my automations
um
Uh the um
So I call that out here the binary, uh releases
Okay. So in this section, we're going to start to get into what are all those files
And there's a bug report related to that that I didn't get into here. So
Um, that's kind of to the point about the less said about this the better
That's my explanation for stepping through some of these slides. Uh, of course
Share them all um
Hopefully by the time that this video is published
I mentioned it. Um, I may have mentioned already freshly installed but uh fully installed
uh this the the key distinction here is that uh emacs is
Distributed in the binary form for windows with some dll files that actually come from the mysis 2
Project there's an implication there to gcc that I definitely want to get to it talking about
Um, so freshly installed means
We haven't copied those binaries from the mysis 2
uh installation
into the emacs
uh installation
uh, and then
When we re-archive that local emacs installation, that's how we're going to create the full zip
So hopefully that actually is a pretty good summary of what all those files are
Um, but there are readme files on the ftp. They do a pretty good job
If you can dig enough to find one and my apologies for uh tardiness getting a new version on that posted
um
the emacs
Uh, so those dependencies, uh are listed within the emacs itself and as we'll just talk about in a moment
There's a way
uh that we can use we can access that
When we collect them in order to meet the gcc requirement that is essentially
to include
Um include the sources for the for those binaries the things that were compiled against
um
The uh, so so here we go, we're we're into the build process
Let's just take a look and see if configure it got done it sure did
and now we can see a table of
Hopefully good, but good and bad news
um in potential
um where we're learning that we're using the pdumper strategy and any number of other things that we might be
Messing with as our motivation for for building ourselves on emacs
again, this table represents
uh what you'll what
What what it looks like for me when i'm building for the gnu distributed binaries
All right, so um
Kind of moving moving as quickly as I can here
I'm at 40 after I believe that's the five minute mark
so
Um having just succeeded in in configuring emacs. I don't think we're going to build it. Uh
I don't think we're going to actually get to running make install
Um, but I have it sitting here on my keyboard or clipboard assuming that we will right?
No
Oh, wow
I think i've managed to confuse this. All right, so for me that looks simply like
uh make
v equals one
Uh install, uh prefix equals
uh
And we can at least get it kicked off
And that that command is just uh
Just is no no different than I showed on the slide where I where I gave it
Uh, I wasn't planning to stop and explain it. I was just planning to paste it in
so
So so again recapping the rest of the process here and maybe actually making it if you can believe it or not
through the rest of these slides, um
We to to create the full set of binaries. We're going to need a no dependent no depth archive. That's without the mysys2
To uh deal provided dlls just the things that we compile as part of making emacs
um
The uh, the build depth zip script is uh provided with the source distribution is your tool
for uh meeting the gpl requirements ride source as mentioned before
Um, there is a second bug that I did, uh include some more information on in my notes already
um that uh
That gets into the details of this other feature I alluded to
Um, i'll just skip into that
um
we can with with uh
With a an appropriate version of that which you may need a patch
uh to
To have you can list out the dependencies
And and that version as well can consider the dependencies of the emacs binary versus the hard-coded list
You might find depending on when you look at this file in the source tree
The different um
so
I also have a hack here that uh works around the absolute requirement to run this with the mysys2
And not the mingw64
64
Script
Um
Once we've made that zip file that contain that's that's our installed emacs without the dlls provided by mysys2
We'll then unpack the dependencies that were created by that python script. We just talked about from the emacs source tree
So at that point once those are unpacked we can now make what's called the full
Installer or sometimes I might call it the unqualified installer because it's just going to be called emacs29.1.zip
Um and that uh that file which which creates the archive
That
that that file is exactly the same plus the
Uh, the dependencies that we unzipped in the bin folder of the installed emacs
the
Executable self-installer, which I would love to have more time to talk about I gave a few pointers here on the hard part of running
it most importantly
If i've installed in any kind of funny looking name, I end up renaming it to like emacs-29.1
Or emacs-29. or 30.0.50 or whatever and I just rename that installed
Emacs folder and then I go to the root of wherever I created that the parent directory above it
And that's where I make my copy of the emacs nsi
um the the nsis script
and uh
That's also where I
And then uh, then from that parent directory I execute uh making sys uh here I as mentioned
um
I I can get away with this because I have it on my path and it's my recollection
I think I tested this and couldn't reproduce the problem. So I didn't document it here, but i've had some problems with running this when
uh
When nsis wasn't on my path
The uh, the the final step here
And the last the gpl requirement is to include all the sources
Except when i'm doing a release build I always do this
Um, and that's the new practice when making snapchat binaries is to go ahead and include the sources
Even though we might have the specific revision number
Um, our thinking is we want absolute clarity
that that somebody
Uh can say okay this binary did this thing from the source for it i'm gonna go take that into my own open source
yeah, maybe they would the jerks them into my own open source project and
um
Off, you know off they go, uh, and that needs to be possible
um
so, um
Beyond that the rest of this is is really detailed that you find covered in the gnu maintainers manual
Um, this is the the current set of windows binaries that um, it's busily working on
creating a like for like a
Mirror to behind the scenes here is called a 29.1 underscore two
um, and I have a lot of
Automation available on this site. So at this point i'm just I think i'm only
minute 40 seconds over i'm
gonna
invite my
Co-organizers back onto the call or any volunteers that want to jump in and anybody if there's people on the bbb
I'd be happy to take questions if there aren't
um, I have a screen full of
The automation stuff ready to go as a kind of a second ring in my circus today
So if you're still with me, thanks a lot for joining me, and I really enjoyed this talk
Uh, if this is where we're going to close it out. I don't know where we're at for schedule today
Um, thanks a lot for a great talk corwin
Um in terms of like schedule, yeah, you went over a little bit for the official like, um
schedule or time of your talk, but I think
We actually have maybe like six or seven more minutes. Um here on stream
For um questions and such if folks have questions or if you want to like quickly maybe show one or two more things
um
But I think the hard stuff is about like
Maybe 10 minutes ish for now and then we'll have to rush over to um
for the closing remarks, so
Well, that sounds awesome
Okay, so i'm looking at the the dev chat, uh, I see a comment on cross compiling the emacs
But i'm sorry, i'm looking at irc primarily, but uh, feel free to jump in if you're on bbb with me or
Uh, uh, if if you put something on the pad i'm sure
I will see it between the two of us
Uh over here
Okay, so cross compiling emacs for serenity. I haven't tried really any cross compiling. I think that would be very interesting
I would most likely focus on
Doing exactly what I do on a gnu system completely ditching
um
So I guess with my my remaining time rather than walking through code
Um for my automation which can be another talk if in fact there's an interest in that
um
I want to I guess say a couple words about the non-free operating system
That i'm using here. I did my best to use no
non-free software other than
the
Uh the operating system
That is the context for this talk in preparing this talk for you
I personally have a lot more
Uh time and energy I have to say invested in proprietary tools for doing a lot of the things that
That go into this so I really respect the work of people that pull that off. Um
I'm, sorry, I didn't get my pre-recorded stuff. Uh kind of in order for everybody, but I just want to stress like
Uh, it is all absolutely possible and just hats off to everybody that that used uh entirely free software to get their
Get their recordings done in time
um, and what you did see
Unless it was provided by the operating system in my presentation today was all
Uh free software with the debatable exception of nsys which styles itself
as open source
maybe for uh marketing reasons
Uh in any case, uh, certainly we can get out of the source
Thanks for the note corinne, it's good to know that uh
Building or uh, yeah doing the build of emacs for windows on windows can be done using only free software
Yeah, absolutely
Probably the right closing note, right?
um, I just uh, thanks again to the organizers for bearing with me and like every time I was like you guys i'm
Terrible at this. They're just like no you're doing fine. Keep going. You did a great job live last time
You can do it live, you know and and saying all the right things to just uh, encourage me to come back
This year and everywhere
Well, as I said before we were very lucky to have you and the rest of the team of course as well and
um goes without saying but all the speakers and all the audience the participants as well, so
Um
So, uh, are we we're still live over here that you know, you know me i'm the mike hog that I am I can't resist
um throwing throwing up another screen here and uh,
In fact, let's go ahead and go back to our to our crawler, right?
And i'll bring back our build if it finishes and maybe we'll show making the installer as well, um
But I have the cpu count turned down a little bit here
Note I didn't specify minus j here
um, so
Over here is my automation, uh in case you do want to take a look
I can at least provide the orientation of what you're looking at scrape log is probably my first thing. I want to show off
um, it's not beautiful, but this works, uh, pretty well for me to
Get a sense if something might have changed in terms of how many warnings or errors are happening
When I build emacs, so I have this awful automation going on and I frequently want to answer the question
You know, what's the change rate in uh warnings or what have you?
So this kind of gives me a count
of that
um
so from there, uh
Crude ci is the script. We're we're watching run in the other pane
um, you can
see it's uh
Just starting to do its thing again
And uh
The make file I mentioned this is a top-down rewrite of everything else that i've done it has some bugs right now
um the uh
the
Build distribution is the main script that I use for my personal builds
This is what is run by the crude ci script
Uh, it has a fun tie-in to this
Uh web interface here
Um where we can you don't need the port number when you go to it. That's just if i'm going to post
um the
Uh
Blah blah blah blah this this script is really long and complicated and probably needs some diving into but you can see that
Um, one of the complexities I have to deal with is that i'm going to need a something in the format of an emacs dash
version for strategic
um nsys reasons so
uh
It takes care of kind of every complexity and stuff that I mentioned today in some respects
Um, as does the make file build release
is
um another fairly useful
Incarnation of this this is just focused on the release process and this does work
for example to create the
the
You know like I like well I could
Like uh for like files as far as I can tell so what are currently posted for emacs 29.1
and the release candidate
um
So i'll probably use that next time and if it's still like for like i'll probably post the ones that came from this
um
Uh building a tree sitter I make some dlls there if you're looking for hints on how to get going or just simply
A huge long list of git repositories that make grammars you can use
That is here as well
um, finally I mentioned I have a
Um, I have a a website where I publish my own personal snapshots that I make
That folder full of install directories, but all of the usual
GNU style binary distributables including the source code and the source code for the dependencies
um
the
uh
So this program is another one of those
Complicated find commands and therefore potentially the most useful thing in here to take to you
Um, and here i'm deleting binaries older than 17 years
uh everything except
the uh
No deps file and the sources of it. You'll find on my website
Currently those indefinitely i'll probably roll out
120 days or something
um for those eventually
Oh, uh, I can talk about this one even um the uh
The
So here you'll see the two branches that i'm tracking the job of this script
Is this runs on the website? I call it with a like a remote rsync
uh type
Uh, or an ssh remote ssh command
um
And right after the rsync r syncing up any new emacs that I built
and
uh, it's
Uh, its job is to update my fancy directory indexing so let's look at corwin's website
Here's my emacs 29 folder
We have about two more minutes corwin
Yeah, it'll take that entire two minutes to uh, load this directory because I am
Because I have not yet ever pruned any of these dang binaries
So every version of uh emacs 29 that i've ever made for myself is probably here
nice
Uh, I strongly recommend that you bookmark this folder if you're using these for something and you always want the latest
Um, so here this particular, uh latest 29 emacs 29 latest or simply replace the 29 with 30 to get those
uh
alas
No, no such luck for tree setter
but if we look at
that
Live this long without making a typo now look at me
Okay
Oh
So here, um
You know, we can see the iconification and so on even in the tree sitter folder
this is all i'm talking about about the fanciness that's set up by that other script that
i'm showing over here and run after each time I run the upload it just
Looks to see if anything's new and add some lines to the dot htaccess file
Um
I'm, particularly proud of this one. I'm not going to lie. Um, linking out to each each
project that we're using letting us know the commit version and then
For the dlls quick link out to the log and the signature file for this dll
um
I find that a lot just a lot
More readable
than uh
Listing them all out individually and i'd love to do something like that on the new site
So i'm
I think we've got to be out of time by now. I've just got to say hey, thanks again for having me
Uh for those that uh watch the talk either live or after the conference
uh appreciate everyone's support to get me to the point where i'm able to
Uh to do this this this cool volunteer task
Uh, which is fun and easy to do and reach out to me if you're interested in helping with it
Well, awesome, thanks a lot for the awesome talk corbin and uh, of course as a fellow core core organizer
For our for all that you do, um in and around emacs conf and of course for uh, can we max as well? It's much appreciated
Big big words from coming from you my friend
Um, thanks for the kind words
Cheers my pleasure. All right, and with that I think we're gonna uh wrap up the dev track here and we'll be
With you again shortly in a few minutes on the gen stream the gen track for the closing remarks for today
Um only for today because we're gonna be back tomorrow again as well
So don't go anywhere and uh, see you on the gen track in a bit
So
Oh my god, I did it we got done within the time you're my hero
um, and thank you so much for just keeping me honest there and uh
Like helping me keep my eye on the time and such
You have to look at the recording and see whether you feel like doing it again
I'm sorry. I had my sound screwed up and i'm sorry if I talked over somebody I couldn't hear anything on mumble until this very
moment
Oh, uh because he used your webcam for it, um, like as a like a virtual webcam thingy
It was low res especially when things are changing as you were
scrolling around
So we'll see what kind of recording we can recover from it and then you can decide whether you maybe want to clean it up
with like
screenshots and
I recorded on this end too. We shouldn't have that problem with my recording. Thank you. Thank you. Thank you
I think we're still live on the dev stream
Someone could uh, thanks. Oh, yes
Because uh, i'll set it to rebroadcast
Yeah, I I love doing that for the closing remarks that's
a fine tradition
Or it's a tradition now because i'm pretty sure this means we've done it twice
I
Once heard that, you know, uh as a fan
Meaning like a fannish is a term of endearment for a science fiction fan to another we say we're we're fans or things
We do our fannish and a fannish tradition then is if you do it three times, it's tradition
But um, we're on a budget here. So
Nope
All right, I think we should um head over to mumble and talk on mumble
Um and decide and see like which big blue button room we're going to be in for closing
Okay, so we're clear on bbb here
Yep, I think so