-
Notifications
You must be signed in to change notification settings - Fork 4
/
mk_xfce.sh
executable file
·1103 lines (1046 loc) · 60.9 KB
/
mk_xfce.sh
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
#!/bin/sh
# set +e
# 所有的编译基于 Ubuntu 18.04.6 Server LTS 编译通过, 纯净的系统,其它系统请自行调整脚本
# 预装工具
if [ -f "/usr/bin/apt" ]; then
# 暂且屏蔽掉 llvm-10 clang-10
apt install autoconf autoconf-archive automake libtool make nasm cmake m4 pkg-config intltool -y || exit
apt install check bison flex python3-pip libpython-dev gperf gtk-doc-tools xsltproc -y || exit
apt install libssl-dev libcurl4-openssl-dev libsqlite3-dev libmicrohttpd-dev libarchive-dev libgirepository1.0-dev -y || exit
# 需要安装, 安装主题, 显卡驱动, 安装字库否则不能正常显示, gsettings-desktop-schemas 保证 xfdesktop-settings 能运行
apt install libudev-dev libdbus-1-dev dbus-x11 gobject-introspection icon-naming-utils -y || exit
fi
if [ -f "/usr/bin/yum" ]; then
echo "xxx"
fi
# undefined symbol: Py_InitModule4_64 需要安装高版本的 python3.8-dbg
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple ninja
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple meson
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple gi-docgen
#-----------------------------------------------
#
# 导入公共变量
#
#-----------------------------------------------
. ./common.sh
MTDEV_SRC_URL=https://bitmath.org/code/mtdev/mtdev-1.1.6.tar.bz2
GETTEXT_SRC_URL=https://ftp.gnu.org/pub/gnu/gettext/gettext-0.21.tar.gz
LIBMNT_SRC_URL=https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.36/util-linux-2.36.tar.xz
LIBZIP_SRC_URL=https://libzip.org/download/libzip-1.9.2.tar.xz
LIBELF_SRC_URL=https://sourceware.org/elfutils/ftp/0.186/elfutils-0.186.tar.bz2
CAIRO_SRC_URL=https://www.cairographics.org/releases/cairo-1.16.0.tar.xz
PIXMAN_SRC_URL=https://www.cairographics.org/releases/pixman-0.40.0.tar.gz
ZLIB_SRC_URL=https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.xz
LIBPNG_SRC_URL=https://nchc.dl.sourceforge.net/project/libpng/libpng16/1.6.37/libpng-1.6.37.tar.xz
FREETYPE_SRC_URL=https://nchc.dl.sourceforge.net/project/freetype/freetype2/2.12.0/freetype-2.12.0.tar.xz
LIBJPEGTURBO_SRC_URL=https://sourceforge.net/projects/libjpeg-turbo/files/2.1.0/libjpeg-turbo-2.1.0.tar.gz
XKBCOMMON_SRC_URL=https://xkbcommon.org/download/libxkbcommon-1.4.1.tar.xz
XTERM_SRC_URL=https://invisible-island.net/archives/xterm/xterm-372.tgz
EXPAT_SRC_URL=https://nchc.dl.sourceforge.net/project/expat/expat/2.4.9/expat-2.4.9.tar.xz
LIBUDEV_SRC_URL=https://dev.gentoo.org/~blueness/eudev/eudev-3.2.9.tar.gz
LIBNETTLE_SRC_URL=https://ftp.gnu.org/gnu/nettle/nettle-3.8.1.tar.gz
LIBPCRE_SRC_URL=https://nchc.dl.sourceforge.net/project/pcre/pcre/8.39/pcre-8.39.tar.gz
NCURSES_SRC_URL=https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.2.tar.gz
XFCE_SRC_URL=https://archive.xfce.org/xfce/4.16/fat_tarballs/xfce-4.16.tar.bz2
LIBEDIT_SRC_URL=https://thrysoee.dk/editline/libedit-20210910-3.1.tar.gz
IMSENSORS_SRC_URL=https://ftp.gwdg.de/pub/linux/misc/lm-sensors/lm_sensors-3.4.0.tar.bz2
# download from https://github.com
LIBUSB_SRC_URL=https://github.com/libusb/libusb/releases/download/v1.0.26/libusb-1.0.26.tar.bz2
LIBFFI_SRC_URL=https://github.com/libffi/libffi/releases/download/v3.4.2/libffi-3.4.2.tar.gz
LIBTHAI_SRC_URL=https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz
LIBDATRIE_SRC_URL=https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz
LIBPCRE2_SRC_URL=https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.40/pcre2-10.40.tar.gz
XRDP_SRC_URL=https://github.com/neutrinolabs/xrdp/releases/download/v0.9.19/xrdp-0.9.19.tar.gz
FRIBIDI_SRC_URL=https://github.com/fribidi/fribidi/releases/download/v1.0.12/fribidi-1.0.12.tar.xz
HARFBUZZ_SRC_URL=https://github.com/harfbuzz/harfbuzz/releases/download/5.1.0/harfbuzz-5.1.0.tar.xz
LIBPAM_SRC_URL=https://github.com/linux-pam/linux-pam/releases/download/v1.5.2/Linux-PAM-1.5.2.tar.xz
LLVM_SRC_URL=https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/llvm-10.0.0.src.tar.xz
LIBWACOM_SRC_URL=https://github.com/linuxwacom/libwacom/releases/download/libwacom-2.4.0/libwacom-2.4.0.tar.xz
XF86INPUTWACOM_SRC_URL=https://github.com/linuxwacom/xf86-input-wacom/releases/download/xf86-input-wacom-0.40.0/xf86-input-wacom-0.40.0.tar.bz2
DEJAVUFONTS1_SRC_URL=https://github.com/dejavu-fonts/dejavu-fonts/releases/download/version_2_37/dejavu-fonts-ttf-2.37.tar.bz2
DEJAVUFONTS2_SRC_URL=https://github.com/dejavu-fonts/dejavu-fonts/releases/download/version_2_37/dejavu-lgc-fonts-ttf-2.37.tar.bz2
# download from https://gitlab.freedesktop.org
WAYLANDCORE_SRC_URL=https://wayland.freedesktop.org/releases/wayland-1.20.0.tar.xz
WAYLANDPROT_SRC_URL=https://wayland.freedesktop.org/releases/wayland-protocols-1.25.tar.xz
UPOWER_SRC_URL=https://gitlab.freedesktop.org/upower/upower/-/archive/v1.90.0/upower-v1.90.0.tar.gz
MESA_SRC_URL=https://gitlab.freedesktop.org/mesa/mesa/-/archive/mesa-20.0.0-rc3/mesa-mesa-20.0.0-rc3.tar.gz
SHAREDMIMEINFO_SRC_URL=https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/2.2/shared-mime-info-2.2.tar.gz
DESKTOPFILEUTILS_SRC_URL=https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/archive/0.26/desktop-file-utils-0.26.tar.gz
SPICEPROT_SRC_URL=https://gitlab.freedesktop.org/spice/spice-protocol/uploads/cf23e217768affaca44896598bd50f3e/spice-protocol-0.14.2.tar.xz
LIBDRM_SRC_URL=https://dri.freedesktop.org/libdrm/libdrm-2.4.110.tar.xz
DBUS1_SRC_URL=https://dbus.freedesktop.org/releases/dbus/dbus-1.12.12.tar.gz
GSTREAMER_SRC_URL=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.20.2.tar.xz
ICONNAMINGUTILS_SRC_URL=http://tango.freedesktop.org/releases/icon-naming-utils-0.8.90.tar.bz2
HICOLORICONTHEME_SRC_URL=https://icon-theme.freedesktop.org/releases/hicolor-icon-theme-0.17.tar.xz
LIBEVDEV_SRC_URL=https://www.freedesktop.org/software/libevdev/libevdev-1.13.0.tar.xz
LIBINPUT_SRC_URL=https://www.freedesktop.org/software/libinput/libinput-1.19.4.tar.xz
FONTCFG_SRC_URL=https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.13.96.tar.xz
STARTUPNOTI_SRC_URL=http://www.freedesktop.org/software/startup-notification/releases/startup-notification-0.12.tar.gz
# download from https://download.gnome.org
GLIB_SRC_URL=https://download.gnome.org/sources/glib/2.62/glib-2.62.0.tar.xz
LIBATK_SRC_URL=https://download.gnome.org/sources/atk/2.38/atk-2.38.0.tar.xz
PANGO_SRC_URL=https://download.gnome.org/sources/pango/1.48/pango-1.48.9.tar.xz
GTKX_SRC_URL=https://download.gnome.org/sources/gtk%2B/3.24/gtk%2B-3.24.9.tar.xz
LIBXML_SRC_URL=https://download.gnome.org/sources/libxml2/2.9/libxml2-2.9.8.tar.xz
LIBGUDEV_SRC_URL=https://download.gnome.org/sources/libgudev/236/libgudev-236.tar.xz
LIBWNCK_SRC_URL=https://download.gnome.org/sources/libwnck/3.36/libwnck-3.36.0.tar.xz
LIBEPOXY_SRC_URL=https://download.gnome.org/sources/libepoxy/1.5/libepoxy-1.5.10.tar.xz
GRAPHENE_SRC_URL=https://download.gnome.org/sources/graphene/1.10/graphene-1.10.8.tar.xz
LIBNOTIFY_SRC_URL=https://download.gnome.org/sources/libnotify/0.8/libnotify-0.8.0.tar.xz
GDKPIXBUF_SRC_URL=https://download.gnome.org/sources/gdk-pixbuf/2.42/gdk-pixbuf-2.42.8.tar.xz
LIBATK_CORE_SRC_URL=https://download.gnome.org/sources/at-spi2-core/2.38/at-spi2-core-2.38.0.tar.xz
LIBATK_BRIDGE_SRC_URL=https://download.gnome.org/sources/at-spi2-atk/2.38/at-spi2-atk-2.38.0.tar.xz
GNOMEICONTHEME_SRC_URL=https://download.gnome.org/sources/gnome-icon-theme/3.12/gnome-icon-theme-3.12.0.tar.xz
GOBJINTROSPE_SRC_URL=https://download.gnome.org/sources/gobject-introspection/1.73/gobject-introspection-1.73.1.tar.xz
GSETDESKTOPSCHEMAS_SRC_URL=https://download.gnome.org/sources/gsettings-desktop-schemas/42/gsettings-desktop-schemas-42.0.tar.xz
# download from https://www.x.org/releases/individual
XI_SRC_URL=https://www.x.org/releases/individual/lib/libXi-1.8.tar.gz
XT_SRC_URL=https://www.x.org/releases/individual/lib/libXt-1.2.1.tar.gz
XMU_SRC_URL=https://www.x.org/releases/individual/lib/libXmu-1.1.3.tar.gz
LIBSM_SRC_URL=https://www.x.org/releases/individual/lib/libSM-1.2.3.tar.gz
XAU_SRC_URL=https://www.x.org/releases/individual/lib/libXau-1.0.10.tar.xz
XAW_SRC_URL=https://www.x.org/releases/individual/lib/libXaw-1.0.14.tar.gz
XPM_SRC_URL=https://www.x.org/releases/individual/lib/libXpm-3.5.13.tar.gz
LIBX11_SRC_URL=https://www.x.org/releases/individual/lib/libX11-1.8.tar.gz
XEXT_SRC_URL=https://www.x.org/releases/individual/lib/libXext-1.3.4.tar.gz
LIBXCB_SRC_URL=https://www.x.org/releases/individual/lib/libxcb-1.15.tar.xz
XTST_SRC_URL=https://www.x.org/releases/individual/lib/libXtst-1.2.3.tar.gz
XTRANS_SRC_URL=https://www.x.org/releases/individual/lib/xtrans-1.4.0.tar.gz
LIBICE_SRC_URL=https://www.x.org/releases/individual/lib/libICE-1.0.10.tar.gz
XINIT_SRC_URL=https://www.x.org/releases/individual/app/xinit-1.4.1.tar.gz
XDMCP_SRC_URL=https://www.x.org/releases/individual/lib/libXdmcp-1.1.3.tar.gz
XFONT_SRC_URL=https://www.x.org/releases/individual/lib/libXfont2-2.0.6.tar.xz
LIBXCVT_SRC_URL=https://www.x.org/releases/individual/lib/libxcvt-0.1.2.tar.xz
XRANDR_SRC_URL=https://www.x.org/releases/individual/lib/libXrandr-1.5.2.tar.gz
XFIXES_SRC_URL=https://www.x.org/releases/individual/lib/libXfixes-6.0.0.tar.gz
XKBFILE_SRC_URL=https://www.x.org/releases/individual/lib/libxkbfile-1.1.0.tar.gz
FONTENC_SRC_URL=https://www.x.org/releases/individual/lib/libfontenc-1.1.6.tar.xz
XDAMAGE_SRC_URL=https://www.x.org/releases/individual/lib/libXdamage-1.1.5.tar.gz
XXF86VM_SRC_URL=https://www.x.org/releases/individual/lib/libXxf86vm-1.1.4.tar.gz
XRENDER_SRC_URL=https://www.x.org/releases/individual/lib/libXrender-0.9.10.tar.gz
XSHMFENCE_SRC_URL=https://www.x.org/releases/individual/lib/libxshmfence-1.3.tar.gz
XINERAMA_SRC_URL=https://www.x.org/releases/individual/lib/libXinerama-1.1.4.tar.gz
LIBPCIACCESS_SRC_URL=https://www.x.org/releases/individual/lib/libpciaccess-0.16.tar.gz
XORGMACROS_SRC_URL=https://www.x.org/releases/individual/util/util-macros-1.19.3.tar.gz
XINPUT_SRC_URL=https://www.x.org/releases/individual/app/xinput-1.6.3.tar.gz
ICEAUTH_SRC_URL=https://www.x.org/releases/individual/app/iceauth-1.0.9.tar.xz
XKBCOMP_SRC_URL=https://www.x.org/releases/individual/app/xkbcomp-1.4.5.tar.gz
BDFTOPCF_SRC_URL=https://www.x.org/releases/individual/app/bdftopcf-1.1.tar.bz2
MKFONTDIR_SRC_URL=https://www.x.org/releases/individual/app/mkfontdir-1.0.7.tar.bz2
MKFONTSCALE_SRC_URL=https://www.x.org/releases/individual/app/mkfontscale-1.2.2.tar.xz
XCBUTIL_SRC_URL=https://www.x.org/releases/individual/xcb/xcb-util-0.4.0.tar.gz
KBPROTO_SRC_URL=https://www.x.org/releases/individual/proto/kbproto-1.0.7.tar.gz
LIBXPROTO_SRC_URL=https://www.x.org/releases/individual/proto/xproto-7.0.31.tar.gz
XEXTPROTO_SRC_URL=https://www.x.org/releases/individual/proto/xextproto-7.3.0.tar.gz
XCBPROTO_SRC_URL=https://www.x.org/releases/individual/proto/xcb-proto-1.15.2.tar.gz
XORGPROTO_SRC_URL=https://www.x.org/releases/individual/proto/xorgproto-2022.2.tar.xz
XSERVER_SRC_URL=https://www.x.org/releases/individual/xserver/xorg-server-21.1.4.tar.xz
FONTUTIL_SRC_URL=https://www.x.org/releases/individual/font/font-util-1.3.3.tar.xz
FONTMISC_SRC_URL=https://www.x.org/releases/individual/font/font-misc-misc-1.1.2.tar.bz2
XF86INPUT_SRC_URL=https://www.x.org/releases/individual/driver/xf86-input-libinput-1.2.1.tar.xz
XF86INPUTVM_SRC_URL=https://www.x.org/releases/individual/driver/xf86-input-vmmouse-13.2.0.tar.xz
XF86INPUTMM_SRC_URL=https://www.x.org/releases/individual/driver/xf86-input-mouse-1.9.3.tar.bz2
XF86INPUTEVDEV_SRC_URL=https://www.x.org/releases/individual/driver/xf86-input-evdev-2.10.6.tar.bz2
XF86VIDEOATI_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-ati-19.1.0.tar.bz2
XF86VIDEOVESA_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-vesa-2.5.0.tar.bz2
XF86VIDEOINTEL_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-intel-2.99.917.tar.bz2
XF86VIDEOQXL_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-qxl-0.1.5.tar.bz2
XF86VIDEOAMD_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-amd-2.7.7.7.tar.bz2
XF86VIDEOFBDEV_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-fbdev-0.5.0.tar.bz2
XF86VIDEOVMWARE_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-vmware-13.3.0.tar.bz2
XF86VIDEOAMDGPU_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-amdgpu-21.0.0.tar.bz2
XF86VIDEODUMMY_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-dummy-0.4.0.tar.xz
XKBDATA_SRC_URL=https://www.x.org/releases/individual/data/xkbdata-1.0.1.tar.bz2
XKBDCFG_SRC_URL=https://www.x.org/releases/individual/data/xkeyboard-config/xkeyboard-config-2.36.tar.xz
#----------------------------
#
# 下载源码
#
#----------------------------
mkdir -pv source
cd source
LIBFFI_SRC_NAME=$(download_src ${LIBFFI_SRC_URL})
LIBXML_SRC_NAME=$(download_src ${LIBXML_SRC_URL})
LIBMNT_SRC_NAME=$(download_src ${LIBMNT_SRC_URL})
LIBPNG_SRC_NAME=$(download_src ${LIBPNG_SRC_URL})
ZLIB_SRC_NAME=$(download_src ${ZLIB_SRC_URL})
LIBZIP_SRC_NAME=$(download_src ${LIBZIP_SRC_URL})
LIBELF_SRC_NAME=$(download_src ${LIBELF_SRC_URL})
LIBUDEV_SRC_NAME=$(download_src ${LIBUDEV_SRC_URL})
LIBTHAI_SRC_NAME=$(download_src ${LIBTHAI_SRC_URL})
LIBEDIT_SRC_NAME=$(download_src ${LIBEDIT_SRC_URL})
LIBNETTLE_SRC_NAME=$(download_src ${LIBNETTLE_SRC_URL})
LIBDATRIE_SRC_NAME=$(download_src ${LIBDATRIE_SRC_URL})
LIBPCRE_SRC_NAME=$(download_src ${LIBPCRE_SRC_URL})
LIBPCRE2_SRC_NAME=$(download_src ${LIBPCRE2_SRC_URL})
LIBNOTIFY_SRC_NAME=$(download_src ${LIBNOTIFY_SRC_URL})
GLIB_SRC_NAME=$(download_src ${GLIB_SRC_URL})
LLVM_SRC_NAME=$(download_src ${LLVM_SRC_URL})
EXPAT_SRC_NAME=$(download_src ${EXPAT_SRC_URL})
PIXMAN_SRC_NAME=$(download_src ${PIXMAN_SRC_URL})
FREETYPE_SRC_NAME=$(download_src ${FREETYPE_SRC_URL})
IMSENSORS_SRC_NAME=$(download_src ${IMSENSORS_SRC_URL})
CAIRO_SRC_NAME=$(download_src ${CAIRO_SRC_URL})
FONTCFG_SRC_NAME=$(download_src ${FONTCFG_SRC_URL})
HARFBUZZ_SRC_NAME=$(download_src ${HARFBUZZ_SRC_URL})
FRIBIDI_SRC_NAME=$(download_src ${FRIBIDI_SRC_URL})
PANGO_SRC_NAME=$(download_src ${PANGO_SRC_URL})
GDKPIXBUF_SRC_NAME=$(download_src ${GDKPIXBUF_SRC_URL})
SHAREDMIMEINFO_SRC_NAME=$(download_src ${SHAREDMIMEINFO_SRC_URL})
DESKTOPFILEUTILS_SRC_NAME=$(download_src ${DESKTOPFILEUTILS_SRC_URL})
LIBATK_SRC_NAME=$(download_src ${LIBATK_SRC_URL})
GETTEXT_SRC_NAME=$(download_src ${GETTEXT_SRC_URL})
WAYLANDCORE_SRC_NAME=$(download_src ${WAYLANDCORE_SRC_URL})
WAYLANDPROT_SRC_NAME=$(download_src ${WAYLANDPROT_SRC_URL})
STARTUPNOTI_SRC_NAME=$(download_src ${STARTUPNOTI_SRC_URL})
LIBGUDEV_SRC_NAME=$(download_src ${LIBGUDEV_SRC_URL})
UPOWER_SRC_NAME=$(download_src ${UPOWER_SRC_URL})
LIBUSB_SRC_NAME=$(download_src ${LIBUSB_SRC_URL})
LIBWNCK_SRC_NAME=$(download_src ${LIBWNCK_SRC_URL})
LIBATK_CORE_SRC_NAME=$(download_src ${LIBATK_CORE_SRC_URL})
LIBATK_BRIDGE_SRC_NAME=$(download_src ${LIBATK_BRIDGE_SRC_URL})
LIBJPEGTURBO_SRC_NAME=$(download_src ${LIBJPEGTURBO_SRC_URL})
LIBXPROTO_SRC_NAME=$(download_src ${LIBXPROTO_SRC_URL})
XTRANS_SRC_NAME=$(download_src ${XTRANS_SRC_URL})
XINIT_SRC_NAME=$(download_src ${XINIT_SRC_URL})
LIBSM_SRC_NAME=$(download_src ${LIBSM_SRC_URL})
XINPUT_SRC_NAME=$(download_src ${XINPUT_SRC_URL})
LIBICE_SRC_NAME=$(download_src ${LIBICE_SRC_URL})
LIBX11_SRC_NAME=$(download_src ${LIBX11_SRC_URL})
XRANDR_SRC_NAME=$(download_src ${XRANDR_SRC_URL})
XINERAMA_SRC_NAME=$(download_src ${XINERAMA_SRC_URL})
XRENDER_SRC_NAME=$(download_src ${XRENDER_SRC_URL})
KBPROTO_SRC_NAME=$(download_src ${KBPROTO_SRC_URL})
XKBCOMMON_SRC_NAME=$(download_src ${XKBCOMMON_SRC_URL})
XEXT_SRC_NAME=$(download_src ${XEXT_SRC_URL})
XEXTPROTO_SRC_NAME=$(download_src ${XEXTPROTO_SRC_URL})
XCBPROTO_SRC_NAME=$(download_src ${XCBPROTO_SRC_URL})
LIBXCB_SRC_NAME=$(download_src ${LIBXCB_SRC_URL})
XCBUTIL_SRC_NAME=$(download_src ${XCBUTIL_SRC_URL})
ICEAUTH_SRC_NAME=$(download_src ${ICEAUTH_SRC_URL})
XT_SRC_NAME=$(download_src ${XT_SRC_URL})
XAU_SRC_NAME=$(download_src ${XAU_SRC_URL})
XAW_SRC_NAME=$(download_src ${XAW_SRC_URL})
XMU_SRC_NAME=$(download_src ${XMU_SRC_URL})
XPM_SRC_NAME=$(download_src ${XPM_SRC_URL})
XDMCP_SRC_NAME=$(download_src ${XDMCP_SRC_URL})
XRANDR_SRC_NAME=$(download_src ${XRANDR_SRC_URL})
XRENDER_SRC_NAME=$(download_src ${XRENDER_SRC_URL})
KBPROTO_SRC_NAME=$(download_src ${KBPROTO_SRC_URL})
XEXT_SRC_NAME=$(download_src ${XEXT_SRC_URL})
XEXTPROTO_SRC_NAME=$(download_src ${XEXTPROTO_SRC_URL})
XCBPROTO_SRC_NAME=$(download_src ${XCBPROTO_SRC_URL})
LIBXCB_SRC_NAME=$(download_src ${LIBXCB_SRC_URL})
XCBUTIL_SRC_NAME=$(download_src ${XCBUTIL_SRC_URL})
XAU_SRC_NAME=$(download_src ${XAU_SRC_URL})
XDMCP_SRC_NAME=$(download_src ${XDMCP_SRC_URL})
XORGPROTO_SRC_NAME=$(download_src ${XORGPROTO_SRC_URL})
XFIXES_SRC_NAME=$(download_src ${XFIXES_SRC_URL})
XDAMAGE_SRC_NAME=$(download_src ${XDAMAGE_SRC_URL})
XSHMFENCE_SRC_NAME=$(download_src ${XSHMFENCE_SRC_URL})
XXF86VM_SRC_NAME=$(download_src ${XXF86VM_SRC_URL})
XI_SRC_NAME=$(download_src ${XI_SRC_URL})
XTST_SRC_NAME=$(download_src ${XTST_SRC_URL})
XFCE_SRC_NAME=$(download_src ${XFCE_SRC_URL})
MESA_SRC_NAME=$(download_src ${MESA_SRC_URL})
LIBDRM_SRC_NAME=$(download_src ${LIBDRM_SRC_URL})
GSTREAMER_SRC_NAME=$(download_src ${GSTREAMER_SRC_URL})
LIBPAM_SRC_NAME=$(download_src ${LIBPAM_SRC_URL})
XRDP_SRC_NAME=$(download_src ${XRDP_SRC_URL})
XKBCOMP_SRC_NAME=$(download_src ${XKBCOMP_SRC_URL})
LIBXCVT_SRC_NAME=$(download_src ${LIBXCVT_SRC_URL})
XKBFILE_SRC_NAME=$(download_src ${XKBFILE_SRC_URL})
FONTENC_SRC_NAME=$(download_src ${FONTENC_SRC_URL})
XFONT_SRC_NAME=$(download_src ${XFONT_SRC_URL})
FONTUTIL_SRC_NAME=$(download_src ${FONTUTIL_SRC_URL})
MKFONTDIR_SRC_NAME=$(download_src ${MKFONTDIR_SRC_URL})
MKFONTSCALE_SRC_NAME=$(download_src ${MKFONTSCALE_SRC_URL})
BDFTOPCF_SRC_NAME=$(download_src ${BDFTOPCF_SRC_URL})
FONTMISC_SRC_NAME=$(download_src ${FONTMISC_SRC_URL})
XSERVER_SRC_NAME=$(download_src ${XSERVER_SRC_URL})
NCURSES_SRC_NAME=$(download_src ${NCURSES_SRC_URL})
XTERM_SRC_NAME=$(download_src ${XTERM_SRC_URL})
XKBDATA_SRC_NAME=$(download_src ${XKBDATA_SRC_URL})
XKBDCFG_SRC_NAME=$(download_src ${XKBDCFG_SRC_URL})
MTDEV_SRC_NAME=$(download_src ${MTDEV_SRC_URL})
LIBEVDEV_SRC_NAME=$(download_src ${LIBEVDEV_SRC_URL})
LIBWACOM_SRC_NAME=$(download_src ${LIBWACOM_SRC_URL})
LIBINPUT_SRC_NAME=$(download_src ${LIBINPUT_SRC_URL})
SPICEPROT_SRC_NAME=$(download_src ${SPICEPROT_SRC_URL})
XF86INPUT_SRC_NAME=$(download_src ${XF86INPUT_SRC_URL})
XF86INPUTVM_SRC_NAME=$(download_src ${XF86INPUTVM_SRC_URL})
XF86INPUTMM_SRC_NAME=$(download_src ${XF86INPUTMM_SRC_URL})
XF86INPUTEVDEV_SRC_NAME=$(download_src ${XF86INPUTEVDEV_SRC_URL})
XF86INPUTWACOM_SRC_NAME=$(download_src ${XF86INPUTWACOM_SRC_URL})
XF86VIDEOATI_SRC_NAME=$(download_src ${XF86VIDEOATI_SRC_URL})
XF86VIDEOVESA_SRC_NAME=$(download_src ${XF86VIDEOVESA_SRC_URL})
XF86VIDEOINTEL_SRC_NAME=$(download_src ${XF86VIDEOINTEL_SRC_URL})
XF86VIDEODUMMY_SRC_NAME=$(download_src ${XF86VIDEODUMMY_SRC_URL})
XF86VIDEOQXL_SRC_NAME=$(download_src ${XF86VIDEOQXL_SRC_URL})
XF86VIDEOAMD_SRC_NAME=$(download_src ${XF86VIDEOAMD_SRC_URL})
XF86VIDEOFBDEV_SRC_NAME=$(download_src ${XF86VIDEOFBDEV_SRC_URL})
XF86VIDEOVMWARE_SRC_NAME=$(download_src ${XF86VIDEOVMWARE_SRC_URL})
XF86VIDEOAMDGPU_SRC_NAME=$(download_src ${XF86VIDEOAMDGPU_SRC_URL})
DEJAVUFONTS1_SRC_NAME=$(download_src ${DEJAVUFONTS1_SRC_URL})
DEJAVUFONTS2_SRC_NAME=$(download_src ${DEJAVUFONTS2_SRC_URL})
GNOMEICONTHEME_SRC_NAME=$(download_src ${GNOMEICONTHEME_SRC_URL})
HICOLORICONTHEME_SRC_NAME=$(download_src ${HICOLORICONTHEME_SRC_URL})
ICONNAMINGUTILS_SRC_NAME=$(download_src ${ICONNAMINGUTILS_SRC_URL})
DBUS1_SRC_NAME=$(download_src ${DBUS1_SRC_URL})
GRAPHENE_SRC_NAME=$(download_src ${GRAPHENE_SRC_URL})
LIBEPOXY_SRC_NAME=$(download_src ${LIBEPOXY_SRC_URL})
XORGMACROS_SRC_NAME=$(download_src ${XORGMACROS_SRC_URL})
GOBJINTROSPE_SRC_NAME=$(download_src ${GOBJINTROSPE_SRC_URL})
GSETDESKTOPSCHEMAS_SRC_NAME=$(download_src ${GSETDESKTOPSCHEMAS_SRC_URL})
LIBPCIACCESS_SRC_NAME=$(download_src ${LIBPCIACCESS_SRC_URL} xorg-libpciaccess-)
# gtk 因为 + 号,需要特殊处理
GTKX_SRC_NAME=$(echo $(file_name ${GTKX_SRC_URL}) | sed 's/%2B/+/')
if [ ! -f "${GTKX_SRC_NAME}" ]; then
wget -c -t 0 $GTKX_SRC_URL
fi
cd ..
#---------------------------
#
# 解压源码
#
#---------------------------
mkdir -pv ${build_dir}
LIBFFI_SRC_DIR=$(unzip_src ".tar.gz" ${LIBFFI_SRC_NAME}); echo "unzip ${LIBFFI_SRC_NAME} source code"
LIBXML_SRC_DIR=$(unzip_src ".tar.xz" ${LIBXML_SRC_NAME}); echo "unzip ${LIBXML_SRC_NAME} source code"
LIBMNT_SRC_DIR=$(unzip_src ".tar.xz" ${LIBMNT_SRC_NAME}); echo "unzip ${LIBMNT_SRC_NAME} source code"
LIBPNG_SRC_DIR=$(unzip_src ".tar.xz" ${LIBPNG_SRC_NAME}); echo "unzip ${LIBPNG_SRC_NAME} source code"
ZLIB_SRC_DIR=$(unzip_src ".tar.xz" ${ZLIB_SRC_NAME}); echo "unzip ${ZLIB_SRC_NAME} source code"
LIBZIP_SRC_DIR=$(unzip_src ".tar.xz" ${LIBZIP_SRC_NAME}); echo "unzip ${LIBZIP_SRC_NAME} source code"
LIBELF_SRC_DIR=$(unzip_src ".tar.bz2" ${LIBELF_SRC_NAME}); echo "unzip ${LIBELF_SRC_NAME} source code"
LIBEDIT_SRC_DIR=$(unzip_src ".tar.gz" ${LIBEDIT_SRC_NAME}); echo "unzip ${LIBEDIT_SRC_NAME} source code"
LIBUDEV_SRC_DIR=$(unzip_src ".tar.gz" ${LIBUDEV_SRC_NAME}); echo "unzip ${LIBUDEV_SRC_NAME} source code"
LIBTHAI_SRC_DIR=$(unzip_src ".tar.xz" ${LIBTHAI_SRC_NAME}); echo "unzip ${LIBTHAI_SRC_NAME} source code"
LIBNETTLE_SRC_DIR=$(unzip_src ".tar.gz" ${LIBNETTLE_SRC_NAME}); echo "unzip ${LIBNETTLE_SRC_NAME} source code"
LIBDATRIE_SRC_DIR=$(unzip_src ".tar.xz" ${LIBDATRIE_SRC_NAME}); echo "unzip ${LIBDATRIE_SRC_NAME} source code"
LIBPCRE_SRC_DIR=$(unzip_src ".tar.gz" ${LIBPCRE_SRC_NAME}); echo "unzip ${LIBPCRE_SRC_NAME} source code"
LIBPCRE2_SRC_DIR=$(unzip_src ".tar.gz" ${LIBPCRE2_SRC_NAME}); echo "unzip ${LIBPCRE2_SRC_NAME} source code"
LIBNOTIFY_SRC_DIR=$(unzip_src ".tar.xz" ${LIBNOTIFY_SRC_NAME}); echo "unzip ${LIBNOTIFY_SRC_NAME} source code"
GLIB_SRC_DIR=$(unzip_src ".tar.xz" ${GLIB_SRC_NAME}); echo "unzip ${GLIB_SRC_NAME} source code"
LLVM_SRC_DIR=$(unzip_src ".tar.xz" ${LLVM_SRC_NAME}); echo "unzip ${LLVM_SRC_NAME} source code"
EXPAT_SRC_DIR=$(unzip_src ".tar.xz" ${EXPAT_SRC_NAME}); echo "unzip ${EXPAT_SRC_NAME} source code"
PIXMAN_SRC_DIR=$(unzip_src ".tar.gz" ${PIXMAN_SRC_NAME}); echo "unzip ${PIXMAN_SRC_NAME} source code"
FREETYPE_SRC_DIR=$(unzip_src ".tar.xz" ${FREETYPE_SRC_NAME}); echo "unzip ${FREETYPE_SRC_NAME} source code"
IMSENSORS_SRC_DIR=$(unzip_src ".tar.bz2" ${IMSENSORS_SRC_NAME}); echo "unzip ${IMSENSORS_SRC_NAME} source code"
CAIRO_SRC_DIR=$(unzip_src ".tar.xz" ${CAIRO_SRC_NAME}); echo "unzip ${CAIRO_SRC_NAME} source code"
FONTCFG_SRC_DIR=$(unzip_src ".tar.xz" ${FONTCFG_SRC_NAME}); echo "unzip ${FONTCFG_SRC_NAME} source code"
HARFBUZZ_SRC_DIR=$(unzip_src ".tar.xz" ${HARFBUZZ_SRC_NAME}); echo "unzip ${HARFBUZZ_SRC_NAME} source code"
FRIBIDI_SRC_DIR=$(unzip_src ".tar.xz" ${FRIBIDI_SRC_NAME}); echo "unzip ${FRIBIDI_SRC_NAME} source code"
PANGO_SRC_DIR=$(unzip_src ".tar.xz" ${PANGO_SRC_NAME}); echo "unzip ${PANGO_SRC_NAME} source code"
GDKPIXBUF_SRC_DIR=$(unzip_src ".tar.xz" ${GDKPIXBUF_SRC_NAME}); echo "unzip ${GDKPIXBUF_SRC_NAME} source code"
DBUS1_SRC_DIR=$(unzip_src ".tar.gz" ${DBUS1_SRC_NAME}); echo "unzip ${DBUS1_SRC_NAME} source code"
LIBATK_SRC_DIR=$(unzip_src ".tar.xz" ${LIBATK_SRC_NAME}); echo "unzip ${LIBATK_SRC_NAME} source code"
LIBEPOXY_SRC_DIR=$(unzip_src ".tar.xz" ${LIBEPOXY_SRC_NAME}); echo "unzip ${LIBEPOXY_SRC_NAME} source code"
LIBATK_CORE_SRC_DIR=$(unzip_src ".tar.xz" ${LIBATK_CORE_SRC_NAME}); echo "unzip ${LIBATK_CORE_SRC_NAME} source code"
LIBATK_BRIDGE_SRC_DIR=$(unzip_src ".tar.xz" ${LIBATK_BRIDGE_SRC_NAME}); echo "unzip ${LIBATK_BRIDGE_SRC_NAME} source code"
SHAREDMIMEINFO_SRC_DIR=$(unzip_src ".tar.gz" ${SHAREDMIMEINFO_SRC_NAME}); echo "unzip ${SHAREDMIMEINFO_SRC_NAME} source code"
DESKTOPFILEUTILS_SRC_DIR=$(unzip_src ".tar.gz" ${DESKTOPFILEUTILS_SRC_NAME}); echo "unzip ${DESKTOPFILEUTILS_SRC_NAME} source code"
GRAPHENE_SRC_DIR=$(unzip_src ".tar.xz" ${GRAPHENE_SRC_NAME}); echo "unzip ${GRAPHENE_SRC_NAME} source code"
GETTEXT_SRC_DIR=$(unzip_src ".tar.gz" ${GETTEXT_SRC_NAME}); echo "unzip ${GETTEXT_SRC_NAME} source code"
WAYLANDCORE_SRC_DIR=$(unzip_src ".tar.xz" ${WAYLANDCORE_SRC_NAME}); echo "unzip ${WAYLANDCORE_SRC_NAME} source code"
WAYLANDPROT_SRC_DIR=$(unzip_src ".tar.xz" ${WAYLANDPROT_SRC_NAME}); echo "unzip ${WAYLANDPROT_SRC_NAME} source code"
STARTUPNOTI_SRC_DIR=$(unzip_src ".tar.gz" ${STARTUPNOTI_SRC_NAME}); echo "unzip ${STARTUPNOTI_SRC_NAME} source code"
LIBGUDEV_SRC_DIR=$(unzip_src ".tar.xz" ${LIBGUDEV_SRC_NAME}); echo "unzip ${LIBGUDEV_SRC_NAME} source code"
UPOWER_SRC_DIR=$(unzip_src ".tar.gz" ${UPOWER_SRC_NAME}); echo "unzip ${UPOWER_SRC_NAME} source code"
LIBUSB_SRC_DIR=$(unzip_src ".tar.bz2" ${LIBUSB_SRC_NAME}); echo "unzip ${LIBUSB_SRC_NAME} source code"
GOBJINTROSPE_SRC_DIR=$(unzip_src ".tar.xz" ${GOBJINTROSPE_SRC_NAME}); echo "unzip ${GOBJINTROSPE_SRC_NAME} source code"
LIBWNCK_SRC_DIR=$(unzip_src ".tar.xz" ${LIBWNCK_SRC_NAME}); echo "unzip ${LIBWNCK_SRC_NAME} source code"
GSTREAMER_SRC_DIR=$(unzip_src ".tar.xz" ${GSTREAMER_SRC_NAME}); echo "unzip ${GSTREAMER_SRC_NAME} source code"
LIBDRM_SRC_DIR=$(unzip_src ".tar.xz" ${LIBDRM_SRC_NAME}); echo "unzip ${LIBDRM_SRC_NAME} source code"
LIBJPEGTURBO_SRC_DIR=$(unzip_src ".tar.gz" ${LIBJPEGTURBO_SRC_NAME}); echo "unzip ${LIBJPEGTURBO_SRC_NAME} source code"
LIBXPROTO_SRC_DIR=$(unzip_src ".tar.gz" ${LIBXPROTO_SRC_NAME}); echo "unzip ${LIBXPROTO_SRC_NAME} source code"
LIBSM_SRC_DIR=$(unzip_src ".tar.gz" ${LIBSM_SRC_NAME}); echo "unzip ${LIBSM_SRC_NAME} source code"
LIBICE_SRC_DIR=$(unzip_src ".tar.gz" ${LIBICE_SRC_NAME}); echo "unzip ${LIBICE_SRC_NAME} source code"
LIBX11_SRC_DIR=$(unzip_src ".tar.gz" ${LIBX11_SRC_NAME}); echo "unzip ${LIBX11_SRC_NAME} source code"
XRANDR_SRC_DIR=$(unzip_src ".tar.gz" ${XRANDR_SRC_NAME}); echo "unzip ${XRANDR_SRC_NAME} source code"
XINERAMA_SRC_DIR=$(unzip_src ".tar.gz" ${XINERAMA_SRC_NAME}); echo "unzip ${XINERAMA_SRC_NAME} source code"
XRENDER_SRC_DIR=$(unzip_src ".tar.gz" ${XRENDER_SRC_NAME}); echo "unzip ${XRENDER_SRC_NAME} source code"
KBPROTO_SRC_DIR=$(unzip_src ".tar.gz" ${KBPROTO_SRC_NAME}); echo "unzip ${KBPROTO_SRC_NAME} source code"
XKBCOMMON_SRC_DIR=$(unzip_src ".tar.xz" ${XKBCOMMON_SRC_NAME}); echo "unzip ${XKBCOMMON_SRC_NAME} source code"
XEXT_SRC_DIR=$(unzip_src ".tar.gz" ${XEXT_SRC_NAME}); echo "unzip ${XEXT_SRC_NAME} source code"
XEXTPROTO_SRC_DIR=$(unzip_src ".tar.gz" ${XEXTPROTO_SRC_NAME}); echo "unzip ${XEXTPROTO_SRC_NAME} source code"
XINIT_SRC_DIR=$(unzip_src ".tar.gz" ${XINIT_SRC_NAME}); echo "unzip ${XINIT_SRC_NAME} source code"
XINPUT_SRC_DIR=$(unzip_src ".tar.gz" ${XINPUT_SRC_NAME}); echo "unzip ${XINPUT_SRC_NAME} source code"
XTRANS_SRC_DIR=$(unzip_src ".tar.gz" ${XTRANS_SRC_NAME}); echo "unzip ${XTRANS_SRC_NAME} source code"
XCBPROTO_SRC_DIR=$(unzip_src ".tar.gz" ${XCBPROTO_SRC_NAME}); echo "unzip ${XCBPROTO_SRC_NAME} source code"
LIBXCB_SRC_DIR=$(unzip_src ".tar.xz" ${LIBXCB_SRC_NAME}); echo "unzip ${LIBXCB_SRC_NAME} source code"
XCBUTIL_SRC_DIR=$(unzip_src ".tar.gz" ${XCBUTIL_SRC_NAME}); echo "unzip ${XCBUTIL_SRC_NAME} source code"
ICEAUTH_SRC_DIR=$(unzip_src ".tar.xz" ${ICEAUTH_SRC_NAME}); echo "unzip ${ICEAUTH_SRC_NAME} source code"
XT_SRC_DIR=$(unzip_src ".tar.gz" ${XT_SRC_NAME}); echo "unzip ${XT_SRC_NAME} source code"
XAU_SRC_DIR=$(unzip_src ".tar.xz" ${XAU_SRC_NAME}); echo "unzip ${XAU_SRC_NAME} source code"
XAW_SRC_DIR=$(unzip_src ".tar.gz" ${XAW_SRC_NAME}); echo "unzip ${XAW_SRC_NAME} source code"
XMU_SRC_DIR=$(unzip_src ".tar.gz" ${XMU_SRC_NAME}); echo "unzip ${XMU_SRC_NAME} source code"
XPM_SRC_DIR=$(unzip_src ".tar.gz" ${XPM_SRC_NAME}); echo "unzip ${XPM_SRC_NAME} source code"
XDMCP_SRC_DIR=$(unzip_src ".tar.gz" ${XDMCP_SRC_NAME}); echo "unzip ${XDMCP_SRC_NAME} source code"
XORGPROTO_SRC_DIR=$(unzip_src ".tar.xz" ${XORGPROTO_SRC_NAME}); echo "unzip ${XORGPROTO_SRC_NAME} source code"
XFIXES_SRC_DIR=$(unzip_src ".tar.gz" ${XFIXES_SRC_NAME}); echo "unzip ${XFIXES_SRC_NAME} source code"
XDAMAGE_SRC_DIR=$(unzip_src ".tar.gz" ${XDAMAGE_SRC_NAME}); echo "unzip ${XDAMAGE_SRC_NAME} source code"
XSHMFENCE_SRC_DIR=$(unzip_src ".tar.gz" ${XSHMFENCE_SRC_NAME}); echo "unzip ${XSHMFENCE_SRC_NAME} source code"
XXF86VM_SRC_DIR=$(unzip_src ".tar.gz" ${XXF86VM_SRC_NAME}); echo "unzip ${XXF86VM_SRC_NAME} source code"
XI_SRC_DIR=$(unzip_src ".tar.gz" ${XI_SRC_NAME}); echo "unzip ${XI_SRC_NAME} source code"
XTST_SRC_DIR=$(unzip_src ".tar.gz" ${XTST_SRC_NAME}); echo "unzip ${XTST_SRC_NAME} source code"
XORGMACROS_SRC_DIR=$(unzip_src ".tar.gz" ${XORGMACROS_SRC_NAME}); echo "unzip ${XORGMACROS_SRC_NAME} source code"
LIBPCIACCESS_SRC_DIR=$(unzip_src ".tar.gz" ${LIBPCIACCESS_SRC_NAME}); echo "unzip ${LIBPCIACCESS_SRC_NAME} source code"
MESA_SRC_DIR=$(unzip_src ".tar.gz" ${MESA_SRC_NAME}); echo "unzip ${MESA_SRC_NAME} source code"
GTKX_SRC_DIR=$(unzip_src ".tar.xz" ${GTKX_SRC_NAME}); echo "unzip ${GTKX_SRC_NAME} source code"
LIBPAM_SRC_DIR=$(unzip_src ".tar.xz" ${LIBPAM_SRC_NAME}); echo "unzip ${LIBPAM_SRC_NAME} source code"
XRDP_SRC_DIR=$(unzip_src ".tar.gz" ${XRDP_SRC_NAME}); echo "unzip ${XRDP_SRC_NAME} source code"
XKBCOMP_SRC_DIR=$(unzip_src ".tar.gz" ${XKBCOMP_SRC_NAME}); echo "unzip ${XKBCOMP_SRC_NAME} source code"
LIBXCVT_SRC_DIR=$(unzip_src ".tar.xz" ${LIBXCVT_SRC_NAME}); echo "unzip ${LIBXCVT_SRC_NAME} source code"
XKBFILE_SRC_DIR=$(unzip_src ".tar.gz" ${XKBFILE_SRC_NAME}); echo "unzip ${XKBFILE_SRC_NAME} source code"
FONTENC_SRC_DIR=$(unzip_src ".tar.xz" ${FONTENC_SRC_NAME}); echo "unzip ${FONTENC_SRC_NAME} source code"
XFONT_SRC_DIR=$(unzip_src ".tar.xz" ${XFONT_SRC_NAME}); echo "unzip ${XFONT_SRC_NAME} source code"
FONTUTIL_SRC_DIR=$(unzip_src ".tar.xz" ${FONTUTIL_SRC_NAME}); echo "unzip ${FONTUTIL_SRC_NAME} source code"
MKFONTDIR_SRC_DIR=$(unzip_src ".tar.bz2" ${MKFONTDIR_SRC_NAME}); echo "unzip ${MKFONTDIR_SRC_NAME} source code"
MKFONTSCALE_SRC_DIR=$(unzip_src ".tar.xz" ${MKFONTSCALE_SRC_NAME}); echo "unzip ${MKFONTSCALE_SRC_NAME} source code"
BDFTOPCF_SRC_DIR=$(unzip_src ".tar.bz2" ${BDFTOPCF_SRC_NAME}); echo "unzip ${BDFTOPCF_SRC_NAME} source code"
FONTMISC_SRC_DIR=$(unzip_src ".tar.bz2" ${FONTMISC_SRC_NAME}); echo "unzip ${FONTMISC_SRC_NAME} source code"
XSERVER_SRC_DIR=$(unzip_src ".tar.xz" ${XSERVER_SRC_NAME}); echo "unzip ${XSERVER_SRC_NAME} source code"
MTDEV_SRC_DIR=$(unzip_src ".tar.bz2" ${MTDEV_SRC_NAME}); echo "unzip ${MTDEV_SRC_NAME} source code"
LIBWACOM_SRC_DIR=$(unzip_src ".tar.xz" ${LIBWACOM_SRC_NAME}); echo "unzip ${LIBWACOM_SRC_NAME} source code"
LIBEVDEV_SRC_DIR=$(unzip_src ".tar.xz" ${LIBEVDEV_SRC_NAME}); echo "unzip ${LIBEVDEV_SRC_NAME} source code"
LIBINPUT_SRC_DIR=$(unzip_src ".tar.xz" ${LIBINPUT_SRC_NAME}); echo "unzip ${LIBINPUT_SRC_NAME} source code"
SPICEPROT_SRC_DIR=$(unzip_src ".tar.xz" ${SPICEPROT_SRC_NAME}); echo "unzip ${SPICEPROT_SRC_NAME} source code"
XF86INPUT_SRC_DIR=$(unzip_src ".tar.xz" ${XF86INPUT_SRC_NAME}); echo "unzip ${XF86INPUT_SRC_NAME} source code"
XF86INPUTVM_SRC_DIR=$(unzip_src ".tar.xz" ${XF86INPUTVM_SRC_NAME}); echo "unzip ${XF86INPUTVM_SRC_NAME} source code"
XF86INPUTMM_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86INPUTMM_SRC_NAME}); echo "unzip ${XF86INPUTMM_SRC_NAME} source code"
XF86INPUTEVDEV_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86INPUTEVDEV_SRC_NAME}); echo "unzip ${XF86INPUTEVDEV_SRC_NAME} source code"
XF86INPUTWACOM_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86INPUTWACOM_SRC_NAME}); echo "unzip ${XF86INPUTWACOM_SRC_NAME} source code"
XF86VIDEOATI_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOATI_SRC_NAME}); echo "unzip ${XF86VIDEOATI_SRC_NAME} source code"
XF86VIDEOVESA_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOVESA_SRC_NAME}); echo "unzip ${XF86VIDEOVESA_SRC_NAME} source code"
XF86VIDEOINTEL_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOINTEL_SRC_NAME}); echo "unzip ${XF86VIDEOINTEL_SRC_NAME} source code"
XF86VIDEODUMMY_SRC_DIR=$(unzip_src ".tar.xz" ${XF86VIDEODUMMY_SRC_NAME}); echo "unzip ${XF86VIDEODUMMY_SRC_NAME} source code"
XF86VIDEOQXL_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOQXL_SRC_NAME}); echo "unzip ${XF86VIDEOQXL_SRC_NAME} source code"
XF86VIDEOAMD_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOAMD_SRC_NAME}); echo "unzip ${XF86VIDEOAMD_SRC_NAME} source code"
XF86VIDEOFBDEV_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOFBDEV_SRC_NAME}); echo "unzip ${XF86VIDEOFBDEV_SRC_NAME} source code"
XF86VIDEOVMWARE_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOVMWARE_SRC_NAME}); echo "unzip ${XF86VIDEOVMWARE_SRC_NAME} source code"
XF86VIDEOAMDGPU_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOAMDGPU_SRC_NAME}); echo "unzip ${XF86VIDEOAMDGPU_SRC_NAME} source code"
DEJAVUFONTS1_SRC_DIR=$(unzip_src ".tar.bz2" ${DEJAVUFONTS1_SRC_NAME}); echo "unzip ${DEJAVUFONTS1_SRC_NAME} source code"
DEJAVUFONTS2_SRC_DIR=$(unzip_src ".tar.bz2" ${DEJAVUFONTS2_SRC_NAME}); echo "unzip ${DEJAVUFONTS2_SRC_NAME} source code"
GNOMEICONTHEME_SRC_DIR=$(unzip_src ".tar.xz" ${GNOMEICONTHEME_SRC_NAME}); echo "unzip ${GNOMEICONTHEME_SRC_NAME} source code"
HICOLORICONTHEME_SRC_DIR=$(unzip_src ".tar.xz" ${HICOLORICONTHEME_SRC_NAME}); echo "unzip ${HICOLORICONTHEME_SRC_NAME} source code"
ICONNAMINGUTILS_SRC_DIR=$(unzip_src ".tar.bz2" ${ICONNAMINGUTILS_SRC_NAME}); echo "unzip ${ICONNAMINGUTILS_SRC_NAME} source code"
GSETDESKTOPSCHEMAS_SRC_DIR=$(unzip_src ".tar.xz" ${GSETDESKTOPSCHEMAS_SRC_NAME}); echo "unzip ${GSETDESKTOPSCHEMAS_SRC_NAME} source code"
NCURSES_SRC_DIR=$(unzip_src ".tar.gz" ${NCURSES_SRC_NAME}); echo "unzip ${NCURSES_SRC_NAME} source code"
XTERM_SRC_DIR=$(unzip_src ".tar.gz" ${XTERM_SRC_NAME}); echo "unzip ${XTERM_SRC_NAME} source code"
XKBDCFG_SRC_DIR=$(unzip_src ".tar.xz" ${XKBDCFG_SRC_NAME}); echo "unzip ${XKBDCFG_SRC_NAME} source code"
XKBDATA_SRC_DIR=$(unzip_src ".tar.bz2" ${XKBDATA_SRC_NAME}); echo "unzip ${XKBDATA_SRC_NAME} source code"
XFCE_SRC_DIR=${build_dir}"/"$(file_dirname ${XFCE_SRC_NAME} .tar.bz2)
if [ ! -d "${XFCE_SRC_DIR}" ]; then
echo "unzip ${XFCE_SRC_NAME} source code" && tar xf source/${XFCE_SRC_NAME} -C ${build_dir}
mkdir -pv $XFCE_SRC_DIR
tar xf ${build_dir}/src/exo-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/thunar-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/xfce4-dev-tools-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/xfce4-settings-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/garcon-0.8.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/thunar-volman-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/xfce4-panel-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/xfconf-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/libxfce4ui-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/tumbler-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/xfce4-power-manager-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/xfdesktop-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/libxfce4util-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/xfce4-appfinder-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/xfce4-session-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
tar xf ${build_dir}/src/xfwm4-4.16.0.tar.bz2 -C ${XFCE_SRC_DIR}
rm -rf ${build_dir}/src
fi
#---------------------------------------------
#
# 编译 xfce
#
#---------------------------------------------
cd ${build_dir}
xfce_inc=${xfce_install}/usr/include
xfce_loc_inc=${xfce_install}/usr/local/include
xfce_x86_64_inc=${xfce_install}/usr/lib/x86_64-linux-gnu
include_path=" \
-I${xfce_inc} \
-I${xfce_inc}/glib-2.0 \
-I${xfce_inc}/harfbuzz \
-I${xfce_inc}/libmount \
-I${xfce_inc}/atk-1.0 \
-I${xfce_inc}/gtk-3.0 \
-I${xfce_inc}/gudev-1.0 \
-I${xfce_inc}/pango-1.0 \
-I${xfce_inc}/harfbuzz \
-I${xfce_inc}/libwnck-3.0 \
-I${xfce_inc}/gdk-pixbuf-2.0 \
-I${xfce_inc}/libupower-glib \
-I${xfce_loc_inc} \
-I${xfce_loc_inc}/cairo \
-I${xfce_loc_inc}/exo-2 \
-I${xfce_loc_inc}/libxml2 \
-I${xfce_loc_inc}/pixman-1 \
-I${xfce_loc_inc}/dbus-1.0 \
-I${xfce_loc_inc}/freetype2 \
-I${xfce_loc_inc}/thunarx-3 \
-I${xfce_loc_inc}/garcon-1 \
-I${xfce_loc_inc}/garcon-gtk3-1 \
-I${xfce_x86_64_inc} \
-I/usr/include/python3.8 \
-I/usr/include/dbus-1.0 \
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include"
xfce_lib=${xfce_install}/usr/lib
xfce_share=${xfce_install}/usr/share
xfce_loc_lib=${xfce_install}/usr/local/lib
xfce_loc_share=${xfce_install}/usr/local/share
library_path=" \
-L${glibc_install}/lib64 \
-L${xfce_install}/lib64 \
-L${xfce_lib} \
-L${xfce_loc_lib} \
-L${xfce_lib}/x86_64-linux-gnu \
-L${xfce_instal}/opt/libjpeg-turbo/lib64"
pkg_cfg1="${xfce_lib}/pkgconfig"
pkg_cfg2="${xfce_share}/pkgconfig"
pkg_cfg3="${xfce_loc_lib}/pkgconfig"
pkg_cfg4="${xfce_loc_share}/pkgconfig"
pkg_cfg5="${xfce_lib}/x86_64-linux-gnu/pkgconfig"
pkg_cfg6="${xfce_install}/opt/libjpeg-turbo/lib64/pkgconfig"
pkg_cfg7="/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig"
cfg_opt="--with-sysroot=${xfce_install}"
xwin_opt="--x-includes=${xfce_loc_inc} --x-libraries=${xfce_loc_lib}"
export CFLAGS="${include_path} -fPIC"
export CXXFLAGS="${include_path} -fPIC"
export LDFLAGS="${library_path}"
export PKG_CONFIG_SYSROOT_DIR="${xfce_install}"
export PKG_CONFIG_TOP_BUILD_DIR="${xfce_install}"
export PKG_CONFIG_PATH="${pkg_cfg1}:${pkg_cfg2}:${pkg_cfg3}:${pkg_cfg4}:${pkg_cfg5}:${pkg_cfg6}:${pkg_cfg7}"
# 解决 libxcb 编译问题
mkdir -pv ${xfce_share}/aclocal
mkdir -pv ${xfce_loc_share}/aclocal
# 解决 xcb-util 编译问题
# 解决 pciaccess: must install xorg-macros 1.8 or later before running autoconf/autogen
export ACLOCAL="aclocal -I /usr/share/aclocal -I ${xfce_share}/aclocal -I ${xfce_loc_share}/aclocal"
# 编译过程中会寻找 *.gir 的文件,.gir 的目录就是这个
export XDG_DATA_DIRS="${xfce_share}:${xfce_loc_share}:${xfce_share}/gir-1.0:$XDG_DATA_DIRS"
export GDK_PIXBUF_PIXDATA="${xfce_install}/usr/bin/gdk-pixbuf-pixdata"
# 编译过程中有工具需要 libffi.so.8 库的,需要加载一下,否则会出现找不到 libffi.so.8
export PATH="${xfce_install}/usr/bin:${xfce_install}/usr/local/bin:$PATH"
export LD_LIBRARY_PATH="${xfce_lib}:${xfce_loc_lib}:${xfce_lib}/x86_64-linux-gnu:${xfce_install}/opt/libjpeg-turbo/lib64:$LD_LIBRARY_PATH"
ldconfig
# python 模块的搜寻目录
# export PYTHONPATH="${xfce_lib}/x86_64-linux-gnu/gobject-introspection:${PYTHONPATH}"
#---------------------------------------------------------------------------------------------------------------
#
# xfce 库编译时用到 g-ir-scanner 工具,由于设置了 PKG_CONFIG_SYSROOT_DIR , 导致 xfce 调用 g-ir-scanner
# 的路径变成了 ${sysroot}/usr/bin/g-ir-scanner,这个路径下肯定没有 g-ir-scanner,它只存在 /usr/bin 下,
# 所以只能做一个软链过来, PKG_CONFIG_SYSROOT_DIR 不能去掉或设置为空,因为编译 gtk+ 以及依赖库都需要设置这个变量
#
# 上述问题解决了:glibc 版本必须用低版本 2.32 ---> 2.27 就可以让 mk_xfce.sh 编译通过了
#
#----------------------------------------------------------------------------------------------------------------
setup_girtools() {
mkdir -p ${xfce_install}"/usr/bin"
for gir_name in $(find /usr/bin -name "g-ir-*")
do
if [ -f "${xfce_install}${gir_name}" ]; then
continue
fi
ln -s "${gir_name}" "${xfce_install}${gir_name}" || (echo "setup tools ${gir_name} failed" && exit)
done
gi_makefile=/usr/share/gobject-introspection-1.0/Makefile.introspection
mkdir -pv ${xfce_share}/gobject-introspection-1.0
if [ ! -f "${xfce_install}${gi_makefile}" ]; then
ln -s "${gi_makefile}" "${xfce_install}${gi_makefile}"
fi
}
setup_girtools
#---------------------------------------------------------------------------------------------------------------
# meson 编译 编译参数一览 https://mesonbuild.com/Reference-tables.html
#---------------------------------------------------------------------------------------------------------------
meson_build() {
local name=$1
local srcdir=$2
shift
shift
if [ ! -f .${name} ]; then
echo "${CYAN}build ${name} begin${NC}" && cd ${srcdir} && mkdir -pv build
meson setup build --prefix=/usr --pkg-config-path=${PKG_CONFIG_PATH} "$@"
meson compile -C build
meson install -C build --destdir=${xfce_install} && echo "ok" > ../.${name} || exit
cd .. && echo "${GREEN}build ${name} end${NC}"
fi
}
#---------------------------------------------------------------------------------------------------------------
# xfce4 编译定义
#---------------------------------------------------------------------------------------------------------------
xfce4_build() {
local name=$1
local srcdir=$2
if [ ! -f .${name} ]; then
echo "${CYAN}build ${name} begin${NC}" && cd ${srcdir}
./configure ${cfg_opt} ${xwin_opt}
make -j8 && make install DESTDIR=${xfce_install} && echo "ok" > ../.${name} || exit
cd .. && echo "${GREEN}build ${name} end${NC}"
fi
}
#---------------------------------------------------------------------------------------------------------------
# 公共模块编译
#---------------------------------------------------------------------------------------------------------------
common_build() {
local name=$1
local srcdir=$2
shift
shift
if [ ! -f .${name} ]; then
echo "${CYAN}build ${name} begin${NC}" && cd ${srcdir}
if [ -f autogen.sh ]; then
#autoreconf -i
./autogen.sh
fi
if [ -f CMakeLists.txt ]; then
cmake . -DCMAKE_INSTALL_PREFIX=/usr
fi
if [ -f ./configure ]; then
./configure ${cfg_opt} "$@" ${xwin_opt}
fi
make -j8 && make install DESTDIR=${xfce_install} && echo "ok" > ../.${name} || exit
cd .. && echo "${GREEN}build ${name} end${NC}"
fi
}
#----------------------------------------------------------------------------------------------------------------
# llvm 编译,debug 对编译太挑剔,目前改成 release ,即使 swap 改成 32G ,还是经常被 kill
#----------------------------------------------------------------------------------------------------------------
llvm_build() {
local name=$1
local srcdir=$2
shift
shift
if [ ! -f .${name} ]; then
echo "${CYAN}build ${name} begin${NC}" && cd ${srcdir} && mkdir -pv build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_ENABLE_RTTI=ON -G "Unix Makefiles"
if [ -f ./configure ]; then
./configure ${cfg_opt} "$@" ${xwin_opt}
fi
make -j8 && make install DESTDIR=${xfce_install} && echo "ok" > ../../.${name} || exit
cd ../.. && echo "${GREEN}build ${name} end${NC}"
fi
}
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#
# 编译 harfbuzz 遇到问题: linking of temporary binary failed,关闭 glibc 的链接,问题就解决了,原因推测如下:
# 目前还不支持和 glibc 同时编译,因为如果编译链接 glibc ,可能需要全部依赖都做到源码编译,否则,可能编译过程中有问题
# 因为 apt install 安装的软件可能依赖系统自带的 glibc,这边指定编译的 glibc ,就会导致链接器工作混乱。导致链接失败
# 因此编译 xfce 时,一定保证 glibc_install/lib64 目录为空,否则就会出现上面的错误 died with <Signals.SIGSEGV: 11>
#
# 有关 xorg 驱动相关的介绍,参考 https://linuxfromscratch.org/blfs/view/11.0/x/x7driver.html
#
# libevdev 介绍 ---
# The libevdev package contains common functions for Xorg input drivers.
# 需要内核支持
# Device Drivers --->
# Input device support --->
# <*> Generic input layer (needed for keyboard, mouse, ...) [CONFIG_INPUT]
# <*> Event interface [CONFIG_INPUT_EVDEV]
# [*] Miscellaneous devices ---> [CONFIG_INPUT_MISC]
# <*> User level driver support [CONFIG_INPUT_UINPUT]
#
# xf86-input-evdev 介绍 ---
# The Xorg Evdev Driver package contains a Generic Linux input driver for the Xorg X server. It handles keyboard, mouse,
# touchpads and wacom devices, though for touchpad and wacom advanced handling, additional drivers are required.
#
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# if [ ! -d "xfce_install" ]; then
mkdir -pv xfce_install
# 编译 libffi, 替换系统的
common_build libffi ${LIBFFI_SRC_DIR}
# 编译 libxml
common_build libxml ${LIBXML_SRC_DIR}
# 编译 util-linux ( libmount )
common_build libmnt ${LIBMNT_SRC_DIR} --without-python
# 编译 zlib
common_build zlib ${ZLIB_SRC_DIR}
# 编译 libzip
common_build libzip ${LIBZIP_SRC_DIR}
# 编译 libpng
common_build libpng ${LIBPNG_SRC_DIR}
# 编译 libelf
common_build libelf ${LIBELF_SRC_DIR}
# 编译 libdatrie
common_build libdatrie ${LIBDATRIE_SRC_DIR}
if [ ! -f "/usr/local/bin/trietool" ]; then
ln -s ${xfce_install}/usr/local/bin/trietool /usr/local/bin/trietool
fi
# 编译 libthai
common_build libthai ${LIBTHAI_SRC_DIR}
# 编译 libpcre2
common_build libpcre2 ${LIBPCRE2_SRC_DIR}
# 编译 glib
meson_build glib ${GLIB_SRC_DIR}
if [ ! -f "/usr/bin/glib-mkenums" ]; then
ln -s ${xfce_install}/usr/bin/glib-mkenums /usr/bin/glib-mkenums
fi
# 编译 gobject-introspection ( 这个不需要了,用系统的就行 )
# meson_build gobject-introspection ${GOBJINTROSPE_SRC_DIR}
# 在编译机上测试 xfce4 是否能正常工作,在这之前编译的有系统组件,不能覆盖系统的组件,否则会导致系统不能正常运行
if [ "$1" = "test" ] && [ ! -f "tmp.tar.gz" ]; then
tar zcf tmp.tar.gz ${xfce_install}
fi
# 编译 wayland-core ( documentation 依赖 graphviz 粘连了图形库 )
meson_build wayland-core ${WAYLANDCORE_SRC_DIR} -Ddocumentation=false
if [ ! -f "/usr/bin/wayland-scanner" ]; then
ln -s ${xfce_install}/usr/bin/wayland-scanner /usr/bin/wayland-scanner
fi
# 编译 wayland-protocols
meson_build wayland-protocols ${WAYLANDPROT_SRC_DIR}
# 编译 libjpeg
common_build libjpeg-turbo ${LIBJPEGTURBO_SRC_DIR}
# 编译 xorg-macros
common_build xorg-macros ${XORGMACROS_SRC_DIR}
# 编译 libxproto
common_build libxproto ${LIBXPROTO_SRC_DIR}
# 编译 xorgproto
common_build xorgproto ${XORGPROTO_SRC_DIR}
# 编译 xau
common_build xau ${XAU_SRC_DIR}
# 编译 xtrans
common_build xtrans ${XTRANS_SRC_DIR}
# 编译 xcb-proto
common_build xcb-proto ${XCBPROTO_SRC_DIR}
# 编译 libxcb
common_build libxcb ${LIBXCB_SRC_DIR}
# 编译 libice
common_build libice ${LIBICE_SRC_DIR}
# 编译 libsm
common_build libsm ${LIBSM_SRC_DIR}
# 编译 libx11
common_build libx11 ${LIBX11_SRC_DIR} --with-keysymdefdir="${xfce_install}/usr/local/include/X11"
# 编译 xext
common_build xext ${XEXT_SRC_DIR}
# 编译 xrender
common_build xrender ${XRENDER_SRC_DIR}
# 编译 xrandr
common_build xrandr ${XRANDR_SRC_DIR}
# 编译 iceauth
common_build iceauth ${ICEAUTH_SRC_DIR}
# 编译 libxcb-util
common_build libxcb-util ${XCBUTIL_SRC_DIR}
# 编译 kbproto
common_build kbproto ${KBPROTO_SRC_DIR}
# 编译 xextproto
common_build xextproto ${XEXTPROTO_SRC_DIR}
# 编译 xdmcp
common_build xdmcp ${XDMCP_SRC_DIR}
# 编译 xfixes
common_build xfixes ${XFIXES_SRC_DIR}
# 编译 xdamage
common_build xdamage ${XDAMAGE_SRC_DIR}
# 编译 xinerama
common_build xinerama ${XINERAMA_SRC_DIR}
# 编译 xshmfence
common_build xshmfence ${XSHMFENCE_SRC_DIR}
# 编译 xxf86vm
common_build xxf86vm ${XXF86VM_SRC_DIR}
# 编译 xinit
common_build xinit ${XINIT_SRC_DIR}
# 编译 xi ( 问题解决见上面的注释 )
common_build xi ${XI_SRC_DIR}
# 编译 xinput ( 输入设备探测 )
common_build xinput ${XINPUT_SRC_DIR}
# 编译 xtst
common_build xtst ${XTST_SRC_DIR}
# 编译 xkbcommon
meson_build xkbcommon ${XKBCOMMON_SRC_DIR} -Denable-docs=false
# 编译 gdkpixbuf
meson_build gdkpixbuf ${GDKPIXBUF_SRC_DIR} -Dman=false -Dbuiltin_loaders=all -Dinstalled_tests=false -Drelocatable=true
# 编译 pixman
common_build pixman ${PIXMAN_SRC_DIR} --enable-libpng=yes
# 编译 freetype
common_build freetype_pre ${FREETYPE_SRC_DIR} --with-harfbuzz=no
# 编译 harfbuzz
meson_build harfbuzz_pre ${HARFBUZZ_SRC_DIR} -Dcairo=disabled
# 编译 freetype
common_build freetype ${FREETYPE_SRC_DIR} --with-harfbuzz=yes
# 编译 fontconfig
common_build fontconfig ${FONTCFG_SRC_DIR}
# 编译 cairo ( 这个需要 x window,所以放到 libx11 之后编译 )
cairo_opt="--with-x --enable-png=yes --enable-xlib=yes --enable-xlib-xrender=yes --enable-gtk-doc-html=no"
common_build cairo ${CAIRO_SRC_DIR} ${cairo_opt}
# 编译 harfbuzz
meson_build harfbuzz ${HARFBUZZ_SRC_DIR} -Dcairo=enabled
# 编译 fribidi
meson_build fribidi ${FRIBIDI_SRC_DIR}
# 编译 pango
meson_build pango ${PANGO_SRC_DIR}
# 编译基础库 ( 这些都是系统库,新系统需要集成 )
if [ "${with_xfce}" = true ] && [ "$1" = "img" ]; then
# 编译 expat
common_build expat ${EXPAT_SRC_DIR}
# 编译 ncurses ( libtinfo.so.5 )
common_build ncurses ${NCURSES_SRC_DIR} --with-shared --with-termlib
# 编译 libedit ( 系统需要此库,llvm 的编译也需要此库 )
common_build libedit ${LIBEDIT_SRC_DIR}
# 编译 libudev ( xkbcli interactive-evdev 可以测试键盘输入,xorg 就是不加载成功 )
common_build libudev ${LIBUDEV_SRC_DIR} --enable-hwdb --enable-rule-generator --enable-mtd_probe
# 编译 libpcre
common_build libpcre ${LIBPCRE_SRC_DIR}
# 编译 libnettle
common_build libnettle ${LIBNETTLE_SRC_DIR}
# 编译 llvm ( swrast 依赖此库,可以加大 swap 分区,编译时对内存要求极高,依赖: libedit )
llvm_build llvm ${LLVM_SRC_DIR}
# 编译 dbus-1( 我们的系统需要编译,如果在当前系统上运行 xfce4,需要注释掉,否则就会和系统自带的 dbus-1 冲突 )
common_build dbus-1 ${DBUS1_SRC_DIR} --disable-tests
# 编译 ( libsensors4 )
common_build im_sensors ${IMSENSORS_SRC_DIR}
# 编译 shared-mime-info ( GNOME 需要这个 ) 并更新 mime 数据库
meson_build sharedmimeinfo ${SHAREDMIMEINFO_SRC_DIR}
${xfce_install}/usr/bin/update-mime-database ${xfce_install}/usr/share/mime
# 编译 desktop-file-utils ( GNOME 需要这个 ) 并更新 applications 数据库
meson_build desktopfileutils ${DESKTOPFILEUTILS_SRC_DIR}
${xfce_install}/usr/bin/update-desktop-database ${xfce_install}/usr/share/applications
fi
# 编译 libatk
meson_build libatk ${LIBATK_SRC_DIR}
# 编译 libatk-core ( 依赖: libxml )
meson_build libatk-core ${LIBATK_CORE_SRC_DIR}
# 编译 libatk-bridge ( 依赖: libatk-core )
meson_build libatk-bridge ${LIBATK_BRIDGE_SRC_DIR}
# 编译 libpciaccess
common_build libpciaccess ${LIBPCIACCESS_SRC_DIR}
# 编译 libdrm
meson_build libdrm ${LIBDRM_SRC_DIR} -Dudev=true
# 编译 graphene
meson_build graphene ${GRAPHENE_SRC_DIR}
# 编译 mesa
meson_build mesa ${MESA_SRC_DIR}
# 编译 libepoxy
meson_build libepoxy ${LIBEPOXY_SRC_DIR}
# 编译 gtk+
meson_build gtk+ ${GTKX_SRC_DIR}
# 编译 libstartup-notification0 ( 很多 xfce4 应用依赖此库, 依赖: libxcb-util-dev )
# common_build startupnoti ${STARTUPNOTI_SRC_DIR}
# 编译 libgudev ( upower 依赖此库, 依赖: apt install libudev-dev )
meson_build libgudev ${LIBGUDEV_SRC_DIR}
# 编译 upower ( xfce4-power-manager 依赖此库, 依赖: libgudev )
meson_build upower ${UPOWER_SRC_DIR} -Dc_args="-DENOTSUP=95"
# 编译 gettext 解决 libintl 的问题 gtk+
# common_build gettext ${GETTEXT_SRC_DIR}
# 编译 gstreamer
meson_build gstreamer ${GSTREAMER_SRC_DIR}
# 编译 libwnck
meson_build libwnck ${LIBWNCK_SRC_DIR}
# 编译 libnotify
meson_build libnotify ${LIBNOTIFY_SRC_DIR} -Dman=false -Dgtk_doc=false -Ddocbook_docs=disabled
# 编译 libpam
common_build libpam ${LIBPAM_SRC_DIR}
# 编译 xrdp
common_build xrdp ${XRDP_SRC_DIR}
# 编译 libxcvt
meson_build libxcvt ${LIBXCVT_SRC_DIR}
# 编译 xkbfile
common_build xkbfile ${XKBFILE_SRC_DIR}
# 编译 xkbcomp
common_build xkbcomp ${XKBCOMP_SRC_DIR}
# 编译 fontenc
common_build fontenc ${FONTENC_SRC_DIR}
# 编译 xfont
common_build xfont ${XFONT_SRC_DIR}
# 编译 xserver
common_build xserver ${XSERVER_SRC_DIR} --with-log-dir="/var/log" --with-fontrootdir="/usr/local/share/fonts/X11"
# 编译 xt ( xterm )
common_build xt ${XT_SRC_DIR}
# 编译 xmu ( xterm )
common_build xmu ${XMU_SRC_DIR}
# 编译 xpm ( xterm )
common_build xpm ${XPM_SRC_DIR}
# 编译 xaw ( xterm )
common_build xaw ${XAW_SRC_DIR}
# 编译 xkbcfg ( 键盘数据 xkbdata, Xorg need it ) 或者安装 apt install xkb-data
meson_build xkbcfg ${XKBDCFG_SRC_DIR}
# 编译 icon-naming-util
# common_build iconnamingutil ${ICONNAMINGUTIL_SRC_DIR}
# 编译 gnome-icon-theme
common_build gnomeicontheme ${GNOMEICONTHEME_SRC_DIR}
# 编译 hicolor-icon-theme
common_build hicoloricontheme ${HICOLORICONTHEME_SRC_DIR}
# 编译 xterm
# common_build xterm ${XTERM_SRC_DIR}
# 编译 libusb
# common_build libusb ${LIBUSB_SRC_DIR}
# fontutil
common_build fontutil ${FONTUTIL_SRC_DIR}
# mkfontdir
common_build mkfontdir ${MKFONTDIR_SRC_DIR}
# bdftopcf
common_build bdftopcf ${BDFTOPCF_SRC_DIR}
# mkfontscale
common_build mkfontscale ${MKFONTSCALE_SRC_DIR}
# fontmisc
mkdir -p /usr/local/share/fonts/X11/util
cp ${FONTUTIL_SRC_DIR}/map-* /usr/local/share/fonts/X11/util/
common_build fontmisc ${FONTMISC_SRC_DIR}
# mtdev ( libinput )
common_build mtdev ${MTDEV_SRC_DIR}
# spice_protocol ( xf86videoqxl 需要 )
meson_build spice_protocol ${SPICEPROT_SRC_DIR}
# libevdev ( libinput )
meson_build libevdev ${LIBEVDEV_SRC_DIR} -Ddocumentation=disabled
# libwacom ( libinput )
meson_build libwacom ${LIBWACOM_SRC_DIR} -Ddocumentation=disabled -Dtests=disabled
# libinput ( xf86input )
meson_build libinput ${LIBINPUT_SRC_DIR}
# xf86input ( libinput 的封装,使 libinput 用于 X 上的输入设备代替其他用于 X 输入的软件包即以 xf86-input- 为前缀的软件包 )
common_build xf86input ${XF86INPUT_SRC_DIR}
# xf86inputvm
common_build xf86inputvm ${XF86INPUTVM_SRC_DIR}
# xf86inputmm
common_build xf86inputmm ${XF86INPUTMM_SRC_DIR}
# xf86inputwacom
common_build xf86inputwacom ${XF86INPUTWACOM_SRC_DIR}
# xf86inputevdev
common_build xf86inputevdev ${XF86INPUTEVDEV_SRC_DIR}
# xf86videoati ( 为了虚拟机上能显示图形,我们把常用的显卡驱动全部编译了 )
# common_build xf86videoati ${XF86VIDEOATI_SRC_DIR}
# xf86videovesa ( vesa是一个支持大部分显卡的通用驱动,不提供任何 2D 和 3D 加速功能 也可以 apt install libgl1-mesa-dri )
common_build xf86videovesa ${XF86VIDEOVESA_SRC_DIR}
# xf86videointel
# common_build xf86videointel ${XF86VIDEOINTEL_SRC_DIR}
# xf86videodummy
common_build xf86videodummy ${XF86VIDEODUMMY_SRC_DIR}
# xf86videoamd ( qemu 要模拟 vmware 的显卡,需要编译此工程 -vga vmware )
# common_build xf86videoamd ${XF86VIDEOAMD_SRC_DIR}
# xf86videoqxl ( 需要: spice_protocol, qemu 要模拟 vmware 的显卡,需要编译此工程 -vga vmware )
if [ ! -f ".xf86videoqxl" ]; then
sed -i "s/value.bool;/value.boolean;/" ${XF86VIDEOQXL_SRC_DIR}/src/qxl_option_helpers.c
fi
common_build xf86videoqxl ${XF86VIDEOQXL_SRC_DIR}
# xf86videofbdev ( qemu 要模拟 vmware 的显卡,需要编译此工程 -vga vmware )
common_build xf86videofbdev ${XF86VIDEOFBDEV_SRC_DIR}
# xf86videoamdgpu ( qemu 要模拟 vmware 的显卡,需要编译此工程 -vga vmware )
common_build xf86videoamdgpu ${XF86VIDEOAMDGPU_SRC_DIR}
# xf86videovmware ( qemu 要模拟 vmware 的显卡,需要编译此工程 -vga vmware )
common_build xf86videovmware ${XF86VIDEOVMWARE_SRC_DIR}
# gsetting-desktop-schemas
meson_build gsetting-desktop-schemas ${GSETDESKTOPSCHEMAS_SRC_DIR}
# 必须编译一次 schemas, 否则会提示: No schemas installed
glib-compile-schemas ${xfce_install}/usr/share/glib-2.0/schemas/
# 编译 dejavu-fonts ( 否则界面字体显示为小方块 ) 或者安装 apt install fonts-dejavu-core
mkdir -p ${xfce_install}/etc/fonts/conf.d
mkdir -p ${xfce_install}/etc/fonts/conf.avail
mkdir -p ${xfce_install}/usr/share/fonts/truetype/dejavu
cp ${DEJAVUFONTS1_SRC_DIR}/ttf/* ${xfce_install}/usr/share/fonts/truetype/dejavu
for font_name in $(find ${DEJAVUFONTS1_SRC_DIR}/fontconfig -name "*.conf")
do
tmp_name=$(file_name ${font_name})
if [ ! -f ${xfce_install}/etc/fonts/conf.avail/${tmp_name} ]; then
cp ${font_name} ${xfce_install}/etc/fonts/conf.avail
fi
if [ ! -f ${xfce_install}/etc/fonts/conf.d/${tmp_name} ]; then
ln -s ../conf.avail/${tmp_name} ${xfce_install}/etc/fonts/conf.d/${tmp_name}
fi
done
cp ${DEJAVUFONTS2_SRC_DIR}/ttf/* ${xfce_install}/usr/share/fonts/truetype/dejavu
for font_name in $(find ${DEJAVUFONTS2_SRC_DIR}/fontconfig -name "*.conf")
do
tmp_name=$(file_name ${font_name})
if [ ! -f ${xfce_install}/etc/fonts/conf.avail/${tmp_name} ]; then
cp ${font_name} ${xfce_install}/etc/fonts/conf.avail
fi
if [ ! -f ${xfce_install}/etc/fonts/conf.d/${tmp_name} ]; then
ln -s ../conf.avail/${tmp_name} ${xfce_install}/etc/fonts/conf.d/${tmp_name}
fi
done
# 让 upower.service 能正常启动, 还需要替换系统的 libglib 库
# sed -i "s/LockPersonality/#LockPersonality/g" ${xfce_install}/lib/systemd/system/upower.service
# sed -i "s/SystemCallArchitectures/#SystemCallArchitectures/g" ${xfce_install}/lib/systemd/system/upower.service
# sed -i "s/SystemCallFilter/#SystemCallFilter/g" ${xfce_install}/lib/systemd/system/upower.service
# 编译 xfce
cd ${XFCE_SRC_DIR}
echo "${CYAN}build xfce4 utils${NC}"