summaryrefslogtreecommitdiffstats
path: root/2023/captions/emacsconf-2023-windows--windows-into-freedom--corwin-brust--answers.vtt
blob: 7dbb18c59a4a2e0d83bc9435228d8179cdd02c41 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
WEBVTT

00:00.000 --> 00:06.880
Oh, wow, how exciting. Well, maybe I should share something then. Um, well, thank you very much and

00:06.880 --> 00:14.800
welcome to, uh, uh, welcome to my talk. I'm a little distracted here. I had a friend who came

00:14.800 --> 00:20.320
over and just brought me a whole bunch of peanut butter cups, homemade peanut butter cups. Maybe

00:20.320 --> 00:26.400
I'll show those off, uh, later. What? Okay. Here, uh, put it right there.

00:33.840 --> 00:41.760
Okay. So I'm going to, uh, get over to my plan, uh, stuff I'm sharing here, hopefully.

00:42.800 --> 00:48.640
Uh, and, and we'll jump, jump right in because I'm going to need as much time as I can possibly

00:48.640 --> 00:55.520
have today. Thanks so much for, uh, joining me for Emacs conference and for, especially for,

00:56.400 --> 01:03.520
um, all of you who, who, who participated, you know, in the discussions, contributing talks and,

01:03.520 --> 01:09.600
um, you know, uh, you know, including running the, the, the, and it's just so much fun to be here.

01:09.600 --> 01:16.320
Um, I guess while I'm standing here and, and saying stuff that's, that I'm going to have to

01:16.320 --> 01:23.280
transcribe, cause I didn't, uh, prepare a recorded version. Uh, I had a lot of trouble

01:23.280 --> 01:28.880
trimming this down so I can solve that problem by just talking a lot at the beginning, uh,

01:28.880 --> 01:37.120
about other stuff. Um, so in addition to the thanks, I just want to say thanks also to the

01:37.120 --> 01:41.920
folks on the development list that helped me kind of come up to speed on this. I won't make a big

01:41.920 --> 01:48.880
list here, but, um, and, and, and for all that I've learned from my previous conferences, it's

01:48.880 --> 01:55.200
just, I can't stress enough what a great opportunity volunteering for, uh, free software related things

01:55.200 --> 02:00.080
are, uh, as a way to get involved. People will just totally teach you how to be helpful and I'm

02:00.080 --> 02:18.800
loving it. I can preview the stream, but it's not super easy right now. I got all my screens

02:18.800 --> 02:23.680
kind of dedicated to other stuff. So should I pause for a second before I get into the slides?

02:23.680 --> 02:27.680
Cause that's, they're, they'll be hard to see if I'm not full screen.

02:29.440 --> 02:34.240
Yeah, that would be nice. Okay. Well, I'll keep ad libbing then cause I just have a million,

02:34.240 --> 02:42.960
uh, things I can say. Um, uh, so, uh, let me just quickly talk, uh, things that aren't in here.

02:42.960 --> 02:50.320
Um, I'm going to mention the mysis2.org and the, that project, which provides a port

02:51.280 --> 03:03.520
of, uh, the GNU, uh, uh, glibc and a lot of GNU and, uh, uh, their free software. Um, so, uh,

03:03.520 --> 03:03.840
I don't...

03:03.840 --> 03:07.760
All right, I'm switching a room to, uh, a DVD room to Stefan.

03:12.080 --> 03:15.440
All right. So I'm going to take mumble out of my, uh, pardon me, folks.

03:16.080 --> 03:18.640
It's going to take mumble out of my speakers here.

03:22.800 --> 03:30.080
Okay. We'll take the speakers out of play entirely and I'll just switch to some headphones.

03:33.600 --> 03:34.720
All right. So...

03:36.720 --> 03:42.240
Perfect. What an amazing amount of time. All right. So thanks a lot. Uh, today I've got a jam

03:42.400 --> 03:48.720
packed talk. Um, I've, I've done my best to make, to make this not too overwhelming,

03:48.720 --> 03:55.040
but overall we're going to try to try to actually build, um, Emacs while we're talking today.

03:55.040 --> 04:00.400
And we might actually build several Emacs. Uh, so let's take a look at that real quick.

04:00.400 --> 04:08.160
Um, so over here we have a screen where I am just once a minute looking, uh,

04:08.480 --> 04:15.360
uh, indirectly at whether there have been any pushes, uh, upstream to either the Emacs 29 or

04:15.360 --> 04:24.320
Emacs 30 branches. So I've arranged for us to sort of keep an eye on that, um, while we talk.

04:24.320 --> 04:30.000
And, you know, maybe that's, that's one thing that we'll do. And then additionally, we'll probably

04:30.640 --> 04:36.640
fire up a shell. This is the MySys2 environment that I talked about before,

04:36.640 --> 04:42.160
and we'll probably create some directories and things. But before we get into all that, let's,

04:42.160 --> 04:48.080
let's give some, some context. Uh, I've been doing my best to try to, uh, make sure all this

04:48.080 --> 04:54.240
information is on the Emacs wiki as well. So, uh, sorry, as I said, I got a little caught off guard.

04:54.240 --> 05:02.640
So I'm moving my foot pedals to the floor, back to the floor here. And I should be able to advance

05:02.640 --> 05:11.760
slides here. All right. So, um, I kind of provided some special definitions for things. I'm going to

05:11.760 --> 05:21.680
kind of level set with those. The, uh, um, when I say a binary release, I'm talking about some,

05:21.680 --> 05:27.440
some, uh, I'm talking about Emacs for Windows as, uh, just ready to run out of its folder or

05:28.080 --> 05:35.600
in whatever similar form. The, when I say a build, I'm talking about kind of a process of doing that.

05:36.400 --> 05:41.040
Um, when Emacs.get, of course, that's the upstream hosted by GNU Savannah.

05:41.600 --> 05:51.680
The Emacs release is, is a tarball created from that. The sources for, um, Emacs are going to be

05:51.680 --> 05:58.480
one of those two things, um, very specifically. So I'm not going to talk about patches patching.

05:58.480 --> 06:06.720
There's some implications there. Perhaps we'll get into it. Uh, so a snapshot is when I build

06:06.720 --> 06:14.880
from anything other than a release source, uh, a tarball. Um, just if I, if I say that I'm talking

06:14.880 --> 06:23.600
specifically about the, uh, the XZ version of the file as, as a technical point. Um,

06:23.600 --> 06:32.480
so that may come up. All right. Nothing else I think up my sleeve. Um, the, uh, as, as a key

06:32.480 --> 06:38.320
data point, it's worth understanding that there's a file called configure AC. It's going to be

