Architecture specific change in rpms/atomes.git
by githook-noreply@fedoraproject.org
The package rpms/atomes.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/atomes.git/commit/?id=6dfc72b9098....
Change:
-%ifarch aarch64
Thanks.
Full change:
============
commit 6dfc72b9098e2e5b14607fbd265576efeccfd7ed
Author: Sébastien Le Roux <sebastien.leroux(a)ipcms.unistra.fr>
Date: Wed Feb 28 17:55:08 2024 +0100
Bug corrections and improvements (see: https://github.com/Slookeur/Atomes-GNU/releases/tag/v1.1.13)
diff --git a/.gitignore b/.gitignore
index cdf20c9..2c0d9dc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/v1.1.11.tar.gz
/v1.1.12.tar.gz
+/v1.1.13.tar.gz
diff --git a/atomes.spec b/atomes.spec
index 4a24e62..c1c6aec 100644
--- a/atomes.spec
+++ b/atomes.spec
@@ -1,7 +1,7 @@
Name: atomes
%global upname Atomes-GNU
-Version: 1.1.12
-Release: 4%{?dist}
+Version: 1.1.13
+Release: 1%{?dist}
Summary: An atomistic toolbox
License: AGPL-3.0-or-later
Source0: https://github.com/Slookeur/%{upname}/archive/refs/tags/v%{version}.tar.gz
@@ -60,11 +60,6 @@ step by step to achieve this crucial step.
%autosetup -n %{upname}-%{version}
%build
-%ifarch aarch64
-# Temporary fix for bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111528
-# https://bugzilla.redhat.com/show_bug.cgi?id=2241139
- FCFLAGS=`echo $FCFLAGS|sed 's/-fstack-protector-strong//1'`
-%endif
%configure
#make %%{?_smp_mflags}
%make_build
@@ -92,11 +87,8 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/fr.ipcms.%{nam
%{_metainfodir}/fr.ipcms.%{name}.appdata.xml
%changelog
-* Mon Jan 22 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.12-4
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Fri Jan 19 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.12-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+* Wed Feb 28 2024 Sébastien Le Roux <sebastien.leroux(a)ipcms.unistra.fr> - 1.1.13-1
+- Bug corrections and improvements (see: https://github.com/Slookeur/Atomes-GNU/releases/tag/v1.1.13)
* Mon Sep 18 2023 Sébastien Le Roux <sebastien.leroux(a)ipcms.unistra.fr> - 1.1.12-2
- Package metadata update
diff --git a/sources b/sources
index 8ecb470..52372ca 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (v1.1.12.tar.gz) = f2dd2ae35bf4a95f5319a3a1b8ecc9fb3e31461a90cf79b93d400256bb9ef3617ef92855f41a8f57c026529e2d4142e4ce1629cb1b30e27a791d12315a60fcc4
+SHA512 (v1.1.13.tar.gz) = ed93d94c5a42c22ad780efac3533d85073066daabebbab9f2624af9894cacbb74bed3ff191af0b2df19fae3694bafa38dd982f5ad8d00256538ac7203893011e
commit edbc4238bdb0918bb480010cafd0c89419fd8ff2
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Mon Jan 22 23:45:51 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/atomes.spec b/atomes.spec
index 846800b..4a24e62 100644
--- a/atomes.spec
+++ b/atomes.spec
@@ -1,7 +1,7 @@
Name: atomes
%global upname Atomes-GNU
Version: 1.1.12
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: An atomistic toolbox
License: AGPL-3.0-or-later
Source0: https://github.com/Slookeur/%{upname}/archive/refs/tags/v%{version}.tar.gz
@@ -92,6 +92,9 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/fr.ipcms.%{nam
%{_metainfodir}/fr.ipcms.%{name}.appdata.xml
%changelog
+* Mon Jan 22 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.12-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Fri Jan 19 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.12-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit 2d384036545a9a4dafe89082a27e5cced7130642
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jan 19 13:50:16 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/atomes.spec b/atomes.spec
index 2e604be..846800b 100644
--- a/atomes.spec
+++ b/atomes.spec
@@ -1,7 +1,7 @@
Name: atomes
%global upname Atomes-GNU
Version: 1.1.12
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: An atomistic toolbox
License: AGPL-3.0-or-later
Source0: https://github.com/Slookeur/%{upname}/archive/refs/tags/v%{version}.tar.gz
@@ -92,6 +92,9 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/fr.ipcms.%{nam
%{_metainfodir}/fr.ipcms.%{name}.appdata.xml
%changelog
+* Fri Jan 19 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.12-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Mon Sep 18 2023 Sébastien Le Roux <sebastien.leroux(a)ipcms.unistra.fr> - 1.1.12-2
- Package metadata update
2 months, 1 week
Architecture specific change in rpms/qbe.git
by githook-noreply@fedoraproject.org
The package rpms/qbe.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/qbe.git/commit/?id=329bf1f2c180f7....
Change:
+ExclusiveArch: x86_64 aarch64 riscv64
Thanks.
Full change:
============
commit 4e053fd48fdee00bf5af199815db5f357f1cb488
Author: Timothée Floure <work(a)tfloure.ch>
Date: Fri Feb 16 21:34:53 2024 +0100
Remove QBE 1.1 archive from sources
diff --git a/sources b/sources
index 9670fd1..2836e83 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-SHA512 (qbe-1.1.tar.xz) = 1e5d7d1df3d73849dbf19dd1d84c9bba63a5041622823a5a239496032f9d82bd1640dd2bbd03e28c8a180b8e66a1fe10deb940b5d8fde996bf593f7e8d943e8b
SHA512 (qbe-1.2.tar.xz) = b3ffd172e95346b3bfae1d2aff4c22a32af8bd4443d073f6fbb711f41db01f072ca7a8108901508cd4a8366567dab46510e0438716d35548591fdf37cee49971
commit c9ef47f00122ad5d2edbde5cbba84e72939a8939
Author: Timothée Floure <work(a)tfloure.ch>
Date: Fri Feb 16 21:30:44 2024 +0100
Rebase on upstream 1.2
diff --git a/.gitignore b/.gitignore
index 6cacfc7..b206dad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
results_qbe
/qbe-1.0.tar.xz
/qbe-1.1.tar.xz
+/qbe-1.2.tar.xz
diff --git a/qbe.spec b/qbe.spec
index 32bfb1f..7997853 100644
--- a/qbe.spec
+++ b/qbe.spec
@@ -1,13 +1,6 @@
-%bcond snapshot 1
-
-%global srcver 1.1
-%global commit 2d683e0c53907ebca9abde876dd87af70719e42d
-%global shortcommit %(c=%{commit}; echo ${c:0:8})
-%global commitdate 20240129
-%global snapshotver %{commitdate}.%{shortcommit}
Name: qbe
-Version: %{srcver}%{?with_snapshot:^%{snapshotver}}
+Version: 1.2
Release: %autorelease
Summary: A pure C embeddable compiler backend
@@ -15,10 +8,6 @@ License: MIT
URL: https://c9x.me/compile/
Source0: %{url}/release/%{name}-%{srcver}.tar.xz
-%if %{with snapshot}
-Patch: 0000-snapshot-%{srcver}-%{shortcommit}.patch
-%endif
-
BuildRequires: gcc
BuildRequires: make
diff --git a/sources b/sources
index fbc793b..9670fd1 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
SHA512 (qbe-1.1.tar.xz) = 1e5d7d1df3d73849dbf19dd1d84c9bba63a5041622823a5a239496032f9d82bd1640dd2bbd03e28c8a180b8e66a1fe10deb940b5d8fde996bf593f7e8d943e8b
+SHA512 (qbe-1.2.tar.xz) = b3ffd172e95346b3bfae1d2aff4c22a32af8bd4443d073f6fbb711f41db01f072ca7a8108901508cd4a8366567dab46510e0438716d35548591fdf37cee49971
commit 7a07d1baef91c3927440ec33102a37f09fe22ca4
Merge: d90362f 329bf1f
Author: Timothée Floure <timothee.floure(a)posteo.net>
Date: Sun Feb 4 17:53:43 2024 +0000
Merge #1 `Rebase to upstream commit 2d683e0c`
commit 329bf1f2c180f737c8ac3599e2a9c1673f21bf46
Author: Mike Rochefort <mroche(a)omenos.dev>
Date: Sat Nov 11 09:40:50 2023 -0500
Rebase to upstream commit 2d683e0c
diff --git a/.gitignore b/.gitignore
index 02d2c10..6cacfc7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
+*.rpm
+results_qbe
/qbe-1.0.tar.xz
/qbe-1.1.tar.xz
diff --git a/0000-snapshot-1.1-2d683e0c.patch b/0000-snapshot-1.1-2d683e0c.patch
new file mode 100644
index 0000000..49516a4
--- /dev/null
+++ b/0000-snapshot-1.1-2d683e0c.patch
@@ -0,0 +1,1160 @@
+diff --git a/Makefile b/Makefile
+index 5fadadc..f5e8a76 100644
+--- a/Makefile
++++ b/Makefile
+@@ -13,7 +13,8 @@ OBJ = $(COMMOBJ) $(AMD64OBJ) $(ARM64OBJ) $(RV64OBJ)
+
+ SRCALL = $(OBJ:.o=.c)
+
+-CFLAGS = $(CPPFLAGS) -Wall -Wextra -std=c99 -g -Wpedantic
++CC = cc
++CFLAGS = -std=c99 -g -Wall -Wextra -Wpedantic
+
+ qbe: $(OBJ)
+ $(CC) $(LDFLAGS) $(OBJ) -o $@
+@@ -41,7 +42,7 @@ config.h:
+ ;; \
+ *) \
+ case `uname -m` in \
+- *aarch64*) \
++ *aarch64*|*arm64*) \
+ echo "#define Deftgt T_arm64"; \
+ ;; \
+ *riscv64*) \
+diff --git a/all.h b/all.h
+index 7eba443..e421b9c 100644
+--- a/all.h
++++ b/all.h
+@@ -33,7 +33,7 @@ typedef struct Lnk Lnk;
+ typedef struct Target Target;
+
+ enum {
+- NString = 72,
++ NString = 80,
+ NIns = 1 << 20,
+ NAlign = 3,
+ NField = 32,
+@@ -115,7 +115,7 @@ static inline int rtype(Ref r)
+
+ static inline int rsval(Ref r)
+ {
+- return ((int32_t)r.val << 3) >> 3;
++ return (int32_t)((int64_t)r.val << 3) >> 3;
+ }
+
+ enum CmpI {
+@@ -458,6 +458,7 @@ void freeall(void);
+ void *vnew(ulong, size_t, Pool);
+ void vfree(void *);
+ void vgrow(void *, ulong);
++void strf(char[NString], char *, ...);
+ uint32_t intern(char *);
+ char *str(uint32_t);
+ int argcls(Ins *, int);
+@@ -501,7 +502,7 @@ bshas(BSet *bs, uint elt)
+
+ /* parse.c */
+ extern Op optab[NOp];
+-void parse(FILE *, char *, void (Dat *), void (Fn *));
++void parse(FILE *, char *, void (char *), void (Dat *), void (Fn *));
+ void printfn(Fn *, FILE *);
+ void printref(Ref, Fn *, FILE *);
+ void err(char *, ...) __attribute__((noreturn));
+@@ -510,7 +511,7 @@ void err(char *, ...) __attribute__((noreturn));
+ void elimsb(Fn *);
+
+ /* cfg.c */
+-Blk *blknew(void);
++Blk *newblk(void);
+ void edgedel(Blk *, Blk **);
+ void fillpreds(Fn *);
+ void fillrpo(Fn *);
+@@ -567,6 +568,8 @@ void rega(Fn *);
+ /* emit.c */
+ void emitfnlnk(char *, Lnk *, FILE *);
+ void emitdat(Dat *, FILE *);
++void emitdbgfile(char *, FILE *);
++void emitdbgloc(uint, uint, FILE *);
+ int stashbits(void *, int);
+ void elf_emitfnfin(char *, FILE *);
+ void elf_emitfin(FILE *);
+diff --git a/amd64/emit.c b/amd64/emit.c
+index 9b8bb5d..51d1a5c 100644
+--- a/amd64/emit.c
++++ b/amd64/emit.c
+@@ -372,6 +372,8 @@ emitins(Ins i, Fn *fn, FILE *f)
+ int64_t val;
+ int o, t0;
+ Ins ineg;
++ Con *con;
++ char *sym;
+
+ switch (i.op) {
+ default:
+@@ -490,6 +492,26 @@ emitins(Ins i, Fn *fn, FILE *f)
+ * should use movabsq when reading movq */
+ emitf("mov%k %0, %=", &i, fn, f);
+ break;
++ case Oaddr:
++ if (!T.apple
++ && rtype(i.arg[0]) == RCon
++ && fn->con[i.arg[0].val].sym.type == SThr) {
++ /* derive the symbol address from the TCB
++ * address at offset 0 of %fs */
++ assert(isreg(i.to));
++ con = &fn->con[i.arg[0].val];
++ sym = str(con->sym.id);
++ emitf("movq %%fs:0, %L=", &i, fn, f);
++ fprintf(f, "\tleaq %s%s@tpoff",
++ sym[0] == '"' ? "" : T.assym, sym);
++ if (con->bits.i)
++ fprintf(f, "%+"PRId64, con->bits.i);
++ fprintf(f, "(%%%s), %%%s\n",
++ regtoa(i.to.val, SLong),
++ regtoa(i.to.val, SLong));
++ break;
++ }
++ goto Table;
+ case Ocall:
+ /* calls simply have a weird syntax in AT&T
+ * assembly... */
+@@ -525,6 +547,9 @@ emitins(Ins i, Fn *fn, FILE *f)
+ emitcopy(i.arg[0], i.arg[1], i.cls, fn, f);
+ emitcopy(i.arg[1], TMP(XMM0+15), i.cls, fn, f);
+ break;
++ case Odbgloc:
++ emitdbgloc(i.arg[0].val, i.arg[1].val, f);
++ break;
+ }
+ }
+
+diff --git a/amd64/isel.c b/amd64/isel.c
+index 3e3fe62..e29c8bf 100644
+--- a/amd64/isel.c
++++ b/amd64/isel.c
+@@ -58,6 +58,21 @@ rslot(Ref r, Fn *fn)
+ return fn->tmp[r.val].slot;
+ }
+
++static int
++hascon(Ref r, Con **pc, Fn *fn)
++{
++ switch (rtype(r)) {
++ case RCon:
++ *pc = &fn->con[r.val];
++ return 1;
++ case RMem:
++ *pc = &fn->mem[r.val].offset;
++ return 1;
++ default:
++ return 0;
++ }
++}
++
+ static void
+ fixarg(Ref *r, int k, Ins *i, Fn *fn)
+ {
+@@ -100,6 +115,34 @@ fixarg(Ref *r, int k, Ins *i, Fn *fn)
+ r1 = newtmp("isel", Kl, fn);
+ emit(Oaddr, Kl, r1, SLOT(s), R);
+ }
++ else if (T.apple && hascon(r0, &c, fn)
++ && c->type == CAddr && c->sym.type == SThr) {
++ r1 = newtmp("isel", Kl, fn);
++ if (c->bits.i) {
++ r2 = newtmp("isel", Kl, fn);
++ cc = (Con){.type = CBits};
++ cc.bits.i = c->bits.i;
++ r3 = newcon(&cc, fn);
++ emit(Oadd, Kl, r1, r2, r3);
++ } else
++ r2 = r1;
++ emit(Ocopy, Kl, r2, TMP(RAX), R);
++ r2 = newtmp("isel", Kl, fn);
++ r3 = newtmp("isel", Kl, fn);
++ emit(Ocall, 0, R, r3, CALL(17));
++ emit(Ocopy, Kl, TMP(RDI), r2, R);
++ emit(Oload, Kl, r3, r2, R);
++ cc = *c;
++ cc.bits.i = 0;
++ r3 = newcon(&cc, fn);
++ emit(Oload, Kl, r2, r3, R);
++ if (rtype(r0) == RMem) {
++ m = &fn->mem[r0.val];
++ m->offset.type = CUndef;
++ m->base = r1;
++ r1 = r0;
++ }
++ }
+ else if (!(isstore(op) && r == &i->arg[1])
+ && !isload(op) && op != Ocall && rtype(r0) == RCon
+ && fn->con[r0.val].type == CAddr) {
+@@ -122,28 +165,6 @@ fixarg(Ref *r, int k, Ins *i, Fn *fn)
+ m->offset.type = CUndef;
+ m->base = r0;
+ }
+- } else if (T.apple && rtype(r0) == RCon
+- && (c = &fn->con[r0.val])->type == CAddr
+- && c->sym.type == SThr) {
+- r1 = newtmp("isel", Kl, fn);
+- if (c->bits.i) {
+- r2 = newtmp("isel", Kl, fn);
+- cc = (Con){.type = CBits};
+- cc.bits.i = c->bits.i;
+- r3 = newcon(&cc, fn);
+- emit(Oadd, Kl, r1, r2, r3);
+- } else
+- r2 = r1;
+- emit(Ocopy, Kl, r2, TMP(RAX), R);
+- r2 = newtmp("isel", Kl, fn);
+- r3 = newtmp("isel", Kl, fn);
+- emit(Ocall, 0, R, r3, CALL(17));
+- emit(Ocopy, Kl, TMP(RDI), r2, R);
+- emit(Oload, Kl, r3, r2, R);
+- cc = *c;
+- cc.bits.i = 0;
+- r3 = newcon(&cc, fn);
+- emit(Oload, Kl, r2, r3, R);
+ }
+ *r = r1;
+ }
+@@ -295,15 +316,15 @@ sel(Ins i, ANum *an, Fn *fn)
+ break;
+ case Oultof:
+ /* %mask =l and %arg.0, 1
+- %isbig =l shr %arg.0, 63
+- %divided =l shr %arg.0, %isbig
+- %or =l or %mask, %divided
+- %float =d sltof %or
+- %cast =l cast %float
+- %addend =l shl %isbig, 52
+- %sum =l add %cast, %addend
+- %result =d cast %sum
+- */
++ * %isbig =l shr %arg.0, 63
++ * %divided =l shr %arg.0, %isbig
++ * %or =l or %mask, %divided
++ * %float =d sltof %or
++ * %cast =l cast %float
++ * %addend =l shl %isbig, 52
++ * %sum =l add %cast, %addend
++ * %result =d cast %sum
++ */
+ r0 = newtmp("utof", k, fn);
+ if (k == Ks)
+ kc = Kw, sh = 23;
+@@ -336,8 +357,25 @@ sel(Ins i, ANum *an, Fn *fn)
+ kc = Kd;
+ tmp[4] = getcon(0xc3e0000000000000, fn);
+ Oftoui:
+- if (k == Kw)
++ if (k == Kw) {
++ r0 = newtmp("ftou", Kl, fn);
++ emit(Ocopy, Kw, i.to, r0, R);
++ i.cls = Kl;
++ i.to = r0;
+ goto Emit;
++ }
++ /* %try0 =l {s,d}tosi %fp
++ * %mask =l sar %try0, 63
++ *
++ * mask is all ones if the first
++ * try was oob, all zeroes o.w.
++ *
++ * %fps ={s,d} sub %fp, (1<<63)
++ * %try1 =l {s,d}tosi %fps
++ *
++ * %tmp =l and %mask, %try1
++ * %res =l or %tmp, %try0
++ */
+ r0 = newtmp("ftou", kc, fn);
+ for (j=0; j<4; j++)
+ tmp[j] = newtmp("ftou", Kl, fn);
+@@ -371,6 +409,7 @@ sel(Ins i, ANum *an, Fn *fn)
+ case_Oload:
+ seladdr(&i.arg[0], an, fn);
+ goto Emit;
++ case Odbgloc:
+ case Ocall:
+ case Osalloc:
+ case Ocopy:
+diff --git a/amd64/sysv.c b/amd64/sysv.c
+index 04dfd83..5b559c1 100644
+--- a/amd64/sysv.c
++++ b/amd64/sysv.c
+@@ -507,12 +507,12 @@ split(Fn *fn, Blk *b)
+ Blk *bn;
+
+ ++fn->nblk;
+- bn = blknew();
++ bn = newblk();
+ bn->nins = &insb[NIns] - curi;
+ idup(&bn->ins, curi, bn->nins);
+ curi = &insb[NIns];
+ bn->visit = ++b->visit;
+- (void)!snprintf(bn->name, NString, "%s.%d", b->name, b->visit);
++ strf(bn->name, "%s.%d", b->name, b->visit);
+ bn->loop = b->loop;
+ bn->link = b->link;
+ b->link = bn;
+diff --git a/arm64/abi.c b/arm64/abi.c
+index 8ba4ffc..abc02d9 100644
+--- a/arm64/abi.c
++++ b/arm64/abi.c
+@@ -446,6 +446,7 @@ selcall(Fn *fn, Ins *i0, Ins *i1, Insl **ilp)
+ case 2: op = Ostoreh; break;
+ case 4:
+ case 8: op = store[*c->cls]; break;
++ default: die("unreachable");
+ }
+ emit(op, 0, R, i->arg[0], r);
+ } else {
+@@ -541,12 +542,12 @@ split(Fn *fn, Blk *b)
+ Blk *bn;
+
+ ++fn->nblk;
+- bn = blknew();
++ bn = newblk();
+ bn->nins = &insb[NIns] - curi;
+ idup(&bn->ins, curi, bn->nins);
+ curi = &insb[NIns];
+ bn->visit = ++b->visit;
+- (void)!snprintf(bn->name, NString, "%s.%d", b->name, b->visit);
++ strf(bn->name, "%s.%d", b->name, b->visit);
+ bn->loop = b->loop;
+ bn->link = b->link;
+ b->link = bn;
+@@ -799,8 +800,8 @@ arm64_abi(Fn *fn)
+ }
+
+ /* abi0 for apple target; introduces
+- * necessery sign extension for arg
+- * passing & returns
++ * necessary sign extensions in calls
++ * and returns
+ */
+ void
+ apple_extsb(Fn *fn)
+@@ -818,6 +819,7 @@ apple_extsb(Fn *fn)
+ op = Oextsb + (j - Jretsb);
+ emit(op, Kw, r, b->jmp.arg, R);
+ b->jmp.arg = r;
++ b->jmp.type = Jretw;
+ }
+ for (i=&b->ins[b->nins]; i>b->ins;) {
+ emiti(*--i);
+@@ -844,7 +846,7 @@ apple_extsb(Fn *fn)
+ }
+
+ if (debug['A']) {
+- fprintf(stderr, "\n> After apple_extsb:\n");
++ fprintf(stderr, "\n> After Apple pre-ABI:\n");
+ printfn(fn, stderr);
+ }
+ }
+diff --git a/arm64/emit.c b/arm64/emit.c
+index 5113c66..990d839 100644
+--- a/arm64/emit.c
++++ b/arm64/emit.c
+@@ -446,6 +446,9 @@ emitins(Ins *i, E *e)
+ if (!req(i->to, R))
+ emitf("mov %=, sp", i, e);
+ break;
++ case Odbgloc:
++ emitdbgloc(i->arg[0].val, i->arg[1].val, e->f);
++ break;
+ }
+ }
+
+@@ -636,4 +639,6 @@ arm64_emitfn(Fn *fn, FILE *out)
+ }
+ }
+ id0 += e->fn->nblk;
++ if (!T.apple)
++ elf_emitfnfin(fn->name, out);
+ }
+diff --git a/cfg.c b/cfg.c
+index d12f6c8..406c307 100644
+--- a/cfg.c
++++ b/cfg.c
+@@ -1,7 +1,7 @@
+ #include "all.h"
+
+ Blk *
+-blknew()
++newblk()
+ {
+ static Blk z;
+ Blk *b;
+@@ -299,7 +299,7 @@ simpljmp(Fn *fn)
+ Blk **uf; /* union-find */
+ Blk **p, *b, *ret;
+
+- ret = blknew();
++ ret = newblk();
+ ret->id = fn->nblk++;
+ ret->jmp.type = Jret0;
+ uf = emalloc(fn->nblk * sizeof uf[0]);
+diff --git a/doc/il.txt b/doc/il.txt
+index cc3e021..2d488dc 100644
+--- a/doc/il.txt
++++ b/doc/il.txt
+@@ -15,7 +15,7 @@
+ 2. <@ Types >
+ * <@ Simple Types >
+ * <@ Subtyping >
+- 3. <@ Constants >
++ 3. <@ Constants and Vals >
+ 4. <@ Linkage >
+ 5. <@ Definitions >
+ * <@ Aggregate Types >
+@@ -168,8 +168,8 @@ The rationale is that a word can be signed or unsigned, so
+ extending it to a long could be done in two ways, either
+ by zero-extension, or by sign-extension.
+
+-- 3. Constants
+---------------
++- 3. Constants and Vals
++-----------------------
+
+ `bnf
+ CONST :=
+@@ -182,6 +182,10 @@ by zero-extension, or by sign-extension.
+ CONST
+ | 'thread' $IDENT # Thread-local symbol
+
++ VAL :=
++ DYNCONST
++ | %IDENT
++
+ Constants come in two kinds: compile-time constants and
+ dynamic constants. Dynamic constants include compile-time
+ constants and other symbol variants that are only known at
+@@ -221,6 +225,10 @@ When the `thread` keyword prefixes a symbol name, the
+ symbol's numeric value is resolved at runtime in the
+ thread-local storage.
+
++Vals are used as arguments in regular, phi, and jump
++instructions within function definitions. They are
++either constants or function-scope temporaries.
++
+ - 4. Linkage
+ ------------
+
+@@ -250,7 +258,7 @@ thread starts, the supporting platform runtime is in
+ charge of making a new copy of the object for the
+ fresh thread. Objects in thread-local storage must
+ be accessed using the `thread $IDENT` syntax, as
+-specified in the <@ Constants > section.
++specified in the <@ Constants and Vals > section.
+
+ A `section` flag can be specified to tell the linker to
+ put the defined item in a certain section. The use of
+@@ -293,6 +301,15 @@ using linkage flags.
+ '{'
+ ( SUBTY [NUMBER] ),
+ '}'
++ | # Union type
++ 'type' :IDENT '=' ['align' NUMBER]
++ '{'
++ (
++ '{'
++ ( SUBTY [NUMBER] ),
++ '}'
++ )+
++ '}'
+ | # Opaque type
+ 'type' :IDENT '=' 'align' NUMBER '{' NUMBER '}'
+
+@@ -318,6 +335,15 @@ explicitly specified by the programmer.
+
+ type :cryptovector = align 16 { w 4 }
+
++Union types allow the same chunk of memory to be used with
++different layouts. They are defined by enclosing multiple
++regular aggregate type bodies in a pair of curly braces.
++Size and alignment of union types are set to the maximum size
++and alignment of each variation or, in the case of alignment,
++can be explicitly specified.
++
++ type :un9 = { { b } { s } }
++
+ Opaque types are used when the inner structure of an
+ aggregate cannot be specified; the alignment for opaque
+ types is mandatory. They are defined simply by enclosing
+diff --git a/emit.c b/emit.c
+index 017c461..490628e 100644
+--- a/emit.c
++++ b/emit.c
+@@ -207,3 +207,38 @@ macho_emitfin(FILE *f)
+
+ emitfin(f, sec);
+ }
++
++static uint32_t *file;
++static uint nfile;
++static uint curfile;
++
++void
++emitdbgfile(char *fn, FILE *f)
++{
++ uint32_t id;
++ uint n;
++
++ id = intern(fn);
++ for (n=0; n<nfile; n++)
++ if (file[n] == id) {
++ /* gas requires positive
++ * file numbers */
++ curfile = n + 1;
++ return;
++ }
++ if (!file)
++ file = vnew(0, sizeof *file, PHeap);
++ vgrow(&file, ++nfile);
++ file[nfile-1] = id;
++ curfile = nfile;
++ fprintf(f, ".file %u %s\n", curfile, fn);
++}
++
++void
++emitdbgloc(uint line, uint col, FILE *f)
++{
++ if (col != 0)
++ fprintf(f, "\t.loc %u %u %u\n", curfile, line, col);
++ else
++ fprintf(f, "\t.loc %u %u\n", curfile, line);
++}
+diff --git a/main.c b/main.c
+index abfe03e..5ecb4d0 100644
+--- a/main.c
++++ b/main.c
+@@ -107,6 +107,12 @@ func(Fn *fn)
+ freeall();
+ }
+
++static void
++dbgfile(char *fn)
++{
++ emitdbgfile(fn, outf);
++}
++
+ int
+ main(int ac, char *av[])
+ {
+@@ -181,7 +187,7 @@ main(int ac, char *av[])
+ exit(1);
+ }
+ }
+- parse(inf, f, data, func);
++ parse(inf, f, dbgfile, data, func);
+ fclose(inf);
+ } while (++optind < ac);
+
+diff --git a/mem.c b/mem.c
+index 1db632f..944cd2f 100644
+--- a/mem.c
++++ b/mem.c
+@@ -1,6 +1,7 @@
+ #include "all.h"
+
+ typedef struct Range Range;
++typedef struct Store Store;
+ typedef struct Slot Slot;
+
+ /* require use, maintains use counts */
+@@ -95,6 +96,11 @@ struct Range {
+ int a, b;
+ };
+
++struct Store {
++ int ip;
++ Ins *i;
++};
++
+ struct Slot {
+ int t;
+ int sz;
+@@ -102,6 +108,8 @@ struct Slot {
+ bits l;
+ Range r;
+ Slot *s;
++ Store *st;
++ int nst;
+ };
+
+ static inline int
+@@ -159,15 +167,20 @@ load(Ref r, bits x, int ip, Fn *fn, Slot *sl)
+ }
+
+ static void
+-store(Ref r, bits x, int ip, Fn *fn, Slot *sl)
++store(Ref r, bits x, int ip, Ins *i, Fn *fn, Slot *sl)
+ {
+ int64_t off;
+ Slot *s;
+
+ if (slot(&s, &off, r, fn, sl)) {
+- if (s->l)
++ if (s->l) {
+ radd(&s->r, ip);
+- s->l &= ~(x << off);
++ s->l &= ~(x << off);
++ } else {
++ vgrow(&s->st, ++s->nst);
++ s->st[s->nst-1].ip = ip;
++ s->st[s->nst-1].i = i;
++ }
+ }
+ }
+
+@@ -223,6 +236,8 @@ coalesce(Fn *fn)
+ s->sz = t->alias.u.loc.sz;
+ s->m = t->alias.u.loc.m;
+ s->s = 0;
++ s->st = vnew(0, sizeof s->st[0], PHeap);
++ s->nst = 0;
+ }
+ }
+
+@@ -264,14 +279,14 @@ coalesce(Fn *fn)
+ }
+ if (isstore(i->op)) {
+ x = BIT(storesz(i)) - 1;
+- store(arg[1], x, ip--, fn, sl);
++ store(arg[1], x, ip--, i, fn, sl);
+ }
+ if (i->op == Oblit0) {
+ assert((i+1)->op == Oblit1);
+ assert(rtype((i+1)->arg[0]) == RInt);
+ sz = abs(rsval((i+1)->arg[0]));
+ x = sz >= NBit ? (bits)-1 : BIT(sz) - 1;
+- store(arg[1], x, ip--, fn, sl);
++ store(arg[1], x, ip--, i, fn, sl);
+ load(arg[0], x, ip, fn, sl);
+ vgrow(&bl, ++nbl);
+ bl[nbl-1] = i;
+@@ -289,6 +304,16 @@ coalesce(Fn *fn)
+ }
+ free(br);
+
++ /* kill dead stores */
++ for (s=sl; s<&sl[nsl]; s++)
++ for (n=0; n<s->nst; n++)
++ if (!rin(s->r, s->st[n].ip)) {
++ i = s->st[n].i;
++ if (i->op == Oblit0)
++ *(i+1) = (Ins){.op = Onop};
++ *i = (Ins){.op = Onop};
++ }
++
+ /* kill slots with an empty live range */
+ total = 0;
+ freed = 0;
+@@ -297,6 +322,7 @@ coalesce(Fn *fn)
+ for (s=s0=sl; s<&sl[nsl]; s++) {
+ total += s->sz;
+ if (!s->r.b) {
++ vfree(s->st);
+ vgrow(&stk, ++n);
+ stk[n-1] = s->t;
+ freed += s->sz;
+@@ -381,6 +407,11 @@ coalesce(Fn *fn)
+ /* substitute fused slots */
+ for (s=sl; s<&sl[nsl]; s++) {
+ t = &fn->tmp[s->t];
++ /* the visit link is stale,
++ * reset it before the slot()
++ * calls below
++ */
++ t->visit = s-sl;
+ assert(t->ndef == 1 && t->def);
+ if (s->s == s)
+ continue;
+@@ -446,5 +477,7 @@ coalesce(Fn *fn)
+ printfn(fn, stderr);
+ }
+
++ for (s=sl; s<&sl[nsl]; s++)
++ vfree(s->st);
+ vfree(sl);
+ }
+diff --git a/ops.h b/ops.h
+index fbcc2a8..8ccf80d 100644
+--- a/ops.h
++++ b/ops.h
+@@ -121,6 +121,8 @@ O(vastart, T(m,e,e,e, x,e,e,e), 0) X(0, 0, 0) V(0)
+
+ O(copy, T(w,l,s,d, x,x,x,x), 0) X(0, 0, 1) V(0)
+
++/* Debug */
++O(dbgloc, T(w,e,e,e, w,e,e,e), 0) X(0, 0, 1) V(0)
+
+ /****************************************/
+ /* INTERNAL OPERATIONS (keep nop first) */
+diff --git a/parse.c b/parse.c
+index aed9427..738ec5b 100644
+--- a/parse.c
++++ b/parse.c
+@@ -53,6 +53,7 @@ enum Token {
+ Tdata,
+ Tsection,
+ Talign,
++ Tdbgfile,
+ Tl,
+ Tw,
+ Tsh,
+@@ -110,6 +111,7 @@ static char *kwmap[Ntok] = {
+ [Tdata] = "data",
+ [Tsection] = "section",
+ [Talign] = "align",
++ [Tdbgfile] = "dbgfile",
+ [Tsb] = "sb",
+ [Tub] = "ub",
+ [Tsh] = "sh",
+@@ -555,7 +557,7 @@ findblk(char *name)
+ for (b=blkh[h]; b; b=b->dlink)
+ if (strcmp(b->name, name) == 0)
+ return b;
+- b = blknew();
++ b = newblk();
+ b->id = nblk++;
+ strcpy(b->name, name);
+ b->dlink = blkh[h];
+@@ -587,6 +589,12 @@ parseline(PState ps)
+ if (ps == PLbl && t != Tlbl && t != Trbrace)
+ err("label or } expected");
+ switch (t) {
++ case Ttmp:
++ r = tmpref(tokval.str);
++ expect(Teq);
++ k = parsecls(&ty);
++ op = next();
++ break;
+ default:
+ if (isstore(t)) {
+ case Tblit:
+@@ -596,13 +604,11 @@ parseline(PState ps)
+ r = R;
+ k = Kw;
+ op = t;
+- goto DoOp;
++ break;
+ }
+ err("label, instruction or jump expected");
+ case Trbrace:
+ return PEnd;
+- case Ttmp:
+- break;
+ case Tlbl:
+ b = findblk(tokval.str);
+ if (curb && curb->jmp.type == Jxxx) {
+@@ -655,12 +661,24 @@ parseline(PState ps)
+ expect(Tnl);
+ closeblk();
+ return PLbl;
++ case Odbgloc:
++ op = t;
++ k = Kw;
++ r = R;
++ expect(Tint);
++ arg[0] = INT(tokval.num);
++ if (arg[0].val != tokval.num)
++ err("line number too big");
++ if (peek() == Tcomma) {
++ next();
++ expect(Tint);
++ arg[1] = INT(tokval.num);
++ if (arg[1].val != tokval.num)
++ err("column number too big");
++ } else
++ arg[1] = INT(0);
++ goto Ins;
+ }
+- r = tmpref(tokval.str);
+- expect(Teq);
+- k = parsecls(&ty);
+- op = next();
+-DoOp:
+ if (op == Tcall) {
+ arg[0] = parseref();
+ parserefl(1);
+@@ -669,8 +687,7 @@ DoOp:
+ if (k == Kc) {
+ k = Kl;
+ arg[1] = TYPE(ty);
+- } else
+- arg[1] = R;
++ }
+ if (k >= Ksb)
+ k = Kw;
+ goto Ins;
+@@ -1160,7 +1177,7 @@ parselnk(Lnk *lnk)
+ }
+
+ void
+-parse(FILE *f, char *path, void data(Dat *), void func(Fn *))
++parse(FILE *f, char *path, void dbgfile(char *), void data(Dat *), void func(Fn *))
+ {
+ Lnk lnk;
+ uint n;
+@@ -1177,6 +1194,10 @@ parse(FILE *f, char *path, void data(Dat *), void func(Fn *))
+ switch (parselnk(&lnk)) {
+ default:
+ err("top-level definition expected");
++ case Tdbgfile:
++ expect(Tstr);
++ dbgfile(tokval.str);
++ break;
+ case Tfunc:
+ func(parsefn(&lnk));
+ break;
+@@ -1203,6 +1224,8 @@ printcon(Con *c, FILE *f)
+ case CUndef:
+ break;
+ case CAddr:
++ if (c->sym.type == SThr)
++ fprintf(f, "thread ");
+ fprintf(f, "$%s", str(c->sym.id));
+ if (c->bits.i)
+ fprintf(f, "%+"PRIi64, c->bits.i);
+diff --git a/rega.c b/rega.c
+index c97d1e1..8e601c9 100644
+--- a/rega.c
++++ b/rega.c
+@@ -239,6 +239,8 @@ pmrec(enum PMStat *status, int i, int *k)
+ c = -1;
+ emit(Ocopy, pm[i].cls, pm[i].dst, pm[i].src, R);
+ break;
++ default:
++ die("unreachable");
+ }
+ status[i] = Moved;
+ return c;
+@@ -663,12 +665,12 @@ rega(Fn *fn)
+ pmgen();
+ if (curi == &insb[NIns])
+ continue;
+- b1 = blknew();
++ b1 = newblk();
+ b1->loop = (b->loop+s->loop) / 2;
+ b1->link = blist;
+ blist = b1;
+ fn->nblk++;
+- (void)!snprintf(b1->name, sizeof(b1->name), "%s_%s", b->name, s->name);
++ strf(b1->name, "%s_%s", b->name, s->name);
+ b1->nins = &insb[NIns] - curi;
+ stmov += b1->nins;
+ stblk += 1;
+diff --git a/rv64/emit.c b/rv64/emit.c
+index f9df146..a410ddf 100644
+--- a/rv64/emit.c
++++ b/rv64/emit.c
+@@ -405,6 +405,9 @@ emitins(Ins *i, Fn *fn, FILE *f)
+ if (!req(i->to, R))
+ emitf("mv %=, sp", i, fn, f);
+ break;
++ case Odbgloc:
++ emitdbgloc(i->arg[0].val, i->arg[1].val, f);
++ break;
+ }
+ }
+
+@@ -557,4 +560,5 @@ rv64_emitfn(Fn *fn, FILE *f)
+ }
+ }
+ id0 += fn->nblk;
++ elf_emitfnfin(fn->name, f);
+ }
+diff --git a/test/fpcnv.ssa b/test/fpcnv.ssa
+index aea67ac..3466ed2 100644
+--- a/test/fpcnv.ssa
++++ b/test/fpcnv.ssa
+@@ -92,7 +92,7 @@ function l $dtol(d %f) {
+ # 0xdcf5fbe299d0148aull, 0xffffffff00000000ull, -1 };
+ #
+ # double fin[] = { 0.17346516197824458, 442.0760005466251, 4342856.879893436,
+-# 98547543006.49626, 236003043787688.3, 9.499222733527032e+18,
++# 4294967295.0, 98547543006.49626, 236003043787688.3, 9.499222733527032e+18,
+ # 1.1936266170755652e+19 };
+ #
+ # int main() {
+diff --git a/test/mem2.ssa b/test/mem2.ssa
+new file mode 100644
+index 0000000..4a136b4
+--- /dev/null
++++ b/test/mem2.ssa
+@@ -0,0 +1,32 @@
++# Ember Sawady reported this bug
++# in stack-slot coalescing
++
++type :t = { w 2 }
++
++function :t $func() {
++(a)start.0
++ %temp =l alloc4 4
++ %ret =l alloc4 8
++ storew 1, %temp
++ # storew can also go here
++ %field =l add %ret, 4
++ storew 2, %ret
++ blit %temp, %field, 4
++ # removing either of these storews causes it to work
++ storew 2, %ret
++ ret %ret
++}
++
++export function w $main() {
++@start
++ %ret =:t call $func()
++ %fptr =l add %ret, 4
++ %field =w loaduw %fptr
++ %x =w ceqw %field, 1
++ jnz %x, @passed, @failed
++@failed
++ # this fails despite 1 => temp => ret + 4 => field
++ call $abort()
++@passed
++ ret 0
++}
+diff --git a/test/mem3.ssa b/test/mem3.ssa
+new file mode 100644
+index 0000000..a6cafd2
+--- /dev/null
++++ b/test/mem3.ssa
+@@ -0,0 +1,48 @@
++# Ember Sawady reported this bug
++# in stack-slot coalescing
++
++type :type.3 = align 8 { l 1, l 1 }
++type :tags.2 = { { :type.3 1 } }
++type :type.1 = align 8 { w 1, :tags.2 1 }
++type :tags.9 = { { w 1 } }
++type :type.8 = align 4 { w 1, :tags.9 1 }
++
++function :type.1 $func() {
++(a)start.0
++ %object.5 =l alloc8 24
++ %object.7 =l alloc4 8
++ %binding.21 =l alloc8 16
++ %object.23 =l alloc8 24
++(a)body.4
++ %.10 =l add %object.7, 4
++ jnz 1, @matches.13, @next.14
++(a)matches.13
++ # binding.21 gets fused with object.23
++ storel 1, %binding.21
++ %value.22 =l add %binding.21, 8
++ storel 2, %value.22
++ %.24 =l add %object.23, 8
++ # but the blit direction is not set correctly
++ blit %binding.21, %.24, 16
++ ret %object.23
++(a)next.14
++ storew 2543892678, %object.5
++ ret %object.5
++}
++
++export function w $main() {
++(a)start.27
++ %object.43 =l alloc8 24
++ %object.49 =l alloc8 24
++(a)body.28
++ %returns.34 =:type.1 call $func()
++ %value.47 =l add %returns.34, 16
++ %load.48 =l loadl %value.47
++ %.33 =w ceql %load.48, 2
++ jnz %.33, @passed.32, @failed.31
++(a)failed.31
++ call $abort()
++(a)passed.32
++ ret 0
++}
++
+diff --git a/test/tls.ssa b/test/tls.ssa
+index e990663..a17dda9 100644
+--- a/test/tls.ssa
++++ b/test/tls.ssa
+@@ -1,5 +1,8 @@
+ thread data $i = align 4 {w 42}
+-data $fmt = align 1 {b "i%d==%d\n", b 0}
++data $fmti = align 1 {b "i%d==%d\n", b 0}
++
++thread data $x = {w 1, w 2, w 3, w 4}
++data $fmtx = align 1 {b "*(x+%d)==%d\n", b 0}
+
+ export
+ function w $main() {
+@@ -10,9 +13,21 @@ function w $main() {
+ %t =l load %pthr
+ call $pthread_join(l %t, l %rval)
+ %i0 =w loadw thread $i
+- call $printf(l $fmt, ..., w 0, w %i0)
++ call $printf(l $fmti, ..., w 0, w %i0)
+ %i1 =w load %rval
+- call $printf(l $fmt, ..., w 1, w %i1)
++ call $printf(l $fmti, ..., w 1, w %i1)
++
++ %a0 =l call $xaddr()
++ %x0 =w load %a0
++ call $printf(l $fmtx, ..., w 0, w %x0)
++ %a4 =l call $xaddroff4()
++ %x4 =w load %a4
++ call $printf(l $fmtx, ..., w 4, w %x4)
++ %a8 =l call $xaddroff(l 8)
++ %x8 =w load %a8
++ call $printf(l $fmtx, ..., w 8, w %x8)
++ %xc =l call $xvalcnt(l 3)
++ call $printf(l $fmtx, ..., w 12, w %xc)
+ ret 0
+ }
+
+@@ -24,7 +39,36 @@ function l $thread(l %arg) {
+ ret %ret
+ }
+
++function l $xaddr() {
++@start
++ ret thread $x
++}
++
++function l $xaddroff4() {
++@start
++ %a =l add 4, thread $x
++ ret %a
++}
++
++function l $xaddroff(l %off) {
++@start
++ %a =l add thread $x, %off
++ ret %a
++}
++
++function w $xvalcnt(l %cnt) {
++@start
++ %o =l mul 4, %cnt
++ %a =l add thread $x, %o
++ %x =w load %a
++ ret %x
++}
++
+ # >>> output
+ # i0==42
+ # i1==402653226
++# *(x+0)==1
++# *(x+4)==2
++# *(x+8)==3
++# *(x+12)==4
+ # <<<
+diff --git a/tools/lexh.c b/tools/lexh.c
+index 5ceb4ee..1b4a7fb 100644
+--- a/tools/lexh.c
++++ b/tools/lexh.c
+@@ -23,11 +23,11 @@ char *tok[] = {
+ "ceql", "cnel", "cles", "clts", "cgts", "cges",
+ "cnes", "ceqs", "cos", "cuos", "cled", "cltd",
+ "cgtd", "cged", "cned", "ceqd", "cod", "cuod",
+- "vaarg", "vastart", "...", "env",
++ "vaarg", "vastart", "...", "env", "dbgloc",
+
+ "call", "phi", "jmp", "jnz", "ret", "hlt", "export",
+- "function", "type", "data", "section", "align", "blit",
+- "l", "w", "sh", "uh", "h", "sb", "ub", "b",
++ "function", "type", "data", "section", "align", "dbgfile",
++ "blit", "l", "w", "sh", "uh", "h", "sb", "ub", "b",
+ "d", "s", "z", "loadw", "loadl", "loads", "loadd",
+ "alloc1", "alloc2",
+
+diff --git a/tools/test.sh b/tools/test.sh
+index 4412f61..23c6663 100755
+--- a/tools/test.sh
++++ b/tools/test.sh
+@@ -1,6 +1,6 @@
+ #!/bin/sh
+
+-dir=`cd $(dirname "$0"); pwd`
++dir=`dirname "$0"`
+ bin=$dir/../qbe
+ binref=$dir/../qbe.ref
+
+@@ -12,11 +12,6 @@ asmref=$tmp.ref.s
+ exe=$tmp.exe
+ out=$tmp.out
+
+-testcc() {
+- echo "int main() { }" | $1 -x c -o /dev/null - >/dev/null 2>&1
+- return $?
+-}
+-
+ init() {
+ case "$TARGET" in
+ arm64)
+@@ -79,8 +74,8 @@ init() {
+ cc="cc -lpthread"
+ ;;
+ *)
+- cc="${CC:-cc} -lpthread"
+- testcc "$cc" || cc="${CC:-cc}"
++ cc="${CC:-cc}"
++ ccpost="-lpthread"
+ ;;
+ esac
+ TARGET=`$bin -t?`
+@@ -154,7 +149,7 @@ once() {
+ src="$asm"
+ fi
+
+- if ! $cc -g -o $exe $src
++ if ! $cc -g -o $exe $src $ccpost
+ then
+ echo "[cc fail]"
+ return 1
+@@ -201,15 +196,17 @@ fi
+ case "$1" in
+ "all")
+ fail=0
++ count=0
+ for t in $dir/../test/[!_]*.ssa
+ do
+ once $t
+ fail=`expr $fail + $?`
++ count=`expr $count + 1`
+ done
+ if test $fail -ge 1
+ then
+ echo
+- echo "$fail test(s) failed!"
++ echo "$fail of $count tests failed!"
+ else
+ echo
+ echo "All is fine!"
+diff --git a/util.c b/util.c
+index 8997f6c..362fa98 100644
+--- a/util.c
++++ b/util.c
+@@ -154,6 +154,16 @@ vgrow(void *vp, ulong len)
+ *(Vec **)vp = v1;
+ }
+
++void
++strf(char str[NString], char *s, ...)
++{
++ va_list ap;
++
++ va_start(ap, s);
++ vsnprintf(str, NString, s, ap);
++ va_end(ap);
++}
++
+ uint32_t
+ intern(char *s)
+ {
+@@ -334,7 +344,7 @@ newtmp(char *prfx, int k, Fn *fn)
+ vgrow(&fn->tmp, fn->ntmp);
+ memset(&fn->tmp[t], 0, sizeof(Tmp));
+ if (prfx)
+- sprintf(fn->tmp[t].name, "%s.%d", prfx, ++n);
++ strf(fn->tmp[t].name, "%s.%d", prfx, ++n);
+ fn->tmp[t].cls = k;
+ fn->tmp[t].slot = -1;
+ fn->tmp[t].nuse = +1;
diff --git a/qbe.spec b/qbe.spec
index 9f68754..32bfb1f 100644
--- a/qbe.spec
+++ b/qbe.spec
@@ -1,17 +1,28 @@
+%bcond snapshot 1
+
+%global srcver 1.1
+%global commit 2d683e0c53907ebca9abde876dd87af70719e42d
+%global shortcommit %(c=%{commit}; echo ${c:0:8})
+%global commitdate 20240129
+%global snapshotver %{commitdate}.%{shortcommit}
+
Name: qbe
-Version: 1.1
+Version: %{srcver}%{?with_snapshot:^%{snapshotver}}
Release: %autorelease
Summary: A pure C embeddable compiler backend
License: MIT
URL: https://c9x.me/compile/
+Source0: %{url}/release/%{name}-%{srcver}.tar.xz
-Source0: %{url}/release/%{name}-%{version}.tar.xz
+%if %{with snapshot}
+Patch: 0000-snapshot-%{srcver}-%{shortcommit}.patch
+%endif
BuildRequires: gcc
BuildRequires: make
-ExclusiveArch: x86_64 aarch64
+ExclusiveArch: x86_64 aarch64 riscv64
%description
QBE is a compiler backend that aims to provide 70% of the performance of
@@ -20,25 +31,30 @@ innovation by offering a compact user-friendly and performant backend. The size
limit constrains QBE to focus on the essential and prevents embarking on a
never-ending path of diminishing returns.
+
%prep
-%autosetup
+%autosetup -n %{name}-%{srcver} -p 1
+
%build
-make CFLAGS="$CFLAGS -std=c11 -fPIE" %{?_smp_mflags}
+%{!?_auto_set_build_flags:%{set_build_flags}}
+%make_build CFLAGS="${CFLAGS} -fPIE -std=c17 -Wall -Wextra -Wpedantic"
+
%install
%make_install PREFIX=%{_prefix}
-mkdir -p %{buildroot}/%{_docdir}/%{name}
-cp -r -p doc/ %{buildroot}/%{_docdir}/%{name}
+
%check
+%{!?_auto_set_build_flags:%{set_build_flags}}
make check
+
%files
-%doc README
%license LICENSE
+%doc README doc/*
%{_bindir}/%{name}
-%{_docdir}/%{name}/*
+
%changelog
%autochangelog
commit d90362f02ac429cf416c6a2c85d61a530c3cf54a
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jan 26 13:42:00 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit 0d544189cfd9a01ed83ef26046e02b9785efeb0e
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Mon Jan 22 09:25:57 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit 573698651cdff49280b3f541190e235170e0b3f3
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jul 21 15:47:00 2023 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
2 months, 1 week
Architecture specific change in rpms/qbe.git
by githook-noreply@fedoraproject.org
The package rpms/qbe.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/qbe.git/commit/?id=329bf1f2c180f7....
Change:
+ExclusiveArch: x86_64 aarch64 riscv64
Thanks.
Full change:
============
commit 4e053fd48fdee00bf5af199815db5f357f1cb488
Author: Timothée Floure <work(a)tfloure.ch>
Date: Fri Feb 16 21:34:53 2024 +0100
Remove QBE 1.1 archive from sources
diff --git a/sources b/sources
index 9670fd1..2836e83 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-SHA512 (qbe-1.1.tar.xz) = 1e5d7d1df3d73849dbf19dd1d84c9bba63a5041622823a5a239496032f9d82bd1640dd2bbd03e28c8a180b8e66a1fe10deb940b5d8fde996bf593f7e8d943e8b
SHA512 (qbe-1.2.tar.xz) = b3ffd172e95346b3bfae1d2aff4c22a32af8bd4443d073f6fbb711f41db01f072ca7a8108901508cd4a8366567dab46510e0438716d35548591fdf37cee49971
commit c9ef47f00122ad5d2edbde5cbba84e72939a8939
Author: Timothée Floure <work(a)tfloure.ch>
Date: Fri Feb 16 21:30:44 2024 +0100
Rebase on upstream 1.2
diff --git a/.gitignore b/.gitignore
index 6cacfc7..b206dad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
results_qbe
/qbe-1.0.tar.xz
/qbe-1.1.tar.xz
+/qbe-1.2.tar.xz
diff --git a/qbe.spec b/qbe.spec
index 32bfb1f..7997853 100644
--- a/qbe.spec
+++ b/qbe.spec
@@ -1,13 +1,6 @@
-%bcond snapshot 1
-
-%global srcver 1.1
-%global commit 2d683e0c53907ebca9abde876dd87af70719e42d
-%global shortcommit %(c=%{commit}; echo ${c:0:8})
-%global commitdate 20240129
-%global snapshotver %{commitdate}.%{shortcommit}
Name: qbe
-Version: %{srcver}%{?with_snapshot:^%{snapshotver}}
+Version: 1.2
Release: %autorelease
Summary: A pure C embeddable compiler backend
@@ -15,10 +8,6 @@ License: MIT
URL: https://c9x.me/compile/
Source0: %{url}/release/%{name}-%{srcver}.tar.xz
-%if %{with snapshot}
-Patch: 0000-snapshot-%{srcver}-%{shortcommit}.patch
-%endif
-
BuildRequires: gcc
BuildRequires: make
diff --git a/sources b/sources
index fbc793b..9670fd1 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
SHA512 (qbe-1.1.tar.xz) = 1e5d7d1df3d73849dbf19dd1d84c9bba63a5041622823a5a239496032f9d82bd1640dd2bbd03e28c8a180b8e66a1fe10deb940b5d8fde996bf593f7e8d943e8b
+SHA512 (qbe-1.2.tar.xz) = b3ffd172e95346b3bfae1d2aff4c22a32af8bd4443d073f6fbb711f41db01f072ca7a8108901508cd4a8366567dab46510e0438716d35548591fdf37cee49971
commit 7a07d1baef91c3927440ec33102a37f09fe22ca4
Merge: d90362f 329bf1f
Author: Timothée Floure <timothee.floure(a)posteo.net>
Date: Sun Feb 4 17:53:43 2024 +0000
Merge #1 `Rebase to upstream commit 2d683e0c`
commit 329bf1f2c180f737c8ac3599e2a9c1673f21bf46
Author: Mike Rochefort <mroche(a)omenos.dev>
Date: Sat Nov 11 09:40:50 2023 -0500
Rebase to upstream commit 2d683e0c
diff --git a/.gitignore b/.gitignore
index 02d2c10..6cacfc7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
+*.rpm
+results_qbe
/qbe-1.0.tar.xz
/qbe-1.1.tar.xz
diff --git a/0000-snapshot-1.1-2d683e0c.patch b/0000-snapshot-1.1-2d683e0c.patch
new file mode 100644
index 0000000..49516a4
--- /dev/null
+++ b/0000-snapshot-1.1-2d683e0c.patch
@@ -0,0 +1,1160 @@
+diff --git a/Makefile b/Makefile
+index 5fadadc..f5e8a76 100644
+--- a/Makefile
++++ b/Makefile
+@@ -13,7 +13,8 @@ OBJ = $(COMMOBJ) $(AMD64OBJ) $(ARM64OBJ) $(RV64OBJ)
+
+ SRCALL = $(OBJ:.o=.c)
+
+-CFLAGS = $(CPPFLAGS) -Wall -Wextra -std=c99 -g -Wpedantic
++CC = cc
++CFLAGS = -std=c99 -g -Wall -Wextra -Wpedantic
+
+ qbe: $(OBJ)
+ $(CC) $(LDFLAGS) $(OBJ) -o $@
+@@ -41,7 +42,7 @@ config.h:
+ ;; \
+ *) \
+ case `uname -m` in \
+- *aarch64*) \
++ *aarch64*|*arm64*) \
+ echo "#define Deftgt T_arm64"; \
+ ;; \
+ *riscv64*) \
+diff --git a/all.h b/all.h
+index 7eba443..e421b9c 100644
+--- a/all.h
++++ b/all.h
+@@ -33,7 +33,7 @@ typedef struct Lnk Lnk;
+ typedef struct Target Target;
+
+ enum {
+- NString = 72,
++ NString = 80,
+ NIns = 1 << 20,
+ NAlign = 3,
+ NField = 32,
+@@ -115,7 +115,7 @@ static inline int rtype(Ref r)
+
+ static inline int rsval(Ref r)
+ {
+- return ((int32_t)r.val << 3) >> 3;
++ return (int32_t)((int64_t)r.val << 3) >> 3;
+ }
+
+ enum CmpI {
+@@ -458,6 +458,7 @@ void freeall(void);
+ void *vnew(ulong, size_t, Pool);
+ void vfree(void *);
+ void vgrow(void *, ulong);
++void strf(char[NString], char *, ...);
+ uint32_t intern(char *);
+ char *str(uint32_t);
+ int argcls(Ins *, int);
+@@ -501,7 +502,7 @@ bshas(BSet *bs, uint elt)
+
+ /* parse.c */
+ extern Op optab[NOp];
+-void parse(FILE *, char *, void (Dat *), void (Fn *));
++void parse(FILE *, char *, void (char *), void (Dat *), void (Fn *));
+ void printfn(Fn *, FILE *);
+ void printref(Ref, Fn *, FILE *);
+ void err(char *, ...) __attribute__((noreturn));
+@@ -510,7 +511,7 @@ void err(char *, ...) __attribute__((noreturn));
+ void elimsb(Fn *);
+
+ /* cfg.c */
+-Blk *blknew(void);
++Blk *newblk(void);
+ void edgedel(Blk *, Blk **);
+ void fillpreds(Fn *);
+ void fillrpo(Fn *);
+@@ -567,6 +568,8 @@ void rega(Fn *);
+ /* emit.c */
+ void emitfnlnk(char *, Lnk *, FILE *);
+ void emitdat(Dat *, FILE *);
++void emitdbgfile(char *, FILE *);
++void emitdbgloc(uint, uint, FILE *);
+ int stashbits(void *, int);
+ void elf_emitfnfin(char *, FILE *);
+ void elf_emitfin(FILE *);
+diff --git a/amd64/emit.c b/amd64/emit.c
+index 9b8bb5d..51d1a5c 100644
+--- a/amd64/emit.c
++++ b/amd64/emit.c
+@@ -372,6 +372,8 @@ emitins(Ins i, Fn *fn, FILE *f)
+ int64_t val;
+ int o, t0;
+ Ins ineg;
++ Con *con;
++ char *sym;
+
+ switch (i.op) {
+ default:
+@@ -490,6 +492,26 @@ emitins(Ins i, Fn *fn, FILE *f)
+ * should use movabsq when reading movq */
+ emitf("mov%k %0, %=", &i, fn, f);
+ break;
++ case Oaddr:
++ if (!T.apple
++ && rtype(i.arg[0]) == RCon
++ && fn->con[i.arg[0].val].sym.type == SThr) {
++ /* derive the symbol address from the TCB
++ * address at offset 0 of %fs */
++ assert(isreg(i.to));
++ con = &fn->con[i.arg[0].val];
++ sym = str(con->sym.id);
++ emitf("movq %%fs:0, %L=", &i, fn, f);
++ fprintf(f, "\tleaq %s%s@tpoff",
++ sym[0] == '"' ? "" : T.assym, sym);
++ if (con->bits.i)
++ fprintf(f, "%+"PRId64, con->bits.i);
++ fprintf(f, "(%%%s), %%%s\n",
++ regtoa(i.to.val, SLong),
++ regtoa(i.to.val, SLong));
++ break;
++ }
++ goto Table;
+ case Ocall:
+ /* calls simply have a weird syntax in AT&T
+ * assembly... */
+@@ -525,6 +547,9 @@ emitins(Ins i, Fn *fn, FILE *f)
+ emitcopy(i.arg[0], i.arg[1], i.cls, fn, f);
+ emitcopy(i.arg[1], TMP(XMM0+15), i.cls, fn, f);
+ break;
++ case Odbgloc:
++ emitdbgloc(i.arg[0].val, i.arg[1].val, f);
++ break;
+ }
+ }
+
+diff --git a/amd64/isel.c b/amd64/isel.c
+index 3e3fe62..e29c8bf 100644
+--- a/amd64/isel.c
++++ b/amd64/isel.c
+@@ -58,6 +58,21 @@ rslot(Ref r, Fn *fn)
+ return fn->tmp[r.val].slot;
+ }
+
++static int
++hascon(Ref r, Con **pc, Fn *fn)
++{
++ switch (rtype(r)) {
++ case RCon:
++ *pc = &fn->con[r.val];
++ return 1;
++ case RMem:
++ *pc = &fn->mem[r.val].offset;
++ return 1;
++ default:
++ return 0;
++ }
++}
++
+ static void
+ fixarg(Ref *r, int k, Ins *i, Fn *fn)
+ {
+@@ -100,6 +115,34 @@ fixarg(Ref *r, int k, Ins *i, Fn *fn)
+ r1 = newtmp("isel", Kl, fn);
+ emit(Oaddr, Kl, r1, SLOT(s), R);
+ }
++ else if (T.apple && hascon(r0, &c, fn)
++ && c->type == CAddr && c->sym.type == SThr) {
++ r1 = newtmp("isel", Kl, fn);
++ if (c->bits.i) {
++ r2 = newtmp("isel", Kl, fn);
++ cc = (Con){.type = CBits};
++ cc.bits.i = c->bits.i;
++ r3 = newcon(&cc, fn);
++ emit(Oadd, Kl, r1, r2, r3);
++ } else
++ r2 = r1;
++ emit(Ocopy, Kl, r2, TMP(RAX), R);
++ r2 = newtmp("isel", Kl, fn);
++ r3 = newtmp("isel", Kl, fn);
++ emit(Ocall, 0, R, r3, CALL(17));
++ emit(Ocopy, Kl, TMP(RDI), r2, R);
++ emit(Oload, Kl, r3, r2, R);
++ cc = *c;
++ cc.bits.i = 0;
++ r3 = newcon(&cc, fn);
++ emit(Oload, Kl, r2, r3, R);
++ if (rtype(r0) == RMem) {
++ m = &fn->mem[r0.val];
++ m->offset.type = CUndef;
++ m->base = r1;
++ r1 = r0;
++ }
++ }
+ else if (!(isstore(op) && r == &i->arg[1])
+ && !isload(op) && op != Ocall && rtype(r0) == RCon
+ && fn->con[r0.val].type == CAddr) {
+@@ -122,28 +165,6 @@ fixarg(Ref *r, int k, Ins *i, Fn *fn)
+ m->offset.type = CUndef;
+ m->base = r0;
+ }
+- } else if (T.apple && rtype(r0) == RCon
+- && (c = &fn->con[r0.val])->type == CAddr
+- && c->sym.type == SThr) {
+- r1 = newtmp("isel", Kl, fn);
+- if (c->bits.i) {
+- r2 = newtmp("isel", Kl, fn);
+- cc = (Con){.type = CBits};
+- cc.bits.i = c->bits.i;
+- r3 = newcon(&cc, fn);
+- emit(Oadd, Kl, r1, r2, r3);
+- } else
+- r2 = r1;
+- emit(Ocopy, Kl, r2, TMP(RAX), R);
+- r2 = newtmp("isel", Kl, fn);
+- r3 = newtmp("isel", Kl, fn);
+- emit(Ocall, 0, R, r3, CALL(17));
+- emit(Ocopy, Kl, TMP(RDI), r2, R);
+- emit(Oload, Kl, r3, r2, R);
+- cc = *c;
+- cc.bits.i = 0;
+- r3 = newcon(&cc, fn);
+- emit(Oload, Kl, r2, r3, R);
+ }
+ *r = r1;
+ }
+@@ -295,15 +316,15 @@ sel(Ins i, ANum *an, Fn *fn)
+ break;
+ case Oultof:
+ /* %mask =l and %arg.0, 1
+- %isbig =l shr %arg.0, 63
+- %divided =l shr %arg.0, %isbig
+- %or =l or %mask, %divided
+- %float =d sltof %or
+- %cast =l cast %float
+- %addend =l shl %isbig, 52
+- %sum =l add %cast, %addend
+- %result =d cast %sum
+- */
++ * %isbig =l shr %arg.0, 63
++ * %divided =l shr %arg.0, %isbig
++ * %or =l or %mask, %divided
++ * %float =d sltof %or
++ * %cast =l cast %float
++ * %addend =l shl %isbig, 52
++ * %sum =l add %cast, %addend
++ * %result =d cast %sum
++ */
+ r0 = newtmp("utof", k, fn);
+ if (k == Ks)
+ kc = Kw, sh = 23;
+@@ -336,8 +357,25 @@ sel(Ins i, ANum *an, Fn *fn)
+ kc = Kd;
+ tmp[4] = getcon(0xc3e0000000000000, fn);
+ Oftoui:
+- if (k == Kw)
++ if (k == Kw) {
++ r0 = newtmp("ftou", Kl, fn);
++ emit(Ocopy, Kw, i.to, r0, R);
++ i.cls = Kl;
++ i.to = r0;
+ goto Emit;
++ }
++ /* %try0 =l {s,d}tosi %fp
++ * %mask =l sar %try0, 63
++ *
++ * mask is all ones if the first
++ * try was oob, all zeroes o.w.
++ *
++ * %fps ={s,d} sub %fp, (1<<63)
++ * %try1 =l {s,d}tosi %fps
++ *
++ * %tmp =l and %mask, %try1
++ * %res =l or %tmp, %try0
++ */
+ r0 = newtmp("ftou", kc, fn);
+ for (j=0; j<4; j++)
+ tmp[j] = newtmp("ftou", Kl, fn);
+@@ -371,6 +409,7 @@ sel(Ins i, ANum *an, Fn *fn)
+ case_Oload:
+ seladdr(&i.arg[0], an, fn);
+ goto Emit;
++ case Odbgloc:
+ case Ocall:
+ case Osalloc:
+ case Ocopy:
+diff --git a/amd64/sysv.c b/amd64/sysv.c
+index 04dfd83..5b559c1 100644
+--- a/amd64/sysv.c
++++ b/amd64/sysv.c
+@@ -507,12 +507,12 @@ split(Fn *fn, Blk *b)
+ Blk *bn;
+
+ ++fn->nblk;
+- bn = blknew();
++ bn = newblk();
+ bn->nins = &insb[NIns] - curi;
+ idup(&bn->ins, curi, bn->nins);
+ curi = &insb[NIns];
+ bn->visit = ++b->visit;
+- (void)!snprintf(bn->name, NString, "%s.%d", b->name, b->visit);
++ strf(bn->name, "%s.%d", b->name, b->visit);
+ bn->loop = b->loop;
+ bn->link = b->link;
+ b->link = bn;
+diff --git a/arm64/abi.c b/arm64/abi.c
+index 8ba4ffc..abc02d9 100644
+--- a/arm64/abi.c
++++ b/arm64/abi.c
+@@ -446,6 +446,7 @@ selcall(Fn *fn, Ins *i0, Ins *i1, Insl **ilp)
+ case 2: op = Ostoreh; break;
+ case 4:
+ case 8: op = store[*c->cls]; break;
++ default: die("unreachable");
+ }
+ emit(op, 0, R, i->arg[0], r);
+ } else {
+@@ -541,12 +542,12 @@ split(Fn *fn, Blk *b)
+ Blk *bn;
+
+ ++fn->nblk;
+- bn = blknew();
++ bn = newblk();
+ bn->nins = &insb[NIns] - curi;
+ idup(&bn->ins, curi, bn->nins);
+ curi = &insb[NIns];
+ bn->visit = ++b->visit;
+- (void)!snprintf(bn->name, NString, "%s.%d", b->name, b->visit);
++ strf(bn->name, "%s.%d", b->name, b->visit);
+ bn->loop = b->loop;
+ bn->link = b->link;
+ b->link = bn;
+@@ -799,8 +800,8 @@ arm64_abi(Fn *fn)
+ }
+
+ /* abi0 for apple target; introduces
+- * necessery sign extension for arg
+- * passing & returns
++ * necessary sign extensions in calls
++ * and returns
+ */
+ void
+ apple_extsb(Fn *fn)
+@@ -818,6 +819,7 @@ apple_extsb(Fn *fn)
+ op = Oextsb + (j - Jretsb);
+ emit(op, Kw, r, b->jmp.arg, R);
+ b->jmp.arg = r;
++ b->jmp.type = Jretw;
+ }
+ for (i=&b->ins[b->nins]; i>b->ins;) {
+ emiti(*--i);
+@@ -844,7 +846,7 @@ apple_extsb(Fn *fn)
+ }
+
+ if (debug['A']) {
+- fprintf(stderr, "\n> After apple_extsb:\n");
++ fprintf(stderr, "\n> After Apple pre-ABI:\n");
+ printfn(fn, stderr);
+ }
+ }
+diff --git a/arm64/emit.c b/arm64/emit.c
+index 5113c66..990d839 100644
+--- a/arm64/emit.c
++++ b/arm64/emit.c
+@@ -446,6 +446,9 @@ emitins(Ins *i, E *e)
+ if (!req(i->to, R))
+ emitf("mov %=, sp", i, e);
+ break;
++ case Odbgloc:
++ emitdbgloc(i->arg[0].val, i->arg[1].val, e->f);
++ break;
+ }
+ }
+
+@@ -636,4 +639,6 @@ arm64_emitfn(Fn *fn, FILE *out)
+ }
+ }
+ id0 += e->fn->nblk;
++ if (!T.apple)
++ elf_emitfnfin(fn->name, out);
+ }
+diff --git a/cfg.c b/cfg.c
+index d12f6c8..406c307 100644
+--- a/cfg.c
++++ b/cfg.c
+@@ -1,7 +1,7 @@
+ #include "all.h"
+
+ Blk *
+-blknew()
++newblk()
+ {
+ static Blk z;
+ Blk *b;
+@@ -299,7 +299,7 @@ simpljmp(Fn *fn)
+ Blk **uf; /* union-find */
+ Blk **p, *b, *ret;
+
+- ret = blknew();
++ ret = newblk();
+ ret->id = fn->nblk++;
+ ret->jmp.type = Jret0;
+ uf = emalloc(fn->nblk * sizeof uf[0]);
+diff --git a/doc/il.txt b/doc/il.txt
+index cc3e021..2d488dc 100644
+--- a/doc/il.txt
++++ b/doc/il.txt
+@@ -15,7 +15,7 @@
+ 2. <@ Types >
+ * <@ Simple Types >
+ * <@ Subtyping >
+- 3. <@ Constants >
++ 3. <@ Constants and Vals >
+ 4. <@ Linkage >
+ 5. <@ Definitions >
+ * <@ Aggregate Types >
+@@ -168,8 +168,8 @@ The rationale is that a word can be signed or unsigned, so
+ extending it to a long could be done in two ways, either
+ by zero-extension, or by sign-extension.
+
+-- 3. Constants
+---------------
++- 3. Constants and Vals
++-----------------------
+
+ `bnf
+ CONST :=
+@@ -182,6 +182,10 @@ by zero-extension, or by sign-extension.
+ CONST
+ | 'thread' $IDENT # Thread-local symbol
+
++ VAL :=
++ DYNCONST
++ | %IDENT
++
+ Constants come in two kinds: compile-time constants and
+ dynamic constants. Dynamic constants include compile-time
+ constants and other symbol variants that are only known at
+@@ -221,6 +225,10 @@ When the `thread` keyword prefixes a symbol name, the
+ symbol's numeric value is resolved at runtime in the
+ thread-local storage.
+
++Vals are used as arguments in regular, phi, and jump
++instructions within function definitions. They are
++either constants or function-scope temporaries.
++
+ - 4. Linkage
+ ------------
+
+@@ -250,7 +258,7 @@ thread starts, the supporting platform runtime is in
+ charge of making a new copy of the object for the
+ fresh thread. Objects in thread-local storage must
+ be accessed using the `thread $IDENT` syntax, as
+-specified in the <@ Constants > section.
++specified in the <@ Constants and Vals > section.
+
+ A `section` flag can be specified to tell the linker to
+ put the defined item in a certain section. The use of
+@@ -293,6 +301,15 @@ using linkage flags.
+ '{'
+ ( SUBTY [NUMBER] ),
+ '}'
++ | # Union type
++ 'type' :IDENT '=' ['align' NUMBER]
++ '{'
++ (
++ '{'
++ ( SUBTY [NUMBER] ),
++ '}'
++ )+
++ '}'
+ | # Opaque type
+ 'type' :IDENT '=' 'align' NUMBER '{' NUMBER '}'
+
+@@ -318,6 +335,15 @@ explicitly specified by the programmer.
+
+ type :cryptovector = align 16 { w 4 }
+
++Union types allow the same chunk of memory to be used with
++different layouts. They are defined by enclosing multiple
++regular aggregate type bodies in a pair of curly braces.
++Size and alignment of union types are set to the maximum size
++and alignment of each variation or, in the case of alignment,
++can be explicitly specified.
++
++ type :un9 = { { b } { s } }
++
+ Opaque types are used when the inner structure of an
+ aggregate cannot be specified; the alignment for opaque
+ types is mandatory. They are defined simply by enclosing
+diff --git a/emit.c b/emit.c
+index 017c461..490628e 100644
+--- a/emit.c
++++ b/emit.c
+@@ -207,3 +207,38 @@ macho_emitfin(FILE *f)
+
+ emitfin(f, sec);
+ }
++
++static uint32_t *file;
++static uint nfile;
++static uint curfile;
++
++void
++emitdbgfile(char *fn, FILE *f)
++{
++ uint32_t id;
++ uint n;
++
++ id = intern(fn);
++ for (n=0; n<nfile; n++)
++ if (file[n] == id) {
++ /* gas requires positive
++ * file numbers */
++ curfile = n + 1;
++ return;
++ }
++ if (!file)
++ file = vnew(0, sizeof *file, PHeap);
++ vgrow(&file, ++nfile);
++ file[nfile-1] = id;
++ curfile = nfile;
++ fprintf(f, ".file %u %s\n", curfile, fn);
++}
++
++void
++emitdbgloc(uint line, uint col, FILE *f)
++{
++ if (col != 0)
++ fprintf(f, "\t.loc %u %u %u\n", curfile, line, col);
++ else
++ fprintf(f, "\t.loc %u %u\n", curfile, line);
++}
+diff --git a/main.c b/main.c
+index abfe03e..5ecb4d0 100644
+--- a/main.c
++++ b/main.c
+@@ -107,6 +107,12 @@ func(Fn *fn)
+ freeall();
+ }
+
++static void
++dbgfile(char *fn)
++{
++ emitdbgfile(fn, outf);
++}
++
+ int
+ main(int ac, char *av[])
+ {
+@@ -181,7 +187,7 @@ main(int ac, char *av[])
+ exit(1);
+ }
+ }
+- parse(inf, f, data, func);
++ parse(inf, f, dbgfile, data, func);
+ fclose(inf);
+ } while (++optind < ac);
+
+diff --git a/mem.c b/mem.c
+index 1db632f..944cd2f 100644
+--- a/mem.c
++++ b/mem.c
+@@ -1,6 +1,7 @@
+ #include "all.h"
+
+ typedef struct Range Range;
++typedef struct Store Store;
+ typedef struct Slot Slot;
+
+ /* require use, maintains use counts */
+@@ -95,6 +96,11 @@ struct Range {
+ int a, b;
+ };
+
++struct Store {
++ int ip;
++ Ins *i;
++};
++
+ struct Slot {
+ int t;
+ int sz;
+@@ -102,6 +108,8 @@ struct Slot {
+ bits l;
+ Range r;
+ Slot *s;
++ Store *st;
++ int nst;
+ };
+
+ static inline int
+@@ -159,15 +167,20 @@ load(Ref r, bits x, int ip, Fn *fn, Slot *sl)
+ }
+
+ static void
+-store(Ref r, bits x, int ip, Fn *fn, Slot *sl)
++store(Ref r, bits x, int ip, Ins *i, Fn *fn, Slot *sl)
+ {
+ int64_t off;
+ Slot *s;
+
+ if (slot(&s, &off, r, fn, sl)) {
+- if (s->l)
++ if (s->l) {
+ radd(&s->r, ip);
+- s->l &= ~(x << off);
++ s->l &= ~(x << off);
++ } else {
++ vgrow(&s->st, ++s->nst);
++ s->st[s->nst-1].ip = ip;
++ s->st[s->nst-1].i = i;
++ }
+ }
+ }
+
+@@ -223,6 +236,8 @@ coalesce(Fn *fn)
+ s->sz = t->alias.u.loc.sz;
+ s->m = t->alias.u.loc.m;
+ s->s = 0;
++ s->st = vnew(0, sizeof s->st[0], PHeap);
++ s->nst = 0;
+ }
+ }
+
+@@ -264,14 +279,14 @@ coalesce(Fn *fn)
+ }
+ if (isstore(i->op)) {
+ x = BIT(storesz(i)) - 1;
+- store(arg[1], x, ip--, fn, sl);
++ store(arg[1], x, ip--, i, fn, sl);
+ }
+ if (i->op == Oblit0) {
+ assert((i+1)->op == Oblit1);
+ assert(rtype((i+1)->arg[0]) == RInt);
+ sz = abs(rsval((i+1)->arg[0]));
+ x = sz >= NBit ? (bits)-1 : BIT(sz) - 1;
+- store(arg[1], x, ip--, fn, sl);
++ store(arg[1], x, ip--, i, fn, sl);
+ load(arg[0], x, ip, fn, sl);
+ vgrow(&bl, ++nbl);
+ bl[nbl-1] = i;
+@@ -289,6 +304,16 @@ coalesce(Fn *fn)
+ }
+ free(br);
+
++ /* kill dead stores */
++ for (s=sl; s<&sl[nsl]; s++)
++ for (n=0; n<s->nst; n++)
++ if (!rin(s->r, s->st[n].ip)) {
++ i = s->st[n].i;
++ if (i->op == Oblit0)
++ *(i+1) = (Ins){.op = Onop};
++ *i = (Ins){.op = Onop};
++ }
++
+ /* kill slots with an empty live range */
+ total = 0;
+ freed = 0;
+@@ -297,6 +322,7 @@ coalesce(Fn *fn)
+ for (s=s0=sl; s<&sl[nsl]; s++) {
+ total += s->sz;
+ if (!s->r.b) {
++ vfree(s->st);
+ vgrow(&stk, ++n);
+ stk[n-1] = s->t;
+ freed += s->sz;
+@@ -381,6 +407,11 @@ coalesce(Fn *fn)
+ /* substitute fused slots */
+ for (s=sl; s<&sl[nsl]; s++) {
+ t = &fn->tmp[s->t];
++ /* the visit link is stale,
++ * reset it before the slot()
++ * calls below
++ */
++ t->visit = s-sl;
+ assert(t->ndef == 1 && t->def);
+ if (s->s == s)
+ continue;
+@@ -446,5 +477,7 @@ coalesce(Fn *fn)
+ printfn(fn, stderr);
+ }
+
++ for (s=sl; s<&sl[nsl]; s++)
++ vfree(s->st);
+ vfree(sl);
+ }
+diff --git a/ops.h b/ops.h
+index fbcc2a8..8ccf80d 100644
+--- a/ops.h
++++ b/ops.h
+@@ -121,6 +121,8 @@ O(vastart, T(m,e,e,e, x,e,e,e), 0) X(0, 0, 0) V(0)
+
+ O(copy, T(w,l,s,d, x,x,x,x), 0) X(0, 0, 1) V(0)
+
++/* Debug */
++O(dbgloc, T(w,e,e,e, w,e,e,e), 0) X(0, 0, 1) V(0)
+
+ /****************************************/
+ /* INTERNAL OPERATIONS (keep nop first) */
+diff --git a/parse.c b/parse.c
+index aed9427..738ec5b 100644
+--- a/parse.c
++++ b/parse.c
+@@ -53,6 +53,7 @@ enum Token {
+ Tdata,
+ Tsection,
+ Talign,
++ Tdbgfile,
+ Tl,
+ Tw,
+ Tsh,
+@@ -110,6 +111,7 @@ static char *kwmap[Ntok] = {
+ [Tdata] = "data",
+ [Tsection] = "section",
+ [Talign] = "align",
++ [Tdbgfile] = "dbgfile",
+ [Tsb] = "sb",
+ [Tub] = "ub",
+ [Tsh] = "sh",
+@@ -555,7 +557,7 @@ findblk(char *name)
+ for (b=blkh[h]; b; b=b->dlink)
+ if (strcmp(b->name, name) == 0)
+ return b;
+- b = blknew();
++ b = newblk();
+ b->id = nblk++;
+ strcpy(b->name, name);
+ b->dlink = blkh[h];
+@@ -587,6 +589,12 @@ parseline(PState ps)
+ if (ps == PLbl && t != Tlbl && t != Trbrace)
+ err("label or } expected");
+ switch (t) {
++ case Ttmp:
++ r = tmpref(tokval.str);
++ expect(Teq);
++ k = parsecls(&ty);
++ op = next();
++ break;
+ default:
+ if (isstore(t)) {
+ case Tblit:
+@@ -596,13 +604,11 @@ parseline(PState ps)
+ r = R;
+ k = Kw;
+ op = t;
+- goto DoOp;
++ break;
+ }
+ err("label, instruction or jump expected");
+ case Trbrace:
+ return PEnd;
+- case Ttmp:
+- break;
+ case Tlbl:
+ b = findblk(tokval.str);
+ if (curb && curb->jmp.type == Jxxx) {
+@@ -655,12 +661,24 @@ parseline(PState ps)
+ expect(Tnl);
+ closeblk();
+ return PLbl;
++ case Odbgloc:
++ op = t;
++ k = Kw;
++ r = R;
++ expect(Tint);
++ arg[0] = INT(tokval.num);
++ if (arg[0].val != tokval.num)
++ err("line number too big");
++ if (peek() == Tcomma) {
++ next();
++ expect(Tint);
++ arg[1] = INT(tokval.num);
++ if (arg[1].val != tokval.num)
++ err("column number too big");
++ } else
++ arg[1] = INT(0);
++ goto Ins;
+ }
+- r = tmpref(tokval.str);
+- expect(Teq);
+- k = parsecls(&ty);
+- op = next();
+-DoOp:
+ if (op == Tcall) {
+ arg[0] = parseref();
+ parserefl(1);
+@@ -669,8 +687,7 @@ DoOp:
+ if (k == Kc) {
+ k = Kl;
+ arg[1] = TYPE(ty);
+- } else
+- arg[1] = R;
++ }
+ if (k >= Ksb)
+ k = Kw;
+ goto Ins;
+@@ -1160,7 +1177,7 @@ parselnk(Lnk *lnk)
+ }
+
+ void
+-parse(FILE *f, char *path, void data(Dat *), void func(Fn *))
++parse(FILE *f, char *path, void dbgfile(char *), void data(Dat *), void func(Fn *))
+ {
+ Lnk lnk;
+ uint n;
+@@ -1177,6 +1194,10 @@ parse(FILE *f, char *path, void data(Dat *), void func(Fn *))
+ switch (parselnk(&lnk)) {
+ default:
+ err("top-level definition expected");
++ case Tdbgfile:
++ expect(Tstr);
++ dbgfile(tokval.str);
++ break;
+ case Tfunc:
+ func(parsefn(&lnk));
+ break;
+@@ -1203,6 +1224,8 @@ printcon(Con *c, FILE *f)
+ case CUndef:
+ break;
+ case CAddr:
++ if (c->sym.type == SThr)
++ fprintf(f, "thread ");
+ fprintf(f, "$%s", str(c->sym.id));
+ if (c->bits.i)
+ fprintf(f, "%+"PRIi64, c->bits.i);
+diff --git a/rega.c b/rega.c
+index c97d1e1..8e601c9 100644
+--- a/rega.c
++++ b/rega.c
+@@ -239,6 +239,8 @@ pmrec(enum PMStat *status, int i, int *k)
+ c = -1;
+ emit(Ocopy, pm[i].cls, pm[i].dst, pm[i].src, R);
+ break;
++ default:
++ die("unreachable");
+ }
+ status[i] = Moved;
+ return c;
+@@ -663,12 +665,12 @@ rega(Fn *fn)
+ pmgen();
+ if (curi == &insb[NIns])
+ continue;
+- b1 = blknew();
++ b1 = newblk();
+ b1->loop = (b->loop+s->loop) / 2;
+ b1->link = blist;
+ blist = b1;
+ fn->nblk++;
+- (void)!snprintf(b1->name, sizeof(b1->name), "%s_%s", b->name, s->name);
++ strf(b1->name, "%s_%s", b->name, s->name);
+ b1->nins = &insb[NIns] - curi;
+ stmov += b1->nins;
+ stblk += 1;
+diff --git a/rv64/emit.c b/rv64/emit.c
+index f9df146..a410ddf 100644
+--- a/rv64/emit.c
++++ b/rv64/emit.c
+@@ -405,6 +405,9 @@ emitins(Ins *i, Fn *fn, FILE *f)
+ if (!req(i->to, R))
+ emitf("mv %=, sp", i, fn, f);
+ break;
++ case Odbgloc:
++ emitdbgloc(i->arg[0].val, i->arg[1].val, f);
++ break;
+ }
+ }
+
+@@ -557,4 +560,5 @@ rv64_emitfn(Fn *fn, FILE *f)
+ }
+ }
+ id0 += fn->nblk;
++ elf_emitfnfin(fn->name, f);
+ }
+diff --git a/test/fpcnv.ssa b/test/fpcnv.ssa
+index aea67ac..3466ed2 100644
+--- a/test/fpcnv.ssa
++++ b/test/fpcnv.ssa
+@@ -92,7 +92,7 @@ function l $dtol(d %f) {
+ # 0xdcf5fbe299d0148aull, 0xffffffff00000000ull, -1 };
+ #
+ # double fin[] = { 0.17346516197824458, 442.0760005466251, 4342856.879893436,
+-# 98547543006.49626, 236003043787688.3, 9.499222733527032e+18,
++# 4294967295.0, 98547543006.49626, 236003043787688.3, 9.499222733527032e+18,
+ # 1.1936266170755652e+19 };
+ #
+ # int main() {
+diff --git a/test/mem2.ssa b/test/mem2.ssa
+new file mode 100644
+index 0000000..4a136b4
+--- /dev/null
++++ b/test/mem2.ssa
+@@ -0,0 +1,32 @@
++# Ember Sawady reported this bug
++# in stack-slot coalescing
++
++type :t = { w 2 }
++
++function :t $func() {
++(a)start.0
++ %temp =l alloc4 4
++ %ret =l alloc4 8
++ storew 1, %temp
++ # storew can also go here
++ %field =l add %ret, 4
++ storew 2, %ret
++ blit %temp, %field, 4
++ # removing either of these storews causes it to work
++ storew 2, %ret
++ ret %ret
++}
++
++export function w $main() {
++@start
++ %ret =:t call $func()
++ %fptr =l add %ret, 4
++ %field =w loaduw %fptr
++ %x =w ceqw %field, 1
++ jnz %x, @passed, @failed
++@failed
++ # this fails despite 1 => temp => ret + 4 => field
++ call $abort()
++@passed
++ ret 0
++}
+diff --git a/test/mem3.ssa b/test/mem3.ssa
+new file mode 100644
+index 0000000..a6cafd2
+--- /dev/null
++++ b/test/mem3.ssa
+@@ -0,0 +1,48 @@
++# Ember Sawady reported this bug
++# in stack-slot coalescing
++
++type :type.3 = align 8 { l 1, l 1 }
++type :tags.2 = { { :type.3 1 } }
++type :type.1 = align 8 { w 1, :tags.2 1 }
++type :tags.9 = { { w 1 } }
++type :type.8 = align 4 { w 1, :tags.9 1 }
++
++function :type.1 $func() {
++(a)start.0
++ %object.5 =l alloc8 24
++ %object.7 =l alloc4 8
++ %binding.21 =l alloc8 16
++ %object.23 =l alloc8 24
++(a)body.4
++ %.10 =l add %object.7, 4
++ jnz 1, @matches.13, @next.14
++(a)matches.13
++ # binding.21 gets fused with object.23
++ storel 1, %binding.21
++ %value.22 =l add %binding.21, 8
++ storel 2, %value.22
++ %.24 =l add %object.23, 8
++ # but the blit direction is not set correctly
++ blit %binding.21, %.24, 16
++ ret %object.23
++(a)next.14
++ storew 2543892678, %object.5
++ ret %object.5
++}
++
++export function w $main() {
++(a)start.27
++ %object.43 =l alloc8 24
++ %object.49 =l alloc8 24
++(a)body.28
++ %returns.34 =:type.1 call $func()
++ %value.47 =l add %returns.34, 16
++ %load.48 =l loadl %value.47
++ %.33 =w ceql %load.48, 2
++ jnz %.33, @passed.32, @failed.31
++(a)failed.31
++ call $abort()
++(a)passed.32
++ ret 0
++}
++
+diff --git a/test/tls.ssa b/test/tls.ssa
+index e990663..a17dda9 100644
+--- a/test/tls.ssa
++++ b/test/tls.ssa
+@@ -1,5 +1,8 @@
+ thread data $i = align 4 {w 42}
+-data $fmt = align 1 {b "i%d==%d\n", b 0}
++data $fmti = align 1 {b "i%d==%d\n", b 0}
++
++thread data $x = {w 1, w 2, w 3, w 4}
++data $fmtx = align 1 {b "*(x+%d)==%d\n", b 0}
+
+ export
+ function w $main() {
+@@ -10,9 +13,21 @@ function w $main() {
+ %t =l load %pthr
+ call $pthread_join(l %t, l %rval)
+ %i0 =w loadw thread $i
+- call $printf(l $fmt, ..., w 0, w %i0)
++ call $printf(l $fmti, ..., w 0, w %i0)
+ %i1 =w load %rval
+- call $printf(l $fmt, ..., w 1, w %i1)
++ call $printf(l $fmti, ..., w 1, w %i1)
++
++ %a0 =l call $xaddr()
++ %x0 =w load %a0
++ call $printf(l $fmtx, ..., w 0, w %x0)
++ %a4 =l call $xaddroff4()
++ %x4 =w load %a4
++ call $printf(l $fmtx, ..., w 4, w %x4)
++ %a8 =l call $xaddroff(l 8)
++ %x8 =w load %a8
++ call $printf(l $fmtx, ..., w 8, w %x8)
++ %xc =l call $xvalcnt(l 3)
++ call $printf(l $fmtx, ..., w 12, w %xc)
+ ret 0
+ }
+
+@@ -24,7 +39,36 @@ function l $thread(l %arg) {
+ ret %ret
+ }
+
++function l $xaddr() {
++@start
++ ret thread $x
++}
++
++function l $xaddroff4() {
++@start
++ %a =l add 4, thread $x
++ ret %a
++}
++
++function l $xaddroff(l %off) {
++@start
++ %a =l add thread $x, %off
++ ret %a
++}
++
++function w $xvalcnt(l %cnt) {
++@start
++ %o =l mul 4, %cnt
++ %a =l add thread $x, %o
++ %x =w load %a
++ ret %x
++}
++
+ # >>> output
+ # i0==42
+ # i1==402653226
++# *(x+0)==1
++# *(x+4)==2
++# *(x+8)==3
++# *(x+12)==4
+ # <<<
+diff --git a/tools/lexh.c b/tools/lexh.c
+index 5ceb4ee..1b4a7fb 100644
+--- a/tools/lexh.c
++++ b/tools/lexh.c
+@@ -23,11 +23,11 @@ char *tok[] = {
+ "ceql", "cnel", "cles", "clts", "cgts", "cges",
+ "cnes", "ceqs", "cos", "cuos", "cled", "cltd",
+ "cgtd", "cged", "cned", "ceqd", "cod", "cuod",
+- "vaarg", "vastart", "...", "env",
++ "vaarg", "vastart", "...", "env", "dbgloc",
+
+ "call", "phi", "jmp", "jnz", "ret", "hlt", "export",
+- "function", "type", "data", "section", "align", "blit",
+- "l", "w", "sh", "uh", "h", "sb", "ub", "b",
++ "function", "type", "data", "section", "align", "dbgfile",
++ "blit", "l", "w", "sh", "uh", "h", "sb", "ub", "b",
+ "d", "s", "z", "loadw", "loadl", "loads", "loadd",
+ "alloc1", "alloc2",
+
+diff --git a/tools/test.sh b/tools/test.sh
+index 4412f61..23c6663 100755
+--- a/tools/test.sh
++++ b/tools/test.sh
+@@ -1,6 +1,6 @@
+ #!/bin/sh
+
+-dir=`cd $(dirname "$0"); pwd`
++dir=`dirname "$0"`
+ bin=$dir/../qbe
+ binref=$dir/../qbe.ref
+
+@@ -12,11 +12,6 @@ asmref=$tmp.ref.s
+ exe=$tmp.exe
+ out=$tmp.out
+
+-testcc() {
+- echo "int main() { }" | $1 -x c -o /dev/null - >/dev/null 2>&1
+- return $?
+-}
+-
+ init() {
+ case "$TARGET" in
+ arm64)
+@@ -79,8 +74,8 @@ init() {
+ cc="cc -lpthread"
+ ;;
+ *)
+- cc="${CC:-cc} -lpthread"
+- testcc "$cc" || cc="${CC:-cc}"
++ cc="${CC:-cc}"
++ ccpost="-lpthread"
+ ;;
+ esac
+ TARGET=`$bin -t?`
+@@ -154,7 +149,7 @@ once() {
+ src="$asm"
+ fi
+
+- if ! $cc -g -o $exe $src
++ if ! $cc -g -o $exe $src $ccpost
+ then
+ echo "[cc fail]"
+ return 1
+@@ -201,15 +196,17 @@ fi
+ case "$1" in
+ "all")
+ fail=0
++ count=0
+ for t in $dir/../test/[!_]*.ssa
+ do
+ once $t
+ fail=`expr $fail + $?`
++ count=`expr $count + 1`
+ done
+ if test $fail -ge 1
+ then
+ echo
+- echo "$fail test(s) failed!"
++ echo "$fail of $count tests failed!"
+ else
+ echo
+ echo "All is fine!"
+diff --git a/util.c b/util.c
+index 8997f6c..362fa98 100644
+--- a/util.c
++++ b/util.c
+@@ -154,6 +154,16 @@ vgrow(void *vp, ulong len)
+ *(Vec **)vp = v1;
+ }
+
++void
++strf(char str[NString], char *s, ...)
++{
++ va_list ap;
++
++ va_start(ap, s);
++ vsnprintf(str, NString, s, ap);
++ va_end(ap);
++}
++
+ uint32_t
+ intern(char *s)
+ {
+@@ -334,7 +344,7 @@ newtmp(char *prfx, int k, Fn *fn)
+ vgrow(&fn->tmp, fn->ntmp);
+ memset(&fn->tmp[t], 0, sizeof(Tmp));
+ if (prfx)
+- sprintf(fn->tmp[t].name, "%s.%d", prfx, ++n);
++ strf(fn->tmp[t].name, "%s.%d", prfx, ++n);
+ fn->tmp[t].cls = k;
+ fn->tmp[t].slot = -1;
+ fn->tmp[t].nuse = +1;
diff --git a/qbe.spec b/qbe.spec
index 9f68754..32bfb1f 100644
--- a/qbe.spec
+++ b/qbe.spec
@@ -1,17 +1,28 @@
+%bcond snapshot 1
+
+%global srcver 1.1
+%global commit 2d683e0c53907ebca9abde876dd87af70719e42d
+%global shortcommit %(c=%{commit}; echo ${c:0:8})
+%global commitdate 20240129
+%global snapshotver %{commitdate}.%{shortcommit}
+
Name: qbe
-Version: 1.1
+Version: %{srcver}%{?with_snapshot:^%{snapshotver}}
Release: %autorelease
Summary: A pure C embeddable compiler backend
License: MIT
URL: https://c9x.me/compile/
+Source0: %{url}/release/%{name}-%{srcver}.tar.xz
-Source0: %{url}/release/%{name}-%{version}.tar.xz
+%if %{with snapshot}
+Patch: 0000-snapshot-%{srcver}-%{shortcommit}.patch
+%endif
BuildRequires: gcc
BuildRequires: make
-ExclusiveArch: x86_64 aarch64
+ExclusiveArch: x86_64 aarch64 riscv64
%description
QBE is a compiler backend that aims to provide 70% of the performance of
@@ -20,25 +31,30 @@ innovation by offering a compact user-friendly and performant backend. The size
limit constrains QBE to focus on the essential and prevents embarking on a
never-ending path of diminishing returns.
+
%prep
-%autosetup
+%autosetup -n %{name}-%{srcver} -p 1
+
%build
-make CFLAGS="$CFLAGS -std=c11 -fPIE" %{?_smp_mflags}
+%{!?_auto_set_build_flags:%{set_build_flags}}
+%make_build CFLAGS="${CFLAGS} -fPIE -std=c17 -Wall -Wextra -Wpedantic"
+
%install
%make_install PREFIX=%{_prefix}
-mkdir -p %{buildroot}/%{_docdir}/%{name}
-cp -r -p doc/ %{buildroot}/%{_docdir}/%{name}
+
%check
+%{!?_auto_set_build_flags:%{set_build_flags}}
make check
+
%files
-%doc README
%license LICENSE
+%doc README doc/*
%{_bindir}/%{name}
-%{_docdir}/%{name}/*
+
%changelog
%autochangelog
commit d90362f02ac429cf416c6a2c85d61a530c3cf54a
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jan 26 13:42:00 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit 0d544189cfd9a01ed83ef26046e02b9785efeb0e
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Mon Jan 22 09:25:57 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
2 months, 1 week
Architecture specific change in rpms/ghc9.8.git
by githook-noreply@fedoraproject.org
The package rpms/ghc9.8.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/ghc9.8.git/commit/?id=9cf563a38a8...
https://src.fedoraproject.org/cgit/rpms/ghc9.8.git/commit/?id=5c1e44286d2...
https://src.fedoraproject.org/cgit/rpms/ghc9.8.git/commit/?id=d1dee3aaff6...
https://src.fedoraproject.org/cgit/rpms/ghc9.8.git/commit/?id=4e2b1034410....
Change:
+%ifarch riscv64
+%ifarch %{ghc_unregisterized_arches} riscv64
-%ifarch s390x
+%ifarch s390x
Thanks.
Full change:
============
commit 2f294d96018372a4bf47065a9d0578c91347ad89
Author: Jens Petersen <petersen(a)redhat.com>
Date: Mon Feb 26 17:45:06 2024 +0800
update to 9.8.2
diff --git a/.gitignore b/.gitignore
index 439464c..13a83e4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/ghc-9.8.0.20230727-src.tar.lz
/ghc-9.8.1-src.tar.lz
+/ghc-9.8.2-src.tar.lz
diff --git a/10518.patch b/10518.patch
deleted file mode 100644
index 2a4c84e..0000000
--- a/10518.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From a1dc4da985db1e14c8251a024edd47d832da4fb2 Mon Sep 17 00:00:00 2001
-From: Greg Steuck <gnezdo(a)groq.com>
-Date: Tue, 23 May 2023 13:25:17 -0700
-Subject: [PATCH] Remove undefined FP_PROG_LD_BUILD_ID from configure.ac's
-
----
- configure.ac | 1 -
- distrib/configure.ac.in | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 0005d566570..e3b6ab2fe8d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -487,7 +487,6 @@ CFLAGS="$CFLAGS $GccUseLdOpt"
- AC_SUBST([LdCmd])
-
- FP_PROG_LD_IS_GNU
--FP_PROG_LD_BUILD_ID
- FP_PROG_LD_NO_COMPACT_UNWIND
- FP_PROG_LD_FILELIST
-
-diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in
-index ce75510b8ac..3dc588085d6 100644
---- a/distrib/configure.ac.in
-+++ b/distrib/configure.ac.in
-@@ -130,7 +130,6 @@ CFLAGS="$CFLAGS $GccUseLdOpt"
- AC_SUBST([LdCmd])
-
- FP_PROG_LD_IS_GNU
--FP_PROG_LD_BUILD_ID
- FP_PROG_LD_NO_COMPACT_UNWIND
- FP_PROG_LD_FILELIST
-
---
-GitLab
-
diff --git a/11662.patch b/11662.patch
deleted file mode 100644
index ce6ca44..0000000
--- a/11662.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From bed85f7bc358fdca4677a3070b94ea544bb9e7ff Mon Sep 17 00:00:00 2001
-From: Stefan Schulze Frielinghaus <stefansf(a)linux.ibm.com>
-Date: Mon, 27 Nov 2023 12:34:47 +0100
-Subject: [PATCH] llvmGen: Align objects in the data section
-
-Objects in the data section may be referenced via tagged pointers.
-Thus, align those objects to a 4- or 8-byte boundary for 32- or 64-bit
-platforms, respectively. Note, this may need to be reconsidered if
-objects with a greater natural alignment requirement are emitted as e.g.
-128-bit atomics.
-
-Fixes #24163.
----
- compiler/GHC/CmmToLlvm/Data.hs | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/compiler/GHC/CmmToLlvm/Data.hs b/compiler/GHC/CmmToLlvm/Data.hs
-index caac121413c..5e8912e3bc7 100644
---- a/compiler/GHC/CmmToLlvm/Data.hs
-+++ b/compiler/GHC/CmmToLlvm/Data.hs
-@@ -89,6 +89,7 @@ genLlvmData (sec, CmmStaticsRaw lbl xs) = do
- align = case sec of
- Section CString _ -> if (platformArch platform == ArchS390X)
- then Just 2 else Just 1
-+ Section Data _ -> Just $ platformWordSizeInBytes platform
- _ -> Nothing
- const = if sectionProtection sec == ReadOnlySection
- then Constant else Global
---
-GitLab
-
diff --git a/ghc-modern-c-fix.patch b/ghc-modern-c-fix.patch
deleted file mode 100644
index 9ae912f..0000000
--- a/ghc-modern-c-fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/compiler/GHC/HsToCore/Foreign/C.hs
-+++ b/compiler/GHC/HsToCore/Foreign/C.hs
-@@ -560,7 +560,7 @@ mkFExportCBits dflags c_nm maybe_target arg_htys res_hty is_IO_res_ty cc
- , ppUnless res_hty_is_unit $
- if libffi
- then char '*' <> parens (ffi_cResType <> char '*') <>
-- text "resp = cret;"
-+ text "resp = " <> parens ffi_cResType <> text "cret;"
- else text "return cret;"
- , rbrace
- ]
diff --git a/ghc9.8.spec b/ghc9.8.spec
index a760e41..28f074f 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -20,7 +20,7 @@
# to handle RCs
%global ghc_release %{version}
-%global base_ver 4.19.0.0
+%global base_ver 4.19.1.0
%global ghc_bignum_ver 1.3
%global ghc_compact_ver 0.1.0.0
%global hpc_ver 0.7.0.0
@@ -52,12 +52,12 @@
%global ghc_unregisterized_arches s390 %{mips}
Name: %{ghc_name}
-Version: 9.8.1
+Version: 9.8.2
# Since library subpackages are versioned:
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -77,8 +77,6 @@ ExcludeArch: armv7hl
Patch1: ghc-gen_contents_index-haddock-path.patch
Patch2: ghc-Cabal-install-PATH-warning.patch
Patch3: ghc-gen_contents_index-nodocs.patch
-# https://gitlab.haskell.org/ghc/ghc/-/issues/24355
-Patch4: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10518.patch
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604
# needs more backporting to 9.6
Patch9: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604.patch
@@ -91,11 +89,6 @@ Patch13: text2-allow-ghc8-arm.patch
# unregisterised
Patch16: ghc-hadrian-s390x-rts--qg.patch
-# s390x
-# https://gitlab.haskell.org/ghc/ghc/-/issues/24163
-# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662
-Patch17: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662.patch
-
# Debian patches:
# bad according to upstream
# see eg https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604
@@ -111,10 +104,6 @@ Patch40: cabal-add-riscv64.patch
# Upstream in >= 9.9.
Patch41: https://gitlab.haskell.org/ghc/ghc/-/commit/dd38aca95ac25adc9888083669b32...
-# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.o...
-# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12079
-Patch42: ghc-modern-c-fix.patch
-
# https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms
# fedora ghc has been bootstrapped on
@@ -332,12 +321,12 @@ This provides the hadrian tool which can be used to build ghc.
%ghc_lib_subpackage -d -l %BSDHaskellReport array-0.5.6.0
%ghc_lib_subpackage -d -l %BSDHaskellReport -c gmp-devel%{?_isa},libffi-devel%{?_isa} base-%{base_ver}
%ghc_lib_subpackage -d -l BSD-3-Clause binary-0.8.9.1
-%ghc_lib_subpackage -d -l BSD-3-Clause bytestring-0.12.0.2
+%ghc_lib_subpackage -d -l BSD-3-Clause bytestring-0.12.1.0
%ghc_lib_subpackage -d -l %BSDHaskellReport containers-0.6.8
%ghc_lib_subpackage -d -l %BSDHaskellReport deepseq-1.5.0.0
%ghc_lib_subpackage -d -l %BSDHaskellReport directory-1.3.8.1
%ghc_lib_subpackage -d -l %BSDHaskellReport exceptions-0.10.7
-%ghc_lib_subpackage -d -l BSD-3-Clause filepath-1.4.100.4
+%ghc_lib_subpackage -d -l BSD-3-Clause filepath-1.4.200.1
# in ghc not ghc-libraries:
%ghc_lib_subpackage -d -x ghc-%{ghc_version_override}
%ghc_lib_subpackage -d -x -l BSD-3-Clause ghc-bignum-%{ghc_bignum_ver}
@@ -359,10 +348,10 @@ This provides the hadrian tool which can be used to build ghc.
%ghc_lib_subpackage -d -l BSD-3-Clause stm-2.5.2.1
%ghc_lib_subpackage -d -l BSD-3-Clause template-haskell-2.21.0.0
%ghc_lib_subpackage -d -l BSD-3-Clause -c ncurses-devel%{?_isa} terminfo-0.4.1.6
-%ghc_lib_subpackage -d -l BSD-3-Clause text-2.1
+%ghc_lib_subpackage -d -l BSD-3-Clause text-2.1.1
%ghc_lib_subpackage -d -l BSD-3-Clause time-1.12.2
%ghc_lib_subpackage -d -l BSD-3-Clause transformers-0.6.1.0
-%ghc_lib_subpackage -d -l BSD-3-Clause unix-2.8.3.0
+%ghc_lib_subpackage -d -l BSD-3-Clause unix-2.8.4.0
%ghc_lib_subpackage -d -l BSD-3-Clause xhtml-%{xhtml_ver}
%endif
@@ -398,7 +387,6 @@ Installing this package causes %{name}-*-prof packages corresponding to
%patch -P1 -p1 -b .orig
%patch -P3 -p1 -b .orig
-%patch -P4 -p1 -b .orig
#%%patch -P2 -p1 -b .orig
#%%patch -P9 -p1 -b .orig
@@ -418,8 +406,6 @@ rm libffi-tarballs/libffi-*.tar.gz
%endif
%endif
-%patch -P17 -p1 -b .orig
-
#debian
#%%patch -P24 -p1 -b .orig
%patch -P26 -p1 -b .orig
@@ -432,8 +418,6 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P41 -p1 -b .orig
%endif
-#Modern C fix
-%patch -P42 -p1 -b .orig
%build
# patch4
@@ -864,6 +848,10 @@ make test
%changelog
+* Mon Feb 26 2024 Jens Petersen <petersen(a)redhat.com> - 9.8.2-8
+- https://downloads.haskell.org/~ghc/9.8.2/docs/users_guide/9.8.2-notes.html
+- minor bumps to bytestring, filepath, text, unix
+
* Thu Feb 15 2024 Richard W.M. Jones <rjones(a)redhat.com> - 9.8.1-7
- Fix generated C for Modern C Initiative
diff --git a/sources b/sources
index c78800b..13a858f 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (ghc-9.8.1-src.tar.lz) = e2cc1d2b43b2b1a24043a6dc0910e607eba15910556d2e91180cca4dc65086ea84326687d50eb7be7b7099a1517852ad5fbc37eaad3273777a1e42e0675b26f1
+SHA512 (ghc-9.8.2-src.tar.lz) = 9bb2e8bc4fc694d760ab7cb60d9b4e504cff3f92953b31476298c6c11c397a1b7bffeb2fd5b12593507f2d4d7d8daea7f6407de0a93f6cced9a2b1e6ea3b8d7f
commit 6d8d84a9ad88193dcbb4f46d356136380ca8a986
Author: Jens Petersen <petersen(a)redhat.com>
Date: Fri Feb 16 15:49:16 2024 +0800
fixup ghc-modern-c-fix patch file extension
diff --git a/ghc-modern-c-fix.txt b/ghc-modern-c-fix.patch
similarity index 100%
rename from ghc-modern-c-fix.txt
rename to ghc-modern-c-fix.patch
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 871b33e..a760e41 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -113,7 +113,7 @@ Patch41: https://gitlab.haskell.org/ghc/ghc/-/commit/dd38aca95ac25adc9888083669b
# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.o...
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12079
-Patch42: ghc-modern-c-fix.txt
+Patch42: ghc-modern-c-fix.patch
# https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms
commit ffa7c9c884c138084c74933b504379cb202a5c15
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Thu Feb 15 13:20:10 2024 +0000
Fix generated C for Modern C Initiative
diff --git a/ghc-modern-c-fix.txt b/ghc-modern-c-fix.txt
new file mode 100644
index 0000000..9ae912f
--- /dev/null
+++ b/ghc-modern-c-fix.txt
@@ -0,0 +1,11 @@
+--- a/compiler/GHC/HsToCore/Foreign/C.hs
++++ b/compiler/GHC/HsToCore/Foreign/C.hs
+@@ -560,7 +560,7 @@ mkFExportCBits dflags c_nm maybe_target arg_htys res_hty is_IO_res_ty cc
+ , ppUnless res_hty_is_unit $
+ if libffi
+ then char '*' <> parens (ffi_cResType <> char '*') <>
+- text "resp = cret;"
++ text "resp = " <> parens ffi_cResType <> text "cret;"
+ else text "return cret;"
+ , rbrace
+ ]
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 492c8a3..871b33e 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -57,7 +57,7 @@ Version: 9.8.1
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -111,6 +111,10 @@ Patch40: cabal-add-riscv64.patch
# Upstream in >= 9.9.
Patch41: https://gitlab.haskell.org/ghc/ghc/-/commit/dd38aca95ac25adc9888083669b32...
+# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.o...
+# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12079
+Patch42: ghc-modern-c-fix.txt
+
# https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms
# fedora ghc has been bootstrapped on
@@ -428,6 +432,9 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P41 -p1 -b .orig
%endif
+#Modern C fix
+%patch -P42 -p1 -b .orig
+
%build
# patch4
autoupdate
@@ -857,6 +864,9 @@ make test
%changelog
+* Thu Feb 15 2024 Richard W.M. Jones <rjones(a)redhat.com> - 9.8.1-7
+- Fix generated C for Modern C Initiative
+
* Wed Jan 24 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 9.8.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit 9cf563a38a8cf5caa7fc99381a8545db31ceaa1d
Author: Jens Petersen <petersen(a)redhat.com>
Date: Tue Feb 13 00:50:57 2024 +0800
condition the riscv64 patches
Patching Cabal would cause the ABI hash to change causing major
rawhide breakage
diff --git a/ghc9.8.spec b/ghc9.8.spec
index ebac60e..492c8a3 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -421,11 +421,12 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P26 -p1 -b .orig
%patch -P27 -p1 -b .orig
+%ifarch riscv64
#RISCV64 cabal support
%patch -P40 -p1 -b .orig
-
#GHCi support
%patch -P41 -p1 -b .orig
+%endif
%build
# patch4
commit 34c593df21525c72e4a99de1b23618ab4217fab4
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Mon Feb 12 15:38:31 2024 +0000
riscv64: Apply Cabal patch
Commit ebb2ee7214 ("Add RISCV64 to Cabal") added the patch but did not
apply it in %prep.
Signed-off-by: Richard W.M. Jones <rjones(a)redhat.com>
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 9e9e316..ebac60e 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -421,6 +421,9 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P26 -p1 -b .orig
%patch -P27 -p1 -b .orig
+#RISCV64 cabal support
+%patch -P40 -p1 -b .orig
+
#GHCi support
%patch -P41 -p1 -b .orig
commit a2442ae1c470505009eb37d2175662b18308a287
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Mon Feb 12 13:57:25 2024 +0000
riscv64: Enable support for GHCi (internal interpreter)
Signed-off-by: Richard W.M. Jones <rjones(a)redhat.com>
diff --git a/dd38aca95ac25adc9888083669b32ff551151259.patch b/dd38aca95ac25adc9888083669b32ff551151259.patch
new file mode 100644
index 0000000..77a7100
--- /dev/null
+++ b/dd38aca95ac25adc9888083669b32ff551151259.patch
@@ -0,0 +1,26 @@
+From dd38aca95ac25adc9888083669b32ff551151259 Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab(a)suse.de>
+Date: Mon, 19 Jun 2023 10:38:26 +0200
+Subject: [PATCH] Hadrian: enable GHCi support on riscv64
+
+---
+ hadrian/src/Oracles/Setting.hs | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs
+index b9e5d312074..93561a94fe4 100644
+--- a/hadrian/src/Oracles/Setting.hs
++++ b/hadrian/src/Oracles/Setting.hs
+@@ -302,7 +302,8 @@ ghcWithInterpreter = do
+ , "darwin", "kfreebsdgnu" ]
+ goodArch <- anyTargetArch [ "i386", "x86_64", "powerpc"
+ , "arm", "aarch64", "s390x"
+- , "powerpc64", "powerpc64le" ]
++ , "powerpc64", "powerpc64le"
++ , "riscv64" ]
+ return $ goodOs && goodArch
+
+ -- | Variants of the ARM architecture.
+--
+GitLab
+
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 8b5e8a3..9e9e316 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -107,6 +107,10 @@ Patch27: haddock-remove-googleapis-fonts.patch
# See: https://github.com/haskell/cabal/pull/9062
Patch40: cabal-add-riscv64.patch
+# Enable GHCi support on riscv64
+# Upstream in >= 9.9.
+Patch41: https://gitlab.haskell.org/ghc/ghc/-/commit/dd38aca95ac25adc9888083669b32...
+
# https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms
# fedora ghc has been bootstrapped on
@@ -417,6 +421,8 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P26 -p1 -b .orig
%patch -P27 -p1 -b .orig
+#GHCi support
+%patch -P41 -p1 -b .orig
%build
# patch4
commit 5c1e44286d2b5a38883dde00ef7ec038973b1f89
Author: David Abdurachmanov <davidlt(a)rivosinc.com>
Date: Tue Nov 14 20:08:38 2023 +0200
Add support for riscv64
Support for an LLVM backend was added a while back in this
upstream commit:
https://gitlab.haskell.org/ghc/ghc/-/commit/31e265c1df948d1bcc82d08affe99...
Signed-off-by: David Abdurachmanov <davidlt(a)rivosinc.com>
diff --git a/ghc9.8.spec b/ghc9.8.spec
index c501e4f..8b5e8a3 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -48,8 +48,8 @@
%else
%global llvm_major 15
%endif
-%global ghc_llvm_archs armv7hl s390x
-%global ghc_unregisterized_arches s390 %{mips} riscv64
+%global ghc_llvm_archs armv7hl s390x riscv64
+%global ghc_unregisterized_arches s390 %{mips}
Name: %{ghc_name}
Version: 9.8.1
@@ -400,7 +400,7 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P13 -p1 -b .orig
%endif
-%ifarch %{ghc_unregisterized_arches}
+%ifarch %{ghc_unregisterized_arches} riscv64
%patch -P16 -p1 -b .orig
%endif
# remove if epel9 ghc using llvm
commit 609af0f442b784d1a9bea5776d9ac5a5e7fe1045
Author: David Abdurachmanov <davidlt(a)rivosinc.com>
Date: Mon Nov 20 19:27:40 2023 +0200
Add RISCV64 to Cabal
This is already merged upstreamed. See:
https://github.com/haskell/cabal/pull/9062
Signed-off-by: David Abdurachmanov <davidlt(a)rivosinc.com>
diff --git a/cabal-add-riscv64.patch b/cabal-add-riscv64.patch
new file mode 100644
index 0000000..e2237d8
--- /dev/null
+++ b/cabal-add-riscv64.patch
@@ -0,0 +1,43 @@
+diff --git a/libraries/Cabal/Cabal-syntax/src/Distribution/System.hs b/libraries/Cabal/Cabal-syntax/src/Distribution/System.hs
+index 68bda63..6521464 100644
+--- a/libraries/Cabal/Cabal-syntax/src/Distribution/System.hs
++++ b/libraries/Cabal/Cabal-syntax/src/Distribution/System.hs
+@@ -159,7 +159,7 @@ buildOS = classifyOS Permissive System.Info.os
+
+ -- | These are the known Arches: I386, X86_64, PPC, PPC64, Sparc,
+ -- Arm, AArch64, Mips, SH, IA64, S390, S390X, Alpha, Hppa, Rs6000,
+--- M68k, Vax, JavaScript and Wasm32.
++-- M68k, Vax, RISCV64, JavaScript and Wasm32.
+ --
+ -- The following aliases can also be used:
+ -- * PPC alias: powerpc
+@@ -173,7 +173,7 @@ data Arch = I386 | X86_64 | PPC | PPC64 | Sparc
+ | Arm | AArch64 | Mips | SH
+ | IA64 | S390 | S390X
+ | Alpha | Hppa | Rs6000
+- | M68k | Vax
++ | M68k | Vax | RISCV64
+ | JavaScript
+ | Wasm32
+ | OtherArch String
+@@ -188,7 +188,7 @@ knownArches = [I386, X86_64, PPC, PPC64, Sparc
+ ,Arm, AArch64, Mips, SH
+ ,IA64, S390, S390X
+ ,Alpha, Hppa, Rs6000
+- ,M68k, Vax
++ ,M68k, Vax, RISCV64
+ ,JavaScript
+ ,Wasm32]
+
+diff --git a/libraries/Cabal/Cabal/src/Distribution/Simple/PreProcess.hs b/libraries/Cabal/Cabal/src/Distribution/Simple/PreProcess.hs
+index fbe5710..a53b33d 100644
+--- a/libraries/Cabal/Cabal/src/Distribution/Simple/PreProcess.hs
++++ b/libraries/Cabal/Cabal/src/Distribution/Simple/PreProcess.hs
+@@ -729,6 +729,7 @@ platformDefines lbi =
+ Rs6000 -> ["rs6000"]
+ M68k -> ["m68k"]
+ Vax -> ["vax"]
++ RISCV64 -> ["riscv64"]
+ JavaScript -> ["javascript"]
+ Wasm32 -> ["wasm32"]
+ OtherArch _ -> []
diff --git a/ghc9.8.spec b/ghc9.8.spec
index d746590..c501e4f 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -103,6 +103,10 @@ Patch17: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662.patch
Patch26: no-missing-haddock-file-warning.patch
Patch27: haddock-remove-googleapis-fonts.patch
+# RISCV64 added to Cabal
+# See: https://github.com/haskell/cabal/pull/9062
+Patch40: cabal-add-riscv64.patch
+
# https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms
# fedora ghc has been bootstrapped on
commit b289d395a7cbee5acb06e8783ea601429c7c1989
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Wed Jan 24 14:44:49 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 3159dde..d746590 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -57,7 +57,7 @@ Version: 9.8.1
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -843,6 +843,9 @@ make test
%changelog
+* Wed Jan 24 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 9.8.1-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Mon Jan 22 2024 Jens Petersen <petersen(a)redhat.com> - 9.8.1-5
- use gcc default ld (ie ld.bfd) for rawhide
commit 89e0b015beb6bae0416decab5b6b10e9c1112552
Author: Jens Petersen <petersen(a)redhat.com>
Date: Wed Jan 24 15:08:43 2024 +0800
autoconf: remove undefined FP_PROG_LD_BUILD_ID
diff --git a/10518.patch b/10518.patch
new file mode 100644
index 0000000..2a4c84e
--- /dev/null
+++ b/10518.patch
@@ -0,0 +1,37 @@
+From a1dc4da985db1e14c8251a024edd47d832da4fb2 Mon Sep 17 00:00:00 2001
+From: Greg Steuck <gnezdo(a)groq.com>
+Date: Tue, 23 May 2023 13:25:17 -0700
+Subject: [PATCH] Remove undefined FP_PROG_LD_BUILD_ID from configure.ac's
+
+---
+ configure.ac | 1 -
+ distrib/configure.ac.in | 1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0005d566570..e3b6ab2fe8d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -487,7 +487,6 @@ CFLAGS="$CFLAGS $GccUseLdOpt"
+ AC_SUBST([LdCmd])
+
+ FP_PROG_LD_IS_GNU
+-FP_PROG_LD_BUILD_ID
+ FP_PROG_LD_NO_COMPACT_UNWIND
+ FP_PROG_LD_FILELIST
+
+diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in
+index ce75510b8ac..3dc588085d6 100644
+--- a/distrib/configure.ac.in
++++ b/distrib/configure.ac.in
+@@ -130,7 +130,6 @@ CFLAGS="$CFLAGS $GccUseLdOpt"
+ AC_SUBST([LdCmd])
+
+ FP_PROG_LD_IS_GNU
+-FP_PROG_LD_BUILD_ID
+ FP_PROG_LD_NO_COMPACT_UNWIND
+ FP_PROG_LD_FILELIST
+
+--
+GitLab
+
diff --git a/ghc9.8.spec b/ghc9.8.spec
index f4d2015..3159dde 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -77,6 +77,8 @@ ExcludeArch: armv7hl
Patch1: ghc-gen_contents_index-haddock-path.patch
Patch2: ghc-Cabal-install-PATH-warning.patch
Patch3: ghc-gen_contents_index-nodocs.patch
+# https://gitlab.haskell.org/ghc/ghc/-/issues/24355
+Patch4: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10518.patch
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604
# needs more backporting to 9.6
Patch9: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604.patch
@@ -384,7 +386,7 @@ Installing this package causes %{name}-*-prof packages corresponding to
%patch -P1 -p1 -b .orig
%patch -P3 -p1 -b .orig
-
+%patch -P4 -p1 -b .orig
#%%patch -P2 -p1 -b .orig
#%%patch -P9 -p1 -b .orig
@@ -413,8 +415,8 @@ rm libffi-tarballs/libffi-*.tar.gz
%build
-# currently no autoconf patches
-#autoupdate
+# patch4
+autoupdate
%ghc_set_gcc_flags
export CC=%{_bindir}/gcc
commit 93cae2e893fb859021dd55ead49aa346095075e3
Author: Jens Petersen <petersen(a)redhat.com>
Date: Mon Jan 22 21:26:34 2024 +0800
currently no autoconf patches
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 3fc773b..f4d2015 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -413,8 +413,8 @@ rm libffi-tarballs/libffi-*.tar.gz
%build
-# patch5
-autoupdate
+# currently no autoconf patches
+#autoupdate
%ghc_set_gcc_flags
export CC=%{_bindir}/gcc
commit 782442a19c2681bc744dce8d72f91cd11b5b6ca4
Author: Jens Petersen <petersen(a)redhat.com>
Date: Mon Jan 22 21:01:04 2024 +0800
use gcc default ld (ie ld.bfd) for rawhide
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 6f99862..3fc773b 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -57,7 +57,7 @@ Version: 9.8.1
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -418,11 +418,13 @@ autoupdate
%ghc_set_gcc_flags
export CC=%{_bindir}/gcc
-# lld breaks build-id
+# note lld breaks build-id
# /usr/bin/debugedit: Cannot handle 8-byte build ID
# https://bugzilla.redhat.com/show_bug.cgi?id=2116508
# https://gitlab.haskell.org/ghc/ghc/-/issues/22195
+%if 0%{fedora} < 40
export LD=%{_bindir}/ld.gold
+%endif
export GHC=%{_bindir}/ghc%{?ghcboot_major:-%{ghcboot_major}}
@@ -434,6 +436,9 @@ export GHC=%{_bindir}/ghc%{?ghcboot_major:-%{ghcboot_major}}
--sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \
--docdir=%{_docdir}/%{name} \
--with-system-libffi \
+%if 0%{fedora} >= 40
+ --disable-ld-override \
+%endif
%ifarch %{ghc_unregisterized_arches}
--enable-unregisterised \
%endif
@@ -488,7 +493,11 @@ cp -p LICENSE ../LICENSE.hadrian
# https://gitlab.haskell.org/ghc/ghc/-/issues/20120#note_366872
(
cd _build/bindist/ghc-%{version}-*
-./configure --prefix=%{buildroot}%{ghclibdir} --bindir=%{buildroot}%{_bindir} --libdir=%{buildroot}%{_libdir} --mandir=%{buildroot}%{_mandir} --docdir=%{buildroot}%{_docdir}/%{name}
+./configure --prefix=%{buildroot}%{ghclibdir} --bindir=%{buildroot}%{_bindir} --libdir=%{buildroot}%{_libdir} --mandir=%{buildroot}%{_mandir} --docdir=%{buildroot}%{_docdir}/%{name} \
+%if 0%{fedora} >= 40
+ --disable-ld-override
+%endif
+%{nil}
make install
)
@@ -832,6 +841,9 @@ make test
%changelog
+* Mon Jan 22 2024 Jens Petersen <petersen(a)redhat.com> - 9.8.1-5
+- use gcc default ld (ie ld.bfd) for rawhide
+
* Fri Jan 19 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 9.8.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit 8ee7aa1630539c71c56f1c3201739aa13091b1d3
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jan 19 22:15:59 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 94348fc..6f99862 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -57,7 +57,7 @@ Version: 9.8.1
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -832,6 +832,9 @@ make test
%changelog
+* Fri Jan 19 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 9.8.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Fri Jan 5 2024 Jens Petersen <petersen(a)redhat.com> - 9.8.1-3
- fix llvm alignment in data sections (@stefansf (IBM))
which should fix certain runtime crashes (#2248097)
commit 2fb2c982c6dd04be9675608f145f6eb60036697b
Author: Jens Petersen <petersen(a)redhat.com>
Date: Fri Jan 5 19:52:08 2024 +0800
set _smp_ncpus_max to 64 to avoid fd exhaustion
avoids failure on 224 core aarch64: resource exhausted (Too many open files)
diff --git a/ghc9.8.spec b/ghc9.8.spec
index a83158f..94348fc 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -466,6 +466,11 @@ cd hadrian
%global hadrian_llvm +llvm
%endif
%define hadrian_docs %{!?with_haddock:--docs=no-haddocks} --docs=%[%{?with_manual} ? "no-sphinx-pdfs" : "no-sphinx"]
+# + hadrian/dist/build/hadrian/hadrian -j224 --flavour=perf --docs=no-sphinx-pdfs binary-dist-dir --hash-unit-ids
+# # cabal-read (for OracleQ (PackageDataKey (Package {pkgType = Library, pkgName = "rts", pkgPath = "rts"})))
+# rts/include/rts/Messages.h: withFile: resource exhausted (Too many open files)
+# https://koji.fedoraproject.org/koji/taskinfo?taskID=111327221
+%global _smp_ncpus_max 64
# quickest does not build shared libs
# try release instead of perf
%{hadrian} %{?_smp_mflags} --flavour=%[%{?with_perfbuild} ? "perf" : "quick"]%{!?with_ghc_prof:+no_profiled_libs}%{?hadrian_llvm} %{hadrian_docs} binary-dist-dir --hash-unit-ids
commit 451342c7752c7c7e3ace58b052b39b8d96229dbb
Author: Jens Petersen <petersen(a)redhat.com>
Date: Fri Jan 5 18:46:25 2024 +0800
bump fedora llvm to 15
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 786c536..a83158f 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -46,7 +46,7 @@
%if 0%{?rhel} == 9
%global llvm_major 12
%else
-%global llvm_major 14
+%global llvm_major 15
%endif
%global ghc_llvm_archs armv7hl s390x
%global ghc_unregisterized_arches s390 %{mips} riscv64
commit 2cffbbcb689ead1d72f1b8106d8fe19b7cc98a42
Author: Jens Petersen <petersen(a)redhat.com>
Date: Fri Jan 5 18:46:01 2024 +0800
boot with ghc9.6 for current releases
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 35ee520..786c536 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -28,8 +28,8 @@
%global xhtml_ver 3000.2.2.1
# bootstrap needs 9.4+
-%if 0%{?fedora} < 39
-%global ghcboot_major 9.4
+%if 0%{?fedora} < 40
+%global ghcboot_major 9.6
%endif
%global ghcboot ghc%{?ghcboot_major}
commit d1dee3aaff69127924aa23f8d04a6ad152b73973
Author: Jens Petersen <petersen(a)redhat.com>
Date: Fri Jan 5 18:45:06 2024 +0800
apply the llvm data alignment patch on all archs
diff --git a/ghc9.8.spec b/ghc9.8.spec
index fe6c989..35ee520 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -404,9 +404,7 @@ rm libffi-tarballs/libffi-*.tar.gz
%endif
%endif
-%ifarch s390x
%patch -P17 -p1 -b .orig
-%endif
#debian
#%%patch -P24 -p1 -b .orig
@@ -829,8 +827,8 @@ make test
%changelog
-* Sat Nov 25 2023 Jens Petersen <petersen(a)redhat.com> - 9.8.1-3
-- s390x: fix llvm alignment in data sections (@stefansf (IBM))
+* Fri Jan 5 2024 Jens Petersen <petersen(a)redhat.com> - 9.8.1-3
+- fix llvm alignment in data sections (@stefansf (IBM))
which should fix certain runtime crashes (#2248097)
* Sun Nov 12 2023 Jens Petersen <petersen(a)redhat.com> - 9.8.1-2
commit 4e2b10344102d1a2f7a8996cc8a5e4732364f04f
Author: Jens Petersen <petersen(a)redhat.com>
Date: Sat Nov 25 09:24:30 2023 +0800
s390x: patch from @stefansf (IBM) to fix llvm alignment of data sections
diff --git a/11662.patch b/11662.patch
new file mode 100644
index 0000000..ce6ca44
--- /dev/null
+++ b/11662.patch
@@ -0,0 +1,31 @@
+From bed85f7bc358fdca4677a3070b94ea544bb9e7ff Mon Sep 17 00:00:00 2001
+From: Stefan Schulze Frielinghaus <stefansf(a)linux.ibm.com>
+Date: Mon, 27 Nov 2023 12:34:47 +0100
+Subject: [PATCH] llvmGen: Align objects in the data section
+
+Objects in the data section may be referenced via tagged pointers.
+Thus, align those objects to a 4- or 8-byte boundary for 32- or 64-bit
+platforms, respectively. Note, this may need to be reconsidered if
+objects with a greater natural alignment requirement are emitted as e.g.
+128-bit atomics.
+
+Fixes #24163.
+---
+ compiler/GHC/CmmToLlvm/Data.hs | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/compiler/GHC/CmmToLlvm/Data.hs b/compiler/GHC/CmmToLlvm/Data.hs
+index caac121413c..5e8912e3bc7 100644
+--- a/compiler/GHC/CmmToLlvm/Data.hs
++++ b/compiler/GHC/CmmToLlvm/Data.hs
+@@ -89,6 +89,7 @@ genLlvmData (sec, CmmStaticsRaw lbl xs) = do
+ align = case sec of
+ Section CString _ -> if (platformArch platform == ArchS390X)
+ then Just 2 else Just 1
++ Section Data _ -> Just $ platformWordSizeInBytes platform
+ _ -> Nothing
+ const = if sectionProtection sec == ReadOnlySection
+ then Constant else Global
+--
+GitLab
+
diff --git a/ghc9.8.spec b/ghc9.8.spec
index e38a875..fe6c989 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -57,7 +57,7 @@ Version: 9.8.1
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -86,8 +86,14 @@ Patch9: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604.patch
# reverts https://github.com/haskell/text/pull/405
Patch13: text2-allow-ghc8-arm.patch
+# unregisterised
Patch16: ghc-hadrian-s390x-rts--qg.patch
+# s390x
+# https://gitlab.haskell.org/ghc/ghc/-/issues/24163
+# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662
+Patch17: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662.patch
+
# Debian patches:
# bad according to upstream
# see eg https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604
@@ -388,9 +394,19 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P13 -p1 -b .orig
%endif
+%ifarch %{ghc_unregisterized_arches}
+%patch -P16 -p1 -b .orig
+%endif
+# remove if epel9 ghc using llvm
%ifarch s390x
+%if %{defined el9}
%patch -P16 -p1 -b .orig
%endif
+%endif
+
+%ifarch s390x
+%patch -P17 -p1 -b .orig
+%endif
#debian
#%%patch -P24 -p1 -b .orig
@@ -813,6 +829,10 @@ make test
%changelog
+* Sat Nov 25 2023 Jens Petersen <petersen(a)redhat.com> - 9.8.1-3
+- s390x: fix llvm alignment in data sections (@stefansf (IBM))
+ which should fix certain runtime crashes (#2248097)
+
* Sun Nov 12 2023 Jens Petersen <petersen(a)redhat.com> - 9.8.1-2
- rebuild with ghc-rpm-macros-2.6.5 to fix prof deps (thanks mimi1vx)
2 months, 1 week
[Report] Packages Restricting Arches
by root
New package excluding arches (1)
============================
- python-ZEO
ExcludeArch: %{ix86}
Package that edited their arches constraints (1)
=============================================
- sigul
was ExclusiveArch: x86_64
is ExclusiveArch: x86_64
ExcludeArch: %{ix86}
Package no longer excluding arches (1)
==================================
- h5py
List of packages currently excluding arches (2133)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- 389-ds-base
ExcludeArch: i686
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- AcetoneISO
ExcludeArch: ppc %{power64} s390x
- Agda
ExcludeArch: %{ix86} armv7hl
- Agda-stdlib
ExcludeArch: armv7hl %{ix86}
- BareBonesBrowserLaunch
ExclusiveArch: %{java_arches} noarch
- CFR
ExclusiveArch: %{java_arches} noarch
- COPASI
ExcludeArch: %{ix86}
- CardManager
ExclusiveArch: %{java_arches} noarch
- CuraEngine
ExcludeArch: %{ix86}
- E
ExcludeArch: %{ix86}
- GAPDoc
ExclusiveArch: %{gap_arches} noarch
- GoldenCheetah
ExclusiveArch: %{qt5_qtwebengine_arches}
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- HPCombi
ExcludeArch: %{ix86}
- IPAddress
ExclusiveArch: %{java_arches} noarch
- IQmol
ExcludeArch: %{ix86}
- JUnitParams
ExclusiveArch: %{java_arches} noarch
- L-function
ExcludeArch: %{ix86}
- LabPlot
ExcludeArch: sparc64 s390 s390x
- MUSIC
ExcludeArch: %{ix86}
- Macaulay2
ExcludeArch: %{ix86} ppc64le
- Maelstrom
ExcludeArch: %{ix86}
- Mars
ExclusiveArch: %{java_arches} noarch
- NiaAML-GUI
ExcludeArch: %{ix86}
- OpenColorIO
ExcludeArch: i686
ExclusiveArch: x86_64 ppc64le
- OpenImageIO
ExcludeArch: i686
ExclusiveArch: x86_64 ppc64le
- OpenMolcas
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- OpenStego
ExclusiveArch: %{java_arches} noarch
- Pencil2D
ExcludeArch: %{ix86}
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- ProDy
ExcludeArch: ppc64 s390x
- R-IRkernel
ExcludeArch: %{ix86}
- R-V8
ExclusiveArch: %{nodejs_arches}
- R-ape
ExcludeArch: %{ix86}
- R-igraph
ExcludeArch: %{ix86}
- R-kernlab
ExcludeArch: %{ix86} s390x
- R-rJava
ExclusiveArch: %{java_arches}
- Random123
ExcludeArch: mips64r2 mips32r2 s390
- RdRand
ExclusiveArch: %{ix86} x86_64
- RediSearch
ExclusiveArch: x86_64
- SLOF
ExclusiveArch: ppc64le
- Singular
ExcludeArch: %{ix86}
- TOPCOM
ExcludeArch: %{ix86}
- VulkanMemoryAllocator
ExcludeArch: %{ix86}
- WoeUSB
ExcludeArch: s390x
- YafaRay
ExclusiveArch: %{ix86} x86_64
- Zim
ExcludeArch: %{ix86}
- aardvark-dns
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- abiword
ExcludeArch: %{ix86}
- abrt-java-connector
ExcludeArch: %{ix86}
- accel-config
ExclusiveArch: %{ix86} x86_64
- acpica-tools
ExcludeArch: i686 armv7hl
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- act
ExcludeArch: %{ix86}
- admeshgui
ExcludeArch: %{ix86}
- aemu
ExcludeArch: %{ix86} %{power64} s390x
- agenda
ExcludeArch: %{ix86}
- ahven
ExclusiveArch: %{GPRbuild_arches}
- algobox
ExclusiveArch: %{qt5_qtwebengine_arches}
- alienarena
ExcludeArch: s390x
- alizams
ExcludeArch: %{power64} %{ix86} s390x
- alt-ergo
ExcludeArch: %{ix86}
- american-fuzzy-lop
ExclusiveArch: x86_64 s390x
- amg4psblas
ExcludeArch: %{ix86}
- android-tools
ExcludeArch: ppc ppc64 s390x ppc64le
- anet
ExclusiveArch: %{GPRbuild_arches}
- ansible-collection-microsoft-sql
ExcludeArch: i686
- ant
ExclusiveArch: %{java_arches} noarch
- ant-antunit
ExclusiveArch: %{java_arches} noarch
- ant-contrib
ExclusiveArch: %{java_arches} noarch
- antlr
ExclusiveArch: %{java_arches}
- antlr3
ExclusiveArch: %{java_arches}
- antlr4-project
ExclusiveArch: %{java_arches}
- antlrworks
ExclusiveArch: %{java_arches} noarch
- aopalliance
ExclusiveArch: %{java_arches} noarch
- apache-commons-beanutils
ExclusiveArch: %{java_arches} noarch
- apache-commons-cli
ExclusiveArch: %{java_arches} noarch
- apache-commons-codec
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections4
ExclusiveArch: %{java_arches} noarch
- apache-commons-compress
ExclusiveArch: %{java_arches} noarch
- apache-commons-configuration
ExclusiveArch: %{java_arches} noarch
- apache-commons-digester
ExclusiveArch: %{java_arches} noarch
- apache-commons-exec
ExclusiveArch: %{java_arches} noarch
- apache-commons-io
ExclusiveArch: %{java_arches} noarch
- apache-commons-jexl
ExclusiveArch: %{java_arches} noarch
- apache-commons-jxpath
ExclusiveArch: %{java_arches} noarch
- apache-commons-lang3
ExclusiveArch: %{java_arches} noarch
- apache-commons-logging
ExclusiveArch: %{java_arches} noarch
- apache-commons-math
ExclusiveArch: %{java_arches} noarch
- apache-commons-modeler
ExclusiveArch: %{java_arches} noarch
- apache-commons-net
ExclusiveArch: %{java_arches} noarch
- apache-commons-parent
ExclusiveArch: %{java_arches} noarch
- apache-commons-pool
ExclusiveArch: %{java_arches} noarch
- apache-commons-vfs
ExclusiveArch: %{java_arches} noarch
- apache-ivy
ExclusiveArch: %{java_arches} noarch
- apache-logging-parent
ExclusiveArch: %{java_arches} noarch
- apache-parent
ExclusiveArch: %{java_arches} noarch
- apache-resource-bundles
ExclusiveArch: %{java_arches} noarch
- apache-sshd
ExclusiveArch: %{java_arches} noarch
- apiguardian
ExclusiveArch: %{java_arches} noarch
- apmd
ExclusiveArch: %{ix86}
- appeditor
ExcludeArch: %{ix86}
- appstream-generator
ExclusiveArch: %{ldc_arches}
- apricots
ExcludeArch: ppc64le aarch64
- apron
ExcludeArch: %{ix86}
- aqute-bnd
ExclusiveArch: %{java_arches} noarch
- arbor
ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
- arc-theme
ExcludeArch: %{ix86}
- args4j
ExclusiveArch: %{java_arches} noarch
- arianna
ExclusiveArch: %{qt6_qtwebengine_arches}
- arm-trusted-firmware
ExclusiveArch: aarch64
- arpwatch
ExcludeArch: %{ix86}
- asahi-installer
ExcludeArch: s390x
- asdcplib
ExcludeArch: %{ix86} %{arm}
- asmjit
ExclusiveArch: aarch64 x86_64
- assertj-core
ExclusiveArch: %{java_arches} noarch
- astromenace
ExcludeArch: ppc64 s390x
- astrometry-tycho2
ExcludeArch: s390x
- asv
ExcludeArch: %{ix86}
- atinject
ExclusiveArch: %{java_arches} noarch
- atlantik
ExcludeArch: %{ix86}
- atomic-queue
ExcludeArch: %{ix86}
- aubit4gl
ExcludeArch: i686 s390x ppc64le
- audacity
ExcludeArch: %{ix86} s390x
- audiocd-kio
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- aunit
ExclusiveArch: %GPRbuild_arches
- auryn
ExcludeArch: %{ix86}
- auto
ExclusiveArch: %{java_arches} noarch
- autolink-java
ExclusiveArch: noarch %{java_arches}
- avgtime
ExclusiveArch: %{ldc_arches}
- aws
ExclusiveArch: %GPRbuild_arches
- awscli2
ExcludeArch: s390x
- azove
ExcludeArch: %{ix86}
- azure-cli
ExclusiveArch: %{java_arches} noarch
- batik
ExclusiveArch: %{java_arches} noarch
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x
- bcc
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl riscv64
- bcel
ExclusiveArch: %{java_arches} noarch
- bcftools
ExcludeArch: s390x
- bcm283x-firmware
ExclusiveArch: aarch64
- beansbinding
ExclusiveArch: %{java_arches} noarch
- bear
ExcludeArch: %{ix86}
- bear-factory
ExcludeArch: ppc64le
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips} riscv64
- beust-jcommander
ExclusiveArch: %{java_arches} noarch
- bibletime
ExclusiveArch: %{java_arches}
- bigloo
ExcludeArch: %{ix86}
- binaryen
ExcludeArch: ppc64 s390x
- binutils
ExcludeArch: aarch64-linux-gnu aarch64-redhat-linux
ExcludeArch: ppc64le-linux-gnu ppc64le-redhat-linux
ExcludeArch: s390x-linux-gnu s390x-redhat-linux
ExcludeArch: x86_64-linux-gnu x86_64-redhat-linux i686-linux-gnu i686-redhat-linux
- biosdevname
ExclusiveArch: %{ix86} x86_64
- blake3
ExcludeArch: %{ix86}
- blender
ExcludeArch: %{ix86} %{arm}
- bless
ExclusiveArch: %mono_arches
- bliss
ExcludeArch: %{ix86}
- blueprint-compiler
ExcludeArch: s390x
- bluez-hcidump
ExcludeArch: s390 s390x
- bochs
ExcludeArch: s390x i686
- bodhi-server
ExclusiveArch: %{golang_arches_future}
- boinc-client
ExcludeArch: s390x
- bolzplatz2006
ExclusiveArch: %{java_arches}
- bootc
ExcludeArch: %{ix86}
- bottles
ExcludeArch: s390x
- bouncycastle
ExclusiveArch: %{java_arches} noarch
- bout++
ExcludeArch: %{ix86}
- bowtie
ExcludeArch: i686 armv7hl
- bowtie2
ExcludeArch: %{ix86} %{arm} s390x
- box64
ExclusiveArch: aarch64 riscv64 ppc64le x86_64
- boxes
ExcludeArch: %{ix86}
- bpftrace
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- brazil
ExclusiveArch: %{java_arches} noarch
- brewtarget
ExcludeArch: %{ix86}
- brial
ExcludeArch: %{ix86}
- bsf
ExclusiveArch: %{java_arches} noarch
- bsh
ExclusiveArch: %{java_arches} noarch
- build-helper-maven-plugin
ExclusiveArch: %{java_arches} noarch
- buildah
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- busybox
ExcludeArch: i686 s390x
- bwping
ExcludeArch: %{ix86}
- byebyebios
ExclusiveArch: x86_64
- byte-buddy
ExclusiveArch: %{java_arches} noarch
- byteman
ExclusiveArch: %{java_arches} noarch
- cachelib
ExclusiveArch: x86_64 aarch64 ppc64le
- caddy
ExclusiveArch: %{golang_arches}
ExclusiveArch: %{golang_arches_future}
- cadical
ExcludeArch: %{ix86}
- caffe
ExclusiveArch: x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64 aarch64 riscv64
- calc
ExcludeArch: s390x
- calibre
ExclusiveArch: aarch64 x86_64
- calligra
ExcludeArch: %{ix86}
- cambozola
ExclusiveArch: %{java_arches} noarch
- canl-java
ExclusiveArch: %{java_arches} noarch
- cantera
ExcludeArch: %{ix86}
- carat
ExcludeArch: %{ix86}
- casc
ExcludeArch: %{ix86}
- cataclysm-dda
ExcludeArch: i686
- catatonit
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- ccdciel
ExclusiveArch: %{fpc_arches}
ExcludeArch: %{ix86}
- ccluster
ExcludeArch: %{ix86}
- cdcollect
ExclusiveArch: %{mono_arches}
- cdi-api
ExclusiveArch: %{java_arches} noarch
- cdrdao
ExcludeArch: s390 s390x
- celestia
ExcludeArch: %{ix86}
- ceph
ExcludeArch: i686 armv7hl
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- ceres-solver
ExcludeArch: ppc64
- cfn-lint
ExcludeArch: %{ix86}
- cglib
ExclusiveArch: %{java_arches} noarch
- cgreen
ExcludeArch: s390x
- chatterino2
ExcludeArch: %{ix86}
- chatty
ExcludeArch: i686
- checkpointctl
ExclusiveArch: %{golang_arches_future}
- chromium
ExclusiveArch: x86_64
ExclusiveArch: x86_64 aarch64
- cinnamon
ExcludeArch: %{ix86}
- cinnamon-control-center
ExcludeArch: %{ix86}
- cinnamon-desktop
ExcludeArch: %{ix86}
- cinnamon-menus
ExcludeArch: %{ix86}
- cinnamon-screensaver
ExcludeArch: %{ix86}
- cinnamon-session
ExcludeArch: %{ix86}
- cinnamon-settings-daemon
ExcludeArch: %{ix86}
- cjdns
ExclusiveArch: %{nodejs_arches}
- cjs
ExcludeArch: %{ix86}
- classloader-leak-test-framework
ExclusiveArch: %{java_arches} noarch
- classpathless-compiler
ExclusiveArch: %{java_arches} noarch
- cld2
ExcludeArch: ppc64 s390x
- clevis-pin-tpm2
ExclusiveArch: %{rust_arches}
- clibs-list
ExcludeArch: %{ix86}
- clojure
ExclusiveArch: %{java_arches} noarch
- clojure-core-specs-alpha
ExclusiveArch: %{java_arches} noarch
- clojure-maven-plugin
ExclusiveArch: %{java_arches} noarch
- clojure-spec-alpha
ExclusiveArch: %{java_arches} noarch
- cloudcompare
ExcludeArch: %{ix86}
- clover2
ExcludeArch: armv7hl
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- coan
ExcludeArch: ppc64 s390x
- coccinelle
ExcludeArch: %{ix86}
- cocoalib
ExcludeArch: %{ix86}
- codeblocks
ExcludeArch: %{ix86}
- codehaus-parent
ExclusiveArch: %{java_arches} noarch
- cohomCalg
ExcludeArch: %{ix86}
- coin-or-Alps
ExcludeArch: %{ix86}
- coin-or-Bcp
ExcludeArch: %{ix86}
- coin-or-Bcps
ExcludeArch: %{ix86}
- coin-or-Blis
ExcludeArch: %{ix86}
- coin-or-Bonmin
ExcludeArch: %{ix86}
- coin-or-CoinMP
ExcludeArch: %{ix86}
- coin-or-Couenne
ExcludeArch: %{ix86}
- coin-or-Dip
ExcludeArch: %{ix86}
- coin-or-FlopC++
ExcludeArch: %{ix86}
- coin-or-HiGHS
ExcludeArch: %{ix86}
- coin-or-Ipopt
ExcludeArch: %{ix86}
- coin-or-OS
ExcludeArch: %{ix86}
- coin-or-SYMPHONY
ExcludeArch: %{ix86}
- coin-or-lemon
ExcludeArch: %{ix86}
- colorful
ExclusiveArch: %{fpc_arches}
- colossus
ExclusiveArch: %{java_arches} noarch
- compiz-plugins-experimental
ExcludeArch: s390 s390x
- conmon
ExclusiveArch: %{golang_arches_future}
- console-image-viewer
ExclusiveArch: %{java_arches} noarch
- containernetworking-plugins
ExclusiveArch: %{golang_arches}
- containers-common
ExclusiveArch: %{golang_arches} noarch
- contour-terminal
ExclusiveArch: x86_64 aarch64
- contractor
ExcludeArch: %{ix86}
- conu
ExcludeArch: ppc64
- coolreader
ExcludeArch: %{ix86}
- coq
ExclusiveArch: %{ocaml_native_compiler}
- corectrl
ExcludeArch: %{ix86}
- cortado
ExclusiveArch: %{java_arches} noarch
- coxeter
ExcludeArch: %{ix86}
- cpp-hocon
ExcludeArch: %{ix86}
- cpu-x
ExclusiveArch: i686 x86_64
- cpufetch
ExclusiveArch: %{arm} aarch64 x86_64 ppc ppc64 ppc64le
- cpuid
ExclusiveArch: %{ix86} x86_64
- cpuinfo
ExclusiveArch: x86_64 aarch64
- cqrlog
ExclusiveArch: %{fpc_arches}
- cramjam-cli
ExcludeArch: %{ix86}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- crash-gcore-command
ExclusiveArch: aarch64 ppc64le x86_64
- crash-trace-command
ExclusiveArch: aarch64 ppc64le s390x x86_64
- credentials-fetcher
ExclusiveArch: x86_64 aarch64 s390x
- crest
ExcludeArch: s390x
- cri-o
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- cri-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- crun
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le riscv64 s390x x86_64
- cryfs
ExcludeArch: i686
- cryptlib
ExclusiveArch: x86_64 aarch64 ppc64le
- crypto-policies
ExclusiveArch: %{java_arches} noarch
- cryptobone
ExclusiveArch: x86_64 ppc64le aarch64
- cryptominisat
ExcludeArch: %{ix86}
- csslint
ExclusiveArch: %{nodejs_arches} noarch
- cura
ExcludeArch: %{ix86}
- cura-fdm-materials
ExcludeArch: %{ix86}
- cvc5
ExcludeArch: %{ix86}
- cxsc
ExcludeArch: %{ix86}
- daggy
ExcludeArch: s390x
- dapl
ExcludeArch: s390, armv7hl
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExcludeArch: armv7hl i686 s390x aarch64
- dbus-parsec
ExcludeArch: ppc64le s390x
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- ddccontrol
ExcludeArch: s390 s390x
- ddcutil
ExcludeArch: s390 s390x
- ddd
ExcludeArch: %{ix86}
- ddnet
ExcludeArch: s390x
- decentxml
ExclusiveArch: %{java_arches} noarch
- deepin-daemon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-desktop-schemas
ExclusiveArch: %{go_arches}
- dhall
ExcludeArch: %{ix86}
- dhall-json
ExcludeArch: %{ix86}
- dialect
ExcludeArch: s390x
- diffoscope
ExcludeArch: %{ix86}
- dippi
ExcludeArch: %{ix86}
- directory-maven-plugin
ExclusiveArch: %{java_arches} noarch
- dirgra
ExclusiveArch: %{java_arches} noarch
- disruptor
ExclusiveArch: %{java_arches} noarch
- ditaa
ExclusiveArch: %{java_arches} noarch
- dl_poly
ExcludeArch: i686
- dlib
ExcludeArch: ppc64le
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: x86_64
- dnsdist
ExcludeArch: %{ix86} #1994125
ExcludeArch: armv7hl #1994125
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dogtag-pki
ExclusiveArch: %{java_arches}
ExcludeArch: i686
- dolfin
ExcludeArch: %{ix86}
- dolphin-emu
ExclusiveArch: x86_64 aarch64
- dom4j
ExclusiveArch: %{java_arches} noarch
- dosbox-staging
ExcludeArch: %{ix86}
- dotnet6.0
ExclusiveArch: aarch64 x86_64 s390x
ExclusiveArch: x86_64
- dotnet8.0
ExclusiveArch: aarch64 ppc64le s390x x86_64
- doublecmd
ExclusiveArch: %{ix86} x86_64
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dragonbox
ExcludeArch: %{ix86}
- drat2er
ExcludeArch: %{ix86}
- dub
ExclusiveArch: %{ldc_arches}
- dvdauthor
ExcludeArch: %{ix86}
- dvgrab
ExcludeArch: s390 s390x
- dxvk-native
ExclusiveArch: %{ix86} x86_64
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc64le aarch64
- e-antic
ExcludeArch: %{ix86}
- e00compr
ExcludeArch: %{ix86}
- e3
ExclusiveArch: %{ix86} x86_64
- easymock
ExclusiveArch: %{java_arches} noarch
- eccodes
ExcludeArch: i686
- ecj
ExclusiveArch: %{java_arches} noarch
- eclib
ExcludeArch: %{ix86}
- eclipse-swt
ExclusiveArch: %{java_arches}
- ed25519-java
ExclusiveArch: %{java_arches} noarch
- edac-utils
ExcludeArch: %{ix86}
- edflib
ExcludeArch: s390x %{ix86}
- edk2
ExclusiveArch: x86_64 aarch64 riscv64
- edwin-fonts
ExcludeArch: %{ix86}
- eegdev
ExcludeArch: %{ix86}
- eegview
ExcludeArch: %{ix86}
- efax
ExcludeArch: s390 s390x
- efibootmgr
ExclusiveArch: %{efi}
- efifs
ExclusiveArch: %{efi}
- efitools
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- electron-cash
ExcludeArch: %{ix86}
- electrum
ExcludeArch: %{ix86}
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 aarch64 %{arm} %{power64}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- emacs-common-proofgeneral
ExcludeArch: %{ix86}
- emacs-company-mode
ExcludeArch: %{ix86}
- emacs-iedit
ExcludeArch: %{ix86}
- emacs-slime
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- embree
ExclusiveArch: aarch64 x86_64
- embree3
ExclusiveArch: aarch64 x86_64
- enjarify
ExclusiveArch: %{java_arches} noarch
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- eot-utils
ExcludeArch: %{ix86}
- ergo
ExcludeArch: %{ix86}
- eric
ExclusiveArch: %{qt6_qtwebengine_arches} noarch
- erlang-corba
ExclusiveArch: %{java_arches}
- esmi_ib_library
ExclusiveArch: x86_64
- espresso
ExcludeArch: s390x i686 armv7hl
- eth-tools
ExclusiveArch: x86_64
- exec-maven-plugin
ExclusiveArch: %{java_arches} noarch
- external-editor-revived
ExclusiveArch: %{rust_arches}
- extra-enforcer-rules
ExclusiveArch: %{java_arches} noarch
- fasterxml-oss-parent
ExclusiveArch: %{java_arches} noarch
- fb303
ExclusiveArch: x86_64 aarch64 ppc64le
- fbreader
ExcludeArch: %{ix86}
ExcludeArch: armv7hl
- fbthrift
ExclusiveArch: x86_64 aarch64 ppc64le
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fcitx5-mozc
ExcludeArch: ppc ppc64 sparcv9 sparc64 s390x
- fcoe-utils
ExcludeArch: ppc s390
ExcludeArch: %{ix86}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
ExcludeArch: ppc64
- felix-parent
ExclusiveArch: %{java_arches} noarch
- felix-utils
ExclusiveArch: %{java_arches} noarch
- fernflower
ExclusiveArch: %{java_arches} noarch
- fes
ExclusiveArch: %{ix86} x86_64
- fido-device-onboard
ExcludeArch: %{ix86}
- filedrop
ExclusiveArch: %{java_arches} noarch
- filezilla
ExcludeArch: s390x
- firecracker
ExclusiveArch: aarch64 x86_64
- firefox
ExcludeArch: i686
- fishbowl
ExclusiveArch: %{java_arches} noarch
- fizz
ExclusiveArch: x86_64 aarch64 ppc64le
- flang
ExcludeArch: i686 s390x
- flashrom
ExcludeArch: s390 s390x
- flatbuffers
ExcludeArch: %{ix86}
- flatpak
ExcludeArch: %{ix86}
- flatpak-builder
ExcludeArch: %{ix86}
- flatpak-module-tools
ExcludeArch: i386 i686
- flexmark-java
ExclusiveArch: noarch %{java_arches}
- flickcurl
ExcludeArch: %{ix86}
- flocq
ExclusiveArch: %{ocaml_native_compiler}
- floppy-support
ExcludeArch: %{arm} aarch64 s390x
- florist
ExclusiveArch: %{GPRbuild_arches}
- flterm
ExcludeArch: s390 s390x sparcv9
- fluent-bit
ExclusiveArch: x86_64 aarch64
- flute
ExclusiveArch: %{java_arches} noarch
- fmidi
ExcludeArch: %{ix86}
- folly
ExclusiveArch: x86_64 aarch64 ppc64le
- fop
ExclusiveArch: %{java_arches} noarch
- forge-parent
ExclusiveArch: %{java_arches} noarch
- fotoxx
ExcludeArch: %{ix86}
- fpc
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 ppc64le
- fprintd
ExcludeArch: s390 s390x
- fractal
ExcludeArch: %{ix86}
- fragments
ExcludeArch: %{ix86}
- frama-c
ExclusiveArch: %{ocaml_native_compiler}
- free42
ExcludeArch: %{ix86}
- freecol
ExclusiveArch: %{java_arches} noarch
- freedink
ExcludeArch: s390x
- freedink-dfarc
ExcludeArch: s390x
- freefem++
ExcludeArch: %{ix86}
- freemarker
ExclusiveArch: %{java_arches} noarch
- freerouting
ExclusiveArch: %{java_arches} noarch
- freetennis
ExcludeArch: sparc64 s390 s390x %{ix86}
- frescobaldi
ExclusiveArch: %{qt5_qtwebengine_arches}
- frysk
ExclusiveArch: x86_64 ppc64
- fuse-overlayfs
ExclusiveArch: %{arm64} ppc64le s390x x86_64 riscv64
- fusesource-pom
ExclusiveArch: %{java_arches} noarch
- fwts
ExclusiveArch: x86_64 %{arm} aarch64 s390x riscv64 %{power64}
- fwupd-efi
ExclusiveArch: x86_64 aarch64
- ga
ExcludeArch: %{ix86}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- gambas3
ExcludeArch: i686
- gap
ExclusiveArch: %{gap_arches}
- gap-pkg-ace
ExclusiveArch: %{gap_arches}
- gap-pkg-aclib
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-alnuth
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-atlasrep
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-autodoc
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-automata
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-autpgrp
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-browse
ExclusiveArch: %{gap_arches}
- gap-pkg-caratinterface
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-circle
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-cohomolo
ExclusiveArch: %{gap_arches}
- gap-pkg-congruence
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-corelg
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-crime
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-crisp
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-crypting
ExclusiveArch: %{gap_arches}
- gap-pkg-cryst
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-crystcat
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-ctbllib
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-curlinterface
ExclusiveArch: %{gap_arches}
- gap-pkg-cvec
ExclusiveArch: %{gap_arches}
- gap-pkg-datastructures
ExclusiveArch: %{gap_arches}
- gap-pkg-design
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-digraphs
ExclusiveArch: %{gap_arches}
- gap-pkg-edim
ExclusiveArch: %{gap_arches}
- gap-pkg-factint
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-ferret
ExclusiveArch: %{gap_arches}
- gap-pkg-fga
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-fining
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-float
ExclusiveArch: %{gap_arches}
- gap-pkg-format
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-forms
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-fr
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-francy
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-gbnp
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-genss
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-grape
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-groupoids
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-grpconst
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-guava
ExclusiveArch: %{gap_arches}
- gap-pkg-hap
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-hapcryst
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-hecke
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-images
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-io
ExclusiveArch: %{gap_arches}
- gap-pkg-irredsol
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-json
ExclusiveArch: %{gap_arches}
- gap-pkg-jupyterkernel
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-jupyterviz
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-laguna
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-liealgdb
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-liepring
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-liering
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-loops
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-lpres
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-mapclass
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-nautytracesinterface
ExclusiveArch: %{gap_arches}
- gap-pkg-nq
ExclusiveArch: %{gap_arches}
- gap-pkg-openmath
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-orb
ExclusiveArch: %{gap_arches}
- gap-pkg-polenta
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-polycyclic
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-polymaking
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-primgrp
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-profiling
ExclusiveArch: %{gap_arches}
- gap-pkg-qpa
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-quagroup
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-radiroot
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-recog
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-repsn
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-resclasses
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-scscp
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-semigroups
ExclusiveArch: %{gap_arches}
- gap-pkg-singular
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-sla
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-smallgrp
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-smallsemi
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-sonata
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-sophus
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-spinsym
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-standardff
ExclusiveArch: %{gap_arches}
- gap-pkg-tomlib
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-toric
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-transgrp
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-utils
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-uuid
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-xmod
ExclusiveArch: %{gap_arches} noarch
- gap-pkg-zeromqinterface
ExclusiveArch: %{gap_arches}
- gappa
ExcludeArch: %{ix86}
- gappalib-coq
ExclusiveArch: %{ocaml_native_compiler}
- gauche
ExcludeArch: armv7hl
- gbrainy
ExclusiveArch: %mono_arches
- gcl
ExcludeArch: s390x
- gdb
ExclusiveArch: %{ix86} x86_64
ExcludeArch: aarch64
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- gdl
ExcludeArch: %{ix86}
- gearhead1
ExclusiveArch: %{fpc_arches}
- gearhead2
ExclusiveArch: %{fpc_arches}
- gearmand
ExcludeArch: ppc
- geeqie
ExcludeArch: %{ix86}
- gfan
ExcludeArch: %{ix86}
- gfs2-utils
ExcludeArch: %{ix86}
- ghc
ExcludeArch: armv7hl
- ghc-cborg
ExcludeArch: %{ix86}
- ghc-cborg-json
ExcludeArch: %{ix86}
- ghc-gi-gtk
ExcludeArch: armv7hl
- ghc-serialise
ExcludeArch: %{ix86}
- ghc9.2
ExcludeArch: armv7hl
- ghc9.4
ExcludeArch: armv7hl
- ghc9.6
ExcludeArch: armv7hl
- ghc9.8
ExcludeArch: armv7hl
- ghdl
ExclusiveArch: %{GNAT_arches}
ExcludeArch: armv7hl %{ix86}
- ghostwriter
ExclusiveArch: %{qt6_qtwebengine_arches}
- gimp-fourier-plugin
ExcludeArch: %{ix86}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- git-lfs
ExcludeArch: %{ix86}
- git-octopus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- gitqlient
ExclusiveArch: %{qt5_qtwebengine_arches}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- gkrellm-wifi
ExcludeArch: s390 s390x
- glava
ExcludeArch: %{ix86}
- glibc32
ExclusiveArch: x86_64
- glibd
ExclusiveArch: %{ldc_arches}
- gloo
ExcludeArch: i686
- glycin-loaders
ExcludeArch: %{ix86}
- gmult
ExcludeArch: %{ix86}
- gn
ExcludeArch: %{ix86}
- gnatcoll
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-bindings
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-db
ExclusiveArch: %{GPRbuild_arches}
ExcludeArch: s390x
- gnofract4d
ExcludeArch: %{ix86}
- gnome-applets
ExcludeArch: %{ix86}
- gnome-bluetooth
ExcludeArch: s390 s390x
- gnome-bluetooth3.34
ExcludeArch: s390 s390x
- gnome-boxes
ExclusiveArch: x86_64
- gnome-chemistry-utils
ExcludeArch: %{ix86}
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- gnome-flashback
ExcludeArch: %{ix86}
- gnome-hexgl
ExcludeArch: i686
- gnome-initial-setup
ExcludeArch: %{ix86}
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-monitor-config
ExcludeArch: %{ix86}
- gnome-panel
ExcludeArch: %{ix86}
- gnome-rdp
ExclusiveArch: %{mono_arches}
ExcludeArch: %{ix86}
- gnome-session
ExcludeArch: %{ix86}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-shell
ExcludeArch: %{ix86}
- gnome-software
ExcludeArch: %{ix86}
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnome-terminal
ExcludeArch: %{ix86}
- gnu-efi
ExclusiveArch: %{efi}
- gnucash
ExcludeArch: ppc64 s390x
- gnumeric
ExcludeArch: %{ix86}
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godot
ExcludeArch: s390x
- godot3
ExcludeArch: ppc64 ppc64le s390x
- goffice
ExcludeArch: %{ix86}
- golang
ExclusiveArch: %{golang_arches}
- golang-entgo-ent
ExcludeArch: %{arm32} %{ix86}
- golang-github-ebitengine-purego
ExcludeArch: ppc64le s390x
- golang-github-elliotchance-orderedmap
ExcludeArch: aarch64
ExcludeArch: ppc64le
ExcludeArch: s390x
- golang-github-facebookincubator-nvdtools
ExcludeArch: i686 armv7hl
- golang-github-google-goterm
ExcludeArch: ppc64le s390x
- golang-helm-3
ExcludeArch: armv7hl aarch64
- golang-tinygo-x-llvm
ExcludeArch: %{ix86}
- goldendict-ng
ExclusiveArch: aarch64 x86_64
- google-compute-engine-guest-configs
ExcludeArch: %{ix86}
- google-cpu_features
ExcludeArch: s390x
- google-gson
ExclusiveArch: %{java_arches} noarch
- google-guest-agent
ExcludeArch: ppc64le
ExcludeArch: s390x
- google-guice
ExclusiveArch: %{java_arches} noarch
- google-osconfig-agent
ExcludeArch: ppc64le s390x
- gotcha
ExcludeArch: %{ix86}
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- gource
ExcludeArch: ppc64le
- goverlay
ExclusiveArch: %{fpc_arches}
- gpaste
ExcludeArch: %{ix86}
- gpaw
ExcludeArch: ppc64
ExcludeArch: %{ix86}
- gperftools
ExcludeArch: s390
- gprbuild
ExclusiveArch: %{GPRbuild_arches}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha aarch64
- gr-air-modes
ExcludeArch: %{ix86}
- grafana
ExclusiveArch: %{grafana_arches}
- grafana-pcp
ExclusiveArch: %{grafanapcp_arches}
- greenboot
ExcludeArch: s390x
- gretl
ExcludeArch: %{ix86}
- gromacs
ExcludeArch: i686 armv7hl s390x
- grub-customizer
ExcludeArch: s390 s390x %{arm}
- grub2
ExcludeArch: s390 s390x %{ix86}
- grub2-breeze-theme
ExcludeArch: s390 s390x %{arm}
- grubby
ExcludeArch: %{ix86}
- gsequencer
ExcludeArch: i686
- gthree
ExcludeArch: i686
- gthumb
ExcludeArch: s390x
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- gtkhash
ExcludeArch: %{ix86}
- gtkwave
ExcludeArch: s390x
- guava
ExclusiveArch: %{java_arches} noarch
- gudev-sharp
ExclusiveArch: %mono_arches
- guestfs-tools
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- gvisor-tap-vsock
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- hamcrest
ExclusiveArch: %{java_arches} noarch
- harec
ExclusiveArch: x86_64 aarch64 riscv64
- harmonyseq
ExcludeArch: %{ix86}
- harvey
ExcludeArch: %{ix86}
- hashcat
ExcludeArch: ppc64 s390x
- hawtjni
ExclusiveArch: %{java_arches} noarch
- haxe
ExcludeArch: %{ix86}
- hcloud
ExcludeArch: %{ix86}
- heaptrack
ExcludeArch: s390 s390x
- hedgewars
ExclusiveArch: %{fpc_arches}
ExcludeArch: ppc64le
- hevea
ExcludeArch: %{ix86}
- hibernate-jpa-2.0-api
ExclusiveArch: %{java_arches} noarch
- hid4java
ExclusiveArch: %{java_arches} noarch
- highfive
ExcludeArch: %{ix86}
- hipblas
ExclusiveArch: x86_64
- hipcub
ExclusiveArch: x86_64
- hipfft
ExclusiveArch: x86_64
- hipify
ExclusiveArch: x86_64
- hiprand
ExclusiveArch: x86_64
- hipsolver
ExclusiveArch: x86_64
- hipsparse
ExclusiveArch: x86_64
- hmmer
ExcludeArch: aarch64 ppc64le s390x
- honggfuzz
ExcludeArch: %{arm} %{power64} s390 s390x
- howl
ExcludeArch: ppc64le s390x
ExcludeArch: %{ix86}
- hsakmt
ExclusiveArch: x86_64 aarch64 ppc64le
- httpcomponents-client
ExclusiveArch: %{java_arches} noarch
- httpcomponents-core
ExclusiveArch: %{java_arches} noarch
- httpcomponents-project
ExclusiveArch: %{java_arches} noarch
- hydrapaper
ExcludeArch: s390x
- hyena
ExclusiveArch: %{mono_arches}
- hyperhdr
ExcludeArch: %{ix86}
- hyperrogue
ExcludeArch: armv7hl
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64 aarch64
- hyprland
ExcludeArch: %{ix86}
- hyprlang
ExcludeArch: %{ix86}
- i2c-tools
ExcludeArch: s390 s390x
- ibsim
ExcludeArch: s390 %{arm}
- ibus-typing-booster
ExcludeArch: ppc64 s390x
- icecat
ExcludeArch: %{arm}
ExcludeArch: s390x
- icedtea-web
ExclusiveArch: %{java_arches}
- icu4j
ExclusiveArch: %{java_arches} noarch
- iir1
ExcludeArch: %{ix86}
- ilua
ExcludeArch: %{ix86}
- imagej
ExclusiveArch: %{java_arches} noarch
- imhex
ExclusiveArch: x86_64 %{arm64}
- iml
ExcludeArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cm-compiler
ExclusiveArch: i686 x86_64
- intel-cmt-cat
ExclusiveArch: x86_64
- intel-compute-runtime
ExclusiveArch: x86_64
- intel-gmmlib
ExcludeArch: s390x ppc64le
- intel-igc
ExclusiveArch: x86_64
- intel-ipp-crypto-mb
ExclusiveArch: x86_64
- intel-ipsec-mb
ExclusiveArch: x86_64
- intel-lpmd
ExclusiveArch: x86_64
- intel-media-driver-free
ExclusiveArch: i686 x86_64
- intel-mediasdk
ExclusiveArch: x86_64
- intel-metee
ExclusiveArch: x86_64
- intel-undervolt
ExclusiveArch: i386 x86_64
- ioport
ExclusiveArch: %{ix86} x86_64
- ipe
ExcludeArch: %{ix86}
- ipmctl
ExclusiveArch: x86_64
- irda-utils
ExcludeArch: s390 s390x
- irqbalance
ExcludeArch: s390 s390x
- isa-l
ExcludeArch: %{ix86}
- ispc
ExclusiveArch: x86_64 aarch64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- iyfct
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- jFormatString
ExclusiveArch: %{java_arches} noarch
- jack-mixer
ExcludeArch: armv7hl
ExcludeArch: i686
- jackson-annotations
ExclusiveArch: %{java_arches} noarch
- jackson-bom
ExclusiveArch: %{java_arches} noarch
- jackson-core
ExclusiveArch: %{java_arches} noarch
- jackson-databind
ExclusiveArch: %{java_arches} noarch
- jackson-dataformats-binary
ExclusiveArch: %{java_arches} noarch
- jackson-dataformats-text
ExclusiveArch: %{java_arches} noarch
- jackson-jaxrs-providers
ExclusiveArch: %{java_arches} noarch
- jackson-modules-base
ExclusiveArch: %{java_arches} noarch
- jackson-parent
ExclusiveArch: %{java_arches} noarch
- jacoco
ExclusiveArch: %{java_arches} noarch
- jacop
ExclusiveArch: %{java_arches} noarch
- jakarta-activation
ExclusiveArch: %{java_arches} noarch
- jakarta-activation1
ExclusiveArch: %{java_arches} noarch
- jakarta-annotations
ExclusiveArch: %{java_arches} noarch
- jakarta-el
ExclusiveArch: %{java_arches} noarch
- jakarta-interceptors
ExclusiveArch: %{java_arches} noarch
- jakarta-json
ExclusiveArch: %{java_arches} noarch
- jakarta-mail
ExclusiveArch: %{java_arches} noarch
- jakarta-mail1
ExclusiveArch: %{java_arches} noarch
- jakarta-oro
ExclusiveArch: %{java_arches} noarch
- jakarta-saaj
ExclusiveArch: %{java_arches} noarch
- jakarta-server-pages
ExclusiveArch: %{java_arches} noarch
- jakarta-servlet
ExclusiveArch: %{java_arches} noarch
- jakarta-xml-ws
ExclusiveArch: %{java_arches} noarch
- janino
ExclusiveArch: %{java_arches} noarch
- jansi
ExclusiveArch: %{java_arches}
- jansi-native
ExclusiveArch: %{java_arches}
- jansi1
ExclusiveArch: %{java_arches} noarch
- java-1.8.0-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-1.8.0-openjdk-aarch32
ExclusiveArch: %{arm}
- java-1.8.0-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-11-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-11-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-17-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-17-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-21-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-21-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-diff-utils
ExclusiveArch: %{java_arches} noarch
- java-dirq
ExclusiveArch: %{java_arches} noarch
- java-jd-decompiler
ExclusiveArch: %{java_arches} noarch
- java-latest-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-latest-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-runtime-decompiler
ExclusiveArch: %{java_arches} noarch
- java-scrypt
ExclusiveArch: %{java_arches} noarch
- java_cup
ExclusiveArch: %{java_arches} noarch
- javacc
ExclusiveArch: %{java_arches} noarch
- javacc-maven-plugin
ExclusiveArch: %{java_arches} noarch
- javaewah
ExclusiveArch: %{java_arches} noarch
- javapackages-bootstrap
ExclusiveArch: %{java_arches}
- javaparser
ExclusiveArch: %{java_arches} noarch
- javapoet
ExclusiveArch: %{java_arches} noarch
- javassist
ExclusiveArch: %{java_arches} noarch
- jaxb
ExclusiveArch: %{java_arches} noarch
- jaxb-api
ExclusiveArch: %{java_arches} noarch
- jaxb-api2
ExclusiveArch: %{java_arches} noarch
- jaxb-dtd-parser
ExclusiveArch: %{java_arches} noarch
- jaxb-fi
ExclusiveArch: %{java_arches} noarch
- jaxb-istack-commons
ExclusiveArch: %{java_arches} noarch
- jaxb-stax-ex
ExclusiveArch: %{java_arches} noarch
- jaxen
ExclusiveArch: %{java_arches} noarch
- jblas
ExcludeArch: %{ix86}
- jboss-jaxrs-2.0-api
ExclusiveArch: %{java_arches} noarch
- jboss-logging
ExclusiveArch: %{java_arches} noarch
- jboss-logging-tools
ExclusiveArch: %{java_arches} noarch
- jboss-parent
ExclusiveArch: %{java_arches} noarch
- jchardet
ExclusiveArch: %{java_arches} noarch
- jcip-annotations
ExclusiveArch: %{java_arches} noarch
- jctools
ExclusiveArch: %{java_arches} noarch
- jcuber
ExclusiveArch: %{java_arches} noarch
- jdeparser
ExclusiveArch: %{java_arches} noarch
- jdepend
ExclusiveArch: %{java_arches} noarch
- jdependency
ExclusiveArch: %{java_arches} noarch
- jdom
ExclusiveArch: %{java_arches} noarch
- jdom2
ExclusiveArch: %{java_arches} noarch
- jedit
ExclusiveArch: %{java_arches} noarch
- jericho-html
ExclusiveArch: %{java_arches} noarch
- jetbrains-annotations
ExclusiveArch: noarch %{java_arches}
- jetty
ExclusiveArch: %{java_arches} noarch
- jflex
ExclusiveArch: %{java_arches} noarch
- jfreechart
ExclusiveArch: %{java_arches} noarch
- jgit
ExclusiveArch: %{java_arches} noarch
- jglobus
ExclusiveArch: %{java_arches} noarch
- jgoodies-common
ExclusiveArch: %{java_arches} noarch
- jgoodies-forms
ExclusiveArch: %{java_arches} noarch
- jgoodies-looks
ExclusiveArch: %{java_arches} noarch
- jigawatts
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- jline
ExclusiveArch: %{java_arches}
- jline2
ExclusiveArch: %{java_arches} noarch
- jmock
ExclusiveArch: %{java_arches} noarch
- jmol
ExclusiveArch: %{java_arches} noarch
- jna
ExclusiveArch: %{java_arches}
- jneuroml-core
ExclusiveArch: %{java_arches} noarch
- jni-inchi
ExclusiveArch: %{java_arches}
- jo
ExcludeArch: %{ix86}
- jol
ExclusiveArch: %{java_arches} noarch
- jolokia-jvm-agent
ExclusiveArch: %{java_arches} noarch
- jopt-simple
ExclusiveArch: %{java_arches} noarch
- jorbis
ExclusiveArch: %{java_arches} noarch
- jowl
ExclusiveArch: %{nodejs_arches} noarch
- jpanoramamaker
ExclusiveArch: %{java_arches} noarch
- jpilot
ExcludeArch: s390, s390x
- jpilot-backup
ExcludeArch: s390 s390x
- jsch
ExclusiveArch: %{java_arches} noarch
- jsch-agent-proxy
ExclusiveArch: %{java_arches} noarch
- json_simple
ExclusiveArch: %{java_arches} noarch
- jsoup
ExclusiveArch: %{java_arches} noarch
- jsr-305
ExclusiveArch: %{java_arches} noarch
- jss
ExclusiveArch: %{java_arches}
ExcludeArch: i686
- jssc
ExclusiveArch: %{java_arches}
- jtidy
ExclusiveArch: %{java_arches} noarch
- julia
ExclusiveArch: x86_64
- junit
ExclusiveArch: %{java_arches} noarch
- junit5
ExclusiveArch: %{java_arches} noarch
- juniversalchardet
ExclusiveArch: %{java_arches} noarch
- jzlib
ExclusiveArch: %{java_arches} noarch
- kaffeine
ExcludeArch: %{ix86}
- kaidan
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- kata-containers
ExcludeArch: %{arm} %{ix86} s390 s390x
- kawa
ExcludeArch: i686
- kchmviewer
ExclusiveArch: %{qt5_qtwebengine_arches}
- kcm_wacomtablet
ExcludeArch: s390 s390x
- kcov
ExcludeArch: s390 s390x
- kdenlive
ExcludeArch: %{ix86}
- keepass
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- keepassxc
ExcludeArch: s390x
- kernel
ExclusiveArch: noarch x86_64 s390x aarch64 ppc64le
ExclusiveArch: noarch i386 i686 x86_64 s390x aarch64 ppc64le
- kernelshark
ExcludeArch: %{ix86} %{arm}
- keylime-agent-rust
ExclusiveArch: %{rust_arches}
- keyring-ima-signer
ExclusiveArch: %{rust_arches}
- kf5-akonadi-search
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kblog
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarcore
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarutils
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kitinerary
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-ktnef
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-libkdcraw
ExclusiveArch: x86_64 ppc64le %{arm}
- khelpcenter
ExclusiveArch: %{qt6_qtwebengine_arches}
- kicad
ExclusiveArch: x86_64 aarch64 ppc64le
- kitty
ExcludeArch: %{ix86}
- kiwix-desktop
ExclusiveArch: %{qt5_qtwebengine_arches}
- knot-resolver
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kokkos
ExcludeArch: i686 armv7hl
- komikku
ExcludeArch: s390x
- kpilot
ExcludeArch: s390 s390x
- krita
ExcludeArch: %{ix86}
- ksensors
ExcludeArch: s390 s390x
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- ladspa-autotalent-plugins
ExcludeArch: %{ix86}
- laf-plugin
ExclusiveArch: %{java_arches} noarch
- latte-integrale
ExcludeArch: %{ix86}
- lazarus
ExclusiveArch: %{fpc_arches}
- lazpaint
ExclusiveArch: %{fpc_arches}
- lcd4linux
ExcludeArch: s390 s390x
- ldapjdk
ExclusiveArch: %{java_arches} noarch
- ldc
ExclusiveArch: %{ldc_arches} ppc64le
- ldc1.32
ExclusiveArch: %{ldc_arches} ppc64le
- ledmon
ExcludeArch: %{ix86}
- leland-fonts
ExcludeArch: %{ix86}
- lfortran
ExclusiveArch: x86_64
- lfsc
ExcludeArch: %{ix86}
- lib3mf
ExcludeArch: %{ix86}
- libCombine
ExcludeArch: %{ix86}
- libaiff
ExcludeArch: %{ix86}
- libarcus
ExcludeArch: %{ix86}
- libarrow
ExcludeArch: %{ix86} %{arm}
- libavc1394
ExcludeArch: s390 s390x
- libbase
ExclusiveArch: %{java_arches} noarch
- libcamera
ExcludeArch: s390x ppc64le
- libcamera-apps
ExcludeArch: %{power64} s390x
- libcint
ExcludeArch: %{power64}
- libcircle
ExcludeArch: %{ix86}
- libcpuid
ExcludeArch: aarch64 %arm ppc64le ppc64 s390x
- libcrystalhd
ExcludeArch: s390 s390x
- libcxl
ExclusiveArch: %{power64}
- libcxx
ExcludeArch: ppc64 ppc64le
- libdc1394
ExcludeArch: s390 s390x
- libdfp
ExclusiveArch: ppc ppc64 ppc64le s390 s390x x86_64
- libdigidocpp
ExcludeArch: %{ix86}
- libdispatch
ExclusiveArch: x86_64 aarch64 ppc64le
- libffado
ExcludeArch: s390 s390x
- libfilezilla
ExcludeArch: s390x
- libfonts
ExclusiveArch: %{java_arches} noarch
- libformula
ExclusiveArch: %{java_arches} noarch
- libfprint
ExcludeArch: s390 s390x
- libguestfs
ExcludeArch: %{ix86}
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- libhomfly
ExcludeArch: %{ix86}
- libibcommon
ExcludeArch: s390 s390x
- libica
ExclusiveArch: s390 s390x
- libiec61883
ExcludeArch: s390 s390x
- libinsane
ExcludeArch: %{ix86}
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libkrun
ExclusiveArch: x86_64 aarch64
- libkrunfw
ExclusiveArch: x86_64 aarch64
- liblayout
ExclusiveArch: %{java_arches} noarch
- libldac
ExcludeArch: s390x
- libloader
ExclusiveArch: %{java_arches} noarch
- libnuml
ExcludeArch: %{ix86}
- libnxz
ExclusiveArch: ppc64le
- libobjc2
ExcludeArch: armv7hl i686 ppc64le s390x
- libocxl
ExclusiveArch: ppc64le
- libomp
ExcludeArch: s390x
- libopenshot
ExcludeArch: ppc64le
- libopenshot-audio
ExcludeArch: ppc64le
- liborc
ExcludeArch: i686 armv7hl
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- libraw1394
ExcludeArch: s390 s390x
- libreoffice
ExcludeArch: %{ix86}
- libreoffice-TexMaths
ExclusiveArch: %{java_arches}
ExcludeArch: aarch64 s390x
- librepository
ExclusiveArch: %{java_arches} noarch
- libretro-desmume2015
ExclusiveArch: i686 x86_64
- libretro-pcsx-rearmed
ExcludeArch: armv7hl
- librtas
ExclusiveArch: %{power64}
- libsavitar
ExcludeArch: %{ix86}
- libsedml
ExcludeArch: %{ix86}
- libsemigroups
ExcludeArch: %{ix86}
- libserializer
ExclusiveArch: %{java_arches} noarch
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 %{ix86}
- libsonata
ExcludeArch: %{ix86}
- libtracecmd
ExcludeArch: %{ix86} %{arm}
- libunibreak
ExcludeArch: %{ix86}
- libunicode
ExclusiveArch: x86_64 aarch64
- libunifex
ExcludeArch: i686
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} s390x %{ix86} x86_64 riscv64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libva-nvidia-driver
ExclusiveArch: %{x86_64} %{ix86} %{arm64} ppc64le
- libvirt-java
ExclusiveArch: %{java_arches} noarch
- libvma
ExclusiveArch: x86_64 ppc64le ppc64 aarch64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libvpl
ExclusiveArch: x86_64
- libx86
ExcludeArch: ppc %{power64} s390 s390x %{sparc} aarch64 armv7hl
- libxsmm
ExclusiveArch: x86_64
- libzdnn
ExclusiveArch: s390x
- libzfcphbaapi
ExclusiveArch: s390 s390x
- libzpc
ExclusiveArch: s390x
- liferea
ExcludeArch: %{ix86}
- linbox
ExcludeArch: %{ix86}
- linux-system-roles
ExcludeArch: i686
- liquidctl
ExcludeArch: s390 s390x
- lite-xl
ExcludeArch: %{ix86}
- lld
ExcludeArch: s390x
- lld13
ExcludeArch: s390x
- lld15
ExcludeArch: s390x
- lld16
ExcludeArch: s390x
- llhttp
ExclusiveArch: %{nodejs_arches}
- llvm-bolt
ExcludeArch: s390x ppc64le i686
- log4j
ExclusiveArch: %{java_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- loupe
ExcludeArch: %{ix86}
- love
ExcludeArch: ppc ppc64 s390x
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- lucene
ExclusiveArch: %{java_arches} noarch
- luckybackup
ExcludeArch: %{ix86}
- lujavrite
ExclusiveArch: %{java_arches}
- luminance-hdr
ExcludeArch: %{ix86}
- lusol
ExcludeArch: %{ix86}
- luxcorerender
ExclusiveArch: x86_64
- lzfse
ExcludeArch: s390x
- m4rie
ExcludeArch: %{ix86}
- mactel-boot
ExclusiveArch: x86_64
- magicmirror
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-airnow
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-onthisday
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-singlestock
ExclusiveArch: %{nodejs_arches} noarch
- makemusic-finale-fonts
ExcludeArch: %{ix86}
- mame
ExcludeArch: %{arm} %{ix86}
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- mapnik
ExcludeArch: ppc ppc64 s390 s390x
- marcsabatella-campania-fonts
ExcludeArch: %{ix86}
- mariadb-java-client
ExclusiveArch: %{java_arches} noarch
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- mate-applets
ExcludeArch: i386 i686
- matrix-synapse
ExclusiveArch: %{rust_arches}
- maui-mauikit
ExclusiveArch: %{ix86} s390x aarch64 x86_64
- maven
ExclusiveArch: %{java_arches} noarch
- maven-antrun-plugin
ExclusiveArch: %{java_arches} noarch
- maven-archetype
ExclusiveArch: %{java_arches} noarch
- maven-archiver
ExclusiveArch: %{java_arches} noarch
- maven-artifact-transfer
ExclusiveArch: %{java_arches} noarch
- maven-assembly-plugin
ExclusiveArch: %{java_arches} noarch
- maven-bundle-plugin
ExclusiveArch: %{java_arches} noarch
- maven-clean-plugin
ExclusiveArch: %{java_arches} noarch
- maven-common-artifact-filters
ExclusiveArch: %{java_arches} noarch
- maven-compiler-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-analyzer
ExclusiveArch: %{java_arches} noarch
- maven-dependency-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-tree
ExclusiveArch: %{java_arches} noarch
- maven-doxia
ExclusiveArch: %{java_arches} noarch
- maven-doxia-sitetools
ExclusiveArch: %{java_arches} noarch
- maven-enforcer
ExclusiveArch: %{java_arches} noarch
- maven-file-management
ExclusiveArch: %{java_arches} noarch
- maven-filtering
ExclusiveArch: %{java_arches} noarch
- maven-invoker
ExclusiveArch: %{java_arches} noarch
- maven-invoker-plugin
ExclusiveArch: %{java_arches} noarch
- maven-jar-plugin
ExclusiveArch: %{java_arches} noarch
- maven-mapping
ExclusiveArch: %{java_arches} noarch
- maven-native
ExclusiveArch: %{java_arches} noarch
- maven-parent
ExclusiveArch: %{java_arches} noarch
- maven-patch-plugin
ExclusiveArch: %{java_arches} noarch
- maven-plugin-testing
ExclusiveArch: %{java_arches} noarch
- maven-plugin-tools
ExclusiveArch: %{java_arches} noarch
- maven-remote-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-reporting-api
ExclusiveArch: %{java_arches} noarch
- maven-reporting-impl
ExclusiveArch: %{java_arches} noarch
- maven-resolver
ExclusiveArch: %{java_arches} noarch
- maven-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-script-interpreter
ExclusiveArch: %{java_arches} noarch
- maven-shade-plugin
ExclusiveArch: %{java_arches} noarch
- maven-shared-incremental
ExclusiveArch: %{java_arches} noarch
- maven-shared-io
ExclusiveArch: %{java_arches} noarch
- maven-shared-utils
ExclusiveArch: %{java_arches} noarch
- maven-source-plugin
ExclusiveArch: %{java_arches} noarch
- maven-surefire
ExclusiveArch: %{java_arches} noarch
- maven-verifier
ExclusiveArch: %{java_arches} noarch
- maven-verifier-plugin
ExclusiveArch: %{java_arches} noarch
- maven-wagon
ExclusiveArch: %{java_arches} noarch
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mbpfan
ExclusiveArch: x86_64
- mcelog
ExclusiveArch: i686 x86_64
- mcqd
ExcludeArch: %{ix86}
- mcrouter
ExclusiveArch: x86_64 aarch64 ppc64le
- mecab-java
ExclusiveArch: %java_arches
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
- memtest86+
ExclusiveArch: x86_64 %{ix86}
- merkuro
ExclusiveArch: %{qt6_qtwebengine_arches}
- meshlab
ExclusiveArch: aarch64 x86_64
ExcludeArch: %{ix86}
- metamath
ExcludeArch: %{ix86}
- mfem
ExcludeArch: %{ix86}
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} x86_64 riscv64
- miglayout
ExclusiveArch: %{java_arches} noarch
- mine_detector
ExclusiveArch: %{GPRbuild_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-libidn2
ExclusiveArch: %{ix86} x86_64 %{arm}
- mingw-qt6-qtlocation
ExcludeArch: s390x
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- miopen
ExclusiveArch: x86_64
- mirrormanager2
ExcludeArch: %{ix86}
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mlir
ExcludeArch: i686
- mlpack
ExcludeArch: s390
- mmlib
ExcludeArch: %{ix86}
- moby-engine
ExclusiveArch: %{golang_arches}
- mockito
ExclusiveArch: %{java_arches} noarch
- mod_gnutls
ExcludeArch: %{ix86} %{arm}
- mod_mono
ExclusiveArch: %mono_arches
- mod_proxy_cluster
ExcludeArch: i686 i386
- modello
ExclusiveArch: %{java_arches} noarch
- moditect
ExclusiveArch: %{java_arches} noarch
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- modulemaker-maven-plugin
ExclusiveArch: %{java_arches} noarch
- mojo-executor
ExclusiveArch: %{java_arches} noarch
- mojo-parent
ExclusiveArch: %{java_arches} noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64 %{arm}
- mold
ExcludeArch: %{ix86}
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monodevelop
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- moose
ExcludeArch: s390x
- morphio
ExcludeArch: %{ix86}
- mozc
ExcludeArch: ppc ppc64 sparcv9 sparc64 s390x
- mozilla-ublock-origin
ExcludeArch: ppc64 s390x
- mp
ExcludeArch: %{ix86}
- mpark-patterns
ExcludeArch: %{ix86}
- mpi4py
ExcludeArch: %{ix86}
- mpibash
ExcludeArch: %{ix86}
- mpris-scrobbler
ExcludeArch: s390x
- mpsolve
ExcludeArch: %{ix86}
- mrchem
ExcludeArch: s390x
- mrcpp
ExcludeArch: s390x
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- msolve
ExcludeArch: %{ix86}
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mstflint
ExcludeArch: s390 s390x %{arm}
- msv
ExclusiveArch: %{java_arches} noarch
- mt32emu
ExcludeArch: %{ix86}
- muffin
ExcludeArch: %{ix86}
- mumble
ExcludeArch: %{ix86}
- mupen64plus
ExcludeArch: s390x
- musescore
ExcludeArch: %{ix86}
- musl
ExcludeArch: s390
- mvfst
ExclusiveArch: x86_64 aarch64 ppc64le
- mxparser
ExclusiveArch: %{java_arches} noarch
- mysql-connector-java
ExclusiveArch: %{java_arches} noarch
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- naev
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExcludeArch: %{ix86}
- naga
ExclusiveArch: %{java_arches} noarch
- nagios-plugins-check-updates
ExcludeArch: %{ix86}
- nant
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- nativejit
ExclusiveArch: x86_64
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExcludeArch: i686
- ncl
ExcludeArch: %{ix86}
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- nekohtml
ExclusiveArch: %{java_arches} noarch
- nemo
ExcludeArch: %{ix86}
- nemo-extensions
ExcludeArch: %{ix86}
- nest
ExcludeArch: %{ix86}
- netatalk
ExcludeArch: aarch64 s390x
- netavark
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- netcdf-fortran
ExcludeArch: %{ix86}
- netdata
ExcludeArch: s390x
- neuron
ExcludeArch: mips64r2 mips32r2
ExcludeArch: %{ix86}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- nextcloud-client
ExcludeArch: %{ix86}
ExcludeArch: ppc64 ppc64le s390x
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-language-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjs-module-lexer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le riscv64 noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generic-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nodemon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-undici
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le riscv64 noarch
- nodejs18
ExclusiveArch: %{nodejs_arches}
- nodejs20
ExclusiveArch: %{nodejs_arches}
- nom-tam-fits
ExclusiveArch: %{java_arches} noarch
- normaliz
ExcludeArch: %{ix86}
- not-ocamlfind
ExcludeArch: %{ix86}
- notejot
ExcludeArch: %{ix86}
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- ntfs2btrfs
ExcludeArch: ppc64 s390x
- nuget
ExclusiveArch: %{mono_arches}
- numactl
ExcludeArch: s390 %{arm}
- numatop
ExclusiveArch: x86_64 ppc64le
- numptyphysics
ExcludeArch: ppc64le
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- nut
ExcludeArch: s390 s390x
- nvml
ExclusiveArch: x86_64 ppc64le
- nwchem
ExcludeArch: %{ix86} s390x
ExcludeArch: s390x
- objectweb-asm
ExclusiveArch: %{java_arches} noarch
- objenesis
ExclusiveArch: %{java_arches} noarch
- obs-cef
ExclusiveArch: x86_64 aarch64
- obs-service-rust2rpm
ExclusiveArch: %{rust_arches} noarch
- obs-studio-plugin-vkcapture
ExcludeArch: s390x
- ocaml
ExcludeArch: %{ix86}
- ocaml-SDL
ExcludeArch: %{ix86}
- ocaml-alcotest
ExcludeArch: %{ix86}
- ocaml-astring
ExcludeArch: %{ix86}
- ocaml-atd
ExcludeArch: %{ix86}
- ocaml-augeas
ExcludeArch: %{ix86}
- ocaml-autoconf
ExcludeArch: %{ix86}
- ocaml-base
ExcludeArch: %{ix86}
- ocaml-base64
ExcludeArch: %{ix86}
- ocaml-benchmark
ExcludeArch: %{ix86}
- ocaml-bigarray-compat
ExcludeArch: %{ix86}
- ocaml-bin-prot
ExcludeArch: %{ix86}
- ocaml-biniou
ExcludeArch: %{ix86}
- ocaml-bisect-ppx
ExcludeArch: %{ix86}
- ocaml-bos
ExcludeArch: %{ix86}
- ocaml-cairo
ExcludeArch: %{ix86}
- ocaml-calendar
ExcludeArch: %{ix86}
- ocaml-camlbz2
ExcludeArch: %{ix86}
- ocaml-camlidl
ExcludeArch: %{ix86}
- ocaml-camlimages
ExcludeArch: %{ix86}
- ocaml-camlp-streams
ExcludeArch: %{ix86}
- ocaml-camlp5
ExcludeArch: %{ix86}
- ocaml-camlp5-buildscripts
ExcludeArch: %{ix86}
- ocaml-camomile
ExcludeArch: %{ix86}
- ocaml-cinaps
ExcludeArch: %{ix86}
- ocaml-cmdliner
ExcludeArch: %{ix86}
- ocaml-compiler-libs-janestreet
ExcludeArch: %{ix86}
- ocaml-cppo
ExcludeArch: %{ix86}
- ocaml-crunch
ExcludeArch: %{ix86}
- ocaml-cryptokit
ExcludeArch: %{ix86}
- ocaml-csexp
ExcludeArch: %{ix86}
- ocaml-csv
ExcludeArch: %{ix86}
- ocaml-ctypes
ExcludeArch: %{ix86}
- ocaml-cudf
ExcludeArch: %{ix86}
- ocaml-curl
ExcludeArch: %{ix86}
- ocaml-curses
ExcludeArch: %{ix86}
- ocaml-dbus
ExcludeArch: %{ix86}
- ocaml-dose3
ExcludeArch: %{ix86}
- ocaml-dune
ExcludeArch: %{ix86}
- ocaml-easy-format
ExcludeArch: %{ix86}
- ocaml-expat
ExcludeArch: %{ix86}
- ocaml-extlib
ExcludeArch: %{ix86}
- ocaml-facile
ExcludeArch: %{ix86}
- ocaml-fieldslib
ExcludeArch: %{ix86}
- ocaml-fileutils
ExcludeArch: %{ix86}
- ocaml-findlib
ExcludeArch: %{ix86}
- ocaml-fmt
ExcludeArch: %{ix86}
- ocaml-fpath
ExcludeArch: %{ix86}
- ocaml-gen
ExcludeArch: %{ix86}
- ocaml-gettext
ExcludeArch: %{ix86}
- ocaml-graphics
ExcludeArch: %{ix86}
- ocaml-gsl
ExcludeArch: %{ix86}
ExcludeArch: armv7hl
- ocaml-integers
ExcludeArch: %{ix86}
- ocaml-jane-street-headers
ExcludeArch: %{ix86}
- ocaml-jst-config
ExcludeArch: %{ix86}
- ocaml-lablgl
ExcludeArch: %{ix86}
- ocaml-lablgtk
ExcludeArch: %{ix86}
- ocaml-lablgtk3
ExcludeArch: %{ix86}
- ocaml-labltk
ExcludeArch: %{ix86}
- ocaml-lacaml
ExcludeArch: %{ix86}
- ocaml-lambda-term
ExcludeArch: %{ix86}
- ocaml-libvirt
ExcludeArch: %{ix86}
- ocaml-logs
ExcludeArch: %{ix86}
- ocaml-luv
ExcludeArch: %{ix86}
- ocaml-lwt
ExcludeArch: %{ix86}
- ocaml-markup
ExcludeArch: %{ix86}
- ocaml-mccs
ExcludeArch: %{ix86}
- ocaml-mdx
ExcludeArch: %{ix86}
- ocaml-menhir
ExcludeArch: %{ix86}
- ocaml-merlin
ExcludeArch: %{ix86}
- ocaml-mew
ExcludeArch: %{ix86}
- ocaml-mew-vi
ExcludeArch: %{ix86}
- ocaml-mlgmpidl
ExcludeArch: %{ix86}
- ocaml-mlmpfr
ExcludeArch: %{ix86}
- ocaml-mtime
ExcludeArch: %{ix86}
- ocaml-mysql
ExcludeArch: %{ix86}
- ocaml-newt
ExcludeArch: %{ix86}
- ocaml-num
ExcludeArch: %{ix86}
- ocaml-obuild
ExcludeArch: %{ix86}
- ocaml-ocamlbuild
ExcludeArch: %{ix86}
- ocaml-ocamlgraph
ExcludeArch: %{ix86}
- ocaml-ocamlnet
ExcludeArch: %{ix86}
- ocaml-ocp-indent
ExcludeArch: %{ix86}
- ocaml-ocplib-endian
ExcludeArch: %{ix86}
- ocaml-ocplib-simplex
ExcludeArch: %{ix86}
- ocaml-octavius
ExcludeArch: %{ix86}
- ocaml-odoc
ExcludeArch: %{ix86}
- ocaml-omake
ExcludeArch: %{ix86}
- ocaml-opam-file-format
ExcludeArch: %{ix86}
- ocaml-ounit
ExcludeArch: %{ix86}
- ocaml-parmap
ExcludeArch: %{ix86}
- ocaml-parsexp
ExcludeArch: %{ix86}
- ocaml-pcre
ExcludeArch: %{ix86}
- ocaml-pcre2
ExcludeArch: %{ix86}
- ocaml-perl4caml
ExcludeArch: %{ix86}
- ocaml-postgresql
ExcludeArch: %{ix86}
- ocaml-pp
ExcludeArch: %{ix86}
- ocaml-ppx-assert
ExcludeArch: %{ix86}
- ocaml-ppx-base
ExcludeArch: %{ix86}
- ocaml-ppx-cold
ExcludeArch: %{ix86}
- ocaml-ppx-compare
ExcludeArch: %{ix86}
- ocaml-ppx-custom-printf
ExcludeArch: %{ix86}
- ocaml-ppx-derivers
ExcludeArch: %{ix86}
- ocaml-ppx-deriving
ExcludeArch: %{ix86}
- ocaml-ppx-deriving-yaml
ExcludeArch: %{ix86}
- ocaml-ppx-deriving-yojson
ExcludeArch: %{ix86}
- ocaml-ppx-enumerate
ExcludeArch: %{ix86}
- ocaml-ppx-expect
ExcludeArch: %{ix86}
- ocaml-ppx-fields-conv
ExcludeArch: %{ix86}
- ocaml-ppx-globalize
ExcludeArch: %{ix86}
- ocaml-ppx-hash
ExcludeArch: %{ix86}
- ocaml-ppx-here
ExcludeArch: %{ix86}
- ocaml-ppx-import
ExcludeArch: %{ix86}
- ocaml-ppx-inline-test
ExcludeArch: %{ix86}
- ocaml-ppx-js-style
ExcludeArch: %{ix86}
- ocaml-ppx-let
ExcludeArch: %{ix86}
- ocaml-ppx-optcomp
ExcludeArch: %{ix86}
- ocaml-ppx-sexp-conv
ExcludeArch: %{ix86}
- ocaml-ppx-stable-witness
ExcludeArch: %{ix86}
- ocaml-ppx-variants-conv
ExcludeArch: %{ix86}
- ocaml-ppxlib
ExcludeArch: %{ix86}
- ocaml-psmt2-frontend
ExcludeArch: %{ix86}
- ocaml-ptime
ExcludeArch: %{ix86}
- ocaml-ptmap
ExcludeArch: %{ix86}
- ocaml-pyml
ExcludeArch: %{ix86}
- ocaml-qcheck
ExcludeArch: %{ix86}
- ocaml-qtest
ExcludeArch: %{ix86}
- ocaml-re
ExcludeArch: %{ix86}
- ocaml-react
ExcludeArch: %{ix86}
- ocaml-res
ExcludeArch: %{ix86}
- ocaml-result
ExcludeArch: %{ix86}
- ocaml-rresult
ExcludeArch: %{ix86}
- ocaml-sedlex
ExcludeArch: %{ix86}
- ocaml-sexplib
ExcludeArch: %{ix86}
- ocaml-sexplib0
ExcludeArch: %{ix86}
- ocaml-sha
ExcludeArch: %{ix86}
- ocaml-sqlite
ExcludeArch: %{ix86}
- ocaml-ssl
ExcludeArch: %{ix86}
- ocaml-stdcompat
ExcludeArch: %{ix86}
- ocaml-stdio
ExcludeArch: %{ix86}
- ocaml-stdlib-random
ExcludeArch: %{ix86}
- ocaml-time-now
ExcludeArch: %{ix86}
- ocaml-topkg
ExcludeArch: %{ix86}
- ocaml-trie
ExcludeArch: %{ix86}
- ocaml-tyxml
ExcludeArch: %{ix86}
- ocaml-unionfind
ExcludeArch: %{ix86}
- ocaml-uucd
ExcludeArch: %{ix86}
- ocaml-uucp
ExcludeArch: %{ix86}
- ocaml-uunf
ExcludeArch: %{ix86}
- ocaml-uuseg
ExcludeArch: %{ix86}
- ocaml-uutf
ExcludeArch: %{ix86}
- ocaml-variantslib
ExcludeArch: %{ix86}
- ocaml-version
ExcludeArch: %{ix86}
- ocaml-xml-light
ExcludeArch: %{ix86}
- ocaml-xmlm
ExcludeArch: %{ix86}
- ocaml-xmlrpc-light
ExcludeArch: %{ix86}
- ocaml-yaml
ExcludeArch: %{ix86}
- ocaml-yojson
ExcludeArch: %{ix86}
- ocaml-zarith
ExcludeArch: %{ix86}
- ocaml-zed
ExcludeArch: %{ix86}
- ocaml-zip
ExcludeArch: %{ix86}
- ocaml-zmq
ExcludeArch: %{ix86}
- ocamlify
ExcludeArch: %{ix86}
- ocamlmod
ExcludeArch: %{ix86}
- oci-seccomp-bpf-hook
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl
ExclusiveArch: %{golang_arches_future}
- ocrmypdf
ExcludeArch: %{ix86}
- octave-communications
ExcludeArch: s390x
- octave-iso2mesh
ExcludeArch: armv7hl
- octave-signal
ExcludeArch: s390x
- odio-sacd
ExcludeArch: ppc64le
- oidc-agent
ExcludeArch: %{ix86}
- oidn
ExclusiveArch: x86_64
- oneVPL
ExclusiveArch: x86_64
- oneVPL-intel-gpu
ExclusiveArch: x86_64
- oneapi-level-zero
ExclusiveArch: x86_64
- onednn
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- onedrive
ExclusiveArch: %{ldc_arches}
- ongres-scram
ExclusiveArch: %{java_arches} noarch
- ongres-stringprep
ExclusiveArch: %{java_arches} noarch
- onnx
ExcludeArch: s390x
- onnxruntime
ExcludeArch: s390x %{arm} %{ix86}
- oomd
ExcludeArch: i686 armv7hl
- opae
ExclusiveArch: x86_64
- opal-prd
ExclusiveArch: ppc64le
- opam
ExcludeArch: %{ix86}
- open-vm-tools
ExclusiveArch: x86_64 aarch64
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- opencsg
ExcludeArch: %{ix86}
- opengrm-ngram
ExcludeArch: %{ix86}
- openjdk-asmtools
ExclusiveArch: %{java_arches} noarch
- openjdk-asmtools7
ExclusiveArch: %{java_arches} noarch
- openjfx
ExclusiveArch: %{java_arches}
- openjfx8
ExclusiveArch: x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openmeeg
ExcludeArch: s390x
- openmpi
ExcludeArch: %{ix86}
- openms
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- openni
ExclusiveArch: x86_64 %{arm}
- openni-primesense
ExclusiveArch: x86_64 %{arm}
- openobex
ExcludeArch: s390 s390x
- openoffice.org-diafilter
ExclusiveArch: %{java_arches}
- openpgl
ExclusiveArch: aarch64 x86_64
- openrgb
ExcludeArch: %{ix86}
- openscad
ExcludeArch: %{ix86}
- openshadinglanguage
ExcludeArch: %{ix86} %{arm}
- openshot
ExcludeArch: ppc64le
- opensm
ExcludeArch: s390 %{arm}
- openssl-ibmca
ExclusiveArch: s390 s390x
- openstack-java-sdk
ExclusiveArch: %{java_arches} noarch
- opentest4j
ExclusiveArch: %{java_arches} noarch
- opentype-sanitizer
ExcludeArch: %{ix86}
- openvdb
ExcludeArch: i686
- openvkl
ExclusiveArch: aarch64 x86_64
- optee_client
ExclusiveArch: aarch64
- optee_os
ExclusiveArch: aarch64
- options
ExclusiveArch: %{java_arches} noarch
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- os-autoinst
ExcludeArch: %{arm}
- osbuild-composer
ExcludeArch: i686 armv7hl
- osgi-annotation
ExclusiveArch: %{java_arches} noarch
- osgi-compendium
ExclusiveArch: %{java_arches} noarch
- osgi-core
ExclusiveArch: %{java_arches} noarch
- osm2pgsql
ExcludeArch: %{ix86}
- osslsigncode
ExcludeArch: i686
- ostree
ExcludeArch: %{ix86}
- otf2
ExcludeArch: i686 s390x
- oz
ExcludeArch: %{ix86}
- pacemaker
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64 %{arm}
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
- pageedit
ExclusiveArch: %{qt5_qtwebengine_arches}
- paperwork
ExcludeArch: %{ix86}
- papi
ExcludeArch: s390 s390x
- papilo
ExcludeArch: %{ix86}
- paraview
ExcludeArch: %{ix86}
- pari-nftables
ExcludeArch: %{ix86}
- parlaylib
ExcludeArch: aarch64 s390x arm-hfp ppc64le i686
- parsec
ExcludeArch: s390x
- parsec-tool
ExcludeArch: ppc64le s390x
- parserng
ExclusiveArch: %{java_arches} noarch
- pasdoc
ExclusiveArch: %{fpc_arches}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcem
ExcludeArch: armv7hl i686 ppc64le s390x
- pcfi
ExclusiveArch: %{java_arches} noarch
- pcg-cpp
ExcludeArch: %{ix86}
- pcm
ExclusiveArch: %{ix86} x86_64
- pcp
ExcludeArch: %{ix86}
- pcp2pdf
ExcludeArch: %{ix86}
- pdbg
ExclusiveArch: ppc64le
- pdfarranger
ExcludeArch: %{ix86}
- pdfbox
ExclusiveArch: %{java_arches} noarch
- pdfmod
ExclusiveArch: %mono_arches
- pdftk-java
ExclusiveArch: %{java_arches} noarch
- pdns
ExcludeArch: %{arm} %{ix86}
- pdns-recursor
ExcludeArch: %{arm} %{ix86}
- pdqsort
ExcludeArch: %{ix86}
- pengupop
ExcludeArch: s390x
- pentaho-libxml
ExclusiveArch: %{java_arches} noarch
- pentaho-reporting-flow-engine
ExclusiveArch: %{java_arches} noarch
- perftest
ExcludeArch: s390 %{arm}
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-LMDB_File
ExcludeArch: armv7hl i686
- perl-Math-Int128
ExcludeArch: %{arm32} %{ix86}
- perl-MaxMind-DB-Reader-XS
ExcludeArch: %{arm} %{ix86}
- perl-MongoDB
ExcludeArch: ppc %{sparc} s390
- perl-Net-Works
ExcludeArch: %{arm32} %{ix86}
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- perl-threads-lite
ExcludeArch: aarch64 ppc ppc64 ppc64le
- permlib
ExcludeArch: %{ix86}
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm}
- pesign-test-app
ExclusiveArch: x86_64
- pf-bb-config
ExcludeArch: s390x
- pgadmin4
ExcludeArch: i686 armv7hl s390x ppc64le
- phd2
ExcludeArch: %{ix86}
- phosh
ExcludeArch: i686
- phosh-mobile-settings
ExcludeArch: i686
- picard
ExcludeArch: ppc64
- picocli
ExclusiveArch: %{java_arches} noarch
- pigeonascent
ExcludeArch: ppc64le
ExcludeArch: s390x
- pilot-link
ExcludeArch: s390 s390x
- pinta
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- pioneer
ExclusiveArch: %{ix86} x86_64
- pl
ExcludeArch: %{ix86}
- planets
ExcludeArch: %{ix86}
- plantri
ExcludeArch: %{ix86}
- plantuml
ExclusiveArch: %{java_arches} noarch
- plasma-dialer
ExclusiveArch: %{java_arches}
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- plee-the-bear
ExcludeArch: %{power64}
- plexus-archiver
ExclusiveArch: %{java_arches} noarch
- plexus-build-api
ExclusiveArch: %{java_arches} noarch
- plexus-build-api0
ExclusiveArch: %{java_arches} noarch
- plexus-cipher
ExclusiveArch: %{java_arches} noarch
- plexus-classworlds
ExclusiveArch: %{java_arches} noarch
- plexus-compiler
ExclusiveArch: %{java_arches} noarch
- plexus-component-api
ExclusiveArch: %{java_arches} noarch
- plexus-components-pom
ExclusiveArch: %{java_arches} noarch
- plexus-containers
ExclusiveArch: %{java_arches} noarch
- plexus-i18n
ExclusiveArch: %{java_arches} noarch
- plexus-interpolation
ExclusiveArch: %{java_arches} noarch
- plexus-io
ExclusiveArch: %{java_arches} noarch
- plexus-languages
ExclusiveArch: %{java_arches} noarch
- plexus-pom
ExclusiveArch: %{java_arches} noarch
- plexus-resources
ExclusiveArch: %{java_arches} noarch
- plexus-sec-dispatcher
ExclusiveArch: %{java_arches} noarch
- plexus-testing
ExclusiveArch: %{java_arches} noarch
- plexus-utils
ExclusiveArch: %{java_arches} noarch
- plexus-velocity
ExclusiveArch: %{java_arches} noarch
- plexus-xml
ExclusiveArch: %{java_arches} noarch
- pmix
ExcludeArch: %{ix86}
- pngcheck
ExcludeArch: %{ix86}
- podman
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- polymake
ExcludeArch: %{ix86}
- polyml
ExcludeArch: %{ix86}
- poppler-sharp
ExclusiveArch: %mono_arches
- popub
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- postgresql-jdbc
ExclusiveArch: %{java_arches} noarch
- postgresql-pgpool-II
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
- powerpc-utils
ExclusiveArch: ppc %{power64}
- powerstat
ExclusiveArch: %{ix86} x86_64
- ppc64-diag
ExclusiveArch: ppc %{power64}
- ppl
ExcludeArch: %{ix86}
- pplite
ExcludeArch: %{ix86}
- prestopalette
ExcludeArch: i686
- printer-driver-brlaser
ExcludeArch: %{ix86}
- procdump
ExcludeArch: ppc64le
- procyon
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
- proguard
ExclusiveArch: %{java_arches} noarch
- prometheus-jmx-exporter
ExclusiveArch: %{java_arches} noarch
- prometheus-simpleclient-java
ExclusiveArch: %{java_arches} noarch
- prooftree
ExcludeArch: %{ix86}
- proxmark3
ExcludeArch: ppc64le s390x
- proxygen
ExclusiveArch: x86_64 aarch64 ppc64le
- proxysql
ExcludeArch: %{power64} s390x
- prrte
ExcludeArch: %{ix86}
- prusa-slicer
ExcludeArch: %{ix86}
- psblas3
ExcludeArch: %{ix86}
- purple-telegram
ExcludeArch: s390x
ExcludeArch: ppc64
- pveclib
ExclusiveArch: ppc %{power64}
- pygrib
ExcludeArch: i686
ExcludeArch: armv7hl
- pygsl
ExcludeArch: %{ix86}
- pyosmium
ExcludeArch: %{ix86}
- pypy
ExcludeArch: %{ix86}
- pypy3.10
ExcludeArch: %{ix86}
- pypy3.9
ExcludeArch: %{ix86}
- pyqtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- python-ZEO
ExcludeArch: %{ix86}
- python-ZODB3
ExcludeArch: %{ix86}
- python-aioresponses
ExcludeArch: s390x
- python-ast-monitor
ExclusiveArch: %{qt6_qtwebengine_arches} noarch
- python-astroplan
ExcludeArch: %{ix86}
- python-astroscrappy
ExcludeArch: %{ix86}
- python-asyncmy
ExcludeArch: %{ix86}
- python-aws-sam-translator
ExcludeArch: %{ix86}
- python-awscrt
ExcludeArch: s390x
- python-bitstruct
ExcludeArch: s390x
- python-blosc2
ExcludeArch: %{ix86}
- python-bluepyopt
ExcludeArch: s390x %{ix86} %{power64}
- python-chaospy
ExcludeArch: %{ix86} %{arm32}
- python-colorcet
ExcludeArch: %{ix86}
- python-colorthief
ExcludeArch: %{ix86}
- python-compreffor
ExcludeArch: %{ix86}
- python-cradox
ExcludeArch: i686 armv7hl
- python-cryptography
ExclusiveArch: %{rust_arches}
- python-cvxopt
ExcludeArch: %{ix86}
- python-cyipopt
ExcludeArch: %{ix86}
- python-databases
ExcludeArch: %{ix86}
- python-devicely
ExcludeArch: s390x
- python-dijitso
ExcludeArch: i686
- python-ducc0
ExcludeArch: %{ix86}
- python-earthpy
ExcludeArch: %{ix86}
- python-eccodes
ExcludeArch: i686
ExcludeArch: armv7hl
- python-efel
ExcludeArch: s390x
- python-elephant
ExcludeArch: s390x
ExcludeArch: %{ix86}
- python-ephyviewer
ExcludeArch: s390x %{ix86}
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- python-fastavro
ExcludeArch: %{arm32} %{ix86}
- python-folium
ExcludeArch: %{ix86}
- python-formulaic
ExcludeArch: %{ix86}
- python-fsleyes
ExcludeArch: %{ix86}
- python-fsleyes-props
ExcludeArch: %{ix86}
- python-fslpy
ExcludeArch: %{ix86}
- python-gbinder
ExcludeArch: %{ix86}
- python-giacpy
ExcludeArch: aarch64 %{power64} s390x
- python-graph-tool
ExcludeArch: %{ix86}
- python-hdfs
ExcludeArch: %{ix86}
- python-healpy
ExcludeArch: %{ix86} %{arm}
- python-heapdict
ExcludeArch: %{ix86}
- python-img2pdf
ExcludeArch: s390x
- python-intbitset
ExcludeArch: s390x
- python-javaobj
ExclusiveArch: %{java_arches} noarch
- python-jnius
ExclusiveArch: %{java_arches}
ExclusiveArch: %{java_arches}
- python-json-minify
ExcludeArch: %{ix86}
- python-jupymake
ExcludeArch: %{ix86}
- python-jupyter-c-kernel
ExcludeArch: %{ix86}
- python-jupyter-kernel-singular
ExcludeArch: %{ix86}
- python-jupyter-polymake
ExcludeArch: %{ix86}
- python-jupyter-sphinx
ExcludeArch: %{ix86}
- python-lazy-ops
ExcludeArch: %{ix86}
- python-lfpy
ExcludeArch: mips64r2 mips32r2
ExcludeArch: %{power64} %{ix86} armv7hl
- python-mapnik
ExcludeArch: ppc ppc64 s390 s390x
- python-missingno
ExcludeArch: %{ix86}
- python-mne
ExcludeArch: %{ix86}
- python-mne-bids
ExcludeArch: %{ix86}
- python-mplcairo
ExcludeArch: %{ix86}
- python-mplcursors
ExcludeArch: %{ix86}
- python-music21
ExcludeArch: %{ix86}
- python-ndindex
ExcludeArch: %{ix86}
- python-neatdend
ExcludeArch: %{ix86}
- python-neo
ExcludeArch: s390x
- python-netpyne
ExcludeArch: %{ix86}
- python-neurom
ExcludeArch: %{ix86}
- python-neurotune
ExcludeArch: %{ix86}
- python-numpoly
ExcludeArch: %{ix86}
- python-octave-kernel
ExcludeArch: %{ix86}
- python-openoffice
ExclusiveArch: noarch x86_64
- python-openpaperwork-core
ExcludeArch: %{ix86}
- python-openpaperwork-gtk
ExcludeArch: %{ix86}
- python-opentype-sanitizer
ExcludeArch: %{ix86}
- python-pandas-flavor
ExcludeArch: %{ix86}
- python-papermill
ExcludeArch: %{ix86}
- python-paperwork-backend
ExcludeArch: %{ix86}
- python-param
ExcludeArch: %{ix86}
- python-pari-jupyter
ExcludeArch: %{ix86}
- python-pep8-naming
ExcludeArch: %{ix86}
- python-phyghtmap
ExcludeArch: %{ix86}
- python-pingouin
ExcludeArch: %{ix86}
- python-plotnine
ExcludeArch: %{ix86}
- python-pplpy
ExcludeArch: %{ix86}
- python-primecountpy
ExcludeArch: %{ix86}
- python-psycopg3
ExcludeArch: %{ix86}
- python-pyahocorasick
ExclusiveArch: x86_64 %{arm64} ppc64le
- python-pybids
ExcludeArch: %{ix86}
- python-pybv
ExcludeArch: %{ix86}
- python-pyct
ExcludeArch: %{ix86}
- python-pyedflib
ExcludeArch: s390x
- python-pyfastnoisesimd
ExcludeArch: %{ix86}
- python-pyfiglet
ExcludeArch: %{ix86}
- python-pykdtree
ExcludeArch: %{ix86}
- python-pyliblzfse
ExcludeArch: s390x
- python-pymapvbvd
ExcludeArch: s390x
- python-pymatreader
ExcludeArch: %{ix86}
ExcludeArch: s390x
- python-pynn
ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
- python-pyocr
ExcludeArch: %{ix86}
- python-pypet
ExcludeArch: %{ix86}
ExcludeArch: s390x
- python-pyphi
ExcludeArch: s390x
- python-pypillowfight
ExcludeArch: %{ix86}
- python-pyqt6-webengine
ExclusiveArch: %{qt6_qtwebengine_arches}
- python-pyroaring
ExcludeArch: %{ix86}
- python-pyscf
ExcludeArch: %{power64}
- python-pyshtools
ExcludeArch: %{ix86}
- python-pysingular
ExcludeArch: %{ix86}
- python-pyswarms
ExcludeArch: %{ix86}
- python-pyswip
ExcludeArch: %{ix86}
- python-pytest-arraydiff
ExcludeArch: %{ix86}
- python-pytest-tornado
ExcludeArch: %{ix86}
- python-pyvat
ExcludeArch: %{ix86}
- python-recordclass
ExcludeArch: %{ix86}
- python-ruffus
ExcludeArch: %{ix86}
- python-sgp4
ExcludeArch: %{ix86}
- python-simplebayes
ExcludeArch: %{ix86}
- python-sklearn-genetic-opt
ExcludeArch: %{ix86}
- python-steps
ExcludeArch: %{ix86}
- python-tables
ExcludeArch: %{ix86}
- python-tdlib
ExcludeArch: %{ix86}
- python-tensile
ExclusiveArch: x86_64
- python-tkrzw
ExcludeArch: i686
- python-torch
ExclusiveArch: x86_64 aarch64
- python-torchdata
ExclusiveArch: x86_64 aarch64
- python-torchvision
ExclusiveArch: x86_64 aarch64
- python-traitsui
ExcludeArch: ppc64le
- python-trimesh
ExcludeArch: %{ix86}
- python-uranium
ExcludeArch: %{ix86}
- python-willow
ExcludeArch: %{ix86}
- python-xattr
ExcludeArch: %{ix86}
- python-xbout
ExcludeArch: %{ix86}
- python-xmp-toolkit
ExcludeArch: %{ix86}
- python-zeep
ExcludeArch: s390x
- python-zict
ExcludeArch: %{ix86}
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qalculate-qt
ExcludeArch: %{ix86}
- qatengine
ExclusiveArch: x86_64
- qatlib
ExcludeArch: %{arm} aarch64 %{power64} s390x i686
- qatzip
ExclusiveArch: x86_64
- qbe
ExclusiveArch: x86_64 aarch64 riscv64
- qbittorrent
ExcludeArch: %{ix86}
- qbs
ExcludeArch: i686
- qcas
ExcludeArch: aarch64 %{power64} s390x
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qdigidoc
ExcludeArch: %{ix86}
- qdox
ExclusiveArch: %{java_arches} noarch
- qemu-sanity-check
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- qevercloud
ExclusiveArch: %{qt5_qtwebengine_arches}
- qflipper
ExcludeArch: %{ix86}
- qmapshack
ExclusiveArch: %{qt5_qtwebengine_arches}
- qoauth
ExcludeArch: ppc64
- qownnotes
ExcludeArch: %{ix86}
- qpdfview
ExcludeArch: s390x
- qperf
ExcludeArch: %{arm}
- qsopt-ex
ExcludeArch: %{ix86}
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- qt6-qtwebengine
ExclusiveArch: aarch64 x86_64
- qt6-qtwebview
ExclusiveArch: aarch64 x86_64
- qt6ct
ExcludeArch: s390x
- qtile
ExcludeArch: %{ix86}
- quantum-espresso
ExclusiveArch: x86_64 aarch64 %{power64}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- rEFInd
ExclusiveArch: %{efi}
ExcludeArch: %{arm32}
- racket
ExcludeArch: %{arm} s390x
ExcludeArch: ppc64le
- rasdaemon
ExcludeArch: s390 s390x
- rdma-core
ExcludeArch: %{arm}
- realtime-tests
ExcludeArch: %{arm}
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64 s390x
- redeclipse
ExcludeArch: %{ix86}
- reflections
ExclusiveArch: %{java_arches} noarch
- reg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- regexp
ExclusiveArch: %{java_arches} noarch
- relaxng-datatype-java
ExclusiveArch: %{java_arches} noarch
- remake
ExcludeArch: %{ix86}
- renderdoc
ExclusiveArch: x86_64 aarch64
- replacer
ExclusiveArch: %{java_arches} noarch
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- rescene
ExclusiveArch: %{mono_arches}
- resteasy
ExclusiveArch: %{java_arches} noarch
- restool
ExclusiveArch: aarch64
- restsharp
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- retroarch
ExcludeArch: %{ix86}
ExcludeArch: s390x
- retsnoop
ExclusiveArch: %{rust_arches}
ExcludeArch: armv7hl
- rhino
ExclusiveArch: %{java_arches} noarch
ExcludeArch: %{ix86}
- rhythmbox
ExcludeArch: s390 s390x
- rhythmbox-alternative-toolbar
ExcludeArch: s390 s390x
- rhythmbox-ampache
ExcludeArch: s390 s390x
- river
ExclusiveArch: %{zig_arches}
- rkcommon
ExclusiveArch: x86_64 aarch64
- rocalution
ExclusiveArch: x86_64
- rocblas
ExclusiveArch: x86_64
- rocclr
ExclusiveArch: x86_64
- rocfft
ExclusiveArch: x86_64
- rocm-compilersupport
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-core
ExclusiveArch: x86_64
- rocm-device-libs
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-rpm-macros
ExclusiveArch: x86_64
- rocm-runtime
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-smi
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rocminfo
ExclusiveArch: x86_64 aarch64 ppc64le
- rocprim
ExclusiveArch: x86_64
- rocrand
ExclusiveArch: x86_64
- rocsolver
ExclusiveArch: x86_64
- rocsparse
ExclusiveArch: x86_64
- rocthrust
ExclusiveArch: x86_64
- roctracer
ExclusiveArch: x86_64
- rpi-imager
ExcludeArch: s390x
- rpm-ostree
ExclusiveArch: %{rust_arches}
ExcludeArch: %{ix86}
- rr
ExclusiveArch: %{ix86} x86_64 aarch64
- rssguard
ExclusiveArch: %{qt6_qtwebengine_arches}
- rstudio
ExclusiveArch: %{java_arches}
- rsyntaxtextarea
ExclusiveArch: %{java_arches} noarch
- rubiks
ExcludeArch: %{ix86}
- rubygem-childprocess
ExclusiveArch: %{ix86} x86_64 noarch
- ruff
ExcludeArch: %{ix86}
- ruff-lsp
ExcludeArch: %{ix86}
- runc
ExclusiveArch: %{golang_arches_future}
- rundoc
ExclusiveArch: %{java_arches} noarch
- rust
ExclusiveArch: %{rust_arches}
- rust-bankstown-lv2
ExcludeArch: ppc64le s390x
- rust-below
ExcludeArch: %{arm32} %{ix86}
- rust-below-btrfs
ExcludeArch: %{arm32} %{ix86}
- rust-below-config
ExcludeArch: %{arm32} %{ix86}
- rust-below-dump
ExcludeArch: %{arm32} %{ix86}
- rust-below-model
ExcludeArch: %{arm32} %{ix86}
- rust-compress-tools
ExclusiveArch: %{rust_arches}
- rust-crypto-auditing-agent
ExcludeArch: i386 i686
- rust-ct-logs
ExcludeArch: ppc64le s390x
- rust-ctr
ExclusiveArch: %{rust_arches}
- rust-dashmap4
ExclusiveArch: %{rust_arches}
- rust-deflate
ExclusiveArch: %{rust_arches}
- rust-deflate0.8
ExclusiveArch: %{rust_arches}
- rust-drg
ExclusiveArch: %{rust_arches}
- rust-getch
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-hamming
ExclusiveArch: %{rust_arches}
- rust-hidapi
ExclusiveArch: %{rust_arches}
- rust-httparse
ExclusiveArch: %{rust_arches}
- rust-humantime-serde
ExclusiveArch: %{rust_arches}
- rust-hyperlocal
ExclusiveArch: %{rust_arches}
- rust-inflate
ExclusiveArch: %{rust_arches}
- rust-k9
ExclusiveArch: %{rust_arches}
- rust-krunvm
ExclusiveArch: x86_64 aarch64
- rust-kstring
ExclusiveArch: %{rust_arches}
- rust-kvm-bindings
ExcludeArch: %{ix86}
- rust-kvm-ioctls
ExclusiveArch: x86_64 aarch64
- rust-lebe
ExclusiveArch: %{rust_arches}
- rust-lv2
ExcludeArch: ppc64le s390x
- rust-lv2-atom
ExcludeArch: ppc64le s390x
- rust-lv2-core
ExcludeArch: ppc64le s390x
- rust-lv2-midi
ExcludeArch: ppc64le s390x
- rust-lv2-state
ExcludeArch: ppc64le s390x
- rust-lv2-sys
ExcludeArch: ppc64le s390x
- rust-lv2-time
ExcludeArch: ppc64le s390x
- rust-lv2-units
ExcludeArch: ppc64le s390x
- rust-lv2-urid
ExcludeArch: ppc64le s390x
- rust-lv2-worker
ExcludeArch: ppc64le s390x
- rust-msru
ExclusiveArch: x86_64
- rust-nanorand
ExclusiveArch: %{rust_arches}
- rust-netstat2
ExclusiveArch: %{rust_arches}
- rust-nu
ExcludeArch: %{ix86}
- rust-onig
ExclusiveArch: %{rust_arches}
- rust-openat-ext
ExclusiveArch: %{rust_arches}
- rust-os_type
ExclusiveArch: %{rust_arches}
- rust-pager
ExclusiveArch: %{rust_arches}
- rust-pathsearch
ExclusiveArch: %{rust_arches}
- rust-prefixdevname
ExcludeArch: %{ix86}
- rust-pretty-bytes
ExclusiveArch: %{rust_arches}
- rust-primal-bit
ExclusiveArch: %{rust_arches}
- rust-primal-check
ExclusiveArch: %{rust_arches}
- rust-primal-estimate
ExclusiveArch: %{rust_arches}
- rust-probe
ExcludeArch: ppc64le s390x
- rust-procfs0.9
ExclusiveArch: %{rust_arches}
- rust-psl-types
ExclusiveArch: %{rust_arches}
- rust-psm
ExclusiveArch: %{rust_arches}
- rust-pwd
ExclusiveArch: %{rust_arches}
- rust-rand_core
ExclusiveArch: %{rust_arches}
- rust-schemafy_core
ExclusiveArch: %{rust_arches}
- rust-schemafy_lib
ExclusiveArch: %{rust_arches}
- rust-scx_layered
ExcludeArch: %{ix86}
- rust-scx_rustland
ExcludeArch: %{ix86}
- rust-scx_rusty
ExcludeArch: %{ix86}
- rust-scx_utils
ExcludeArch: %{ix86}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-sequoia-octopus-librnp
ExcludeArch: %{ix86} %{arm} s390x
- rust-serde_yaml0.8
ExclusiveArch: %{rust_arches}
- rust-sev
ExclusiveArch: x86_64
- rust-sevctl
ExclusiveArch: x86_64
- rust-sinit
ExclusiveArch: %{rust_arches}
- rust-snphost
ExclusiveArch: x86_64
- rust-ssh-key-dir
ExclusiveArch: %{rust_arches}
- rust-stacker
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-tiny-dfr
ExcludeArch: %{ix86}
- rust-totp-lite
ExclusiveArch: %{rust_arches}
- rust-tower-layer
ExclusiveArch: %{rust_arches}
- rust-tpm2-policy
ExclusiveArch: %{rust_arches}
- rust-unicode-normalization
ExclusiveArch: %{rust_arches}
- rust-unicode-xid
ExclusiveArch: %{rust_arches}
- rust-uriparse
ExclusiveArch: %{rust_arches}
- rust-varlink_generator
ExclusiveArch: %{rust_arches}
- rust-varlink_parser
ExclusiveArch: %{rust_arches}
- rust-vhost-device-scmi
ExcludeArch: s390x
- rust-virtio-bindings
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rust-virtio-queue
ExcludeArch: i686
- rust-vm-memory
ExcludeArch: %{ix86}
- rust-vmm-sys-util
ExclusiveArch: x86_64 aarch64 ppc64le
- rust-vtparse
ExclusiveArch: %{rust_arches}
- rust-web-ext-native-messaging
ExclusiveArch: %{rust_arches}
- rust-wezterm-color-types
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic-derive
ExclusiveArch: %{rust_arches}
- rust-zbus1
ExclusiveArch: %{rust_arches}
- rust-zbus_macros1
ExclusiveArch: %{rust_arches}
- rust-zincati
ExcludeArch: armv7hl i686
- rust-zvariant2
ExclusiveArch: %{rust_arches}
- rust-zvariant_derive2
ExclusiveArch: %{rust_arches}
- rustup
ExclusiveArch: x86_64 aarch64
- rutabaga-gfx-ffi
ExclusiveArch: x86_64 aarch64
- s390utils
ExcludeArch: %{ix86}
- sac
ExclusiveArch: %{java_arches} noarch
- safeint
ExcludeArch: %{ix86}
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- sat4j
ExclusiveArch: %{java_arches} noarch
- sayonara
ExcludeArch: %{ix86}
- sbcl
ExclusiveArch: %{ix86} x86_64 aarch64 %{power64}
- sbd
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
- sblim-cim-client
ExclusiveArch: %{java_arches} noarch
- sblim-cim-client2
ExclusiveArch: %{java_arches} noarch
- sbsigntools
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- scala
ExclusiveArch: %{java_arches} noarch
- scalasca
ExcludeArch: s390 s390x armv7hl i686
- scannotation
ExclusiveArch: %{java_arches} noarch
- scip
ExcludeArch: %{ix86}
- scorep
ExcludeArch: s390 s390x armv7hl i686
- sdljava
ExclusiveArch: %{java_arches}
- sdrangel
ExclusiveArch: %{qt5_qtwebengine_arches}
- sdsl-lite
ExclusiveArch: %{power64} x86_64 aarch64
- sdubby
ExclusiveArch: %{efi}
- seabios
ExclusiveArch: x86_64
- seadrive-gui
ExclusiveArch: %{qt5_qtwebengine_arches}
- seafile-client
ExclusiveArch: %{qt5_qtwebengine_arches}
- seamonkey
ExclusiveArch: x86_64
- sedutil
ExcludeArch: ppc ppc64 s390 s390x
- sentencepiece
ExcludeArch: s390x
- seqan3
ExclusiveArch: %{power64} x86_64 aarch64
- sequeler
ExcludeArch: %{ix86}
- sequence-library
ExclusiveArch: %{java_arches} noarch
- servicelog
ExclusiveArch: ppc %{power64}
- setserial
ExcludeArch: s390 s390x
- sfnt2woff-zopfli
ExcludeArch: %{ix86}
- sharedmeataxe
ExcludeArch: %{ix86}
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: %{efi}
ExcludeArch: %{ix86}
ExcludeArch: %{arm}
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- shim-unsigned-x64
ExclusiveArch: x86_64
- sigil
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- sigul
ExclusiveArch: x86_64
ExcludeArch: %{ix86}
- simdutf
ExcludeArch: s390 s390x
- singularity-ce
ExclusiveArch: %{go_arches}
ExcludeArch: %{ix86}
- sirocco
ExcludeArch: %{ix86}
- sisu
ExclusiveArch: %{java_arches} noarch
- sisu-mojos
ExclusiveArch: %{java_arches} noarch
- ski
ExcludeArch: %{ix86}
ExcludeArch: aarch64
- skopeo
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- skychart
ExclusiveArch: %{fpc_arches}
ExcludeArch: %{ix86}
- slapi-nis
ExcludeArch: %{ix86}
- sleef
ExcludeArch: %{ix86}
- slf4j
ExclusiveArch: %{java_arches} noarch
- slic3r
ExcludeArch: %{ix86}
ExcludeArch: ppc ppc64 s390 s390x %{ix86}
ExcludeArch: ppc ppc64 s390 s390x
- slick-greeter
ExcludeArch: %{ix86}
- slimdata
ExcludeArch: ppc64 ppc sparcv9 sparc64
- slirp4netns
ExclusiveArch: %{golang_arches_future}
- slurm
ExcludeArch: armv7hl
ExcludeArch: i686
- snakeyaml
ExclusiveArch: %{java_arches} noarch
- snapd
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x}
- snapshot
ExcludeArch: %{ix86}
- snip
ExclusiveArch: %{java_arches} noarch
- softnet-stat
ExclusiveArch: %{rust_arches}
- soplex
ExcludeArch: %{ix86}
- sound-juicer
ExcludeArch: s390 s390x
- soup-sharp
ExclusiveArch: %{mono_arches}
- sourcextractor++
ExcludeArch: %{ix86}
- spacebar
ExclusiveArch: %{java_arches}
- sparkleshare
ExclusiveArch: %{mono_arches}
ExcludeArch: %{ix86}
- spasm
ExcludeArch: %{ix86}
- spec-version-maven-plugin
ExclusiveArch: %{java_arches} noarch
- speed-dreams
ExcludeArch: s390x
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- spice-parent
ExclusiveArch: %{java_arches} noarch
- springlobby
ExclusiveArch: %{ix86} x86_64
- spyder
ExcludeArch: %{ix86}
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- squeekboard
ExclusiveArch: %{rust_arches}
ExcludeArch: ppc64le
ExcludeArch: s390x
- squirrel
ExcludeArch: %{ix86}
- startdde
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- stats-collect
ExclusiveArch: %{ix86} x86_64 noarch
- statsd
ExclusiveArch: %{nodejs_arches} noarch
- statserial
ExcludeArch: s390 s390x
- steinberg-bravura-fonts
ExcludeArch: %{ix86}
- steinberg-petaluma-fonts
ExcludeArch: %{ix86}
- stellarium
ExcludeArch: armv7hl
- stlsplit
ExcludeArch: %{ix86}
- stp
ExcludeArch: %{ix86}
- stratis-cli
ExclusiveArch: %{rust_arches} noarch
ExcludeArch: i686
- stratisd
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
- string-template-maven-plugin
ExclusiveArch: %{java_arches} noarch
- stringtemplate
ExclusiveArch: %{java_arches} noarch
- stringtemplate4
ExclusiveArch: %{java_arches} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- subscription-manager-cockpit
ExclusiveArch: %{nodejs_arches} noarch
- supercollider
ExclusiveArch: %{qt5_qtwebengine_arches}
- supermin
ExcludeArch: %{ix86}
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- supertux
ExcludeArch: s390x
- suricata
ExcludeArch: ppc64le i686
- svnkit
ExclusiveArch: %{java_arches} noarch
- svt-vp9
ExclusiveArch: x86_64
- swift-lang
ExclusiveArch: x86_64 aarch64
- swiftlint
ExclusiveArch: x86_64 aarch64
- swing-layout
ExclusiveArch: %{java_arches} noarch
- symfpu
ExcludeArch: %{ix86}
- symmetrica
ExcludeArch: %{ix86}
- sympol
ExcludeArch: %{ix86}
- sympow
ExcludeArch: %{ix86}
- synfig
ExcludeArch: ppc64le
- synfigstudio
ExcludeArch: ppc64le
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64le s390x
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- system-rules
ExclusiveArch: %{java_arches} noarch
- systemd-boot
ExclusiveArch: %efi
- t-digest
ExclusiveArch: %{java_arches} noarch
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tagsoup
ExclusiveArch: %{java_arches} noarch
- tarantool
ExclusiveArch: %{ix86} x86_64
- tboot
ExclusiveArch: %{ix86} x86_64
- tcmu-runner
ExcludeArch: i686 armv7hl
- tdlib
ExclusiveArch: x86_64 aarch64
- teem
ExcludeArch: %{ix86}
- templates_parser
ExclusiveArch: %GPRbuild_arches
- terminology
ExcludeArch: s390x
- terminus-fonts
ExcludeArch: %{grub2_exclude_arches}
- ternimal
ExclusiveArch: %{rust_arches}
- testcloud
ExclusiveArch: %{kernel_arches} noarch
- testng
ExclusiveArch: %{java_arches} noarch
- texlive
ExclusiveArch: %{java_arches} noarch
- texmaker
ExclusiveArch: %{qt6_qtwebengine_arches}
ExcludeArch: ppc64 ppc64le s390x
- thermald
ExclusiveArch: %{ix86} x86_64
- thunderbird
ExcludeArch: armv7hl
ExcludeArch: s390x
- tiled
ExcludeArch: %{ix86}
- tilix
ExclusiveArch: %{ldc_arches}
- tinygo
ExcludeArch: ppc64le s390x
ExcludeArch: %{ix86}
- tokodon
ExclusiveArch: %{qt6_qtwebengine_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tomcat
ExclusiveArch: %{java_arches} noarch
- tomcat-native
ExclusiveArch: %{java_arches}
- tomcat-taglibs-parent
ExclusiveArch: %{java_arches} noarch
- torbrowser-launcher
ExclusiveArch: %{ix86} x86_64
- trace-cmd
ExcludeArch: %{ix86} %{arm}
- trafficserver
ExcludeArch: %{arm} %{ix86} s390x
- treelayout
ExclusiveArch: %{java_arches} noarch
- trilead-ssh2
ExclusiveArch: %{java_arches} noarch
- trojita
ExcludeArch: ppc64 ppc64le s390x
- truth
ExclusiveArch: %{java_arches} noarch
- tth
ExcludeArch: %{ix86}
- tuned-profiles-nfv-host-bin
ExclusiveArch: %{ix86} x86_64
- tuxguitar
ExcludeArch: s390 %{arm} %{ix86}
- tvtime
ExcludeArch: s390 s390x
- typescript
ExclusiveArch: %{nodejs_arches} noarch
- tzdata
ExcludeArch: i686
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- uboot-tools
ExcludeArch: s390x
- ucx
ExclusiveArch: aarch64 ppc64le x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
- ugrep
ExcludeArch: %{ix86}
- umr
ExclusiveArch: x86_64 aarch64 ppc64le
- unetbootin
ExclusiveArch: %{ix86} x86_64
- unicorn
ExcludeArch: s390x
- univocity-parsers
ExclusiveArch: %{java_arches} noarch
- ursa-major
ExclusiveArch: noarch aarch64 ppc64le s390x x86_64
- usbip
ExcludeArch: s390x
- usd
ExclusiveArch: aarch64 x86_64
- usnic-tools
ExcludeArch: %{arm}
- utop
ExcludeArch: %{ix86}
- v-hacd
ExcludeArch: %{ix86}
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- vakzination
ExclusiveArch: %{java_arches}
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vdr-tvscraper
ExcludeArch: armv7hl
- vecmath1.2
ExclusiveArch: %{java_arches} noarch
- velocity
ExclusiveArch: %{java_arches} noarch
- viking
ExcludeArch: s390 s390x
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- vim-syntastic
ExclusiveArch: %{java_arches} noarch
- vinci
ExcludeArch: %{ix86}
- virt-p2v
ExclusiveArch: x86_64
- virt-top
ExcludeArch: %{ix86}
ExcludeArch: %{power64}
- virt-v2v
ExcludeArch: %{ix86}
ExclusiveArch: x86_64
- virtiofsd
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- visidata
ExcludeArch: %{ix86}
- visualboyadvance-m
ExcludeArch: %{ix86}
- vkd3d
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- vkmark
ExcludeArch: s390x
- vmaf
ExclusiveArch: x86_64
- voms-api-java
ExclusiveArch: %{java_arches} noarch
- voms-clients-java
ExclusiveArch: %{java_arches} noarch
- votca
ExcludeArch: %{ix86}
- vrq
ExclusiveArch: %{ix86} x86_64
- wangle
ExclusiveArch: x86_64 aarch64 ppc64le
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{ix86} x86_64 %{arm}
- warzone2100
ExcludeArch: %{ix86}
- wasmedge
ExclusiveArch: x86_64 aarch64
- watchman
ExclusiveArch: x86_64 aarch64 ppc64le
- wdt
ExclusiveArch: x86_64 aarch64 ppc64le
- webkit2-sharp
ExclusiveArch: %mono_arches
- weld-parent
ExclusiveArch: %{java_arches} noarch
- whatip
ExcludeArch: s390x
- whipper
ExcludeArch: s390x
- whisper-cpp
ExclusiveArch: x86_64 aarch64 ppc64le
- why3
ExclusiveArch: %{ocaml_native_compiler}
- widevine-installer
ExclusiveArch: aarch64
- wildcard
ExcludeArch: %{ix86} s390x
- wine
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86}
- wine-dxvk
ExclusiveArch: %{ix86} x86_64
- wine-mono
ExcludeArch: %{power64} s390x s390
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExcludeArch: ppc64 ppc64le
- woff
ExcludeArch: %{ix86}
- workrave
ExcludeArch: %{ix86}
- ws-commons-util
ExclusiveArch: %{java_arches} noarch
- wsdl4j
ExclusiveArch: %{java_arches} noarch
- wult
ExclusiveArch: x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- x86-simd-sort
ExclusiveArch: x86_64
- xalan-j2
ExclusiveArch: %{java_arches} noarch
- xapps
ExcludeArch: %{ix86}
- xbean
ExclusiveArch: %{java_arches} noarch
- xbyak
ExclusiveArch: x86_64
- xbyak_aarch64
ExclusiveArch: aarch64
- xdg-desktop-portal
ExcludeArch: %{ix86}
- xdg-desktop-portal-gnome
ExcludeArch: %{ix86}
- xdg-desktop-portal-gtk
ExcludeArch: %{ix86}
- xdg-desktop-portal-hyprland
ExcludeArch: %{ix86}
- xe-guest-utilities-latest
ExclusiveArch: %{ix86} x86_64
- xed
ExcludeArch: %{ix86}
- xen
ExclusiveArch: x86_64 aarch64
- xephem
ExcludeArch: %{ix86}
- xerces-j2
ExclusiveArch: %{java_arches} noarch
- xeus
ExcludeArch: %{ix86}
- xeus-zmq
ExcludeArch: %{ix86}
- xfce4-sensors-plugin
ExcludeArch: s390 s390x
- xgap
ExclusiveArch: %{gap_arches}
- xiphos
ExcludeArch: ppc64
- xml-commons-apis
ExclusiveArch: %{java_arches} noarch
- xml-commons-resolver
ExclusiveArch: %{java_arches} noarch
- xml-maven-plugin
ExclusiveArch: %{java_arches} noarch
- xmlada
ExclusiveArch: %{GPRbuild_arches}
- xmlgraphics-commons
ExclusiveArch: %{java_arches} noarch
- xmlpull
ExclusiveArch: %{java_arches} noarch
- xmlstreambuffer
ExclusiveArch: %{java_arches} noarch
- xmlunit
ExclusiveArch: %{java_arches} noarch
- xmvn
ExclusiveArch: %{java_arches} noarch
- xmvn-connector-ivy
ExclusiveArch: %{java_arches} noarch
- xmvn-generator
ExclusiveArch: %{java_arches}
- xnnpack
ExclusiveArch: x86_64 aarch64
- xorg-x11-drv-amdgpu
ExcludeArch: s390 s390x
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-ati
ExcludeArch: s390 s390x
- xorg-x11-drv-fbdev
ExcludeArch: s390 s390x
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-nouveau
ExcludeArch: s390 s390x
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-qxl
ExcludeArch: s390 s390x
- xorg-x11-drv-synaptics
ExcludeArch: s390 s390x
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xreader
ExcludeArch: %{ix86}
- xsensors
ExcludeArch: %{ix86}
- xsp
ExclusiveArch: %mono_arches
- xstream
ExclusiveArch: %{java_arches} noarch
- xtb
ExcludeArch: s390x
- xtensor-python
ExcludeArch: armv7hl ppc64le s390x
- xz-java
ExclusiveArch: %{java_arches} noarch
- yarnpkg
ExclusiveArch: %{nodejs_arches}
- yices
ExcludeArch: %{ix86}
- yle-dl
ExcludeArch: %{ix86}
- yosys
ExcludeArch: %{ix86}
ExcludeArch: s390x
- zcfan
ExclusiveArch: x86_64
- zeal
ExclusiveArch: aarch64 x86_64
- zenon
ExclusiveArch: %{ocaml_native_compiler}
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zfs-fuse
ExcludeArch: s390 s390x aarch64
- zig
ExclusiveArch: %{zig_arches}
- zile
ExcludeArch: ppc64le
- zimpl
ExcludeArch: %{ix86}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
- zola
ExclusiveArch: %{rust_arches}
- zstr
ExcludeArch: %{ix86}
- zxcvbn-c
ExcludeArch: %{ix86}
- zycore-c
ExcludeArch: s390x
- zydis
ExcludeArch: s390x
2 months, 1 week
Architecture specific change in rpms/sigul.git
by githook-noreply@fedoraproject.org
The package rpms/sigul.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/sigul.git/commit/?id=c294461a09c1...
https://src.fedoraproject.org/cgit/rpms/sigul.git/commit/?id=be94d9fc1c6f....
Change:
+ExcludeArch: %{ix86}
-%ifnarch ppc64
Thanks.
Full change:
============
commit c294461a09c13200f2046c0530f834427476c361
Author: Kevin Fenzi <kevin(a)scrye.com>
Date: Tue Feb 27 17:39:22 2024 -0800
exclude i686 as no skopeo on i686
Signed-off-by: Kevin Fenzi <kevin(a)scrye.com>
diff --git a/sigul.spec b/sigul.spec
index 6a3523f..30e6ae7 100644
--- a/sigul.spec
+++ b/sigul.spec
@@ -44,6 +44,8 @@ BuildRequires: skopeo
%if 0%{?rhel}
# There is no ostree package for RHEL other than x86_64, as that's in Atomic Host
ExclusiveArch: x86_64
+%elif 0%{?fedora}
+ExcludeArch: %{ix86}
%endif
%description
commit be94d9fc1c6f40cb33c93bb14153faa398a678e4
Author: Kevin Fenzi <kevin(a)scrye.com>
Date: Tue Feb 27 17:06:54 2024 -0800
Update to v1.2
Add misc upstream patches until the next release.
Fix FTBFS ( rhbz#2226426 )
Signed-off-by: Kevin Fenzi <kevin(a)scrye.com>
diff --git a/.gitignore b/.gitignore
index e2f950b..1cc00e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@ sigul-0.97.tar.bz2
/sigul-1.0a1.tar.gz
/sigul-1.0a1.tar.bz2
/sigul-1.1.tar.bz2
+/sigul-v1.2.tar.gz
diff --git a/23f65929474dce5ff060ec929ed9aa92174f644b.patch b/23f65929474dce5ff060ec929ed9aa92174f644b.patch
new file mode 100644
index 0000000..e078530
--- /dev/null
+++ b/23f65929474dce5ff060ec929ed9aa92174f644b.patch
@@ -0,0 +1,39 @@
+From 23f65929474dce5ff060ec929ed9aa92174f644b Mon Sep 17 00:00:00 2001
+From: Patrick Uiterwijk <patrick(a)puiterwijk.org>
+Date: Tue, 16 Jan 2024 08:57:14 +0000
+Subject: [PATCH] Always add AuthorityKeyIdentifier on certicates
+
+RFC5280 says AKI MAY be omitted on self-signed certificates,
+but seemingly the Linux kernel contains a bug that makes it
+consider a certificate without it invalid.
+As such, we just always add it.
+
+Signed-off-by: Patrick Uiterwijk <patrick(a)puiterwijk.org>
+---
+ src/server.py | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/src/server.py b/src/server.py
+index c2aabe2..f27a5d0 100644
+--- a/src/server.py
++++ b/src/server.py
+@@ -2308,7 +2308,18 @@ def cmd_sign_certificate(db, conn):
+ x509.SubjectKeyIdentifier.from_public_key(subject_pubkey),
+ critical=False,
+ )
+- if issuer_cert is not None:
++ if issuer_cert is None:
++ # Technically AKI can be omitted with a self-signed cert per RFC5280
++ # (issuer_cert is None), but seemingly the Linux kernel is buggy in
++ # that it requires it. So in order to be compatible, just add it
++ # always.
++ builder = builder.add_extension(
++ x509.AuthorityKeyIdentifier.from_issuer_public_key(
++ subject_pubkey,
++ ),
++ critical=False,
++ )
++ else:
+ issuer_ski = issuer_cert.extensions.get_extension_for_class(
+ x509.SubjectKeyIdentifier
+ )
diff --git a/2b5cc2054417a3deaea8bc2c4fa7cbcad1a27dc7.patch b/2b5cc2054417a3deaea8bc2c4fa7cbcad1a27dc7.patch
new file mode 100644
index 0000000..091eab0
--- /dev/null
+++ b/2b5cc2054417a3deaea8bc2c4fa7cbcad1a27dc7.patch
@@ -0,0 +1,79 @@
+From 2b5cc2054417a3deaea8bc2c4fa7cbcad1a27dc7 Mon Sep 17 00:00:00 2001
+From: Patrick Uiterwijk <patrick(a)puiterwijk.org>
+Date: Tue, 10 Oct 2023 14:02:07 +0000
+Subject: [PATCH] Implemenent limited x509_name_from_rfc4514_string
+
+Add support for versions of python-cryptography that don't
+have x509.Name.from_rfc4514_string.
+Our implementation is quite limited, and doesn't implement
+some values from RFC4514, but it does the most common ones.
+
+Signed-off-by: Patrick Uiterwijk <patrick(a)puiterwijk.org>
+---
+ src/server.py | 2 +-
+ src/server_common.py | 34 ++++++++++++++++++++++++++++++++++
+ 2 files changed, 35 insertions(+), 1 deletion(-)
+
+diff --git a/src/server.py b/src/server.py
+index 4449012..9f1fdbb 100644
+--- a/src/server.py
++++ b/src/server.py
+@@ -2184,7 +2184,7 @@ def cmd_sign_certificate(db, conn):
+ required=True,
+ identifier=True,
+ )
+- subject_name = x509.Name.from_rfc4514_string(
++ subject_name = server_common.x509_name_from_rfc4514_string(
+ conn.safe_outer_field("subject", required=True)
+ )
+ serial_number = x509.random_serial_number()
+diff --git a/src/server_common.py b/src/server_common.py
+index e93b9d5..1f6ced2 100644
+--- a/src/server_common.py
++++ b/src/server_common.py
+@@ -26,7 +26,9 @@
+ import subprocess
+ import tempfile
+
++from cryptography import x509
+ import cryptography.hazmat.primitives.asymmetric.ec
++from cryptography.x509.oid import NameOID
+
+ import nss.nss
+ import sqlalchemy
+@@ -710,3 +712,35 @@ def gpg_detached_signature(config, signature_file, cleartext_file, fingerprint,
+ ctx.armor = armor
+ ctx.textmode = False
+ ctx.sign(cleartext_file, signature_file, ourgpg.constants.SIG_MODE_DETACH)
++
++
++def x509_name_from_rfc4514_string(full_string):
++ if hasattr(x509.Name, 'from_rfc4514_string'):
++ return x509.Name.from_rfc4514_string(full_string)
++ # This is too old of a python-cryptography to have this method.
++ # Instead, we parse just a few basic things
++ # If it contains any unsupported (or unparseable) parts,
++ # we just return an error
++ attrs = []
++ if '%' in full_string:
++ raise ValueError("Unsupported RFC4514 value '%s'" % part)
++ for part in full_string.split(','):
++ key, split, value = part.partition("=")
++ if split != '=':
++ raise ValueError("Invalid RFC4514 part '%s'" % part)
++ if key == "CN":
++ oid = NameOID.COMMON_NAME
++ elif key == "L":
++ oid = NameOID.LOCALITY_NAME
++ elif key == "ST":
++ oid = NameOID.STATE_OR_PROVINCE_NAME
++ elif key == "O":
++ oid = NameOID.ORGANIZATION_NAME
++ elif key == "OU":
++ oid = NameOID.ORGANIZATIONAL_UNIT_NAME
++ elif key == "C":
++ oid = NameOID.COUNTRY_NAME
++ else:
++ raise ValueError("Unsupported RFC4514 part '%s'" % part)
++ attrs.append(x509.NameAttribute(oid, value))
++ return x509.Name(attrs)
diff --git a/ff4f3aa2cad9ce9699c44c9a78a82b09ab40e999.patch b/ff4f3aa2cad9ce9699c44c9a78a82b09ab40e999.patch
new file mode 100644
index 0000000..bcf6fb4
--- /dev/null
+++ b/ff4f3aa2cad9ce9699c44c9a78a82b09ab40e999.patch
@@ -0,0 +1,26 @@
+From ff4f3aa2cad9ce9699c44c9a78a82b09ab40e999 Mon Sep 17 00:00:00 2001
+From: Patrick Uiterwijk <patrick(a)puiterwijk.org>
+Date: Fri, 13 Oct 2023 08:06:11 +0000
+Subject: [PATCH] Disable digital_signature for CA cert
+
+Disable the digitalSignature key usage flag on
+CA certificates.
+
+Signed-off-by: Patrick Uiterwijk <patrick(a)puiterwijk.org>
+---
+ src/server.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/server.py b/src/server.py
+index 9f1fdbb..c2aabe2 100644
+--- a/src/server.py
++++ b/src/server.py
+@@ -2242,7 +2242,7 @@ def cmd_sign_certificate(db, conn):
+ key_usage = None
+ if cert_type == 'ca':
+ key_usage = x509.KeyUsage(
+- digital_signature=True,
++ digital_signature=False,
+ key_cert_sign=True,
+ crl_sign=True,
+ content_commitment=False,
diff --git a/sigul.spec b/sigul.spec
index 8b9f663..6a3523f 100644
--- a/sigul.spec
+++ b/sigul.spec
@@ -1,15 +1,21 @@
Summary: A signing server and related software client
Name: sigul
-Version: 1.1
-Release: 9%{?dist}
+Version: 1.2
+Release: 1%{?dist}
License: GPLv2
URL: https://pagure.io/sigul/
-Source0: https://pagure.io/releases/sigul/sigul-%{version}.tar.bz2
+Source0: https://pagure.io/sigul/archive/v%{version}/sigul-v%{version}.tar.gz
Source1: sigul_bridge.service
Source2: sigul_server.service
Source3: sigul.logrotate
+# Upstream patch to avoid error with older python-cryptography in epel9
+Patch0: https://github.com/sigul-project/sigul/commit/2b5cc2054417a3deaea8bc2c4fa...
+# Upstream patch to fix the constraints on the ca certs
+Patch1: https://github.com/sigul-project/sigul/commit/ff4f3aa2cad9ce9699c44c9a78a...
+# Always add AuthorityKeyIdentifier on certicates
+Patch2: https://github.com/sigul-project/sigul/commit/23f65929474dce5ff060ec929ed...
BuildRequires: make
BuildRequires: nss-tools
@@ -18,6 +24,8 @@ Requires: python3
Requires: python3-nss >= 0.11
BuildRequires: python3-nss, gnupg, koji, python3-pexpect, python3-gpg, python3, python3-fedora
BuildRequires: rpm-sign python3-urlgrabber python3-sqlalchemy git
+BuildRequires: systemd-rpm-macros autoconf automake
+BuildRequires: python3-cryptography
Requires: logrotate
Requires: koji
@@ -31,10 +39,7 @@ BuildRequires: gnupg
BuildRequires: systemd
BuildRequires: ostree
BuildRequires: ostree-devel
-%ifnarch ppc64
-# Skopeo is not built on ppc64
BuildRequires: skopeo
-%endif
%if 0%{?rhel}
# There is no ostree package for RHEL other than x86_64, as that's in Atomic Host
@@ -50,11 +55,9 @@ that connects the two.
%package server
Summary: Sigul server component
Requires: %{name}%{?_isa} = %{version}-%{release}
-%if 0%{?rhel} && 0%{?rhel} <= 5
-Requires: python-sqlite2
-%endif
Requires: gnupg
+Requires: python3-cryptography
Requires: python3-gpg
Requires: python3-pexpect
Requires: python3-sqlalchemy >= 0.5
@@ -87,16 +90,15 @@ The bridge part of sigul that facilitates connection between the client and serv
%prep
-%setup -q
+%autosetup -p1 -n sigul-v%{version}
%build
+autoreconf -i
%configure
make %{?_smp_mflags}
%check
exit 0
-%ifnarch ppc64
-# Skopeo is not built on ppc64
%if 0%{?fedora}
if make check; then
echo "Tests passed"
@@ -107,7 +109,6 @@ exit 0
exit 1
fi
%endif
-%endif
%install
make DESTDIR=$RPM_BUILD_ROOT INSTALL='install -p' install
@@ -186,6 +187,13 @@ exit 0
%changelog
+* Tue Feb 27 2024 Kevin Fenzi <kevin(a)scrye.com> - 1.2-1
+- Update to v1.2
+- Fix ftbfs. rhbz#2226426
+- Add patch to always set AuthorityKeyIdentifier
+- Add patch for constraints on ca cert.
+- Add patch for older python-cryptography in rhel9
+
* Sat Jan 27 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/sources b/sources
index 73377d9..9073f9d 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (sigul-1.1.tar.bz2) = 0a9736ebae15dab4216d7b3b56abaf8ad530783c4f8bde430ab4deeee2c06288fd0f76047bba42e3081d3e3c0ea1efca94ed4126ed1d3f5c1795680381b8f0ed
+SHA512 (sigul-v1.2.tar.gz) = 34f4ff22099776c6022be0f75b8f2ab70a19a2129c5ec754dc94b3efbe0a71939edf458a6cfabc0a56043b99e49a861159d41a23ab5940ca9daa1a124f193d7f
2 months, 1 week
Architecture specific change in rpms/ghc9.8.git
by githook-noreply@fedoraproject.org
The package rpms/ghc9.8.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/ghc9.8.git/commit/?id=9cf563a38a8...
https://src.fedoraproject.org/cgit/rpms/ghc9.8.git/commit/?id=5c1e44286d2...
https://src.fedoraproject.org/cgit/rpms/ghc9.8.git/commit/?id=d1dee3aaff6...
https://src.fedoraproject.org/cgit/rpms/ghc9.8.git/commit/?id=4e2b1034410....
Change:
+%ifarch riscv64
+%ifarch %{ghc_unregisterized_arches} riscv64
-%ifarch s390x
+%ifarch s390x
Thanks.
Full change:
============
commit 2f294d96018372a4bf47065a9d0578c91347ad89
Author: Jens Petersen <petersen(a)redhat.com>
Date: Mon Feb 26 17:45:06 2024 +0800
update to 9.8.2
diff --git a/.gitignore b/.gitignore
index 439464c..13a83e4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/ghc-9.8.0.20230727-src.tar.lz
/ghc-9.8.1-src.tar.lz
+/ghc-9.8.2-src.tar.lz
diff --git a/10518.patch b/10518.patch
deleted file mode 100644
index 2a4c84e..0000000
--- a/10518.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From a1dc4da985db1e14c8251a024edd47d832da4fb2 Mon Sep 17 00:00:00 2001
-From: Greg Steuck <gnezdo(a)groq.com>
-Date: Tue, 23 May 2023 13:25:17 -0700
-Subject: [PATCH] Remove undefined FP_PROG_LD_BUILD_ID from configure.ac's
-
----
- configure.ac | 1 -
- distrib/configure.ac.in | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 0005d566570..e3b6ab2fe8d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -487,7 +487,6 @@ CFLAGS="$CFLAGS $GccUseLdOpt"
- AC_SUBST([LdCmd])
-
- FP_PROG_LD_IS_GNU
--FP_PROG_LD_BUILD_ID
- FP_PROG_LD_NO_COMPACT_UNWIND
- FP_PROG_LD_FILELIST
-
-diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in
-index ce75510b8ac..3dc588085d6 100644
---- a/distrib/configure.ac.in
-+++ b/distrib/configure.ac.in
-@@ -130,7 +130,6 @@ CFLAGS="$CFLAGS $GccUseLdOpt"
- AC_SUBST([LdCmd])
-
- FP_PROG_LD_IS_GNU
--FP_PROG_LD_BUILD_ID
- FP_PROG_LD_NO_COMPACT_UNWIND
- FP_PROG_LD_FILELIST
-
---
-GitLab
-
diff --git a/11662.patch b/11662.patch
deleted file mode 100644
index ce6ca44..0000000
--- a/11662.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From bed85f7bc358fdca4677a3070b94ea544bb9e7ff Mon Sep 17 00:00:00 2001
-From: Stefan Schulze Frielinghaus <stefansf(a)linux.ibm.com>
-Date: Mon, 27 Nov 2023 12:34:47 +0100
-Subject: [PATCH] llvmGen: Align objects in the data section
-
-Objects in the data section may be referenced via tagged pointers.
-Thus, align those objects to a 4- or 8-byte boundary for 32- or 64-bit
-platforms, respectively. Note, this may need to be reconsidered if
-objects with a greater natural alignment requirement are emitted as e.g.
-128-bit atomics.
-
-Fixes #24163.
----
- compiler/GHC/CmmToLlvm/Data.hs | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/compiler/GHC/CmmToLlvm/Data.hs b/compiler/GHC/CmmToLlvm/Data.hs
-index caac121413c..5e8912e3bc7 100644
---- a/compiler/GHC/CmmToLlvm/Data.hs
-+++ b/compiler/GHC/CmmToLlvm/Data.hs
-@@ -89,6 +89,7 @@ genLlvmData (sec, CmmStaticsRaw lbl xs) = do
- align = case sec of
- Section CString _ -> if (platformArch platform == ArchS390X)
- then Just 2 else Just 1
-+ Section Data _ -> Just $ platformWordSizeInBytes platform
- _ -> Nothing
- const = if sectionProtection sec == ReadOnlySection
- then Constant else Global
---
-GitLab
-
diff --git a/ghc-modern-c-fix.patch b/ghc-modern-c-fix.patch
deleted file mode 100644
index 9ae912f..0000000
--- a/ghc-modern-c-fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/compiler/GHC/HsToCore/Foreign/C.hs
-+++ b/compiler/GHC/HsToCore/Foreign/C.hs
-@@ -560,7 +560,7 @@ mkFExportCBits dflags c_nm maybe_target arg_htys res_hty is_IO_res_ty cc
- , ppUnless res_hty_is_unit $
- if libffi
- then char '*' <> parens (ffi_cResType <> char '*') <>
-- text "resp = cret;"
-+ text "resp = " <> parens ffi_cResType <> text "cret;"
- else text "return cret;"
- , rbrace
- ]
diff --git a/ghc9.8.spec b/ghc9.8.spec
index a760e41..28f074f 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -20,7 +20,7 @@
# to handle RCs
%global ghc_release %{version}
-%global base_ver 4.19.0.0
+%global base_ver 4.19.1.0
%global ghc_bignum_ver 1.3
%global ghc_compact_ver 0.1.0.0
%global hpc_ver 0.7.0.0
@@ -52,12 +52,12 @@
%global ghc_unregisterized_arches s390 %{mips}
Name: %{ghc_name}
-Version: 9.8.1
+Version: 9.8.2
# Since library subpackages are versioned:
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -77,8 +77,6 @@ ExcludeArch: armv7hl
Patch1: ghc-gen_contents_index-haddock-path.patch
Patch2: ghc-Cabal-install-PATH-warning.patch
Patch3: ghc-gen_contents_index-nodocs.patch
-# https://gitlab.haskell.org/ghc/ghc/-/issues/24355
-Patch4: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10518.patch
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604
# needs more backporting to 9.6
Patch9: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604.patch
@@ -91,11 +89,6 @@ Patch13: text2-allow-ghc8-arm.patch
# unregisterised
Patch16: ghc-hadrian-s390x-rts--qg.patch
-# s390x
-# https://gitlab.haskell.org/ghc/ghc/-/issues/24163
-# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662
-Patch17: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662.patch
-
# Debian patches:
# bad according to upstream
# see eg https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604
@@ -111,10 +104,6 @@ Patch40: cabal-add-riscv64.patch
# Upstream in >= 9.9.
Patch41: https://gitlab.haskell.org/ghc/ghc/-/commit/dd38aca95ac25adc9888083669b32...
-# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.o...
-# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12079
-Patch42: ghc-modern-c-fix.patch
-
# https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms
# fedora ghc has been bootstrapped on
@@ -332,12 +321,12 @@ This provides the hadrian tool which can be used to build ghc.
%ghc_lib_subpackage -d -l %BSDHaskellReport array-0.5.6.0
%ghc_lib_subpackage -d -l %BSDHaskellReport -c gmp-devel%{?_isa},libffi-devel%{?_isa} base-%{base_ver}
%ghc_lib_subpackage -d -l BSD-3-Clause binary-0.8.9.1
-%ghc_lib_subpackage -d -l BSD-3-Clause bytestring-0.12.0.2
+%ghc_lib_subpackage -d -l BSD-3-Clause bytestring-0.12.1.0
%ghc_lib_subpackage -d -l %BSDHaskellReport containers-0.6.8
%ghc_lib_subpackage -d -l %BSDHaskellReport deepseq-1.5.0.0
%ghc_lib_subpackage -d -l %BSDHaskellReport directory-1.3.8.1
%ghc_lib_subpackage -d -l %BSDHaskellReport exceptions-0.10.7
-%ghc_lib_subpackage -d -l BSD-3-Clause filepath-1.4.100.4
+%ghc_lib_subpackage -d -l BSD-3-Clause filepath-1.4.200.1
# in ghc not ghc-libraries:
%ghc_lib_subpackage -d -x ghc-%{ghc_version_override}
%ghc_lib_subpackage -d -x -l BSD-3-Clause ghc-bignum-%{ghc_bignum_ver}
@@ -359,10 +348,10 @@ This provides the hadrian tool which can be used to build ghc.
%ghc_lib_subpackage -d -l BSD-3-Clause stm-2.5.2.1
%ghc_lib_subpackage -d -l BSD-3-Clause template-haskell-2.21.0.0
%ghc_lib_subpackage -d -l BSD-3-Clause -c ncurses-devel%{?_isa} terminfo-0.4.1.6
-%ghc_lib_subpackage -d -l BSD-3-Clause text-2.1
+%ghc_lib_subpackage -d -l BSD-3-Clause text-2.1.1
%ghc_lib_subpackage -d -l BSD-3-Clause time-1.12.2
%ghc_lib_subpackage -d -l BSD-3-Clause transformers-0.6.1.0
-%ghc_lib_subpackage -d -l BSD-3-Clause unix-2.8.3.0
+%ghc_lib_subpackage -d -l BSD-3-Clause unix-2.8.4.0
%ghc_lib_subpackage -d -l BSD-3-Clause xhtml-%{xhtml_ver}
%endif
@@ -398,7 +387,6 @@ Installing this package causes %{name}-*-prof packages corresponding to
%patch -P1 -p1 -b .orig
%patch -P3 -p1 -b .orig
-%patch -P4 -p1 -b .orig
#%%patch -P2 -p1 -b .orig
#%%patch -P9 -p1 -b .orig
@@ -418,8 +406,6 @@ rm libffi-tarballs/libffi-*.tar.gz
%endif
%endif
-%patch -P17 -p1 -b .orig
-
#debian
#%%patch -P24 -p1 -b .orig
%patch -P26 -p1 -b .orig
@@ -432,8 +418,6 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P41 -p1 -b .orig
%endif
-#Modern C fix
-%patch -P42 -p1 -b .orig
%build
# patch4
@@ -864,6 +848,10 @@ make test
%changelog
+* Mon Feb 26 2024 Jens Petersen <petersen(a)redhat.com> - 9.8.2-8
+- https://downloads.haskell.org/~ghc/9.8.2/docs/users_guide/9.8.2-notes.html
+- minor bumps to bytestring, filepath, text, unix
+
* Thu Feb 15 2024 Richard W.M. Jones <rjones(a)redhat.com> - 9.8.1-7
- Fix generated C for Modern C Initiative
diff --git a/sources b/sources
index c78800b..13a858f 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (ghc-9.8.1-src.tar.lz) = e2cc1d2b43b2b1a24043a6dc0910e607eba15910556d2e91180cca4dc65086ea84326687d50eb7be7b7099a1517852ad5fbc37eaad3273777a1e42e0675b26f1
+SHA512 (ghc-9.8.2-src.tar.lz) = 9bb2e8bc4fc694d760ab7cb60d9b4e504cff3f92953b31476298c6c11c397a1b7bffeb2fd5b12593507f2d4d7d8daea7f6407de0a93f6cced9a2b1e6ea3b8d7f
commit 6d8d84a9ad88193dcbb4f46d356136380ca8a986
Author: Jens Petersen <petersen(a)redhat.com>
Date: Fri Feb 16 15:49:16 2024 +0800
fixup ghc-modern-c-fix patch file extension
diff --git a/ghc-modern-c-fix.txt b/ghc-modern-c-fix.patch
similarity index 100%
rename from ghc-modern-c-fix.txt
rename to ghc-modern-c-fix.patch
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 871b33e..a760e41 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -113,7 +113,7 @@ Patch41: https://gitlab.haskell.org/ghc/ghc/-/commit/dd38aca95ac25adc9888083669b
# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.o...
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12079
-Patch42: ghc-modern-c-fix.txt
+Patch42: ghc-modern-c-fix.patch
# https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms
commit ffa7c9c884c138084c74933b504379cb202a5c15
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Thu Feb 15 13:20:10 2024 +0000
Fix generated C for Modern C Initiative
diff --git a/ghc-modern-c-fix.txt b/ghc-modern-c-fix.txt
new file mode 100644
index 0000000..9ae912f
--- /dev/null
+++ b/ghc-modern-c-fix.txt
@@ -0,0 +1,11 @@
+--- a/compiler/GHC/HsToCore/Foreign/C.hs
++++ b/compiler/GHC/HsToCore/Foreign/C.hs
+@@ -560,7 +560,7 @@ mkFExportCBits dflags c_nm maybe_target arg_htys res_hty is_IO_res_ty cc
+ , ppUnless res_hty_is_unit $
+ if libffi
+ then char '*' <> parens (ffi_cResType <> char '*') <>
+- text "resp = cret;"
++ text "resp = " <> parens ffi_cResType <> text "cret;"
+ else text "return cret;"
+ , rbrace
+ ]
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 492c8a3..871b33e 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -57,7 +57,7 @@ Version: 9.8.1
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -111,6 +111,10 @@ Patch40: cabal-add-riscv64.patch
# Upstream in >= 9.9.
Patch41: https://gitlab.haskell.org/ghc/ghc/-/commit/dd38aca95ac25adc9888083669b32...
+# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.o...
+# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12079
+Patch42: ghc-modern-c-fix.txt
+
# https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms
# fedora ghc has been bootstrapped on
@@ -428,6 +432,9 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P41 -p1 -b .orig
%endif
+#Modern C fix
+%patch -P42 -p1 -b .orig
+
%build
# patch4
autoupdate
@@ -857,6 +864,9 @@ make test
%changelog
+* Thu Feb 15 2024 Richard W.M. Jones <rjones(a)redhat.com> - 9.8.1-7
+- Fix generated C for Modern C Initiative
+
* Wed Jan 24 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 9.8.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit 9cf563a38a8cf5caa7fc99381a8545db31ceaa1d
Author: Jens Petersen <petersen(a)redhat.com>
Date: Tue Feb 13 00:50:57 2024 +0800
condition the riscv64 patches
Patching Cabal would cause the ABI hash to change causing major
rawhide breakage
diff --git a/ghc9.8.spec b/ghc9.8.spec
index ebac60e..492c8a3 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -421,11 +421,12 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P26 -p1 -b .orig
%patch -P27 -p1 -b .orig
+%ifarch riscv64
#RISCV64 cabal support
%patch -P40 -p1 -b .orig
-
#GHCi support
%patch -P41 -p1 -b .orig
+%endif
%build
# patch4
commit 34c593df21525c72e4a99de1b23618ab4217fab4
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Mon Feb 12 15:38:31 2024 +0000
riscv64: Apply Cabal patch
Commit ebb2ee7214 ("Add RISCV64 to Cabal") added the patch but did not
apply it in %prep.
Signed-off-by: Richard W.M. Jones <rjones(a)redhat.com>
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 9e9e316..ebac60e 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -421,6 +421,9 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P26 -p1 -b .orig
%patch -P27 -p1 -b .orig
+#RISCV64 cabal support
+%patch -P40 -p1 -b .orig
+
#GHCi support
%patch -P41 -p1 -b .orig
commit a2442ae1c470505009eb37d2175662b18308a287
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Mon Feb 12 13:57:25 2024 +0000
riscv64: Enable support for GHCi (internal interpreter)
Signed-off-by: Richard W.M. Jones <rjones(a)redhat.com>
diff --git a/dd38aca95ac25adc9888083669b32ff551151259.patch b/dd38aca95ac25adc9888083669b32ff551151259.patch
new file mode 100644
index 0000000..77a7100
--- /dev/null
+++ b/dd38aca95ac25adc9888083669b32ff551151259.patch
@@ -0,0 +1,26 @@
+From dd38aca95ac25adc9888083669b32ff551151259 Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab(a)suse.de>
+Date: Mon, 19 Jun 2023 10:38:26 +0200
+Subject: [PATCH] Hadrian: enable GHCi support on riscv64
+
+---
+ hadrian/src/Oracles/Setting.hs | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs
+index b9e5d312074..93561a94fe4 100644
+--- a/hadrian/src/Oracles/Setting.hs
++++ b/hadrian/src/Oracles/Setting.hs
+@@ -302,7 +302,8 @@ ghcWithInterpreter = do
+ , "darwin", "kfreebsdgnu" ]
+ goodArch <- anyTargetArch [ "i386", "x86_64", "powerpc"
+ , "arm", "aarch64", "s390x"
+- , "powerpc64", "powerpc64le" ]
++ , "powerpc64", "powerpc64le"
++ , "riscv64" ]
+ return $ goodOs && goodArch
+
+ -- | Variants of the ARM architecture.
+--
+GitLab
+
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 8b5e8a3..9e9e316 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -107,6 +107,10 @@ Patch27: haddock-remove-googleapis-fonts.patch
# See: https://github.com/haskell/cabal/pull/9062
Patch40: cabal-add-riscv64.patch
+# Enable GHCi support on riscv64
+# Upstream in >= 9.9.
+Patch41: https://gitlab.haskell.org/ghc/ghc/-/commit/dd38aca95ac25adc9888083669b32...
+
# https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms
# fedora ghc has been bootstrapped on
@@ -417,6 +421,8 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P26 -p1 -b .orig
%patch -P27 -p1 -b .orig
+#GHCi support
+%patch -P41 -p1 -b .orig
%build
# patch4
commit 5c1e44286d2b5a38883dde00ef7ec038973b1f89
Author: David Abdurachmanov <davidlt(a)rivosinc.com>
Date: Tue Nov 14 20:08:38 2023 +0200
Add support for riscv64
Support for an LLVM backend was added a while back in this
upstream commit:
https://gitlab.haskell.org/ghc/ghc/-/commit/31e265c1df948d1bcc82d08affe99...
Signed-off-by: David Abdurachmanov <davidlt(a)rivosinc.com>
diff --git a/ghc9.8.spec b/ghc9.8.spec
index c501e4f..8b5e8a3 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -48,8 +48,8 @@
%else
%global llvm_major 15
%endif
-%global ghc_llvm_archs armv7hl s390x
-%global ghc_unregisterized_arches s390 %{mips} riscv64
+%global ghc_llvm_archs armv7hl s390x riscv64
+%global ghc_unregisterized_arches s390 %{mips}
Name: %{ghc_name}
Version: 9.8.1
@@ -400,7 +400,7 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P13 -p1 -b .orig
%endif
-%ifarch %{ghc_unregisterized_arches}
+%ifarch %{ghc_unregisterized_arches} riscv64
%patch -P16 -p1 -b .orig
%endif
# remove if epel9 ghc using llvm
commit 609af0f442b784d1a9bea5776d9ac5a5e7fe1045
Author: David Abdurachmanov <davidlt(a)rivosinc.com>
Date: Mon Nov 20 19:27:40 2023 +0200
Add RISCV64 to Cabal
This is already merged upstreamed. See:
https://github.com/haskell/cabal/pull/9062
Signed-off-by: David Abdurachmanov <davidlt(a)rivosinc.com>
diff --git a/cabal-add-riscv64.patch b/cabal-add-riscv64.patch
new file mode 100644
index 0000000..e2237d8
--- /dev/null
+++ b/cabal-add-riscv64.patch
@@ -0,0 +1,43 @@
+diff --git a/libraries/Cabal/Cabal-syntax/src/Distribution/System.hs b/libraries/Cabal/Cabal-syntax/src/Distribution/System.hs
+index 68bda63..6521464 100644
+--- a/libraries/Cabal/Cabal-syntax/src/Distribution/System.hs
++++ b/libraries/Cabal/Cabal-syntax/src/Distribution/System.hs
+@@ -159,7 +159,7 @@ buildOS = classifyOS Permissive System.Info.os
+
+ -- | These are the known Arches: I386, X86_64, PPC, PPC64, Sparc,
+ -- Arm, AArch64, Mips, SH, IA64, S390, S390X, Alpha, Hppa, Rs6000,
+--- M68k, Vax, JavaScript and Wasm32.
++-- M68k, Vax, RISCV64, JavaScript and Wasm32.
+ --
+ -- The following aliases can also be used:
+ -- * PPC alias: powerpc
+@@ -173,7 +173,7 @@ data Arch = I386 | X86_64 | PPC | PPC64 | Sparc
+ | Arm | AArch64 | Mips | SH
+ | IA64 | S390 | S390X
+ | Alpha | Hppa | Rs6000
+- | M68k | Vax
++ | M68k | Vax | RISCV64
+ | JavaScript
+ | Wasm32
+ | OtherArch String
+@@ -188,7 +188,7 @@ knownArches = [I386, X86_64, PPC, PPC64, Sparc
+ ,Arm, AArch64, Mips, SH
+ ,IA64, S390, S390X
+ ,Alpha, Hppa, Rs6000
+- ,M68k, Vax
++ ,M68k, Vax, RISCV64
+ ,JavaScript
+ ,Wasm32]
+
+diff --git a/libraries/Cabal/Cabal/src/Distribution/Simple/PreProcess.hs b/libraries/Cabal/Cabal/src/Distribution/Simple/PreProcess.hs
+index fbe5710..a53b33d 100644
+--- a/libraries/Cabal/Cabal/src/Distribution/Simple/PreProcess.hs
++++ b/libraries/Cabal/Cabal/src/Distribution/Simple/PreProcess.hs
+@@ -729,6 +729,7 @@ platformDefines lbi =
+ Rs6000 -> ["rs6000"]
+ M68k -> ["m68k"]
+ Vax -> ["vax"]
++ RISCV64 -> ["riscv64"]
+ JavaScript -> ["javascript"]
+ Wasm32 -> ["wasm32"]
+ OtherArch _ -> []
diff --git a/ghc9.8.spec b/ghc9.8.spec
index d746590..c501e4f 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -103,6 +103,10 @@ Patch17: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662.patch
Patch26: no-missing-haddock-file-warning.patch
Patch27: haddock-remove-googleapis-fonts.patch
+# RISCV64 added to Cabal
+# See: https://github.com/haskell/cabal/pull/9062
+Patch40: cabal-add-riscv64.patch
+
# https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms
# fedora ghc has been bootstrapped on
commit b289d395a7cbee5acb06e8783ea601429c7c1989
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Wed Jan 24 14:44:49 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 3159dde..d746590 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -57,7 +57,7 @@ Version: 9.8.1
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -843,6 +843,9 @@ make test
%changelog
+* Wed Jan 24 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 9.8.1-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Mon Jan 22 2024 Jens Petersen <petersen(a)redhat.com> - 9.8.1-5
- use gcc default ld (ie ld.bfd) for rawhide
commit 89e0b015beb6bae0416decab5b6b10e9c1112552
Author: Jens Petersen <petersen(a)redhat.com>
Date: Wed Jan 24 15:08:43 2024 +0800
autoconf: remove undefined FP_PROG_LD_BUILD_ID
diff --git a/10518.patch b/10518.patch
new file mode 100644
index 0000000..2a4c84e
--- /dev/null
+++ b/10518.patch
@@ -0,0 +1,37 @@
+From a1dc4da985db1e14c8251a024edd47d832da4fb2 Mon Sep 17 00:00:00 2001
+From: Greg Steuck <gnezdo(a)groq.com>
+Date: Tue, 23 May 2023 13:25:17 -0700
+Subject: [PATCH] Remove undefined FP_PROG_LD_BUILD_ID from configure.ac's
+
+---
+ configure.ac | 1 -
+ distrib/configure.ac.in | 1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0005d566570..e3b6ab2fe8d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -487,7 +487,6 @@ CFLAGS="$CFLAGS $GccUseLdOpt"
+ AC_SUBST([LdCmd])
+
+ FP_PROG_LD_IS_GNU
+-FP_PROG_LD_BUILD_ID
+ FP_PROG_LD_NO_COMPACT_UNWIND
+ FP_PROG_LD_FILELIST
+
+diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in
+index ce75510b8ac..3dc588085d6 100644
+--- a/distrib/configure.ac.in
++++ b/distrib/configure.ac.in
+@@ -130,7 +130,6 @@ CFLAGS="$CFLAGS $GccUseLdOpt"
+ AC_SUBST([LdCmd])
+
+ FP_PROG_LD_IS_GNU
+-FP_PROG_LD_BUILD_ID
+ FP_PROG_LD_NO_COMPACT_UNWIND
+ FP_PROG_LD_FILELIST
+
+--
+GitLab
+
diff --git a/ghc9.8.spec b/ghc9.8.spec
index f4d2015..3159dde 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -77,6 +77,8 @@ ExcludeArch: armv7hl
Patch1: ghc-gen_contents_index-haddock-path.patch
Patch2: ghc-Cabal-install-PATH-warning.patch
Patch3: ghc-gen_contents_index-nodocs.patch
+# https://gitlab.haskell.org/ghc/ghc/-/issues/24355
+Patch4: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10518.patch
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604
# needs more backporting to 9.6
Patch9: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604.patch
@@ -384,7 +386,7 @@ Installing this package causes %{name}-*-prof packages corresponding to
%patch -P1 -p1 -b .orig
%patch -P3 -p1 -b .orig
-
+%patch -P4 -p1 -b .orig
#%%patch -P2 -p1 -b .orig
#%%patch -P9 -p1 -b .orig
@@ -413,8 +415,8 @@ rm libffi-tarballs/libffi-*.tar.gz
%build
-# currently no autoconf patches
-#autoupdate
+# patch4
+autoupdate
%ghc_set_gcc_flags
export CC=%{_bindir}/gcc
commit 93cae2e893fb859021dd55ead49aa346095075e3
Author: Jens Petersen <petersen(a)redhat.com>
Date: Mon Jan 22 21:26:34 2024 +0800
currently no autoconf patches
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 3fc773b..f4d2015 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -413,8 +413,8 @@ rm libffi-tarballs/libffi-*.tar.gz
%build
-# patch5
-autoupdate
+# currently no autoconf patches
+#autoupdate
%ghc_set_gcc_flags
export CC=%{_bindir}/gcc
commit 782442a19c2681bc744dce8d72f91cd11b5b6ca4
Author: Jens Petersen <petersen(a)redhat.com>
Date: Mon Jan 22 21:01:04 2024 +0800
use gcc default ld (ie ld.bfd) for rawhide
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 6f99862..3fc773b 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -57,7 +57,7 @@ Version: 9.8.1
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -418,11 +418,13 @@ autoupdate
%ghc_set_gcc_flags
export CC=%{_bindir}/gcc
-# lld breaks build-id
+# note lld breaks build-id
# /usr/bin/debugedit: Cannot handle 8-byte build ID
# https://bugzilla.redhat.com/show_bug.cgi?id=2116508
# https://gitlab.haskell.org/ghc/ghc/-/issues/22195
+%if 0%{fedora} < 40
export LD=%{_bindir}/ld.gold
+%endif
export GHC=%{_bindir}/ghc%{?ghcboot_major:-%{ghcboot_major}}
@@ -434,6 +436,9 @@ export GHC=%{_bindir}/ghc%{?ghcboot_major:-%{ghcboot_major}}
--sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \
--docdir=%{_docdir}/%{name} \
--with-system-libffi \
+%if 0%{fedora} >= 40
+ --disable-ld-override \
+%endif
%ifarch %{ghc_unregisterized_arches}
--enable-unregisterised \
%endif
@@ -488,7 +493,11 @@ cp -p LICENSE ../LICENSE.hadrian
# https://gitlab.haskell.org/ghc/ghc/-/issues/20120#note_366872
(
cd _build/bindist/ghc-%{version}-*
-./configure --prefix=%{buildroot}%{ghclibdir} --bindir=%{buildroot}%{_bindir} --libdir=%{buildroot}%{_libdir} --mandir=%{buildroot}%{_mandir} --docdir=%{buildroot}%{_docdir}/%{name}
+./configure --prefix=%{buildroot}%{ghclibdir} --bindir=%{buildroot}%{_bindir} --libdir=%{buildroot}%{_libdir} --mandir=%{buildroot}%{_mandir} --docdir=%{buildroot}%{_docdir}/%{name} \
+%if 0%{fedora} >= 40
+ --disable-ld-override
+%endif
+%{nil}
make install
)
@@ -832,6 +841,9 @@ make test
%changelog
+* Mon Jan 22 2024 Jens Petersen <petersen(a)redhat.com> - 9.8.1-5
+- use gcc default ld (ie ld.bfd) for rawhide
+
* Fri Jan 19 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 9.8.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit 8ee7aa1630539c71c56f1c3201739aa13091b1d3
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jan 19 22:15:59 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 94348fc..6f99862 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -57,7 +57,7 @@ Version: 9.8.1
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -832,6 +832,9 @@ make test
%changelog
+* Fri Jan 19 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 9.8.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Fri Jan 5 2024 Jens Petersen <petersen(a)redhat.com> - 9.8.1-3
- fix llvm alignment in data sections (@stefansf (IBM))
which should fix certain runtime crashes (#2248097)
commit 2fb2c982c6dd04be9675608f145f6eb60036697b
Author: Jens Petersen <petersen(a)redhat.com>
Date: Fri Jan 5 19:52:08 2024 +0800
set _smp_ncpus_max to 64 to avoid fd exhaustion
avoids failure on 224 core aarch64: resource exhausted (Too many open files)
diff --git a/ghc9.8.spec b/ghc9.8.spec
index a83158f..94348fc 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -466,6 +466,11 @@ cd hadrian
%global hadrian_llvm +llvm
%endif
%define hadrian_docs %{!?with_haddock:--docs=no-haddocks} --docs=%[%{?with_manual} ? "no-sphinx-pdfs" : "no-sphinx"]
+# + hadrian/dist/build/hadrian/hadrian -j224 --flavour=perf --docs=no-sphinx-pdfs binary-dist-dir --hash-unit-ids
+# # cabal-read (for OracleQ (PackageDataKey (Package {pkgType = Library, pkgName = "rts", pkgPath = "rts"})))
+# rts/include/rts/Messages.h: withFile: resource exhausted (Too many open files)
+# https://koji.fedoraproject.org/koji/taskinfo?taskID=111327221
+%global _smp_ncpus_max 64
# quickest does not build shared libs
# try release instead of perf
%{hadrian} %{?_smp_mflags} --flavour=%[%{?with_perfbuild} ? "perf" : "quick"]%{!?with_ghc_prof:+no_profiled_libs}%{?hadrian_llvm} %{hadrian_docs} binary-dist-dir --hash-unit-ids
commit 451342c7752c7c7e3ace58b052b39b8d96229dbb
Author: Jens Petersen <petersen(a)redhat.com>
Date: Fri Jan 5 18:46:25 2024 +0800
bump fedora llvm to 15
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 786c536..a83158f 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -46,7 +46,7 @@
%if 0%{?rhel} == 9
%global llvm_major 12
%else
-%global llvm_major 14
+%global llvm_major 15
%endif
%global ghc_llvm_archs armv7hl s390x
%global ghc_unregisterized_arches s390 %{mips} riscv64
commit 2cffbbcb689ead1d72f1b8106d8fe19b7cc98a42
Author: Jens Petersen <petersen(a)redhat.com>
Date: Fri Jan 5 18:46:01 2024 +0800
boot with ghc9.6 for current releases
diff --git a/ghc9.8.spec b/ghc9.8.spec
index 35ee520..786c536 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -28,8 +28,8 @@
%global xhtml_ver 3000.2.2.1
# bootstrap needs 9.4+
-%if 0%{?fedora} < 39
-%global ghcboot_major 9.4
+%if 0%{?fedora} < 40
+%global ghcboot_major 9.6
%endif
%global ghcboot ghc%{?ghcboot_major}
commit d1dee3aaff69127924aa23f8d04a6ad152b73973
Author: Jens Petersen <petersen(a)redhat.com>
Date: Fri Jan 5 18:45:06 2024 +0800
apply the llvm data alignment patch on all archs
diff --git a/ghc9.8.spec b/ghc9.8.spec
index fe6c989..35ee520 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -404,9 +404,7 @@ rm libffi-tarballs/libffi-*.tar.gz
%endif
%endif
-%ifarch s390x
%patch -P17 -p1 -b .orig
-%endif
#debian
#%%patch -P24 -p1 -b .orig
@@ -829,8 +827,8 @@ make test
%changelog
-* Sat Nov 25 2023 Jens Petersen <petersen(a)redhat.com> - 9.8.1-3
-- s390x: fix llvm alignment in data sections (@stefansf (IBM))
+* Fri Jan 5 2024 Jens Petersen <petersen(a)redhat.com> - 9.8.1-3
+- fix llvm alignment in data sections (@stefansf (IBM))
which should fix certain runtime crashes (#2248097)
* Sun Nov 12 2023 Jens Petersen <petersen(a)redhat.com> - 9.8.1-2
commit 4e2b10344102d1a2f7a8996cc8a5e4732364f04f
Author: Jens Petersen <petersen(a)redhat.com>
Date: Sat Nov 25 09:24:30 2023 +0800
s390x: patch from @stefansf (IBM) to fix llvm alignment of data sections
diff --git a/11662.patch b/11662.patch
new file mode 100644
index 0000000..ce6ca44
--- /dev/null
+++ b/11662.patch
@@ -0,0 +1,31 @@
+From bed85f7bc358fdca4677a3070b94ea544bb9e7ff Mon Sep 17 00:00:00 2001
+From: Stefan Schulze Frielinghaus <stefansf(a)linux.ibm.com>
+Date: Mon, 27 Nov 2023 12:34:47 +0100
+Subject: [PATCH] llvmGen: Align objects in the data section
+
+Objects in the data section may be referenced via tagged pointers.
+Thus, align those objects to a 4- or 8-byte boundary for 32- or 64-bit
+platforms, respectively. Note, this may need to be reconsidered if
+objects with a greater natural alignment requirement are emitted as e.g.
+128-bit atomics.
+
+Fixes #24163.
+---
+ compiler/GHC/CmmToLlvm/Data.hs | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/compiler/GHC/CmmToLlvm/Data.hs b/compiler/GHC/CmmToLlvm/Data.hs
+index caac121413c..5e8912e3bc7 100644
+--- a/compiler/GHC/CmmToLlvm/Data.hs
++++ b/compiler/GHC/CmmToLlvm/Data.hs
+@@ -89,6 +89,7 @@ genLlvmData (sec, CmmStaticsRaw lbl xs) = do
+ align = case sec of
+ Section CString _ -> if (platformArch platform == ArchS390X)
+ then Just 2 else Just 1
++ Section Data _ -> Just $ platformWordSizeInBytes platform
+ _ -> Nothing
+ const = if sectionProtection sec == ReadOnlySection
+ then Constant else Global
+--
+GitLab
+
diff --git a/ghc9.8.spec b/ghc9.8.spec
index e38a875..fe6c989 100644
--- a/ghc9.8.spec
+++ b/ghc9.8.spec
@@ -57,7 +57,7 @@ Version: 9.8.1
# - release can only be reset if *all* library versions get bumped simultaneously
# (sometimes after a major release)
# - minor release numbers for a branch should be incremented monotonically
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD-3-Clause AND HaskellReport
@@ -86,8 +86,14 @@ Patch9: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604.patch
# reverts https://github.com/haskell/text/pull/405
Patch13: text2-allow-ghc8-arm.patch
+# unregisterised
Patch16: ghc-hadrian-s390x-rts--qg.patch
+# s390x
+# https://gitlab.haskell.org/ghc/ghc/-/issues/24163
+# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662
+Patch17: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662.patch
+
# Debian patches:
# bad according to upstream
# see eg https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9604
@@ -388,9 +394,19 @@ rm libffi-tarballs/libffi-*.tar.gz
%patch -P13 -p1 -b .orig
%endif
+%ifarch %{ghc_unregisterized_arches}
+%patch -P16 -p1 -b .orig
+%endif
+# remove if epel9 ghc using llvm
%ifarch s390x
+%if %{defined el9}
%patch -P16 -p1 -b .orig
%endif
+%endif
+
+%ifarch s390x
+%patch -P17 -p1 -b .orig
+%endif
#debian
#%%patch -P24 -p1 -b .orig
@@ -813,6 +829,10 @@ make test
%changelog
+* Sat Nov 25 2023 Jens Petersen <petersen(a)redhat.com> - 9.8.1-3
+- s390x: fix llvm alignment in data sections (@stefansf (IBM))
+ which should fix certain runtime crashes (#2248097)
+
* Sun Nov 12 2023 Jens Petersen <petersen(a)redhat.com> - 9.8.1-2
- rebuild with ghc-rpm-macros-2.6.5 to fix prof deps (thanks mimi1vx)
2 months, 1 week
Architecture specific change in rpms/h5py.git
by githook-noreply@fedoraproject.org
The package rpms/h5py.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/h5py.git/commit/?id=6a84f3d5d78cf....
Change:
-ExcludeArch: %{ix86}
Thanks.
Full change:
============
commit 6a84f3d5d78cfc7c5b6d786c63448c11074fd1ac
Author: Terje Rosten <terje.rosten(a)ntnu.no>
Date: Tue Feb 27 16:52:43 2024 +0100
Re-enable ix86
diff --git a/h5py.spec b/h5py.spec
index 46a45c5..f532f2b 100644
--- a/h5py.spec
+++ b/h5py.spec
@@ -4,7 +4,7 @@
Summary: A Python interface to the HDF5 library
Name: h5py
Version: 3.10.0
-Release: 6%{?dist}
+Release: 7%{?dist}
License: BSD
URL: http://www.h5py.org/
Source0: https://files.pythonhosted.org/packages/source/h/h5py/h5py-%{version}.tar.gz
@@ -33,11 +33,6 @@ BuildRequires: python%{python3_pkgversion}-pytest-mpi
BuildRequires: python%{python3_pkgversion}-six
BuildRequires: python%{python3_pkgversion}-sphinx
-# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
-%if 0%{?fedora} > 39
-ExcludeArch: %{ix86}
-%endif
-
# MPI builds
%ifarch %{ix86}
%bcond openmpi 0
@@ -241,6 +236,9 @@ mpirun %{__python3} -m pytest --pyargs h5py -rxXs --with-mpi ${PYTHONPATH} || ex
%changelog
+* Tue Feb 27 2024 Orion Poplawski <orion(a)nwra.com> - 3.10.0-7
+- Re-enable ix86
+
* Thu Feb 22 2024 Christoph Junghans <junghans(a)votca.org> - 3.10.0-6
- Re-enable openmpi build and drop ix86
commit be8291f0f785c1eb3d8601577c977a677ae0dace
Author: Orion Poplawski <orion(a)nwra.com>
Date: Tue Feb 27 07:48:04 2024 -0700
Use libc.stdint to fix i686
diff --git a/2382.patch b/2382.patch
new file mode 100644
index 0000000..10bb28b
--- /dev/null
+++ b/2382.patch
@@ -0,0 +1,22 @@
+From 387a22b8c1513800c0401f496b4ed512c1639798 Mon Sep 17 00:00:00 2001
+From: Orion Poplawski <orion(a)nwra.com>
+Date: Thu, 22 Feb 2024 08:41:17 -0700
+Subject: [PATCH] Use libc.stdint instead of numpy
+
+---
+ h5py/api_types_ext.pxd | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/h5py/api_types_ext.pxd b/h5py/api_types_ext.pxd
+index 91acb128e..55a239f55 100644
+--- a/h5py/api_types_ext.pxd
++++ b/h5py/api_types_ext.pxd
+@@ -20,7 +20,7 @@ from libc.string cimport strlen, strchr, strcpy, strncpy, strcmp,\
+ ctypedef long size_t
+ from libc.time cimport time_t
+
+-from numpy cimport int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t
++from libc.stdint cimport int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t
+
+ IF UNAME_SYSNAME != "Windows":
+ cdef extern from "unistd.h":
diff --git a/h5py.spec b/h5py.spec
index cd57160..46a45c5 100644
--- a/h5py.spec
+++ b/h5py.spec
@@ -16,6 +16,8 @@ Patch1: 0001-Fix-compiling-fileobj-file-driver-with-Cython-3.0.patch
Patch2: h5py-3.10.0-python-crash-file-test2.patch
# Properly cast const pointers - https://github.com/h5py/h5py/pull/2380
Patch3: h5py-const.patch
+# Use libc.stdint to fix i686
+Patch4: https://github.com/h5py/h5py/pull/2382.patch
BuildRequires: gcc
BuildRequires: hdf5-devel
BuildRequires: liblzf-devel
@@ -110,7 +112,6 @@ Requires: mpich
%autosetup -N -c -n %{name}-%{version}
pushd %{name}-%{version}
%autopatch -p1
-sed -i -e 's/^from numpy cimport int8_t/from libc.stdint cimport int8_t/' h5py/api_types_ext.pxd
popd
mv %{name}-%{version} serial
cd serial
commit 2096232e30b0600eb95f4c0235a108eebd3b6e82
Author: Orion Poplawski <orion(a)nwra.com>
Date: Fri Feb 23 16:53:38 2024 -0700
Use libc.stdint
diff --git a/h5py.spec b/h5py.spec
index 50a2235..cd57160 100644
--- a/h5py.spec
+++ b/h5py.spec
@@ -110,6 +110,7 @@ Requires: mpich
%autosetup -N -c -n %{name}-%{version}
pushd %{name}-%{version}
%autopatch -p1
+sed -i -e 's/^from numpy cimport int8_t/from libc.stdint cimport int8_t/' h5py/api_types_ext.pxd
popd
mv %{name}-%{version} serial
cd serial
2 months, 1 week
Architecture specific change in rpms/h5py.git
by githook-noreply@fedoraproject.org
The package rpms/h5py.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/h5py.git/commit/?id=6a84f3d5d78cf....
Change:
-ExcludeArch: %{ix86}
Thanks.
Full change:
============
commit 6a84f3d5d78cfc7c5b6d786c63448c11074fd1ac
Author: Terje Rosten <terje.rosten(a)ntnu.no>
Date: Tue Feb 27 16:52:43 2024 +0100
Re-enable ix86
diff --git a/h5py.spec b/h5py.spec
index 46a45c5..f532f2b 100644
--- a/h5py.spec
+++ b/h5py.spec
@@ -4,7 +4,7 @@
Summary: A Python interface to the HDF5 library
Name: h5py
Version: 3.10.0
-Release: 6%{?dist}
+Release: 7%{?dist}
License: BSD
URL: http://www.h5py.org/
Source0: https://files.pythonhosted.org/packages/source/h/h5py/h5py-%{version}.tar.gz
@@ -33,11 +33,6 @@ BuildRequires: python%{python3_pkgversion}-pytest-mpi
BuildRequires: python%{python3_pkgversion}-six
BuildRequires: python%{python3_pkgversion}-sphinx
-# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
-%if 0%{?fedora} > 39
-ExcludeArch: %{ix86}
-%endif
-
# MPI builds
%ifarch %{ix86}
%bcond openmpi 0
@@ -241,6 +236,9 @@ mpirun %{__python3} -m pytest --pyargs h5py -rxXs --with-mpi ${PYTHONPATH} || ex
%changelog
+* Tue Feb 27 2024 Orion Poplawski <orion(a)nwra.com> - 3.10.0-7
+- Re-enable ix86
+
* Thu Feb 22 2024 Christoph Junghans <junghans(a)votca.org> - 3.10.0-6
- Re-enable openmpi build and drop ix86
commit be8291f0f785c1eb3d8601577c977a677ae0dace
Author: Orion Poplawski <orion(a)nwra.com>
Date: Tue Feb 27 07:48:04 2024 -0700
Use libc.stdint to fix i686
diff --git a/2382.patch b/2382.patch
new file mode 100644
index 0000000..10bb28b
--- /dev/null
+++ b/2382.patch
@@ -0,0 +1,22 @@
+From 387a22b8c1513800c0401f496b4ed512c1639798 Mon Sep 17 00:00:00 2001
+From: Orion Poplawski <orion(a)nwra.com>
+Date: Thu, 22 Feb 2024 08:41:17 -0700
+Subject: [PATCH] Use libc.stdint instead of numpy
+
+---
+ h5py/api_types_ext.pxd | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/h5py/api_types_ext.pxd b/h5py/api_types_ext.pxd
+index 91acb128e..55a239f55 100644
+--- a/h5py/api_types_ext.pxd
++++ b/h5py/api_types_ext.pxd
+@@ -20,7 +20,7 @@ from libc.string cimport strlen, strchr, strcpy, strncpy, strcmp,\
+ ctypedef long size_t
+ from libc.time cimport time_t
+
+-from numpy cimport int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t
++from libc.stdint cimport int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t
+
+ IF UNAME_SYSNAME != "Windows":
+ cdef extern from "unistd.h":
diff --git a/h5py.spec b/h5py.spec
index cd57160..46a45c5 100644
--- a/h5py.spec
+++ b/h5py.spec
@@ -16,6 +16,8 @@ Patch1: 0001-Fix-compiling-fileobj-file-driver-with-Cython-3.0.patch
Patch2: h5py-3.10.0-python-crash-file-test2.patch
# Properly cast const pointers - https://github.com/h5py/h5py/pull/2380
Patch3: h5py-const.patch
+# Use libc.stdint to fix i686
+Patch4: https://github.com/h5py/h5py/pull/2382.patch
BuildRequires: gcc
BuildRequires: hdf5-devel
BuildRequires: liblzf-devel
@@ -110,7 +112,6 @@ Requires: mpich
%autosetup -N -c -n %{name}-%{version}
pushd %{name}-%{version}
%autopatch -p1
-sed -i -e 's/^from numpy cimport int8_t/from libc.stdint cimport int8_t/' h5py/api_types_ext.pxd
popd
mv %{name}-%{version} serial
cd serial
commit 2096232e30b0600eb95f4c0235a108eebd3b6e82
Author: Orion Poplawski <orion(a)nwra.com>
Date: Fri Feb 23 16:53:38 2024 -0700
Use libc.stdint
diff --git a/h5py.spec b/h5py.spec
index 50a2235..cd57160 100644
--- a/h5py.spec
+++ b/h5py.spec
@@ -110,6 +110,7 @@ Requires: mpich
%autosetup -N -c -n %{name}-%{version}
pushd %{name}-%{version}
%autopatch -p1
+sed -i -e 's/^from numpy cimport int8_t/from libc.stdint cimport int8_t/' h5py/api_types_ext.pxd
popd
mv %{name}-%{version} serial
cd serial
2 months, 1 week