summaryrefslogtreecommitdiff
path: root/maca-sdk-aarch64.spec
blob: 80d36337804466862adf50c8fccc757df269ea0e (plain)
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
%global sdk_version 3.7.0.38
%global sdk_short_version 3.7.0
%global sdk_root /opt/maca-%{sdk_short_version}
%global source_dir maca-sdk-%{sdk_version}-rpm-aarch64
%global source_url https://repo.oepkgs.net/openEuler/rpm/openEuler-24.03-LTS-SP3/contrib/drivers/aarch64/Packages/%{source_dir}.tar.xz
%global payload_dir maca-sdk-%{sdk_version}
%global rpm_dir rpm
%global debug_package %{nil}
%global _buildshell /bin/bash
# Preserve upstream prebuilt binaries; stripping truncates AppImage payloads.
%global __strip /bin/true
%global __brp_strip %{nil}
%global __brp_strip_comment_note %{nil}
%global __brp_strip_static_archive %{nil}
# Upstream vendor binaries carry fixed MACA SDK RPATH/RUNPATH entries.
# Skip RPM RPATH QA checks for this repackaged binary payload.
%global __arch_install_post %{nil}

Name:           maca-sdk-aarch64
Version:        %{sdk_version}
Release:        1%{?dist}
Summary:        Repacked MACA SDK %{sdk_version} aarch64 bundle
License:        MetaX License
URL:            https://www.metax-tech.com/
ExclusiveArch:  aarch64
BuildRequires:  bash
BuildRequires:  cpio
BuildRequires:  rpm
BuildRequires:  tar
BuildRequires:  wget
BuildRequires:  xz
AutoReqProv:    no

Requires:       commonlib = %{version}-%{release}
Requires:       cu-bridge = %{version}-%{release}
Requires:       macainfo = %{version}-%{release}
Requires:       maca_sdk_latest = %{version}-%{release}
Requires:       maca_sdk_pkg_config = %{version}-%{release}
Requires:       mcanalyzer = %{version}-%{release}
Requires:       mcblas = %{version}-%{release}
Requires:       mcblaslt = %{version}-%{release}
Requires:       mccl = %{version}-%{release}
Requires:       mccltests = %{version}-%{release}
Requires:       mccompiler = %{version}-%{release}
Requires:       mcdnn = %{version}-%{release}
Requires:       mcfft = %{version}-%{release}
Requires:       mcfile = %{version}-%{release}
Requires:       mcflashattn = %{version}-%{release}
Requires:       mcflashinfer = %{version}-%{release}
Requires:       mcgpufort = %{version}-%{release}
Requires:       mchotspot = %{version}-%{release}
Requires:       mcimage = %{version}-%{release}
Requires:       mcjpeg = %{version}-%{release}
Requires:       mckernellib = %{version}-%{release}
Requires:       mcmathlib = %{version}-%{release}
Requires:       mcmpp = %{version}-%{release}
Requires:       mcpti = %{version}-%{release}
Requires:       mcrand = %{version}-%{release}
Requires:       mcruntime = %{version}-%{release}
Requires:       mcsanitizer = %{version}-%{release}
Requires:       mcsanitizer-public = %{version}-%{release}
Requires:       mcsolver = %{version}-%{release}
Requires:       mcsolverit = %{version}-%{release}
Requires:       mcsparse = %{version}-%{release}
Requires:       mcthrust = %{version}-%{release}
Requires:       mctlass = %{version}-%{release}
Requires:       mctlassEx = %{version}-%{release}
Requires:       mctoolext = %{version}-%{release}
Requires:       mctracer = %{version}-%{release}
Requires:       mxccl_plugin = %{version}-%{release}
Requires:       mxcommlib_tools = %{version}-%{release}
Requires:       mxcompute = %{version}-%{release}
Requires:       mxdiagease = %{version}-%{release}
Requires:       mxexporter = %{version}-%{release}
Requires:       mxffmpeg = %{version}-%{release}
Requires:       mxffmpeg-dev = %{version}-%{release}
Requires:       mxfortran = %{version}-%{release}
Requires:       mxgdrcopy = %{version}-%{release}
Requires:       mxgpu_llvm = %{version}-%{release}
Requires:       mxkw = %{version}-%{release}
Requires:       mxmaca-install = %{version}-%{release}
Requires:       mxompi = %{version}-%{release}
Requires:       mxreport = %{version}-%{release}
Requires:       mxshmem = %{version}-%{release}
Requires:       mxsml-devel = %{version}-%{release}
Requires:       mxucx = %{version}-%{release}
Requires:       mxvpu = %{version}-%{release}
Requires:       mxvs = %{version}-%{release}
Requires:       sample = %{version}-%{release}