06:38.320 --> 06:46.160
processed, uh, as part of auto-conf. We, we initially access that when we run, um, auto-gen

06:46.160 --> 06:52.720
as you'll see in a little bit. Um, the, but before, but, uh, so the auto-gen script will

06:52.720 --> 07:00.160
generally consider this, uh, so in a release build, um, this has been thought about kind of for us as

07:00.240 --> 07:10.480
part of, um, making the tarball. Um, the configure.ac, um, yeah, I think I pretty much covered,

07:10.480 --> 07:16.880
covered this. So, um, those, those that kind of partially built status, that's a,

07:16.880 --> 07:22.640
might be another phrase that you hear me use. So this slide unpacks that a little more.

07:22.880 --> 07:29.520
Um, so it can be a little confusing to understand what exactly the, you know, what is it, you know,

07:29.520 --> 07:36.160
how stable is Emacs depending on what I have. So the, I got a kind of set of rules of thumb here,

07:36.160 --> 07:43.680
right? First I want the highest, uh, you know, dot, uh, dot release value that I can get,

07:43.680 --> 07:50.080
assuming that that's higher than one. If it's, if it were to only be one, let's say,

07:50.160 --> 07:58.560
if it were to only be one, let's say my choices were 29.1 and 30.1, I would take 30.1. Um,

07:59.200 --> 08:05.520
cause that's, that's weird. But, um, what you'll normally see is you might see a 28.2,

08:06.080 --> 08:15.760
you might see a 29.1. So here I think 28.2 is got the most, most, most stable, um,

08:16.560 --> 08:26.160
set, uh, the, uh, or set of release binaries. The 29.1 will, will have a little more features,

08:26.160 --> 08:33.680
but will tend to be more stable than, uh, any, uh, lower point releases for 29, uh, certainly

08:33.680 --> 08:39.600
than any release candidates for 29, which might even have new features, um, but are mostly going

08:39.600 --> 08:46.000
to just be packages. So they're going to become the most stable thing here. And especially if

08:46.000 --> 08:53.600
they, they, they have a, you know, if this, this is not, uh, if this were to be 29.2 release

08:53.600 --> 09:04.960
candidate one as well, looking forward to seeing, um, the, uh, 30.50. Um, and, and in between this,

09:04.960 --> 09:11.840
this pretest here, we're talking about kind of developer land. Um, so, um, the expectation is

09:11.840 --> 09:16.560
that, you know, what you're doing that applies to windows users, uh, just as much if you are

09:16.560 --> 09:22.960
building anything in the snapshot range, any of that is going to be in this 30.0.50. Currently

09:22.960 --> 09:32.240
that'll change when the, uh, when the 30, 30, uh, an Emacs 30 release tags, uh, or release branches

09:32.240 --> 09:42.880
come. Okay. So let's talk about the local. Um, there's not much to know about what I have going

09:42.880 --> 09:51.200
on, except that I have my, my paths mess messed with. So, um, if, if that, that were to come up,

09:51.200 --> 09:57.120
if you're wondering how, why does this, uh, and insist command work, that's probably the place

09:57.120 --> 10:03.760
where you'd notice it. Uh, I am using windows 10. I haven't tried windows 11, uh, as mentioned,

10:03.760 --> 10:09.520
mysis2 is critical to all this. There's one script in particular that will error out if you try to do

10:09.520 --> 10:16.560
anything other than use mysis's, mysis's shell. And in fact, mysis owns or provides three shells

10:16.560 --> 10:21.760
and of them, that script is designed to work with a specific one of them as, as we'll come to.

10:22.720 --> 10:29.120
Uh, I don't talk about installing the dependencies, but just as, as kind of some kind of help,

10:29.680 --> 10:38.480
um, you can search using this formula and install, uh, using this formula.

10:38.480 --> 10:40.800
Good luck with those, you know, grep commands.

10:43.520 --> 10:49.440
And this is the tool for building the self-installing self-extracting installer or, uh,

10:49.520 --> 10:55.600
executable self-installer. Um, the script for that is provided along with the Emacs source.

10:56.720 --> 11:03.280
Um, and I've provided a helpful link to the main page for the project download link on the left.

11:03.280 --> 11:09.680
It is not, um, it's kind of scare where the way that this link appears, but I have clicked it and

11:09.680 --> 11:18.960
it's working for me. Automation does, uh, we'll, we have some time we'll be looking at this at a

11:18.960 --> 11:24.560
minimum. I wanted to mention that what I do on my local, what you're seeing in the crawler, I hope,

11:25.280 --> 11:35.600
uh, represents a, uh, a simple sleep loop. Uh, and we'll, we'll look into that if we have time.

11:36.560 --> 11:42.960
Um, I do have a little bit, I do use like a cron job and so on to clean up some hosting that,

11:42.960 --> 11:50.160
that I pay for, um, where I've got, where I, where I kind of self host some, uh, snapshots,

11:50.720 --> 11:58.880
more stuff than I feel comfortable uploading to, uh, to GNU. The, um,

12:01.760 --> 12:06.480
you know, I never said, uh, my name is Corwin Brust. For the last couple of years, I've been

12:06.480 --> 12:12.480
the volunteer making, uh, um, making the snapshots, the quote unquote, official binaries,

12:12.480 --> 12:20.560
uh, for windows of the, um, of, of Emacs for windows. So that's, that's all the different

12:20.560 --> 12:25.680
versions. Uh, help is always welcome with that. I'd be very happy to teach you in more depth.

12:25.680 --> 12:31.920
This video is, you know, kind of my drop dead file. Uh, I don't have specific plans. Uh, if

12:31.920 --> 12:36.480
somebody's like, Hey, get out of the way, this is the one thing I think I can do. Um, Hey,

12:36.480 --> 12:44.640
that's real relatable. Okay. Um, so I haven't tried, uh, the, I haven't tried a lot of fun

12:44.640 --> 12:50.400
things that I won't talk about. Um, the, uh, the rest of this talk is going to get into the

12:50.400 --> 12:56.560
nitty gritty. As I said, um, if we can't convince Emacs to start building over on that screen,

12:56.560 --> 13:05.120
we'll be opening it up here on the center stage. Um, uh, this begins and there's, there's, there's,

13:05.120 --> 13:11.520
there's great insight here too, on the wiki, uh, with picking an FTP source for any official

13:11.520 --> 13:19.760
release that is for a stable product, please visit, um, ftp.gnu.org. Otherwise you'll want

13:19.760 --> 13:27.280
to switch that FTP dot at the beginning to alpha dot and take a pretest, uh, or any snapshot or

13:27.280 --> 13:36.640
otherwise, then publish there the, uh, next, uh, you know, I'm gonna, you have some examples in