%description
This is a bundle package for the repacked MACA SDK %{sdk_version} aarch64
RPM payloads. The build downloads the upstream tarball, extracts every RPM
payload under rpm/ into BUILDROOT, then repacks each payload as a separate
subpackage.

%package -n commonlib
Summary:        Repacked MACA SDK component commonlib
AutoReqProv:    no
%description -n commonlib
Repacked MACA SDK component commonlib from the upstream RPM payload.

%package -n cu-bridge
Summary:        Repacked MACA SDK component cu-bridge
AutoReqProv:    no
%description -n cu-bridge
Repacked MACA SDK component cu-bridge from the upstream RPM payload.

%package -n macainfo
Summary:        Repacked MACA SDK component macainfo
AutoReqProv:    no
%description -n macainfo
Repacked MACA SDK component macainfo from the upstream RPM payload.

%package -n maca_sdk_latest
Summary:        Repacked MACA SDK component maca_sdk_latest
AutoReqProv:    no
%description -n maca_sdk_latest
Repacked MACA SDK component maca_sdk_latest from the upstream RPM payload.

%package -n maca_sdk_pkg_config
Summary:        Repacked MACA SDK component maca_sdk_pkg_config
AutoReqProv:    no
%description -n maca_sdk_pkg_config
Repacked MACA SDK component maca_sdk_pkg_config from the upstream RPM payload.

%package -n mcanalyzer
Summary:        Repacked MACA SDK component mcanalyzer
AutoReqProv:    no
%description -n mcanalyzer
Repacked MACA SDK component mcanalyzer from the upstream RPM payload.

%package -n mcblas
Summary:        Repacked MACA SDK component mcblas
AutoReqProv:    no
%description -n mcblas
Repacked MACA SDK component mcblas from the upstream RPM payload.

%package -n mcblaslt
Summary:        Repacked MACA SDK component mcblaslt
AutoReqProv:    no
%description -n mcblaslt
Repacked MACA SDK component mcblaslt from the upstream RPM payload.

%package -n mccl
Summary:        Repacked MACA SDK component mccl
AutoReqProv:    no
%description -n mccl
Repacked MACA SDK component mccl from the upstream RPM payload.

%package -n mccltests
Summary:        Repacked MACA SDK component mccltests
AutoReqProv:    no
%description -n mccltests
Repacked MACA SDK component mccltests from the upstream RPM payload.

%package -n mccompiler
Summary:        Repacked MACA SDK component mccompiler
AutoReqProv:    no
%description -n mccompiler
Repacked MACA SDK component mccompiler from the upstream RPM payload.

%package -n mcdnn
Summary:        Repacked MACA SDK component mcdnn
AutoReqProv:    no
%description -n mcdnn
Repacked MACA SDK component mcdnn from the upstream RPM payload.

%package -n mcfft
Summary:        Repacked MACA SDK component mcfft
AutoReqProv:    no
%description -n mcfft
Repacked MACA SDK component mcfft from the upstream RPM payload.

%package -n mcfile
Summary:        Repacked MACA SDK component mcfile
AutoReqProv:    no
%description -n mcfile
Repacked MACA SDK component mcfile from the upstream RPM payload.

%package -n mcflashattn
Summary:        Repacked MACA SDK component mcflashattn
AutoReqProv:    no
%description -n mcflashattn
Repacked MACA SDK component mcflashattn from the upstream RPM payload.

%package -n mcflashinfer
Summary:        Repacked MACA SDK component mcflashinfer
AutoReqProv:    no
%description -n mcflashinfer
Repacked MACA SDK component mcflashinfer from the upstream RPM payload.

%package -n mcgpufort
Summary:        Repacked MACA SDK component mcgpufort
AutoReqProv:    no
%description -n mcgpufort
Repacked MACA SDK component mcgpufort from the upstream RPM payload.

%package -n mchotspot
Summary:        Repacked MACA SDK component mchotspot
AutoReqProv:    no
%description -n mchotspot
Repacked MACA SDK component mchotspot from the upstream RPM payload.

%package -n mcimage
Summary:        Repacked MACA SDK component mcimage
AutoReqProv:    no
%description -n mcimage
Repacked MACA SDK component mcimage from the upstream RPM payload.

%package -n mcjpeg
Summary:        Repacked MACA SDK component mcjpeg
AutoReqProv:    no
%description -n mcjpeg
Repacked MACA SDK component mcjpeg from the upstream RPM payload.

%package -n mckernellib
Summary:        Repacked MACA SDK component mckernellib
AutoReqProv:    no
%description -n mckernellib
Repacked MACA SDK component mckernellib from the upstream RPM payload.

%package -n mcmathlib
Summary:        Repacked MACA SDK component mcmathlib
AutoReqProv:    no
%description -n mcmathlib
Repacked MACA SDK component mcmathlib from the upstream RPM payload.

%package -n mcmpp
Summary:        Repacked MACA SDK component mcmpp
AutoReqProv:    no
%description -n mcmpp
Repacked MACA SDK component mcmpp from the upstream RPM payload.

%package -n mcpti
Summary:        Repacked MACA SDK component mcpti
AutoReqProv:    no
%description -n mcpti
Repacked MACA SDK component mcpti from the upstream RPM payload.

%package -n mcrand
Summary:        Repacked MACA SDK component mcrand
AutoReqProv:    no
%description -n mcrand
Repacked MACA SDK component mcrand from the upstream RPM payload.

%package -n mcruntime
Summary:        Repacked MACA SDK component mcruntime
AutoReqProv:    no
%description -n mcruntime
Repacked MACA SDK component mcruntime from the upstream RPM payload.

%package -n mcsanitizer
Summary:        Repacked MACA SDK component mcsanitizer
AutoReqProv:    no
%description -n mcsanitizer
Repacked MACA SDK component mcsanitizer from the upstream RPM payload.

%package -n mcsanitizer-public
Summary:        Repacked MACA SDK component mcsanitizer-public
AutoReqProv:    no
%description -n mcsanitizer-public
Repacked MACA SDK component mcsanitizer-public from the upstream RPM payload.

%package -n mcsolver
Summary:        Repacked MACA SDK component mcsolver
AutoReqProv:    no
%description -n mcsolver
Repacked MACA SDK component mcsolver from the upstream RPM payload.

%package -n mcsolverit
Summary:        Repacked MACA SDK component mcsolverit
AutoReqProv:    no
%description -n mcsolverit
Repacked MACA SDK component mcsolverit from the upstream RPM payload.

%package -n mcsparse
Summary:        Repacked MACA SDK component mcsparse
AutoReqProv:    no
%description -n mcsparse
Repacked MACA SDK component mcsparse from the upstream RPM payload.

%package -n mcthrust
Summary:        Repacked MACA SDK component mcthrust
AutoReqProv:    no
%description -n mcthrust
Repacked MACA SDK component mcthrust from the upstream RPM payload.

%package -n mctlass
Summary:        Repacked MACA SDK component mctlass
AutoReqProv:    no
%description -n mctlass
Repacked MACA SDK component mctlass from the upstream RPM payload.

%package -n mctlassEx
Summary:        Repacked MACA SDK component mctlassEx
AutoReqProv:    no
%description -n mctlassEx
Repacked MACA SDK component mctlassEx from the upstream RPM payload.

%package -n mctoolext
Summary:        Repacked MACA SDK component mctoolext
AutoReqProv:    no
%description -n mctoolext
Repacked MACA SDK component mctoolext from the upstream RPM payload.

%package -n mctracer
Summary:        Repacked MACA SDK component mctracer
AutoReqProv:    no
%description -n mctracer
Repacked MACA SDK component mctracer from the upstream RPM payload.

%package -n mxccl_plugin
Summary:        Repacked MACA SDK component mxccl_plugin
AutoReqProv:    no
%description -n mxccl_plugin
Repacked MACA SDK component mxccl_plugin from the upstream RPM payload.

%package -n mxcommlib_tools
Summary:        Repacked MACA SDK component mxcommlib_tools
AutoReqProv:    no
%description -n mxcommlib_tools
Repacked MACA SDK component mxcommlib_tools from the upstream RPM payload.

%package -n mxcompute
Summary:        Repacked MACA SDK component mxcompute
AutoReqProv:    no
%description -n mxcompute
Repacked MACA SDK component mxcompute from the upstream RPM payload.

%package -n mxdiagease
Summary:        Repacked MACA SDK component mxdiagease
AutoReqProv:    no
%description -n mxdiagease
Repacked MACA SDK component mxdiagease from the upstream RPM payload.

%package -n mxexporter
Summary:        Repacked MACA SDK component mxexporter
AutoReqProv:    no
%description -n mxexporter
Repacked MACA SDK component mxexporter from the upstream RPM payload.

%package -n mxffmpeg
Summary:        Repacked MACA SDK component mxffmpeg
AutoReqProv:    no
%description -n mxffmpeg
Repacked MACA SDK component mxffmpeg from the upstream RPM payload.