13:36.640 --> 13:43.440
here that assume that you're doing a release bill that you're doing $29 one, but, um, I am glancing

13:43.520 --> 13:51.440
out of the, the right side of my face at the chat on the opt-ins. Anybody in there wants to direct

13:51.440 --> 13:57.840
me at a particular, um, we can make some other, we can build something else. If you want to see

13:57.840 --> 14:03.840
a snapshot build more mentioned that, um, the examples that you're going to see here that I

14:03.840 --> 14:12.560
will, without other direction, cut and paste, um, are all, uh, based on the release bill. So,

14:14.640 --> 14:22.320
um, so, uh, we'll use the, uh, I mentioned that there are several shells provided by MySys2.

14:22.960 --> 14:33.120
The MinGW64 shell is the one that we mostly need. Um, I tested all of this as well with the MinGW32

14:33.120 --> 14:40.400
shell. Um, so that, that should work and, and see mix binaries that, that, that work for me.

14:44.080 --> 14:50.720
Uh, I, as I mentioned, I don't get into the details of installing all your prerequisites.

14:50.720 --> 14:56.560
I found that doing it in a headfirst manner wasn't, uh, wasn't difficult. And I also found

14:56.560 --> 15:00.240
that there's a number of tutorials. I didn't want to pick one to link here.

15:01.040 --> 15:10.800
Um, there, uh, here, uh, okay. So our general formula for building Emacs, irrespective of

15:10.800 --> 15:19.600
Windows, looks like, does the configure script exist if not run autogen? From a Windows build

15:19.600 --> 15:27.600
standpoint, this is, if I'm not running a release, release build, call the autogen script.

15:27.840 --> 15:32.080
Right. And this would be in the directory where we want to pack this. I'll demonstrate

15:32.080 --> 15:42.640
within three minutes if, uh, if one, if nobody's pushed upstream to Emacs. Um, so, uh, the configure,

15:42.640 --> 15:53.280
uh, and, uh, configure options are, uh, uh, the, the configure, you know, if the configure, sorry,

15:54.240 --> 16:01.520
the configure script exists, then, uh, it doesn't, doesn't exist. So the only reason,

16:01.520 --> 16:07.920
so in my process, I will always execute that step because I clean everything after every build,

16:07.920 --> 16:16.880
um, in all my contexts. Um, however, if you were, you know, had a, a checkout of emacs.get

16:16.880 --> 16:21.440
and you are building it at several releases, then maybe you've got a configure script and then you

16:21.440 --> 16:27.600
all want to know, um, the, you know, whether you have to bootstrap and the typical complexities,

16:27.600 --> 16:33.200
but otherwise you might be able to skip that in, in, in the abstract. Um,

16:36.080 --> 16:41.520
is that right? Or is it, is it the make, uh, so, and if they make file doesn't exist,

16:41.520 --> 16:46.080
make install. I know I'm looking at that in question whether it's correct. Sorry about that.

16:46.640 --> 16:55.600
Um, in any case, uh, so auto-gen configure make install is our recipe. Auto-gen creates the

16:55.600 --> 17:01.840
configure script, configure creates the make file, the make file. Um, in the case of windows,

17:01.840 --> 17:08.080
I almost always want the install, uh, and to specify some location where the installed emacs

17:08.080 --> 17:19.120
will land. This is where all of the recipes for packaging emacs go. And if I were, uh, you know,

17:19.120 --> 17:24.640
using this as a movie to upgrade, I personally would do that by, by specifying an install path,

17:24.640 --> 17:31.520
quote unquote, on top of, uh, a main installation. I don't do that. I update shortcuts mainly based

17:31.520 --> 17:37.600
on what specifically I want to try, uh, in an effort to, to, to, to notice, uh, interesting

17:37.600 --> 17:44.400
patches and confirm they work on windows, which mostly they do. There's not a lot of code in my

17:44.400 --> 17:49.760
experience that is, uh, windows specific and very, very little around the build process.

17:50.320 --> 17:57.440
All right. Huge rabbit hole zone. And I still have a minute before I have to, uh, kick off

17:57.440 --> 18:07.120
the first part of our demo. So let's, let's keep, keep diving in, um, the, those specific part

18:07.120 --> 18:11.920
windows specific parts beside the dot exe extension that we're going to find slammed

18:11.920 --> 18:17.680
onto all of our familiar, uh, executables. We're also going to have emacs client W,

18:18.400 --> 18:26.880
which is a wrapper that hides, um, how hard it is to get, uh, to, to, to get it,

18:27.600 --> 18:31.760
how bad the abstraction is between the window management layer and the GUI,

18:32.400 --> 18:37.040
and then all the different parts on windows. Essentially, it wants to create a shell window.

18:37.040 --> 18:42.960
If we just double click emacs dot exe. So emacs client W, uh, and run emacs,

18:42.960 --> 18:49.440
they're going to solve that problem. Um, uh, wrapping emacs and emacs client respectively.

18:51.600 --> 19:00.320
And, um, just, uh, all right. So let's, let's go ahead and do something. I'll, I'm going to

19:00.320 --> 19:08.080
take away the ticker here for a minute. And what you're not seeing is off stage. I am killing that

19:08.080 --> 19:19.680
so we don't get built in parallel. Um, so, um, so at this point I'm going to open up a shell and

19:19.680 --> 19:24.240
I'm going to start talking just a little bit about my local build environment, which we haven't

19:24.240 --> 19:32.640
gotten into. In fact, just to make that even easier, let's, um, let's just take a look at it

19:32.640 --> 19:40.640
a little bit. Probably the easiest spot is here.

19:47.680 --> 19:55.280
All right. So here we have the familiar windows, my computer interface. I have the G drive and the

19:55.680 --> 20:07.200
H drive, four terabyte drives, um, dedicated to my, um, really overblown emacs build process.

20:08.160 --> 20:14.000
Um, this just lets me be super lazy. There's no reason you need any massive amount of storage

20:14.000 --> 20:22.080
to do any of this. Um, inside here, and now I'll actually switch you back to the other screen.

20:23.040 --> 20:26.560
Um, we'll, we'll find,

20:37.280 --> 20:46.480
oops, sorry about that. I didn't take the time to label that one. Um, so here you can see

20:46.480 --> 20:53.760
the primary output that I'm looking at through this automated process. I come along, I look at

20:53.760 --> 20:59.840
the bug reports, or maybe I'm just restarting my computer and choosing what emacs version at random.

20:59.840 --> 21:06.240
And then in that case, I look at this modified date and I say, um, my config that I, you know,

21:06.240 --> 21:11.120
that I'm playing with right now is all set for emacs 30, or I'm testing the both and I'm

21:11.120 --> 21:16.400
relaunching both of these. Right. So for me, that starts by diving into the install folder,

21:16.400 --> 21:22.720
going into the bin folder, which looks exactly the way my automation leaves it. I then come in

21:22.720 --> 21:34.320
to run the run emacs and I create a shortcut, um, to it. So I'm a keyboard person. So that's

21:34.320 --> 21:40.400
usually done like this. And then I just know that the context menu is going to come up in the right

21:40.400 --> 21:49.120
place. So I'll come up and, um, possibly change the, change the shortcut, right.

21:53.120 --> 22:01.280
If I don't mess with it. Um, so here's where I'll add my minus Q, if that's kind of where

22:01.280 --> 22:06.800
my world was at, or it kind of depends on what I'm doing with these, which varies week to week.

22:07.440 --> 22:12.000
Um, so restarting my emacs, uh, involves doing the same thing, going to my desktop

22:12.560 --> 22:23.200
and where you'll find a number of emac shortcuts and, um, updating the shortcut in the same manner

22:23.920 --> 22:28.000
joint actually, maybe we'll just, let's go back there and just show it.

22:28.000 --> 22:31.600
So if we look at, for example, my ERC,

22:31.760 --> 22:39.040
you can see, it's going to be pointing at one of these clones and then it's going to

22:39.760 --> 22:44.720
maybe tell me that I want, it wants to be full screen. Nope, not currently. And then it might,

22:44.720 --> 22:48.720
uh, have some stuff in there about auto-loading at config and what

22:48.720 --> 22:52.560
connections I'm going to, some commands I've defined to start connections.

22:53.280 --> 22:57.680
All right. And sorry, I got a phone call. I was checking. It wasn't in an org, the org,

22:57.680 --> 23:04.160
not the other organizers giving me the hook. So, um, all right. So that's, that's probably

23:04.160 --> 23:11.440
enough on the local system. Let's get back to the, to, to building emacs. And now it hopefully makes

23:11.440 --> 23:17.440
a certain amount of sense when I say we're going to wander over to the H drive and, and, and, and,

23:17.920 --> 23:22.560
hopefully makes a certain amount of sense when I say we're going to wander over to the H drive

23:22.560 --> 23:31.520
and recreate the structure that, um, both my process sort of assumes and the scripts you'll

23:31.520 --> 23:41.440
find in the admin NT, uh, build disk folder in source used to assume. Those scripts are in need

23:41.440 --> 23:49.440
of some love. And in just a little bit, I'll be mentioning a build, uh, a, uh, a, a, a particular

23:49.440 --> 23:54.000
bug that you might want to pay attention to if you're interested in making a self-installer.

23:54.800 --> 24:04.320
All right. So, um, we're going to create, uh, an emacs build directory.

24:04.320 --> 24:16.960
And we've got a handy git clone stage, git clone command stage for ourself. That would work. Um,

24:19.360 --> 24:26.160
do not currently see anybody lobbying for that. So instead we will run the rather faster

24:27.120 --> 24:36.080
uh, W get command on Savannah, which is not pasted in here. Nice. Let's see if I can freehand it.

24:36.080 --> 24:40.000
Not going to do it. Uh,

24:40.720 --> 24:41.840
okay.

24:52.000 --> 24:56.560
I beg your pardon. I'm grabbing a URL from the internet.

25:00.080 --> 25:06.960
Uh, okay. Yeah, I can, I can honestly, I can freehand it, whatever. Okay. Sorry. I, uh,

25:07.680 --> 25:13.200
I didn't have that bookmarked in all handy. Like I thought I did. Um, so we'll just say

25:13.200 --> 25:30.480
ftp.gnu.org slash, uh, what is it? Pub emacs, emacs-29.1, uh, .org.gnu.org.exe.

25:30.480 --> 25:47.040
I really think I'd have this command sitting around. It makes me want to scrap the whole

25:47.040 --> 25:54.720
demo. I'm not going to lie. Okay. How am I doing? Um, I think at least 15 minutes. Um,

25:54.720 --> 25:58.160
but in the command that you were freehanding, should the pub be GNU instead?

25:59.120 --> 26:01.680
Oh, thanks. I'm sorry.

26:07.440 --> 26:13.360
There we go. Thank you. All right. And then we'll,

26:17.760 --> 26:20.160
and I'm not sure I provided commands for this either,

26:20.720 --> 26:29.600
but it is trivially easy to do. And while that happens, we'll get to move on a few slides.

26:31.760 --> 26:38.000
Um, the configure script I'm not talking about in a lot of detail, but I do want to mention that the

26:38.000 --> 26:44.720
GNU binaries are provided with native, uh, compilation enabled. That's the feature that

26:44.800 --> 26:55.360
uses gcc lib gcc get on windows. If available, that lib gcc get will be used. Um, but when,

26:55.360 --> 27:03.200
but, uh, if, if, uh, emacs has that feature, then it will take by compile, uh, native code and,

27:03.200 --> 27:10.880
uh, asynchronously compile that as needed, uh, with the ahead of time feature. We're going to

27:10.880 --> 27:15.360
do as much of that ahead of time. And for folks that are consuming the windows binary, the

27:15.360 --> 27:21.360
thinking goes that they might not have my assist too. They might not have lib gcc jet. They might

27:21.360 --> 27:28.560
be happy that they're enabled in a, you know, a lot of time running emacs on their local environments

27:30.400 --> 27:39.120
at all, you know, in a, maybe a lockdown, uh, corporate context. So aside that, um, there's

27:39.120 --> 27:45.120
your first glimpse at the configure, um, program that we're going to run in a moment. In fact,

27:45.120 --> 27:52.160
I'm going to go as far as putting it on the clipboard. Um, really just looking at this,

27:52.160 --> 27:57.120
the AOT flag is the one I'd call attention to, but it's worth understanding that windows doesn't

27:57.120 --> 28:02.000
provide a D bus capability. So windows native program isn't going to be able to depend on D

28:02.000 --> 28:07.600
bus. We're going to, we're going to explicitly ask that that be left out. I think that's actually

28:07.600 --> 28:12.080
optional and it's documentation. I think the configure program is smart enough to know that

28:12.080 --> 28:20.080
we don't want D bus on windows. Um, otherwise we tend to compile with things. Um, there there's

28:20.080 --> 28:26.320
missing documentation. We could say the, uh, all of the libraries are treated in the way I mentioned

28:26.320 --> 28:34.880
in that, um, JPEG support will be available as long as the JPEG is, is available in our environment

28:34.880 --> 28:40.320
and configure script certainly notices that, um, the GNU provided binaries are provided with