%package -n mxffmpeg-dev
Summary:        Repacked MACA SDK component mxffmpeg-dev
AutoReqProv:    no
%description -n mxffmpeg-dev
Repacked MACA SDK component mxffmpeg-dev from the upstream RPM payload.

%package -n mxfortran
Summary:        Repacked MACA SDK component mxfortran
AutoReqProv:    no
%description -n mxfortran
Repacked MACA SDK component mxfortran from the upstream RPM payload.

%package -n mxgdrcopy
Summary:        Repacked MACA SDK component mxgdrcopy
AutoReqProv:    no
%description -n mxgdrcopy
Repacked MACA SDK component mxgdrcopy from the upstream RPM payload.

%package -n mxgpu_llvm
Summary:        Repacked MACA SDK component mxgpu_llvm
AutoReqProv:    no
%description -n mxgpu_llvm
Repacked MACA SDK component mxgpu_llvm from the upstream RPM payload.

%package -n mxkw
Summary:        Repacked MACA SDK component mxkw
Requires:       numactl-libs
AutoReqProv:    no
%description -n mxkw
Repacked MACA SDK component mxkw from the upstream RPM payload.

%package -n mxmaca-install
Summary:        Repacked MACA SDK component mxmaca-install
AutoReqProv:    no
%description -n mxmaca-install
Repacked MACA SDK component mxmaca-install from the upstream RPM payload.

%package -n mxompi
Summary:        Repacked MACA SDK component mxompi
Requires:       openssl-libs
AutoReqProv:    no
%description -n mxompi
Repacked MACA SDK component mxompi from the upstream RPM payload.

%package -n mxreport
Summary:        Repacked MACA SDK component mxreport
AutoReqProv:    no
%description -n mxreport
Repacked MACA SDK component mxreport from the upstream RPM payload.

%package -n mxshmem
Summary:        Repacked MACA SDK component mxshmem
AutoReqProv:    no
%description -n mxshmem
Repacked MACA SDK component mxshmem from the upstream RPM payload.

%package -n mxsml-devel
Summary:        Repacked MACA SDK component mxsml-devel
AutoReqProv:    no
%description -n mxsml-devel
Repacked MACA SDK component mxsml-devel from the upstream RPM payload.

%package -n mxucx
Summary:        Repacked MACA SDK component mxucx
AutoReqProv:    no
%description -n mxucx
Repacked MACA SDK component mxucx from the upstream RPM payload.

%package -n mxvpu
Summary:        Repacked MACA SDK component mxvpu
AutoReqProv:    no
%description -n mxvpu
Repacked MACA SDK component mxvpu from the upstream RPM payload.

%package -n mxvs
Summary:        Repacked MACA SDK component mxvs
AutoReqProv:    no
%description -n mxvs
Repacked MACA SDK component mxvs from the upstream RPM payload.

%package -n sample
Summary:        Repacked MACA SDK component sample
AutoReqProv:    no
%description -n sample
Repacked MACA SDK component sample from the upstream RPM payload.

%prep
rm -rf %{payload_dir} %{source_dir}.tar.xz

%build
set -euo pipefail
cd %{_builddir}

wget --tries=0 \
    --retry-connrefused \
    --waitretry=30 \
    --timeout=30 \
    --read-timeout=30 \
    --continue \
    -O "%{source_dir}.tar.xz" \
    "%{source_url}"

rm -rf %{payload_dir}
tar -xf "%{source_dir}.tar.xz"
cd %{payload_dir}

cat > .rpm-package-map <<'EOF'
commonlib_3.7.0.38.aarch64.rpm commonlib
cu-bridge_3.7.0.38.aarch64.rpm cu-bridge
macainfo_3.7.0.38.aarch64.rpm macainfo
maca_sdk_latest_3.7.0.38.aarch64.rpm maca_sdk_latest
maca_sdk_pkg_config_3.7.0.38.aarch64.rpm maca_sdk_pkg_config
mcanalyzer_3.7.0.38.aarch64.rpm mcanalyzer
mcblas_3.7.0.38.aarch64.rpm mcblas
mcblasLt_3.7.0.38.aarch64.rpm mcblaslt
mccl_3.7.0.38.aarch64.rpm mccl
mccltests_3.7.0.38.aarch64.rpm mccltests
mccompiler_3.7.0.38.aarch64.rpm mccompiler
mcdnn_3.7.0.38.aarch64.rpm mcdnn
mcfft_3.7.0.38.aarch64.rpm mcfft
mcfile_3.7.0.38.aarch64.rpm mcfile
mcflashattn_3.7.0.38.aarch64.rpm mcflashattn
mcflashinfer_3.7.0.38.aarch64.rpm mcflashinfer
mcgpufort_3.7.0.38.aarch64.rpm mcgpufort
mchotspot_3.7.0.38.aarch64.rpm mchotspot
mcimage_3.7.0.38.aarch64.rpm mcimage
mcjpeg_3.7.0.38.aarch64.rpm mcjpeg
mckernellib_3.7.0.38.aarch64.rpm mckernellib
mcmathlib_3.7.0.38.aarch64.rpm mcmathlib
mcmpp_3.7.0.38.aarch64.rpm mcmpp
mcpti_3.7.0.38.aarch64.rpm mcpti
mcrand_3.7.0.38.aarch64.rpm mcrand
mcruntime_3.7.0.38.aarch64.rpm mcruntime
mcsanitizer_3.7.0.38.aarch64.rpm mcsanitizer
mcsanitizer-public_3.7.0.38.aarch64.rpm mcsanitizer-public
mcsolver_3.7.0.38.aarch64.rpm mcsolver
mcsolverit_3.7.0.38.aarch64.rpm mcsolverit
mcsparse_3.7.0.38.aarch64.rpm mcsparse
mcthrust_3.7.0.38.aarch64.rpm mcthrust
mctlass_3.7.0.38.aarch64.rpm mctlass
mctlassEx_3.7.0.38.aarch64.rpm mctlassEx
mctoolext_3.7.0.38.aarch64.rpm mctoolext
mctracer_3.7.0.38.aarch64.rpm mctracer
mxccl_plugin_3.7.0.38.aarch64.rpm mxccl_plugin
mxcommlib_tools_3.7.0.38.aarch64.rpm mxcommlib_tools
mxcompute_3.7.0.38.aarch64.rpm mxcompute
mxdiagease_3.7.0.38.aarch64.rpm mxdiagease
mxexporter_3.7.0.38.aarch64.rpm mxexporter
mxffmpeg_3.7.0.38.aarch64.rpm mxffmpeg
mxffmpeg-dev-3.7.0.38.aarch64.rpm mxffmpeg-dev
mxfortran_3.7.0.38.aarch64.rpm mxfortran
mxgdrcopy_3.7.0.38.aarch64.rpm mxgdrcopy
mxgpu_llvm_3.7.0.38.aarch64.rpm mxgpu_llvm
mxkw_3.7.0.38.aarch64.rpm mxkw
mxmaca-install_3.7.0.38.aarch64.rpm mxmaca-install
mxompi_3.7.0.38.aarch64.rpm mxompi
mxreport_3.7.0.38.aarch64.rpm mxreport
mxshmem_3.7.0.38.aarch64.rpm mxshmem
mxsml-devel_3.7.0.38.aarch64.rpm mxsml-devel
mxucx_3.7.0.38.aarch64.rpm mxucx
mxvpu_3.7.0.38.aarch64.rpm mxvpu
mxvs_3.7.0.38.aarch64.rpm mxvs
sample_3.7.0.38.aarch64.rpm sample
EOF

%install
set -euo pipefail
cd %{_builddir}/%{payload_dir}
rm -rf %{buildroot}
mkdir -p %{buildroot}
mkdir -p .filelists

mkdir -p %{buildroot}%{_docdir}/%{name}
cat > %{buildroot}%{_docdir}/%{name}/README <<'EOF'
This package is a repackaged MACA SDK aarch64 bundle. Each subpackage is built
from the payload of the corresponding upstream RPM under the source rpm/
directory.
EOF