28:40.320 --> 28:47.280
minus O2. And that's also my default personally on windows. Um, however, and I'm going to skip

28:47.280 --> 28:59.680
this since I mentioned it, um, mentioned, uh, and, uh, um, so I guess I'll say, um, you can,

28:59.680 --> 29:06.560
um, say with the, it's worth knowing that you, if you're not one reason that, that you're building

29:06.560 --> 29:11.200
might be because you want to turn off native compilation for whatever reason. If you have

29:11.200 --> 29:16.640
low juices, you get, get, but don't want Emacs to use it. Uh, especially as that default looks like

29:16.640 --> 29:26.480
it could be changing with Emacs 30. Um, the, uh, the debug configuration, um, this is, this is the,

29:26.480 --> 29:33.200
uh, kind of, uh, what, what I'm currently using this on commentary, uh, I've seen on the next

29:33.200 --> 29:45.280
development list. Let's check on our checkout and see if we can't get a build running. Um,

29:45.280 --> 29:51.440
this is a release build, so I won't be starting with, uh, so we'll start by hopping into its

29:51.440 --> 30:14.080
directory and we, um, we have, uh, but not. Okay. So that tells us we're going to run

30:14.640 --> 30:23.440
our configure program, but we don't need to run a config IC. So,

30:31.280 --> 30:34.320
so let's get that going and, uh,

30:36.000 --> 30:41.360
hopefully that's showing through just enough to be fun, not too much to be distracting.

30:45.040 --> 30:55.760
Um, the, uh, the unoptimized, uh, uh, um, please report issues. If your Emacs is crashing,

30:55.760 --> 31:01.200
uh, to the Emacs development list, not to me personally. Um, although you are of course,

31:01.200 --> 31:06.960
welcome to copy me. Um, if you especially I'm subscribed to that list, so I get all the mail.

31:06.960 --> 31:14.000
So I don't mind being copied. Uh, and, uh, as well, if you think it's, uh,

31:15.040 --> 31:20.160
you know, related to packaging, that actually makes sense or windows related to even, and,

31:20.160 --> 31:25.120
uh, it can be tested with an extra snapshot that should be uploaded to the canoe alpha side.

31:25.120 --> 31:31.600
I could look at that if I have time. There's with the configure script to make file for

31:32.160 --> 31:39.840
Emacs is really, really complicated. If time permits, which I'm now confident it will not,

31:39.840 --> 31:44.240
we will look at, uh, make file that I tried writing that, uh, orchestrates this whole

31:44.240 --> 31:52.160
process that I'm talking about. Um, as, uh, let's see. So the build, uh, build process,

31:52.160 --> 32:03.120
I run my builds with, uh, explosively specifying the max CPU, uh, with minus J, but minus B one

32:03.120 --> 32:08.320
to get the full build, uh, full log into your recipes. That is probably the magic thing.

32:09.040 --> 32:12.560
Matt, um, shouldn't to understand what, uh,

32:16.000 --> 32:23.600
or that, uh, that, that, uh, that I'm glad that I know, uh, as I'm trying to write my automations,

32:26.960 --> 32:36.080
uh, the, um, so I call that out here, the binary, uh, releases. Um, okay. So in this section,

32:36.080 --> 32:41.120
we're going to start to get into what are all those files. And there's a bug report related to

32:41.120 --> 32:46.640
that, but I didn't get into here. So, um, that's kind of to the point about the less said about

32:46.640 --> 32:50.800
this, the better, uh, that's my explanation for stepping through some of these slides.

32:50.800 --> 32:58.240
Uh, of course we'll share them all, uh, uh, hopefully by the time that this video is published.

32:58.960 --> 33:06.640
Oh, I mentioned, um, I may have mentioned already freshly installed, but, uh, fully installed. Uh,

33:06.640 --> 33:15.200
the, the, the key distinction here is that, uh, Emacs is distributed in the binary form for Windows

33:15.200 --> 33:21.600
with some DLL files that actually come from the mysys2 project. There's an implication there to

33:21.760 --> 33:26.160
there's an implication there to GCC that I definitely want to get to it talking about.

33:28.080 --> 33:35.840
Um, so freshly installed means we haven't copied those binaries from the mysys2, uh,

33:35.840 --> 33:45.360
installation into the Emacs, uh, installation. Uh, and then, uh, when we re-archived that

33:45.360 --> 33:48.640
local Emacs installation, that's how we're going to create the full zip.

33:48.640 --> 33:54.160
So hopefully that actually is a pretty good summary of what all those files are. Um, but

33:54.160 --> 34:00.320
there are readme files, uh, on the FTP that do a pretty good job, um, if you can dig enough to find

34:00.320 --> 34:11.120
one and my apologies for, uh, tardiness getting a new version on that posted. Um, the Emacs, uh,

34:11.120 --> 34:17.040
so those dependencies, uh, are listed within Emacs itself. And as we'll just talk about in a moment,

34:17.040 --> 34:24.240
there's a way, uh, that we can use, we can access that when we collect them in order to meet, uh,

34:24.240 --> 34:31.840
the GCC requirement that is essentially to include, um, include the sources for the,

34:31.840 --> 34:41.200
for those binaries, the things that were compiled against. Um, the, uh, so, so here we go,

34:41.200 --> 34:45.280
we're, we're into the build process. Let's just take a look and see if configure it got done.

34:45.280 --> 34:52.240
It sure did. And now we can see a table of, of hopefully good, but good and bad news, um,

34:52.240 --> 34:57.840
and potential, um, where we're learning that we're using the pdumper strategy and any number of other

34:57.840 --> 35:04.320
things that we might be messing with as our motivation for, for building ourselves on Emacs.

35:04.320 --> 35:12.560
Um, again, this table represents, uh, what you'll, what, what, what it looks like for me when I'm

35:12.560 --> 35:22.720
building for the GNU distributed binaries. All right. So, um, kind of moving, moving as quickly

35:22.720 --> 35:31.200
as I can here. I'm at 40 after, I believe that's the five minute mark. So, um, having just succeeded

35:31.200 --> 35:37.040
in, in configuring Emacs, I don't think we're going to build it. Uh, uh, I don't think we're

35:37.040 --> 35:42.720
going to actually get to running make install. Um, but I have it sitting here on my keyboard

35:43.280 --> 35:54.320
or clipboard, assuming that we will, right? No. Oh, wow. I think I've managed to confuse this.

35:54.320 --> 36:06.240
All right. So for me, that looks simply like, uh, make, uh, V equals one install, uh,

36:08.160 --> 36:11.040
prefix equals, uh,

36:18.400 --> 36:19.920
and we can at least get it kicked off.

36:20.640 --> 36:27.680
And that can, that command is just, uh, just is no, no different than I showed on the slide where

36:27.680 --> 36:32.160
I, where I gave it, uh, wasn't planning to stop and explain it. I was just planning to paste it.

36:33.360 --> 36:38.640
So, so, so again, recapping the rest of the process here and maybe actually making it,

36:38.640 --> 36:44.320
if you can believe it or not, through the rest of these slides, um, we, to, to, to create the

36:44.800 --> 36:49.600
full set of binaries, we're going to need a no dependent, no depths archive. That's without the

36:49.600 --> 36:57.760
mysys2, uh, deal provided DLLs, just the things that we compile as part of making Emacs. Um,

37:00.320 --> 37:07.840
the, uh, the build depths zip script is provided with the source distribution is your tool for,

37:07.840 --> 37:11.760
uh, meeting the GPL requirements, right? Source as mentioned before,

37:12.640 --> 37:18.560
um, there is a second bug that I did, uh, include some more information on in my notes already.

37:19.680 --> 37:25.600
Um, that, uh, that gets into the details of this other feature I alluded to.

37:26.480 --> 37:35.120
Um, I'll just skip into that. Um, we, we can, with, with, uh, with a, an appropriate version

37:35.680 --> 37:42.240
of that, which you may need a patch, uh, to, to have, you can list out the dependencies

37:42.240 --> 37:47.200
and, and that version as well. Can consider the dependencies of the Emacs binary versus

37:47.200 --> 37:51.680
the hard-coded list you might find, depending on when you look at this file in the source tree.

37:53.680 --> 38:01.360
The diff, um, so I also have a hack here that, uh, works around the absolute requirement to

38:01.600 --> 38:18.320
run this with the mysys2 and not the minGW64 script. Um, once we've made that zip file that

38:18.320 --> 38:25.360
contain that's, that's our installed Emacs without the DLLs provided by mysys2, we'll then unpack

38:25.360 --> 38:30.960
the dependencies that were created by that Python script we just talked about from the Emacs source

38:30.960 --> 38:38.080
tree. At that point, once those are unpacked, we can now make what's called the full installer,

38:38.080 --> 38:42.800
or sometimes I might call it the unqualified installer, because it's just going to be called

38:42.800 --> 38:54.800
Emacs29.1.zip. Um, and that, uh, that file, which, which creates the, the, the, the, the,

38:54.800 --> 39:02.640
which creates the archive, uh, that, uh, that, that, that file is exactly the same,

39:02.640 --> 39:08.400
plus the, uh, the dependencies that we unzipped in the bin folder of the installed Emacs.

39:09.680 --> 39:14.480
The, uh, executable self-installer, which I would love to have more time to talk about.

39:14.480 --> 39:18.720
I gave a few pointers here on the hard part of running it. Most importantly,

39:19.680 --> 39:26.640
if I've installed in any kind of funny looking name, I end up renaming it to like Emacs-29.1

39:26.640 --> 39:35.200
or Emacs-29. or 30.0.50 or whatever. And I just renamed that installed Emacs folder.

39:35.200 --> 39:39.680
And then I go to the root of wherever I created that, the parent directory above it.

39:40.320 --> 39:46.560
And that's where I make my copy of the Emacs NSI, um, the, the NSIS script.

39:47.520 --> 39:55.600
And, uh, that's also where I, and then, um, then from that parent directory, I execute,

39:55.600 --> 40:02.560
uh, making sys, uh, here. I, as mentioned, um, I, I can get away with this because I have it

40:02.560 --> 40:07.520
on my path and it's my recollection. I think I tested this and couldn't reproduce the problem.

40:07.520 --> 40:11.200
So I didn't document it here, but I've had some problems with running this

40:11.200 --> 40:20.400
when, uh, when NSIS wasn't on my path. The, uh, the, the, the final step here

40:20.400 --> 40:27.600
and the last, the GPL requirement is to include all the sources, except when I'm doing a release

40:27.600 --> 40:34.320
build, I always do this. Um, and that's the new practice when making Snapchat binaries is to go

40:34.320 --> 40:39.840
ahead and include the sources, even though we might have the specific revision number, um,

40:39.840 --> 40:46.800
our thinking is we want absolute clarity, um, that, that somebody, uh, can say, okay,

40:46.800 --> 40:51.200
this binary did this thing, send me the source for it. I'm going to go take that into my own

40:51.200 --> 40:56.800
open source, or yeah, maybe they would, the jerks, um, into my own open source project.

40:56.880 --> 41:03.360
And, um, you know, off they go, uh, and that needs to be possible.

41:04.800 --> 41:12.480
Um, so, um, beyond that, the rest of this is, is really detailed that you find covered in the GNU

41:12.480 --> 41:19.520
maintainers manual. Um, this is the, the current set of Windows binaries that, um, it's busily

41:19.520 --> 41:29.040
working on creating a like for like a mirror to behind the scenes here is called a 29.1 underscore

41:29.040 --> 41:36.080
two. Um, and I have a lot of automation, uh, available on this site. So at this point,

41:36.080 --> 41:45.200
I'm just, I think I'm only a minute, 40 seconds over. I'm gonna invite my, uh, co-organizers

41:45.200 --> 41:49.760
back onto the call or any volunteers that want to jump in and anybody, if there's people on the

41:49.760 --> 41:57.440
BBB, I'd be happy to take questions. If there aren't, um, I have a screen full of, uh, the

41:57.440 --> 42:04.080
automation stuff ready to go as a kind of a second ring in my circus today. So if you're still with

42:04.080 --> 42:08.640
me, thanks a lot for joining me. And I really enjoyed this talk. Uh, if this is where we're

42:08.640 --> 42:14.560
going to close it out, I don't know where we're at for schedule today. Thanks a lot for a great

42:14.560 --> 42:20.880
talk, Corwin. Um, in terms of like schedule, yeah, you went over a little bit for the official,

42:20.880 --> 42:26.880
like, um, schedule or time of your talk, but I think, uh, we actually have maybe like six or

42:26.880 --> 42:32.640
seven more minutes, um, here on stream for, um, questions and such, if folks have questions,

42:32.640 --> 42:38.320
or if you want to like quickly maybe show one or two more things. Um, but I think the hard stuff

42:38.320 --> 42:43.520
is about like maybe 10 minutes ish for now. And then we'll have to rush over to, um, uh, for the

42:43.520 --> 42:55.520
closing remarks. So, well, that sounds awesome. Okay. So I'm looking at the, the dev chat. Uh,

42:55.520 --> 43:01.040
I see a comment on cross-compiling the emacs, but I'm sorry, I'm looking at IRC primarily, but,