while read -r rpm pkg; do
    rpm_path="$(pwd)/%{rpm_dir}/${rpm}"
    filelist=".filelists/${pkg}.files"
    payload_list=".filelists/${pkg}.payload"

    if [ ! -f "${rpm_path}" ]; then
        echo "missing RPM: ${rpm_path}" >&2
        exit 1
    fi

    echo "==> installing rpm payload for ${pkg}: ${rpm}"
    rpm2cpio "${rpm_path}" \
        | cpio -t --quiet \
        | awk '
            $0 == "" || $0 == "." || $0 == "./" || $0 == "/" { next }
            {
                gsub(/^\.\//, "", $0)
                gsub(/^\//, "", $0)
                sub(/\/$/, "", $0)
                if ($0 != "") print "/" $0
            }
        ' \
        | sort -u > "${payload_list}"

    if [ ! -s "${payload_list}" ]; then
        echo "empty payload list for ${pkg}" >&2
        rm -f -- "${payload_list}"
        exit 1
    fi

    rpm -qpl --dump "${rpm_path}" \
        | awk '
            FNR == NR {
                payload[$0] = 1
                next
            }

            NF < 11 { next }
            {
                mode = $(NF - 6)
                path = $1
                for (i = 2; i <= NF - 10; i++) {
                    path = path " " $i
                }

                gsub(/^\.\//, "", path)
                gsub(/^\//, "", path)
                sub(/\/$/, "", path)
                if (path == "") next
                path = "/" path
                if (!(path in payload)) next
                if (mode ~ /^04/) {
                    print "%%dir " path
                } else {
                    print path
                }
            }
        ' "${payload_list}" - \
        | sort -u > "${filelist}"

    if [ ! -s "${filelist}" ]; then
        echo "empty file list for ${pkg}" >&2
        rm -f -- "${payload_list}"
        exit 1
    fi

    rm -f -- "${payload_list}"
    rpm2cpio "${rpm_path}" | (cd %{buildroot} && cpio -idmu --quiet)
done < .rpm-package-map

%post -n maca_sdk_latest -p /bin/sh
if [ -L /opt/maca ]; then
    rm -f /opt/maca
fi
mkdir -p %{sdk_root}
ln -s -T %{sdk_root} /opt/maca

%preun -n maca_sdk_latest -p /bin/sh
if [ -L /opt/maca ]; then
    if [ -f /opt/maca/Version.txt ]; then
        maca_version=$(head -n 1 /opt/maca/Version.txt)
        if [[ ${maca_version} =~ 3.7.0.38 ]]; then
            rm -f /opt/maca
        fi
    fi
fi

%post -n mccltests -p /bin/sh
echo "mccltests package installed successfully"

%post -n mxdiagease -p /bin/sh
#!/bin/bash
set -e

echo "Running post-installation script..."
echo "Setting up symbolic links..."
ln -sfn %{sdk_root}/bin/mx-diagease /usr/bin/mx-diagease

%preun -n mxdiagease -p /bin/sh
#!/bin/bash

echo "Running pre-uninstallation script..."
EXPECTED_TARGET="%{sdk_root}"
ACTUAL_TARGET=$(readlink -f /usr/bin/mx-diagease)

if [[ "$ACTUAL_TARGET" == "$EXPECTED_TARGET"* ]]; then
    echo "Remove symbolic links..."
    rm -f /usr/bin/mx-diagease
fi

%post -n mxffmpeg -p /bin/sh
echo %{sdk_root}//ffmpeg//lib > /etc/ld.so.conf.d/aarch64-libffmpeg.conf
echo %{sdk_root}//ffmpeg//thirdparty/lib > /etc/ld.so.conf.d/aarch64-libffmpeg-thirdparty.conf
echo %{sdk_root}//ffmpeg//thirdparty/lib64 >> /etc/ld.so.conf.d/aarch64-libffmpeg-thirdparty.conf
echo %{sdk_root}///lib >> /etc/ld.so.conf.d/aarch64-libffmpeg-thirdparty.conf
ldconfig
rm -f /usr/bin/ffmpeg
ln -s %{sdk_root}//ffmpeg//bin/ffmpeg /usr/bin/ffmpeg

%preun -n mxffmpeg -p /bin/sh
rm -f /etc/ld.so.conf.d/aarch64-libffmpeg.conf
rm -f /etc/ld.so.conf.d/aarch64-libffmpeg-thirdparty.conf
ldconfig
rm -f /usr/bin/ffmpeg

%postun -n mxffmpeg-dev -p /bin/sh
if [ $1 -eq 0 ]; then
  if [ -d %{sdk_root}//ffmpeg//lib ] && [ -z "$(ls -A %{sdk_root}//ffmpeg//lib)" ]; then
    rm -rf %{sdk_root}//ffmpeg//lib
  fi
  if [ -d %{sdk_root}//ffmpeg/ ] && [ -z "$(ls -A %{sdk_root}//ffmpeg/)" ]; then
    rm -rf %{sdk_root}//ffmpeg/
  fi
fi

%post -n mxgdrcopy -p /bin/sh
cd %{sdk_root}/
tar -xf mxgdrcopy.tar
rm mxgdrcopy.tar
cd -

%preun -n mxgdrcopy -p /bin/sh
if [ -d %{sdk_root}/include/mxgdrcopy ]; then
    rm -rf %{sdk_root}/include/mxgdrcopy
    rm -rf %{sdk_root}/bin/mxgdrcopy
    rm -rf %{sdk_root}/lib/libgdr*
    echo "remove" > %{sdk_root}/mxgdrcopy.tar
fi

%post -n mxmaca-install -p /bin/sh
if [ -L /opt/maca ]; then
    rm -f /opt/maca
fi
mkdir -p %{sdk_root}
ln -s -T %{sdk_root} /opt/maca

if [ -L %{sdk_root}/lib64 ]; then
    rm -f %{sdk_root}/lib64
fi
mkdir -p %{sdk_root}/lib
cd %{sdk_root}
ln -s -T lib lib64
cd -

%preun -n mxmaca-install -p /bin/sh
if [ -L /opt/maca ]; then
    if [ -f /opt/maca/Version.txt ]; then
        maca_version=`head -n 1 /opt/maca/Version.txt`
        if [[ ${maca_version} =~ 3.7.0.38 ]]; then
            rm -f /opt/maca
        fi
    fi
fi

if [ -L %{sdk_root}/lib64 ]; then
    rm -f %{sdk_root}/lib64
fi

%post -n mxompi -p /bin/sh
cd %{sdk_root}/ompi
tar -xf ompi.tar
rm ompi.tar
cd -
if [ -L /opt/maca ]; then
    rm -f /opt/maca
fi
ln -s -T %{sdk_root} /opt/maca

%preun -n mxompi -p /bin/sh
if [ -d %{sdk_root}/ompi ]; then
    rm -rf %{sdk_root}/ompi/*
    echo "remove" > %{sdk_root}/ompi/ompi.tar
fi

%postun -n mxompi -p /bin/sh
if [ -d %{sdk_root}/ompi ]; then
    rm -r %{sdk_root}/ompi
fi

%post -n mxreport -p /bin/sh
ln -sfn %{sdk_root}/bin/mx-report /usr/bin/mx-report
ln -sfn %{sdk_root}/share/mxreport/mx-report.1.gz /usr/share/man/man1/mx-report.1.gz

%postun -n mxreport -p /bin/sh
if [ $1 -eq 0 ]; then
    if [[ "$(readlink -f /usr/bin/mx-report)" = "%{sdk_root}"* ]]; then
        rm -f /usr/bin/mx-report
        rm -f /usr/share/man/man1/mx-report.1.gz
    fi
fi

%post -n mxucx -p /bin/sh
cd %{sdk_root}/ucx
tar -xf ucx.tar
rm ucx.tar
cd -
if [ -L /opt/maca ]; then
    rm -f /opt/maca
fi
ln -s -T %{sdk_root} /opt/maca

%preun -n mxucx -p /bin/sh
if [ -d %{sdk_root}/ucx ]; then
    rm -rf %{sdk_root}/ucx/*
    echo "remove" > %{sdk_root}/ucx/ucx.tar
fi

%postun -n mxucx -p /bin/sh
if [ -d %{sdk_root}/ucx ]; then
    rm -r %{sdk_root}/ucx
fi

%files
%{_docdir}/%{name}/README

%files -n commonlib -f %{_builddir}/%{payload_dir}/.filelists/commonlib.files
%files -n cu-bridge -f %{_builddir}/%{payload_dir}/.filelists/cu-bridge.files
%files -n macainfo -f %{_builddir}/%{payload_dir}/.filelists/macainfo.files
%files -n maca_sdk_latest -f %{_builddir}/%{payload_dir}/.filelists/maca_sdk_latest.files
%files -n maca_sdk_pkg_config -f %{_builddir}/%{payload_dir}/.filelists/maca_sdk_pkg_config.files
%files -n mcanalyzer -f %{_builddir}/%{payload_dir}/.filelists/mcanalyzer.files
%files -n mcblas -f %{_builddir}/%{payload_dir}/.filelists/mcblas.files
%files -n mcblaslt -f %{_builddir}/%{payload_dir}/.filelists/mcblaslt.files
%files -n mccl -f %{_builddir}/%{payload_dir}/.filelists/mccl.files
%files -n mccltests -f %{_builddir}/%{payload_dir}/.filelists/mccltests.files
%files -n mccompiler -f %{_builddir}/%{payload_dir}/.filelists/mccompiler.files
%files -n mcdnn -f %{_builddir}/%{payload_dir}/.filelists/mcdnn.files
%files -n mcfft -f %{_builddir}/%{payload_dir}/.filelists/mcfft.files
%files -n mcfile -f %{_builddir}/%{payload_dir}/.filelists/mcfile.files
%files -n mcflashattn -f %{_builddir}/%{payload_dir}/.filelists/mcflashattn.files
%files -n mcflashinfer -f %{_builddir}/%{payload_dir}/.filelists/mcflashinfer.files
%files -n mcgpufort -f %{_builddir}/%{payload_dir}/.filelists/mcgpufort.files
%files -n mchotspot -f %{_builddir}/%{payload_dir}/.filelists/mchotspot.files
%files -n mcimage -f %{_builddir}/%{payload_dir}/.filelists/mcimage.files
%files -n mcjpeg -f %{_builddir}/%{payload_dir}/.filelists/mcjpeg.files
%files -n mckernellib -f %{_builddir}/%{payload_dir}/.filelists/mckernellib.files
%files -n mcmathlib -f %{_builddir}/%{payload_dir}/.filelists/mcmathlib.files
%files -n mcmpp -f %{_builddir}/%{payload_dir}/.filelists/mcmpp.files
%files -n mcpti -f %{_builddir}/%{payload_dir}/.filelists/mcpti.files
%files -n mcrand -f %{_builddir}/%{payload_dir}/.filelists/mcrand.files
%files -n mcruntime -f %{_builddir}/%{payload_dir}/.filelists/mcruntime.files
%files -n mcsanitizer -f %{_builddir}/%{payload_dir}/.filelists/mcsanitizer.files
%files -n mcsanitizer-public -f %{_builddir}/%{payload_dir}/.filelists/mcsanitizer-public.files
%files -n mcsolver -f %{_builddir}/%{payload_dir}/.filelists/mcsolver.files
%files -n mcsolverit -f %{_builddir}/%{payload_dir}/.filelists/mcsolverit.files
%files -n mcsparse -f %{_builddir}/%{payload_dir}/.filelists/mcsparse.files
%files -n mcthrust -f %{_builddir}/%{payload_dir}/.filelists/mcthrust.files
%files -n mctlass -f %{_builddir}/%{payload_dir}/.filelists/mctlass.files
%files -n mctlassEx -f %{_builddir}/%{payload_dir}/.filelists/mctlassEx.files
%files -n mctoolext -f %{_builddir}/%{payload_dir}/.filelists/mctoolext.files
%files -n mctracer -f %{_builddir}/%{payload_dir}/.filelists/mctracer.files
%files -n mxccl_plugin -f %{_builddir}/%{payload_dir}/.filelists/mxccl_plugin.files
%files -n mxcommlib_tools -f %{_builddir}/%{payload_dir}/.filelists/mxcommlib_tools.files
%files -n mxcompute -f %{_builddir}/%{payload_dir}/.filelists/mxcompute.files
%files -n mxdiagease -f %{_builddir}/%{payload_dir}/.filelists/mxdiagease.files
%files -n mxexporter -f %{_builddir}/%{payload_dir}/.filelists/mxexporter.files
%files -n mxffmpeg -f %{_builddir}/%{payload_dir}/.filelists/mxffmpeg.files
%files -n mxffmpeg-dev -f %{_builddir}/%{payload_dir}/.filelists/mxffmpeg-dev.files
%files -n mxfortran -f %{_builddir}/%{payload_dir}/.filelists/mxfortran.files
%files -n mxgdrcopy -f %{_builddir}/%{payload_dir}/.filelists/mxgdrcopy.files
%files -n mxgpu_llvm -f %{_builddir}/%{payload_dir}/.filelists/mxgpu_llvm.files
%files -n mxkw -f %{_builddir}/%{payload_dir}/.filelists/mxkw.files
%files -n mxmaca-install -f %{_builddir}/%{payload_dir}/.filelists/mxmaca-install.files
%files -n mxompi -f %{_builddir}/%{payload_dir}/.filelists/mxompi.files
%files -n mxreport -f %{_builddir}/%{payload_dir}/.filelists/mxreport.files
%files -n mxshmem -f %{_builddir}/%{payload_dir}/.filelists/mxshmem.files
%files -n mxsml-devel -f %{_builddir}/%{payload_dir}/.filelists/mxsml-devel.files
%files -n mxucx -f %{_builddir}/%{payload_dir}/.filelists/mxucx.files
%files -n mxvpu -f %{_builddir}/%{payload_dir}/.filelists/mxvpu.files
%files -n mxvs -f %{_builddir}/%{payload_dir}/.filelists/mxvs.files
%files -n sample -f %{_builddir}/%{payload_dir}/.filelists/sample.files

%changelog
* Wed Jul 08 2026 MetaX Packager <packager@example.invalid> - 3.7.0.38-1
- Repack MACA SDK aarch64 RPM payloads into individual subpackages.