43:01.040 --> 43:08.080
uh, feel free to jump in if you're on, uh, BBB with me, or, uh, uh, if, if you put something on

43:08.160 --> 43:16.400
the pad, I'm sure, uh, we'll see it between the two of us, uh, over here. Okay. So cross-compiling

43:16.400 --> 43:20.640
emacs for Serenity. I haven't tried really any cross-compiling. I think that would be very

43:20.640 --> 43:28.240
interesting. I would most likely focus on doing exactly what I do on a GNU system, completely

43:28.240 --> 43:35.760
ditching. Um, so I guess with my, my remaining time, rather than walking through code, um, for

43:35.760 --> 43:42.080
my automation, which can be another talk, if in fact there's an interest in that, um, I want to,

43:42.080 --> 43:48.480
I guess, say a couple of words about the non-free operating system that I'm using here. I did my

43:48.480 --> 43:58.880
best to use no non-free software other than the, uh, the operating system that is the context for

43:58.880 --> 44:07.920
this talk in preparing this talk for you. I personally have a lot more, uh, time and energy,

44:07.920 --> 44:15.840
I have to say, invested in proprietary tools for doing a lot of the things that, that go into this.

44:15.840 --> 44:22.000
So I really respect the work of people that pull that off. Um, I'm sorry I didn't get my pre-recorded

44:22.000 --> 44:30.320
stuff, uh, kind of in order for everybody, but I just want to stress, like, uh, it is all absolutely

44:30.320 --> 44:35.520
possible and just hats off to everybody that, that used, uh, entirely free software to get their,

44:36.240 --> 44:43.360
get their recordings done in time. Um, and what you did see, unless it was provided by the operating

44:43.360 --> 44:49.200
system in my presentation today, was all, uh, free software with the debatable exception of

44:49.200 --> 44:56.160
NSYS, which styles itself as open source, maybe for, uh, marketing reasons.

44:56.720 --> 45:00.400
Okay, uh, in any case, uh, certainly we can get all that source.

45:08.080 --> 45:14.640
Thanks for the note, Corin. It's good to know that, uh, building or, uh, yeah, doing the build of Emacs

45:14.720 --> 45:20.880
for Windows on Windows can be done, uh, using only free software. Yeah, absolutely.

45:23.440 --> 45:29.520
Probably the right closing note, right? Um, I just, uh, thanks again to the organizers for

45:29.520 --> 45:33.920
bearing with me. And like, every time I was like, you guys, I'm terrible at this. They're just like,

45:33.920 --> 45:38.240
no, you're doing fine. Keep going. You did a great job live last time. You can do it live,

45:38.240 --> 45:43.040
you know, and, and saying all the right things to just, uh, encourage me to come back,

45:43.920 --> 45:46.160
uh, this year and every year.

45:49.760 --> 45:53.520
Well, as I said before, we were very lucky to have you and the rest of the team, of course,

45:53.520 --> 45:59.520
as well. And, um, goes without saying, but all the speakers and the audience, the participants as

45:59.520 --> 46:14.240
well. So, um, so, uh, are we, we're still live over here that, you know, you know, me, I'm the

46:14.240 --> 46:22.800
Mike Hogg that I am. I can't resist, um, throwing, throwing up another screen here. And, uh, in fact,

46:22.800 --> 46:32.160
let's go ahead and go back to our, to our crawler, right? And I'll bring back our build

46:32.160 --> 46:40.480
if it finishes and maybe we'll show making the installer as well. Um, uh, but I have the CPU

46:40.480 --> 46:49.680
account turned down a little bit here. Uh, note, I didn't specify minus J here. Um, so, uh, over

46:49.680 --> 46:54.000
here is my automation. Uh, in case you do want to take a look, I can at least provide the

46:54.000 --> 46:59.760
orientation of what you're looking at. Scrape log is probably my first thing I want to show off.

46:59.760 --> 47:08.400
Um, it's not beautiful, but this works, uh, pretty well for me to get a sense of something might

47:08.400 --> 47:14.640
have changed in terms of how many warnings or errors are happening when I build Emacs. So I

47:14.720 --> 47:18.640
have this whole automation going on and I frequently want to answer the question,

47:19.280 --> 47:25.600
you know, what's the change rate in, uh, warnings or what have you. So this kind of gives me a count

47:26.400 --> 47:36.880
of that. Um, so from there, uh, accrued CI is the script we're watching run in the other pane.

47:37.840 --> 47:44.960
Um, we can see it's, uh, just starting to do its thing again.

47:48.800 --> 47:56.960
And, uh, the make file I mentioned, this is a top-down rewrite of everything else that I've done.

47:57.040 --> 48:08.640
It has some bugs right now. Um, the, uh, the build distribution is the main script that I use for my

48:08.640 --> 48:17.120
personal builds. This is what is run by the crude CI script. Uh, it has a fun tie-in to this, uh,

48:17.120 --> 48:23.200
web interface here, um, where we can, you don't need the port number when you go to it. That's

48:23.200 --> 48:33.680
just if I'm going to post. Um, the, uh, blah, blah, blah, blah, blah. This, this script is

48:33.680 --> 48:39.120
really long and complicated and probably needs some diving into, but you can see that, um, one

48:39.120 --> 48:43.760
of the complexities I have to deal with is that I'm going to need something in the format of an

48:43.840 --> 48:53.920
emacs-version for strategic, um, nsys reasons. So, uh, it takes care of kind of every complexity

48:54.480 --> 49:03.120
that I mentioned today in some respects, um, as does the make file. Build release is, um, another

49:03.120 --> 49:11.360
fairly useful incarnation of this. This is just focused on the release process, and this does

49:11.360 --> 49:18.800
work, uh, for example, to create the, the, the, you know, like, like, well, I could like, uh,

49:18.800 --> 49:25.600
for like files as far as I can tell. So what are currently posted for emacs 29.1 and the release

49:25.600 --> 49:32.400
candidate. Um, so I'll probably use that next time. And if it's still like, for like, I'll

49:32.400 --> 49:40.960
probably post the ones that came from this. Um, uh, building, uh, TreeSitter, I make some DLLs

49:40.960 --> 49:47.120
there. If you're looking for hints on how to get going or just simply, uh, a huge long list

49:47.120 --> 49:55.840
of Git repositories that make grammars, you can use that is here as well. Um, finally, I mentioned

49:55.840 --> 50:04.800
I have a, um, I have a website where I publish my own personal snapshots that I make, uh, that

50:04.800 --> 50:11.680
folder full of install directories, but all of the usual GNU style binary distributables, including

50:11.680 --> 50:22.320
the source code and the source code for the dependencies. Um, the, uh, so this program is

50:22.320 --> 50:27.680
another one of those complicated find commands and therefore potentially the most useful thing

50:27.680 --> 50:34.960
in here to take to you. Um, and here I'm deleting, uh, binaries older than 17 years. Uh, everything

50:34.960 --> 50:42.240
except the, uh, node apps file and the sources of it you'll find on my website. Currently those

50:42.240 --> 50:48.800
indefinitely, I'll probably roll out 120 days or something, um, for those eventually.

50:53.600 --> 51:00.400
Oh, uh, I can talk about this one even. Um, the, uh, so here you'll see the two branches that I'm

51:00.400 --> 51:06.560
tracking. The job of this script is, uh, this runs on the website. I call it with a, like a remote

51:06.560 --> 51:15.920
rsync, uh, type, uh, or an SSA remote, uh, SSH command. Um, and right after the rsync,

51:15.920 --> 51:26.080
rsyncing up any new Emacs that I built. And, uh, it's, uh, it's job is to update my fancy

51:26.080 --> 51:34.880
directory indexing. So let's look at Corwin's website. Here's my Emacs 29 folder.

51:37.360 --> 51:50.400
We have about two more minutes, Corwin. Yeah. It'll take that entire two minutes to, uh,

51:50.400 --> 51:56.400
load this directory because I am, because I have not yet ever pruned any of these dang binaries.

51:56.400 --> 52:02.800
So every version of, uh, Emacs 29 that I've ever made for myself is probably here. Nice.

52:03.600 --> 52:08.480
Uh, I strongly recommend that you bookmark this folder if you're using these for something and

52:08.480 --> 52:14.240
you always want the latest. Um, so here, this particular, uh, latest 29, Emacs 29 latest,

52:14.240 --> 52:22.560
or simply replace the 29 with 30 to get those. Uh, alas, no, no such luck for TreeSetter.

52:23.120 --> 52:26.320
But if we look at, uh, that,

52:36.400 --> 52:40.320
live this long without making a typo. Now look at me.

52:40.320 --> 52:46.080
Uh-oh. Oh.

52:51.520 --> 52:56.720
So here, um, you know, we can see the icon application and so on, even in the TreeSetter

52:56.720 --> 53:01.440
folder. This is all I'm talking about, about the fanciness that's set up by that other script that

53:02.400 --> 53:06.880
I'm showing over here and run after each time I run the upload. It just

53:07.840 --> 53:12.640
looks to see if anything's new and add some lines to the .htaccess file.

53:15.840 --> 53:22.400
Um, I'm particularly proud of this one. I'm not going to lie. Um, linking out to each,

53:22.400 --> 53:26.560
each, uh, project that we're using, letting us know the commit version,

53:26.560 --> 53:34.320
and then, uh, for the DLLs, quick link out to the log and the signature file for this DLL. Um,

53:36.960 --> 53:46.160
I find that a lot, just a lot more readable than, uh, listing them all out individually. And I'd

53:46.160 --> 53:53.360
love to do something like that on the GNU site. So I'm, I think we've got to be out of time by

53:53.360 --> 53:59.600
now. I've just got to say, hey, thanks again for having me, uh, for those that, uh, watch the talk

53:59.600 --> 54:04.400
either live or after the conference. Uh, appreciate everyone's support to get me to

54:04.400 --> 54:10.320
the point where I will be able to, uh, to do this, this, this cool volunteer task,

54:10.320 --> 54:14.160
uh, which is fun and easy to do and reach out to me if you're interested in helping with it.

54:18.960 --> 54:24.320
Well, awesome. Thanks a lot for the awesome talk, Corbyn. And, uh, of course, as a fellow

54:24.320 --> 54:29.920
core, uh, core organizer, uh, for all, for all that you do, um, in and around Emacs Conf

54:29.920 --> 54:33.280
and of course for, uh, GNU Emacs as well, it's much appreciated.

54:36.160 --> 54:43.200
Big, big words from coming from you, my friend. Um, thanks for the kind words.

54:45.040 --> 54:49.840
Cheers. My pleasure. All right. And with that, I think we're gonna, uh, wrap up the dev, uh,

54:49.840 --> 54:55.360
track here and, uh, we'll be with you again shortly in a few minutes on the gen stream,

54:55.360 --> 55:00.400
the gen track for the closing remarks for today, um, only for today, because we're going to be

55:00.400 --> 55:07.520
back tomorrow again as well. So don't go anywhere and, uh, see you on the gen track in a bit.

55:25.920 --> 55:32.720
Oh my God, I did it. We got done within the time. You're my hero. Um, and thank you so

55:32.720 --> 55:41.520
much for just keeping me honest there and, uh, like helping me keep my eye on the time and such.

55:41.520 --> 55:53.680
You have to look at the recording and see whether you feel like doing it again.

55:56.160 --> 55:59.520
I'm sorry. I had my sound screwed up and I'm sorry if I talked over somebody,

55:59.520 --> 56:01.680
I couldn't hear anything on mumble until this very moment.

56:03.520 --> 56:08.960
Oh, uh, because he's your webcam for it. Um, like as a, like a virtual webcam thingy,

56:09.440 --> 56:15.760
it was low res, especially when things are changing as you're scrolling around. So we'll

56:15.760 --> 56:19.920
see what kind of recording we can recover from it. And then you can decide whether you maybe

56:19.920 --> 56:26.480
want to clean it up with like screenshots. I recorded on this end too. We shouldn't have

56:26.480 --> 56:30.720
that problem with my recording. Thank you. Thank you. Thank you. I think we're still live on the

56:30.720 --> 56:42.240
dev stream. Someone could, uh, take that off. Oh, yes. Because, uh, I'll, I'll set it to rebroadcast.

56:45.520 --> 56:50.640
Yeah. I love doing that for the closing remarks. That's a fine tradition

56:52.000 --> 56:58.480
or it's a tradition now. Cause I'm pretty sure this means we've done it twice.

57:01.680 --> 57:07.360
I once heard that, you know, uh, as a fan-ish meaning like a fan-ish is a term of endearment

57:07.360 --> 57:12.240
for a science fiction fan to another. We say we're, we're fans or things we do are fan-ish and

57:12.800 --> 57:18.960
a fan-ish tradition then is if you do it three times, it's tradition, but we're on a budget here.

57:19.680 --> 57:31.600
So, all right. I think we should, um, head over to mumble and talk on mumble. Um, and just decide

57:31.600 --> 57:36.240
and see like which big blue button room we're going to be in for closing. Okay. So we're clear

57:36.240 --> 57:39.600
on BBB here? Yep. I think so.