Architecture specific change in rpms/musl.git
by githook-noreply@fedoraproject.org
The package rpms/musl.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/musl.git/commit/?id=cd6c95518b5a1...
https://src.fedoraproject.org/cgit/rpms/musl.git/commit/?id=016d8cd14ccf7....
Change:
+%ifarch %{power64}
+%ifarch armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv7l
Thanks.
Full change:
============
commit cd6c95518b5a1cf7b4e11349d1bd5db2d306f404
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 20:46:36 2020 -0400
Handle ABI and CPU naming differences for POWER
diff --git a/musl.spec b/musl.spec
index b8c4a8f..4b31916 100644
--- a/musl.spec
+++ b/musl.spec
@@ -45,8 +45,13 @@
%endif
%ifarch %{power64}
+# POWER architectures have a different name if little-endian
+%ifarch ppc64le
+%global _musl_target_cpu powerpc64le
+%else
%global _musl_target_cpu powerpc64
%endif
+%endif
%ifnarch %{ix86} %{arm} %{mips} %{power64} ppc
%global _musl_target_cpu %{_target_cpu}
@@ -226,6 +231,11 @@ programs and libraries with musl easily.
%build
+%ifarch %{power64}
+# Deal with ABI mismatch on long double between glibc and musl
+export CC="gcc -mlong-double-64"
+%endif
+
# Set linker flags to get correct soname...
export LDFLAGS="%{?build_ldflags} -Wl,-soname,ld-musl-%{_musl_target_cpu}.so.1"
%configure --enable-debug --enable-wrapper=all
commit 016d8cd14ccf76c1b2307c5e6d49b4f22d535ffa
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 17:30:31 2020 -0400
Handle the difference between armhfp and armsfp arches
diff --git a/musl.spec b/musl.spec
index 8632be1..b8c4a8f 100644
--- a/musl.spec
+++ b/musl.spec
@@ -23,7 +23,12 @@
%endif
%ifarch %{arm}
+# ARM is... complicated...
+%ifarch armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv7l
%global _musl_target_cpu arm
+%else
+%global _musl_target_cpu armhf
+%endif
%global _musl_platform_suffix eabi
%endif
4 years
Architecture specific change in rpms/musl.git
by githook-noreply@fedoraproject.org
The package rpms/musl.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/musl.git/commit/?id=cd6c95518b5a1...
https://src.fedoraproject.org/cgit/rpms/musl.git/commit/?id=016d8cd14ccf7....
Change:
+%ifarch %{power64}
+%ifarch armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv7l
Thanks.
Full change:
============
commit cd6c95518b5a1cf7b4e11349d1bd5db2d306f404
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 20:46:36 2020 -0400
Handle ABI and CPU naming differences for POWER
diff --git a/musl.spec b/musl.spec
index b8c4a8f..4b31916 100644
--- a/musl.spec
+++ b/musl.spec
@@ -45,8 +45,13 @@
%endif
%ifarch %{power64}
+# POWER architectures have a different name if little-endian
+%ifarch ppc64le
+%global _musl_target_cpu powerpc64le
+%else
%global _musl_target_cpu powerpc64
%endif
+%endif
%ifnarch %{ix86} %{arm} %{mips} %{power64} ppc
%global _musl_target_cpu %{_target_cpu}
@@ -226,6 +231,11 @@ programs and libraries with musl easily.
%build
+%ifarch %{power64}
+# Deal with ABI mismatch on long double between glibc and musl
+export CC="gcc -mlong-double-64"
+%endif
+
# Set linker flags to get correct soname...
export LDFLAGS="%{?build_ldflags} -Wl,-soname,ld-musl-%{_musl_target_cpu}.so.1"
%configure --enable-debug --enable-wrapper=all
commit 016d8cd14ccf76c1b2307c5e6d49b4f22d535ffa
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 17:30:31 2020 -0400
Handle the difference between armhfp and armsfp arches
diff --git a/musl.spec b/musl.spec
index 8632be1..b8c4a8f 100644
--- a/musl.spec
+++ b/musl.spec
@@ -23,7 +23,12 @@
%endif
%ifarch %{arm}
+# ARM is... complicated...
+%ifarch armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv7l
%global _musl_target_cpu arm
+%else
+%global _musl_target_cpu armhf
+%endif
%global _musl_platform_suffix eabi
%endif
4 years
Architecture specific change in rpms/musl.git
by githook-noreply@fedoraproject.org
The package rpms/musl.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/musl.git/commit/?id=cd6c95518b5a1...
https://src.fedoraproject.org/cgit/rpms/musl.git/commit/?id=016d8cd14ccf7....
Change:
+%ifarch %{power64}
+%ifarch armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv7l
Thanks.
Full change:
============
commit cd6c95518b5a1cf7b4e11349d1bd5db2d306f404
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 20:46:36 2020 -0400
Handle ABI and CPU naming differences for POWER
diff --git a/musl.spec b/musl.spec
index b8c4a8f..4b31916 100644
--- a/musl.spec
+++ b/musl.spec
@@ -45,8 +45,13 @@
%endif
%ifarch %{power64}
+# POWER architectures have a different name if little-endian
+%ifarch ppc64le
+%global _musl_target_cpu powerpc64le
+%else
%global _musl_target_cpu powerpc64
%endif
+%endif
%ifnarch %{ix86} %{arm} %{mips} %{power64} ppc
%global _musl_target_cpu %{_target_cpu}
@@ -226,6 +231,11 @@ programs and libraries with musl easily.
%build
+%ifarch %{power64}
+# Deal with ABI mismatch on long double between glibc and musl
+export CC="gcc -mlong-double-64"
+%endif
+
# Set linker flags to get correct soname...
export LDFLAGS="%{?build_ldflags} -Wl,-soname,ld-musl-%{_musl_target_cpu}.so.1"
%configure --enable-debug --enable-wrapper=all
commit 016d8cd14ccf76c1b2307c5e6d49b4f22d535ffa
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 17:30:31 2020 -0400
Handle the difference between armhfp and armsfp arches
diff --git a/musl.spec b/musl.spec
index 8632be1..b8c4a8f 100644
--- a/musl.spec
+++ b/musl.spec
@@ -23,7 +23,12 @@
%endif
%ifarch %{arm}
+# ARM is... complicated...
+%ifarch armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv7l
%global _musl_target_cpu arm
+%else
+%global _musl_target_cpu armhf
+%endif
%global _musl_platform_suffix eabi
%endif
4 years
Architecture specific change in rpms/musl.git
by githook-noreply@fedoraproject.org
The package rpms/musl.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/musl.git/commit/?id=cd6c95518b5a1....
Change:
+%ifarch %{power64}
Thanks.
Full change:
============
commit cd6c95518b5a1cf7b4e11349d1bd5db2d306f404
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 20:46:36 2020 -0400
Handle ABI and CPU naming differences for POWER
diff --git a/musl.spec b/musl.spec
index b8c4a8f..4b31916 100644
--- a/musl.spec
+++ b/musl.spec
@@ -45,8 +45,13 @@
%endif
%ifarch %{power64}
+# POWER architectures have a different name if little-endian
+%ifarch ppc64le
+%global _musl_target_cpu powerpc64le
+%else
%global _musl_target_cpu powerpc64
%endif
+%endif
%ifnarch %{ix86} %{arm} %{mips} %{power64} ppc
%global _musl_target_cpu %{_target_cpu}
@@ -226,6 +231,11 @@ programs and libraries with musl easily.
%build
+%ifarch %{power64}
+# Deal with ABI mismatch on long double between glibc and musl
+export CC="gcc -mlong-double-64"
+%endif
+
# Set linker flags to get correct soname...
export LDFLAGS="%{?build_ldflags} -Wl,-soname,ld-musl-%{_musl_target_cpu}.so.1"
%configure --enable-debug --enable-wrapper=all
4 years
Architecture specific change in rpms/musl.git
by githook-noreply@fedoraproject.org
The package rpms/musl.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/musl.git/commit/?id=016d8cd14ccf7....
Change:
+%ifarch armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv7l
Thanks.
Full change:
============
commit 016d8cd14ccf76c1b2307c5e6d49b4f22d535ffa
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 17:30:31 2020 -0400
Handle the difference between armhfp and armsfp arches
diff --git a/musl.spec b/musl.spec
index 8632be1..b8c4a8f 100644
--- a/musl.spec
+++ b/musl.spec
@@ -23,7 +23,12 @@
%endif
%ifarch %{arm}
+# ARM is... complicated...
+%ifarch armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv7l
%global _musl_target_cpu arm
+%else
+%global _musl_target_cpu armhf
+%endif
%global _musl_platform_suffix eabi
%endif
4 years
Architecture specific change in rpms/musl.git
by githook-noreply@fedoraproject.org
The package rpms/musl.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/musl.git/commit/?id=a5118f4f14abe....
Change:
+ExcludeArch: s390
Thanks.
Full change:
============
commit a5118f4f14abe5ff3e816f30680ccd9dec40fdf8
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 17:07:09 2020 -0400
Initial package for Fedora (RH#1821523)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2f70ac7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/musl-1.2.0.tar.gz
diff --git a/musl-1.1.18-Makefile-rename-INSTALL-var.patch b/musl-1.1.18-Makefile-rename-INSTALL-var.patch
new file mode 100644
index 0000000..8954563
--- /dev/null
+++ b/musl-1.1.18-Makefile-rename-INSTALL-var.patch
@@ -0,0 +1,68 @@
+From 694d7321915204318a3b6be77bd30a23ca5c1e85 Mon Sep 17 00:00:00 2001
+From: Neal Gompa <ngompa13(a)gmail.com>
+Date: Sun, 5 Nov 2017 11:47:48 -0500
+Subject: [PATCH] Makefile: Rename INSTALL variable to INSTALL_SH
+
+This is intended to be a variable to point to an internal tool.
+
+Changing this variable prevents it from colliding with tools that
+pass an INSTALL variable automatically.
+
+Signed-off-by: Neal Gompa <ngompa13(a)gmail.com>
+---
+ Makefile | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index d2e8997..f39ea3c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -53,7 +53,7 @@ LDFLAGS_ALL = $(LDFLAGS_AUTO) $(LDFLAGS)
+
+ AR = $(CROSS_COMPILE)ar
+ RANLIB = $(CROSS_COMPILE)ranlib
+-INSTALL = $(srcdir)/tools/install.sh
++INSTALL_SH = $(srcdir)/tools/install.sh
+
+ ARCH_INCLUDES = $(wildcard $(srcdir)/arch/$(ARCH)/bits/*.h)
+ GENERIC_INCLUDES = $(wildcard $(srcdir)/arch/generic/bits/*.h)
+@@ -194,28 +194,28 @@ obj/%-clang: $(srcdir)/tools/%-clang.in config.mak
+ chmod +x $@
+
+ $(DESTDIR)$(bindir)/%: obj/%
+- $(INSTALL) -D $< $@
++ $(INSTALL_SH) -D $< $@
+
+ $(DESTDIR)$(libdir)/%.so: lib/%.so
+- $(INSTALL) -D -m 755 $< $@
++ $(INSTALL_SH) -D -m 755 $< $@
+
+ $(DESTDIR)$(libdir)/%: lib/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: $(srcdir)/arch/$(ARCH)/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: $(srcdir)/arch/generic/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: obj/include/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/%: $(srcdir)/include/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so
+- $(INSTALL) -D -l $(libdir)/libc.so $@ || true
++ $(INSTALL_SH) -D -l $(libdir)/libc.so $@ || true
+
+ install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),)
+
+--
+2.13.6
+
diff --git a/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch b/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
new file mode 100644
index 0000000..4310da0
--- /dev/null
+++ b/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
@@ -0,0 +1,102 @@
+From 0d79e34e6da9d9827cfb7c787e90524176248d67 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald(a)redhat.com>
+Date: Mon, 6 Apr 2020 19:41:22 +0200
+Subject: [PATCH] Enable linking to a static position independent executable
+
+This also enables address space layout randomization (ASLR).
+
+$ cat hello.c
+
+int main()
+{
+ printf("main = 0x%lxd\n", main);
+ return 0;
+}
+
+$ gcc -static-pie -o hello hello.c -specs musl-gcc.specs
+
+$ ldd hello
+ statically linked
+
+$ file hello
+hello: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=24fe0d02b0558dc37b8ae2268878b118804ae72d, with debug_info, not stripped
+
+$ ./hello
+main = 0x7f858c4e72b9d
+
+$ ./hello
+main = 0x7f0854d312b9d
+
+$ ./hello
+main = 0x7f7179a1d2b9d
+
+$ ./hello
+main = 0x7f37f981b2b9d
+
+$ readelf -l hello
+
+Elf file type is DYN (Shared object file)
+Entry point 0x1058
+There are 9 program headers, starting at offset 64
+
+Program Headers:
+ Type Offset VirtAddr PhysAddr
+ FileSiz MemSiz Flags Align
+ LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
+ 0x00000000000003c0 0x00000000000003c0 R 0x1000
+ LOAD 0x0000000000001000 0x0000000000001000 0x0000000000001000
+ 0x0000000000002cce 0x0000000000002cce R E 0x1000
+ LOAD 0x0000000000004000 0x0000000000004000 0x0000000000004000
+ 0x0000000000001550 0x0000000000001550 R 0x1000
+ LOAD 0x0000000000005e50 0x0000000000006e50 0x0000000000006e50
+ 0x00000000000002e0 0x00000000000009a0 RW 0x1000
+ DYNAMIC 0x0000000000005e70 0x0000000000006e70 0x0000000000006e70
+ 0x0000000000000170 0x0000000000000170 RW 0x8
+ NOTE 0x0000000000000238 0x0000000000000238 0x0000000000000238
+ 0x0000000000000024 0x0000000000000024 R 0x4
+ GNU_EH_FRAME 0x0000000000004b60 0x0000000000004b60 0x0000000000004b60
+ 0x00000000000001ec 0x00000000000001ec R 0x4
+ GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
+ 0x0000000000000000 0x0000000000000000 RW 0x10
+ GNU_RELRO 0x0000000000005e50 0x0000000000006e50 0x0000000000006e50
+ 0x00000000000001b0 0x00000000000001b0 R 0x1
+
+ Section to Segment mapping:
+ Segment Sections...
+ 00 .note.gnu.build-id .gnu.hash .dynsym .dynstr .rela.dyn
+ 01 .init .plt .text .fini
+ 02 .rodata .eh_frame_hdr .eh_frame
+ 03 .init_array .fini_array .data.rel.ro .dynamic .got .got.plt .data .bss
+ 04 .dynamic
+ 05 .note.gnu.build-id
+ 06 .eh_frame_hdr
+ 07
+ 08 .init_array .fini_array .data.rel.ro .dynamic .got
+---
+ tools/musl-gcc.specs.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+ mode change 100644 => 100755 tools/musl-gcc.specs.sh
+
+diff --git a/tools/musl-gcc.specs.sh b/tools/musl-gcc.specs.sh
+old mode 100644
+new mode 100755
+index 30492574..4d93626a
+--- a/tools/musl-gcc.specs.sh
++++ b/tools/musl-gcc.specs.sh
+@@ -17,13 +17,13 @@ cat <<EOF
+ libgcc.a%s %:if-exists(libgcc_eh.a%s)
+
+ *startfile:
+-%{!shared: $libdir/Scrt1.o} $libdir/crti.o crtbeginS.o%s
++%{shared:;static:$libdir/crt1.o%s; static-pie:$libdir/rcrt1.o%s; pie:$libdir/Scrt1.o%s; :$libdir/crt1.o%s} $libdir/crti.o%s %{static:crtbeginT.o%s; shared|static-pie|pie:crtbeginS.o%s; :crtbegin.o%s}
+
+ *endfile:
+-crtendS.o%s $libdir/crtn.o
++%{static:crtend.o%s; shared|static-pie|pie:crtendS.o%s; :crtend.o%s} $libdir/crtn.o%s
+
+ *link:
+--dynamic-linker $ldso -nostdlib %{shared:-shared} %{static:-static} %{rdynamic:-export-dynamic}
++%{!r:--build-id} --no-add-needed %{!static|static-pie:--eh-frame-hdr} --hash-style=gnu %{shared:-shared} %{!shared:%{!static:%{!static-pie:%{rdynamic:-export-dynamic} -dynamic-linker $ldso}} %{static:-static} %{static-pie:-static -pie --no-dynamic-linker -z text}}
+
+ *esp_link:
+
diff --git a/musl-1.2.0.tar.gz.asc b/musl-1.2.0.tar.gz.asc
new file mode 100644
index 0000000..8c37751
--- /dev/null
+++ b/musl-1.2.0.tar.gz.asc
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+iQEcBAABAgAGBQJeTzI7AAoJEFa821kwIEUPnhMH+wSnkAdTcFaPvlPkjCj+28j/
+v4pb5+e12eZbop2iV2/o56AvqZkzkXmr3CdEPUPPpQz1/Dg8hE7ej6+//8I4HEtJ
+EAiaeXsrjb5hRIlkpG5SL7JMN30t2GfaTM1kiuzU3ltq+7skbzSL9vh0WHNZxeya
+ezlrcS1cd2G113zYL7aiXg8BIJQRKl2Fc4tGfMopzJWCHNjx+/72I4X4tDjS968U
+QNZ6qI4hxXUKaZMyIvbPE8HW+obf6iW72xIajRkE69sdXBeNwL2fHHv7vQg9V7yX
++b7zqEbddb5J2sG2tAqRFo39xZCu3PfdFa8dzRq8IZYmd300Ssvk4jrpJU+Gb/A=
+=WoP1
+-----END PGP SIGNATURE-----
diff --git a/musl.pub b/musl.pub
new file mode 100644
index 0000000..7b7a8e9
--- /dev/null
+++ b/musl.pub
@@ -0,0 +1,30 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+mQENBFNcU8EBCAC3g30bXEEh+YzD06JQ+iG+gr5Nb+tjianh8aJ/ql35lqICVj6F
+nitol0KgSB1L3T80+EON3IEmic9rb2dw6EQ0rMl/6mSW91jQC1rGkGBZnlPZXOSW
+JznNTBeHaK1NlG6m0shZ+wePWXHoFDtxaEoaMqAzR+E3EkSduLQb9tJJ2vtmIC2X
+5SFT625DKpRYOpcUxX/d63U+gSQThTitHS9Me0mljcP+qKhP/HIajesx6s5QTBBe
+vOlzih5MpI0FHcwSIbPwhPUWRS2RdFKfJRQZQAQ1ZiOJL0W82eFI1uztDgfudPcf
+BbgZcSjqvrKiXaeZxHsj3aguaOqaKdRlkyD1ABEBAAG0GW11c2wgbGliYyA8bXVz
+bEBsaWJjLm9yZz6JATcEEwECACEFAlNcU8ECGwMGCwkIBwMCBhUIAgkKCwMWAgEC
+HgECF4AACgkQVrzbWTAgRQ91FwgAnxSTh6Yjz8Oj3p5hTA/5t/ueGpf3dgbVrOXB
+W0dgIkv+JbpJnpNFzLLz+Yi7J0eDGhW2OXMvZ1AEJmwoNsbsXBvd2rQAMQGUdcDT
+EhmM+9bRGvWW3hpRT9xFtVJb9bsj0vs6Tpcb9LmmUxwmrguAVo2eOQLQ3UvVWaFh
+oqEbvhfEb7kvhDds4iFuHxpAH11GmK5Q6POtfFBhYXZBhXqbcHzs1hs51vdDWPUg
+pcHdpeR9NiP1Ch7lVMHaTuiTmvQcOtCvk9K8OMsG+9z8e7BIis7bXbIjHOTLNVBI
+IE+kq4I0/Co9shhdqump1pJ0b7R+CfgkFP3n9GpGKkGTgc3djrkBDQRTXFPBAQgA
+y1PIPj4GJD8AAgSsNMkGxgT1Q0lV8cUh+qN4+uHjO6XzxyiX2rULnO25AWVSq4X2
+i4LzZxgfFG9wUPEWdeYsJzEzNQYL5JWJREBc1UO73pbVWykvP0zUlxtGKNIKHETx
+7D02vBpkTUErlNXbKWw1jpApyBmhWZhRsCa320t2yL6v6lO/1YxxCZ/VkSYYbCZ3
+Rl/uH+l7CfAsOJLczMSHpLNFg+fl9gYy6S/LUZ1kwHWLFbTYbzTdEaPSm9i+iNJ2
+tMHnvkvDv9GhOhIrixENCzfe3muxd8+8/UxAjZdj24AYphIRhvMSxnLSOUsoGjeP
+BWhTvKsr6r2MZGQcCiDNjwARAQABiQEeBBgBAgAJBQJTXFPBAhsMAAoJEFa821kw
+IEUPz50H93mm0dQVPDJV075V5eySx8kYgQUwc7aP6zSQdoMZ3GDa8+fpta3PQv09
+CqVFeJf8KUTkJwMKbNu5GUUmuA1WbxdmRkOHp81PalLbZS0vAJh62TNntmHU0sFJ
+kp+IviwOmAJaAO64BQAy/arH0D8q+LFAnMLdIFEVWiMuULXUCB1P4D8agbltd0rH
+KniPwcWR8Sh0PUcVjUPFzdZz1Qpc+9VYp626p2OZ+tlLO41OZAsbJ24+cWB/fkWu
+H6g/nw7y9+2xtX8TIi6YBtLCPx/5IcY8LzrSFC+NFYll5V1SoTiGtdhudSfs0Eb2
+RXdP42mK+kMrgynbOn1RP7p/rfpSlA==
+=FgKg
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/musl.spec b/musl.spec
new file mode 100644
index 0000000..8632be1
--- /dev/null
+++ b/musl.spec
@@ -0,0 +1,339 @@
+# We are not using this as the system libc,
+# so this remains disabled by default.
+%bcond_with system_libc
+
+# Fedora uses multilib with /usr/lib64
+# This switch changes it to multiarch, with /usr/lib/[arch]-linux-musl
+# This switch only has effect if system_libc is disabled.
+# This switch is disabled by default.
+%bcond_with multiarch
+
+# Fedora uses glibc as the standard libc.
+# This means any packages that would use musl would be treated
+# as a cross-compilation target. Cross-mode sets it up for this application.
+# In cross-mode, a prefix root is created with a new child FHS area.
+# This switch only has effect if system_libc is disabled.
+# This switch is enabled by default.
+%bcond_without crossmode
+
+
+# Ensure the value is set correctly
+%ifarch %{ix86}
+%global _musl_target_cpu i386
+%endif
+
+%ifarch %{arm}
+%global _musl_target_cpu arm
+%global _musl_platform_suffix eabi
+%endif
+
+%ifarch %{mips64}
+%global _musl_target_cpu mips64
+%endif
+
+%ifarch %{mips32}
+%global _musl_target_cpu mips
+%endif
+
+%ifarch ppc
+%global _musl_target_cpu powerpc
+%endif
+
+%ifarch %{power64}
+%global _musl_target_cpu powerpc64
+%endif
+
+%ifnarch %{ix86} %{arm} %{mips} %{power64} ppc
+%global _musl_target_cpu %{_target_cpu}
+%endif
+
+# Define the platform name
+%global _musl_platform %{_musl_target_cpu}-linux-musl%{?_musl_platform_suffix}
+
+# Paths to use when not set up in cross-mode
+%if %{without crossmode}
+# Set up alternate paths when not using as system libc
+%if %{without system_libc}
+# Set up libdir path for when using multilib
+%if %{without multiarch}
+%global _libdir %{_prefix}/%{_lib}/%{_musl_platform}
+%else
+# Set up libdir path for when using multiarch
+%global _libdir %{_prefix}/lib/%{_musl_platform}
+%endif
+%global _includedir %{_prefix}/include/%{_musl_platform}
+%endif
+%else
+# Cross-mode paths
+%global _libdir %{_prefix}/%{_musl_platform}/%{_lib}
+%global _includedir %{_prefix}/%{_musl_platform}/include
+%endif
+
+%if %{without multiarch}
+# We need to be multilib aware
+%global _syslibdir /%{_lib}
+%else
+%global _syslibdir /lib
+%endif
+
+Name: musl
+Version: 1.2.0
+Release: 1%{?dist}
+Summary: Fully featured lightweight standard C library for Linux
+License: MIT
+URL: https://musl.libc.org
+Source0: %{url}/releases/%{name}-%{version}.tar.gz
+Source1: %{url}/releases/%{name}-%{version}.tar.gz.asc
+Source2: %{url}/musl.pub
+
+# Fix Makefile to not use INSTALL variable so make_install macro works
+Patch0: musl-1.1.18-Makefile-rename-INSTALL-var.patch
+# Support PIE with static linking
+Patch1: musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
+
+# musl is only for Linux
+ExclusiveOS: linux
+
+# s390 is not supported by musl-libc
+ExcludeArch: s390
+
+BuildRequires: gcc
+BuildRequires: make
+
+# For GPG signature verification
+BuildRequires: gnupg2
+
+
+%description
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+%package libc
+Summary: Fully featured lightweight standard C library for Linux
+
+# This package provides musl dynamic libs too
+Obsoletes: %{name}-libs < %{version}-%{release}
+Provides: %{name}-libs = %{version}-%{release}
+Provides: %{name}-libs%{?_isa} = %{version}-%{release}
+# Ensure the filesystem skeleton is installed if it was built
+%if %{without system_libc}
+Requires: %{name}-filesystem%{?_isa} = %{version}-%{release}
+%endif
+
+%description libc
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the system dynamic linker library.
+It also provides the dynamic libraries for linking
+programs and libraries against musl.
+
+%if %{without system_libc}
+%package filesystem
+Summary: Base filesystem for %{name}
+
+%description filesystem
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the base filesystem directories
+for libraries and headers linked against musl.
+%endif
+
+%package devel
+Summary: Development files for %{name}
+
+# This package also provides the headers for using musl
+Provides: %{name}-headers = %{version}-%{release}
+Provides: %{name}-headers%{?_isa} = %{version}-%{release}
+
+Requires: %{name}-libc = %{version}-%{release}
+%if ! (0%{?rhel} && 0%{?rhel} < 8)
+Recommends: %{name}-libc-static = %{version}-%{release}
+%endif
+
+%description devel
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the development files for using
+musl with programs and libraries.
+
+%package libc-static
+Summary: Static link library for %{name}
+Obsoletes: %{name}-static < %{version}-%{release}
+Provides: %{name}-static = %{version}-%{release}
+Provides: %{name}-static%{?_isa} = %{version}-%{release}
+Requires: %{name}-devel%{?_isa} = %{version}-%{release}
+
+%description libc-static
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the additional development files for
+statically linking musl into programs and libraries.
+
+%package gcc
+Summary: Wrapper for using gcc with musl
+Requires: %{name}-devel = %{version}-%{release}
+Requires: gcc
+
+%description gcc
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides a wrapper around gcc to compile
+programs and libraries with musl easily.
+
+%package clang
+Summary: Wrapper for using clang with musl
+Requires: %{name}-devel = %{version}-%{release}
+Requires: clang
+
+%description clang
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides a wrapper around clang to compile
+programs and libraries with musl easily.
+
+
+%prep
+# Verify *before* actually unpacking!
+%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
+
+# Unpack sources and apply patches
+%autosetup -p1
+
+
+%build
+# Set linker flags to get correct soname...
+export LDFLAGS="%{?build_ldflags} -Wl,-soname,ld-musl-%{_musl_target_cpu}.so.1"
+%configure --enable-debug --enable-wrapper=all
+%make_build
+
+
+%install
+%make_install
+
+# Swap the files around for libc.so, making libc.so a symlink to the real file
+rm %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1
+mv %{buildroot}%{_libdir}/libc.so %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1
+ln -sr %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1 %{buildroot}%{_libdir}/libc.so
+
+# Write search path for dynamic linker
+mkdir -p %{buildroot}%{_sysconfdir}
+touch %{buildroot}%{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path
+cat > %{buildroot}%{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path <<EOF
+%{_libdir}
+EOF
+
+%if %{without multiarch}
+# Write symlink for syslib to /lib64 for compatibility with Fedora standards, where applicable
+mkdir -p %{buildroot}%{_syslibdir}
+%if "%{_lib}" == "lib64"
+ln -sr %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1 %{buildroot}%{_syslibdir}/ld-musl-%{_musl_target_cpu}.so.1
+%endif
+%endif
+
+mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
+touch %{buildroot}%{_rpmconfigdir}/macros.d/macros.musl
+cat > %{buildroot}%{_rpmconfigdir}/macros.d/macros.musl <<EOF
+%%_musl_libdir %{_libdir}
+%%_musl_includedir %{_includedir}
+EOF
+
+%files libc
+%license COPYRIGHT
+/lib/ld-musl-%{_musl_target_cpu}.so.1
+%if %{without multiarch}
+%if "%{_lib}" == "lib64"
+%{_syslibdir}/ld-musl-%{_musl_target_cpu}.so.1
+%endif
+%endif
+%config(noreplace) %{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path
+
+%if %{without system_libc}
+%files filesystem
+%if %{with crossmode}
+%dir %{_prefix}/%{_musl_platform}
+%endif
+%dir %{_libdir}
+%dir %{_includedir}
+%endif
+
+%files devel
+%license COPYRIGHT
+%doc README WHATSNEW
+%{_includedir}/*
+%{_libdir}/*.so
+%{_libdir}/*.o
+%{_libdir}/*.a
+%exclude %{_libdir}/libc.a
+%{_rpmconfigdir}/macros.d/macros.musl
+
+%files libc-static
+%license COPYRIGHT
+%{_libdir}/libc.a
+
+%files gcc
+%license COPYRIGHT
+%{_bindir}/musl-gcc
+%{_libdir}/musl-gcc.specs
+
+%files clang
+%license COPYRIGHT
+%{_bindir}/musl-clang
+%{_bindir}/ld.musl-clang
+
+
+%changelog
+* Mon Apr 6 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.2.0-1
+- Rebase to 1.2.0
+- Add patch to support PIE with static linking
+- Remove obsolete Group tags
+- Fix musl library locations and broken sonames
+- Update URL and Source URLs
+- Add filesystem subpackage for install directories
+
+* Tue Feb 4 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.1.24-1
+- Update to 1.1.24
+- Clean out conditionals referring to obsolete Fedora versions
+- Verify sources with GPG
+
+* Sun Nov 5 2017 Neal Gompa <ngompa13(a)gmail.com> - 1.1.18-1
+- Update to 1.1.18
+- Add patch to fix Makefile with make_install macro
+
+* Sat Apr 15 2017 Neal Gompa <ngompa13(a)gmail.com> - 1.1.16-1
+- Update to 1.1.16
+- Remove block on s390x
+- Add _musl_libdir and _musl_includedir macros
+
+* Fri Aug 5 2016 Neal Gompa <ngompa13(a)gmail.com> - 1.1.15-1
+- Update to 1.1.15
+- Remove blocks on 64-bit MIPS and PowerPC
+
+* Thu Mar 3 2016 Neal Gompa <ngompa13(a)gmail.com> - 1.1.14-1
+- Update to 1.1.14
+- Add crossmode bcond switch
+- Add multiarch bcond switch
+- Rename musl-libs to musl-libc
+- Rename musl-static to musl-libc-static
+
+* Tue Dec 22 2015 Neal Gompa <ngompa13(a)gmail.com> - 1.1.12-1
+- Initial packaging
diff --git a/sources b/sources
new file mode 100644
index 0000000..4faf946
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (musl-1.2.0.tar.gz) = 58bd88189a6002356728cea1c6f6605a893fe54f7687595879add4eab283c8692c3b031eb9457ad00d1edd082cfe62fcc0eb5eb1d3bf4f1d749c0efa2a95fec1
4 years
Architecture specific change in rpms/musl.git
by githook-noreply@fedoraproject.org
The package rpms/musl.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/musl.git/commit/?id=a5118f4f14abe....
Change:
+ExcludeArch: s390
Thanks.
Full change:
============
commit a5118f4f14abe5ff3e816f30680ccd9dec40fdf8
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 17:07:09 2020 -0400
Initial package for Fedora (RH#1821523)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2f70ac7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/musl-1.2.0.tar.gz
diff --git a/musl-1.1.18-Makefile-rename-INSTALL-var.patch b/musl-1.1.18-Makefile-rename-INSTALL-var.patch
new file mode 100644
index 0000000..8954563
--- /dev/null
+++ b/musl-1.1.18-Makefile-rename-INSTALL-var.patch
@@ -0,0 +1,68 @@
+From 694d7321915204318a3b6be77bd30a23ca5c1e85 Mon Sep 17 00:00:00 2001
+From: Neal Gompa <ngompa13(a)gmail.com>
+Date: Sun, 5 Nov 2017 11:47:48 -0500
+Subject: [PATCH] Makefile: Rename INSTALL variable to INSTALL_SH
+
+This is intended to be a variable to point to an internal tool.
+
+Changing this variable prevents it from colliding with tools that
+pass an INSTALL variable automatically.
+
+Signed-off-by: Neal Gompa <ngompa13(a)gmail.com>
+---
+ Makefile | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index d2e8997..f39ea3c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -53,7 +53,7 @@ LDFLAGS_ALL = $(LDFLAGS_AUTO) $(LDFLAGS)
+
+ AR = $(CROSS_COMPILE)ar
+ RANLIB = $(CROSS_COMPILE)ranlib
+-INSTALL = $(srcdir)/tools/install.sh
++INSTALL_SH = $(srcdir)/tools/install.sh
+
+ ARCH_INCLUDES = $(wildcard $(srcdir)/arch/$(ARCH)/bits/*.h)
+ GENERIC_INCLUDES = $(wildcard $(srcdir)/arch/generic/bits/*.h)
+@@ -194,28 +194,28 @@ obj/%-clang: $(srcdir)/tools/%-clang.in config.mak
+ chmod +x $@
+
+ $(DESTDIR)$(bindir)/%: obj/%
+- $(INSTALL) -D $< $@
++ $(INSTALL_SH) -D $< $@
+
+ $(DESTDIR)$(libdir)/%.so: lib/%.so
+- $(INSTALL) -D -m 755 $< $@
++ $(INSTALL_SH) -D -m 755 $< $@
+
+ $(DESTDIR)$(libdir)/%: lib/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: $(srcdir)/arch/$(ARCH)/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: $(srcdir)/arch/generic/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: obj/include/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/%: $(srcdir)/include/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so
+- $(INSTALL) -D -l $(libdir)/libc.so $@ || true
++ $(INSTALL_SH) -D -l $(libdir)/libc.so $@ || true
+
+ install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),)
+
+--
+2.13.6
+
diff --git a/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch b/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
new file mode 100644
index 0000000..4310da0
--- /dev/null
+++ b/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
@@ -0,0 +1,102 @@
+From 0d79e34e6da9d9827cfb7c787e90524176248d67 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald(a)redhat.com>
+Date: Mon, 6 Apr 2020 19:41:22 +0200
+Subject: [PATCH] Enable linking to a static position independent executable
+
+This also enables address space layout randomization (ASLR).
+
+$ cat hello.c
+
+int main()
+{
+ printf("main = 0x%lxd\n", main);
+ return 0;
+}
+
+$ gcc -static-pie -o hello hello.c -specs musl-gcc.specs
+
+$ ldd hello
+ statically linked
+
+$ file hello
+hello: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=24fe0d02b0558dc37b8ae2268878b118804ae72d, with debug_info, not stripped
+
+$ ./hello
+main = 0x7f858c4e72b9d
+
+$ ./hello
+main = 0x7f0854d312b9d
+
+$ ./hello
+main = 0x7f7179a1d2b9d
+
+$ ./hello
+main = 0x7f37f981b2b9d
+
+$ readelf -l hello
+
+Elf file type is DYN (Shared object file)
+Entry point 0x1058
+There are 9 program headers, starting at offset 64
+
+Program Headers:
+ Type Offset VirtAddr PhysAddr
+ FileSiz MemSiz Flags Align
+ LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
+ 0x00000000000003c0 0x00000000000003c0 R 0x1000
+ LOAD 0x0000000000001000 0x0000000000001000 0x0000000000001000
+ 0x0000000000002cce 0x0000000000002cce R E 0x1000
+ LOAD 0x0000000000004000 0x0000000000004000 0x0000000000004000
+ 0x0000000000001550 0x0000000000001550 R 0x1000
+ LOAD 0x0000000000005e50 0x0000000000006e50 0x0000000000006e50
+ 0x00000000000002e0 0x00000000000009a0 RW 0x1000
+ DYNAMIC 0x0000000000005e70 0x0000000000006e70 0x0000000000006e70
+ 0x0000000000000170 0x0000000000000170 RW 0x8
+ NOTE 0x0000000000000238 0x0000000000000238 0x0000000000000238
+ 0x0000000000000024 0x0000000000000024 R 0x4
+ GNU_EH_FRAME 0x0000000000004b60 0x0000000000004b60 0x0000000000004b60
+ 0x00000000000001ec 0x00000000000001ec R 0x4
+ GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
+ 0x0000000000000000 0x0000000000000000 RW 0x10
+ GNU_RELRO 0x0000000000005e50 0x0000000000006e50 0x0000000000006e50
+ 0x00000000000001b0 0x00000000000001b0 R 0x1
+
+ Section to Segment mapping:
+ Segment Sections...
+ 00 .note.gnu.build-id .gnu.hash .dynsym .dynstr .rela.dyn
+ 01 .init .plt .text .fini
+ 02 .rodata .eh_frame_hdr .eh_frame
+ 03 .init_array .fini_array .data.rel.ro .dynamic .got .got.plt .data .bss
+ 04 .dynamic
+ 05 .note.gnu.build-id
+ 06 .eh_frame_hdr
+ 07
+ 08 .init_array .fini_array .data.rel.ro .dynamic .got
+---
+ tools/musl-gcc.specs.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+ mode change 100644 => 100755 tools/musl-gcc.specs.sh
+
+diff --git a/tools/musl-gcc.specs.sh b/tools/musl-gcc.specs.sh
+old mode 100644
+new mode 100755
+index 30492574..4d93626a
+--- a/tools/musl-gcc.specs.sh
++++ b/tools/musl-gcc.specs.sh
+@@ -17,13 +17,13 @@ cat <<EOF
+ libgcc.a%s %:if-exists(libgcc_eh.a%s)
+
+ *startfile:
+-%{!shared: $libdir/Scrt1.o} $libdir/crti.o crtbeginS.o%s
++%{shared:;static:$libdir/crt1.o%s; static-pie:$libdir/rcrt1.o%s; pie:$libdir/Scrt1.o%s; :$libdir/crt1.o%s} $libdir/crti.o%s %{static:crtbeginT.o%s; shared|static-pie|pie:crtbeginS.o%s; :crtbegin.o%s}
+
+ *endfile:
+-crtendS.o%s $libdir/crtn.o
++%{static:crtend.o%s; shared|static-pie|pie:crtendS.o%s; :crtend.o%s} $libdir/crtn.o%s
+
+ *link:
+--dynamic-linker $ldso -nostdlib %{shared:-shared} %{static:-static} %{rdynamic:-export-dynamic}
++%{!r:--build-id} --no-add-needed %{!static|static-pie:--eh-frame-hdr} --hash-style=gnu %{shared:-shared} %{!shared:%{!static:%{!static-pie:%{rdynamic:-export-dynamic} -dynamic-linker $ldso}} %{static:-static} %{static-pie:-static -pie --no-dynamic-linker -z text}}
+
+ *esp_link:
+
diff --git a/musl-1.2.0.tar.gz.asc b/musl-1.2.0.tar.gz.asc
new file mode 100644
index 0000000..8c37751
--- /dev/null
+++ b/musl-1.2.0.tar.gz.asc
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+iQEcBAABAgAGBQJeTzI7AAoJEFa821kwIEUPnhMH+wSnkAdTcFaPvlPkjCj+28j/
+v4pb5+e12eZbop2iV2/o56AvqZkzkXmr3CdEPUPPpQz1/Dg8hE7ej6+//8I4HEtJ
+EAiaeXsrjb5hRIlkpG5SL7JMN30t2GfaTM1kiuzU3ltq+7skbzSL9vh0WHNZxeya
+ezlrcS1cd2G113zYL7aiXg8BIJQRKl2Fc4tGfMopzJWCHNjx+/72I4X4tDjS968U
+QNZ6qI4hxXUKaZMyIvbPE8HW+obf6iW72xIajRkE69sdXBeNwL2fHHv7vQg9V7yX
++b7zqEbddb5J2sG2tAqRFo39xZCu3PfdFa8dzRq8IZYmd300Ssvk4jrpJU+Gb/A=
+=WoP1
+-----END PGP SIGNATURE-----
diff --git a/musl.pub b/musl.pub
new file mode 100644
index 0000000..7b7a8e9
--- /dev/null
+++ b/musl.pub
@@ -0,0 +1,30 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+mQENBFNcU8EBCAC3g30bXEEh+YzD06JQ+iG+gr5Nb+tjianh8aJ/ql35lqICVj6F
+nitol0KgSB1L3T80+EON3IEmic9rb2dw6EQ0rMl/6mSW91jQC1rGkGBZnlPZXOSW
+JznNTBeHaK1NlG6m0shZ+wePWXHoFDtxaEoaMqAzR+E3EkSduLQb9tJJ2vtmIC2X
+5SFT625DKpRYOpcUxX/d63U+gSQThTitHS9Me0mljcP+qKhP/HIajesx6s5QTBBe
+vOlzih5MpI0FHcwSIbPwhPUWRS2RdFKfJRQZQAQ1ZiOJL0W82eFI1uztDgfudPcf
+BbgZcSjqvrKiXaeZxHsj3aguaOqaKdRlkyD1ABEBAAG0GW11c2wgbGliYyA8bXVz
+bEBsaWJjLm9yZz6JATcEEwECACEFAlNcU8ECGwMGCwkIBwMCBhUIAgkKCwMWAgEC
+HgECF4AACgkQVrzbWTAgRQ91FwgAnxSTh6Yjz8Oj3p5hTA/5t/ueGpf3dgbVrOXB
+W0dgIkv+JbpJnpNFzLLz+Yi7J0eDGhW2OXMvZ1AEJmwoNsbsXBvd2rQAMQGUdcDT
+EhmM+9bRGvWW3hpRT9xFtVJb9bsj0vs6Tpcb9LmmUxwmrguAVo2eOQLQ3UvVWaFh
+oqEbvhfEb7kvhDds4iFuHxpAH11GmK5Q6POtfFBhYXZBhXqbcHzs1hs51vdDWPUg
+pcHdpeR9NiP1Ch7lVMHaTuiTmvQcOtCvk9K8OMsG+9z8e7BIis7bXbIjHOTLNVBI
+IE+kq4I0/Co9shhdqump1pJ0b7R+CfgkFP3n9GpGKkGTgc3djrkBDQRTXFPBAQgA
+y1PIPj4GJD8AAgSsNMkGxgT1Q0lV8cUh+qN4+uHjO6XzxyiX2rULnO25AWVSq4X2
+i4LzZxgfFG9wUPEWdeYsJzEzNQYL5JWJREBc1UO73pbVWykvP0zUlxtGKNIKHETx
+7D02vBpkTUErlNXbKWw1jpApyBmhWZhRsCa320t2yL6v6lO/1YxxCZ/VkSYYbCZ3
+Rl/uH+l7CfAsOJLczMSHpLNFg+fl9gYy6S/LUZ1kwHWLFbTYbzTdEaPSm9i+iNJ2
+tMHnvkvDv9GhOhIrixENCzfe3muxd8+8/UxAjZdj24AYphIRhvMSxnLSOUsoGjeP
+BWhTvKsr6r2MZGQcCiDNjwARAQABiQEeBBgBAgAJBQJTXFPBAhsMAAoJEFa821kw
+IEUPz50H93mm0dQVPDJV075V5eySx8kYgQUwc7aP6zSQdoMZ3GDa8+fpta3PQv09
+CqVFeJf8KUTkJwMKbNu5GUUmuA1WbxdmRkOHp81PalLbZS0vAJh62TNntmHU0sFJ
+kp+IviwOmAJaAO64BQAy/arH0D8q+LFAnMLdIFEVWiMuULXUCB1P4D8agbltd0rH
+KniPwcWR8Sh0PUcVjUPFzdZz1Qpc+9VYp626p2OZ+tlLO41OZAsbJ24+cWB/fkWu
+H6g/nw7y9+2xtX8TIi6YBtLCPx/5IcY8LzrSFC+NFYll5V1SoTiGtdhudSfs0Eb2
+RXdP42mK+kMrgynbOn1RP7p/rfpSlA==
+=FgKg
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/musl.spec b/musl.spec
new file mode 100644
index 0000000..8632be1
--- /dev/null
+++ b/musl.spec
@@ -0,0 +1,339 @@
+# We are not using this as the system libc,
+# so this remains disabled by default.
+%bcond_with system_libc
+
+# Fedora uses multilib with /usr/lib64
+# This switch changes it to multiarch, with /usr/lib/[arch]-linux-musl
+# This switch only has effect if system_libc is disabled.
+# This switch is disabled by default.
+%bcond_with multiarch
+
+# Fedora uses glibc as the standard libc.
+# This means any packages that would use musl would be treated
+# as a cross-compilation target. Cross-mode sets it up for this application.
+# In cross-mode, a prefix root is created with a new child FHS area.
+# This switch only has effect if system_libc is disabled.
+# This switch is enabled by default.
+%bcond_without crossmode
+
+
+# Ensure the value is set correctly
+%ifarch %{ix86}
+%global _musl_target_cpu i386
+%endif
+
+%ifarch %{arm}
+%global _musl_target_cpu arm
+%global _musl_platform_suffix eabi
+%endif
+
+%ifarch %{mips64}
+%global _musl_target_cpu mips64
+%endif
+
+%ifarch %{mips32}
+%global _musl_target_cpu mips
+%endif
+
+%ifarch ppc
+%global _musl_target_cpu powerpc
+%endif
+
+%ifarch %{power64}
+%global _musl_target_cpu powerpc64
+%endif
+
+%ifnarch %{ix86} %{arm} %{mips} %{power64} ppc
+%global _musl_target_cpu %{_target_cpu}
+%endif
+
+# Define the platform name
+%global _musl_platform %{_musl_target_cpu}-linux-musl%{?_musl_platform_suffix}
+
+# Paths to use when not set up in cross-mode
+%if %{without crossmode}
+# Set up alternate paths when not using as system libc
+%if %{without system_libc}
+# Set up libdir path for when using multilib
+%if %{without multiarch}
+%global _libdir %{_prefix}/%{_lib}/%{_musl_platform}
+%else
+# Set up libdir path for when using multiarch
+%global _libdir %{_prefix}/lib/%{_musl_platform}
+%endif
+%global _includedir %{_prefix}/include/%{_musl_platform}
+%endif
+%else
+# Cross-mode paths
+%global _libdir %{_prefix}/%{_musl_platform}/%{_lib}
+%global _includedir %{_prefix}/%{_musl_platform}/include
+%endif
+
+%if %{without multiarch}
+# We need to be multilib aware
+%global _syslibdir /%{_lib}
+%else
+%global _syslibdir /lib
+%endif
+
+Name: musl
+Version: 1.2.0
+Release: 1%{?dist}
+Summary: Fully featured lightweight standard C library for Linux
+License: MIT
+URL: https://musl.libc.org
+Source0: %{url}/releases/%{name}-%{version}.tar.gz
+Source1: %{url}/releases/%{name}-%{version}.tar.gz.asc
+Source2: %{url}/musl.pub
+
+# Fix Makefile to not use INSTALL variable so make_install macro works
+Patch0: musl-1.1.18-Makefile-rename-INSTALL-var.patch
+# Support PIE with static linking
+Patch1: musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
+
+# musl is only for Linux
+ExclusiveOS: linux
+
+# s390 is not supported by musl-libc
+ExcludeArch: s390
+
+BuildRequires: gcc
+BuildRequires: make
+
+# For GPG signature verification
+BuildRequires: gnupg2
+
+
+%description
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+%package libc
+Summary: Fully featured lightweight standard C library for Linux
+
+# This package provides musl dynamic libs too
+Obsoletes: %{name}-libs < %{version}-%{release}
+Provides: %{name}-libs = %{version}-%{release}
+Provides: %{name}-libs%{?_isa} = %{version}-%{release}
+# Ensure the filesystem skeleton is installed if it was built
+%if %{without system_libc}
+Requires: %{name}-filesystem%{?_isa} = %{version}-%{release}
+%endif
+
+%description libc
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the system dynamic linker library.
+It also provides the dynamic libraries for linking
+programs and libraries against musl.
+
+%if %{without system_libc}
+%package filesystem
+Summary: Base filesystem for %{name}
+
+%description filesystem
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the base filesystem directories
+for libraries and headers linked against musl.
+%endif
+
+%package devel
+Summary: Development files for %{name}
+
+# This package also provides the headers for using musl
+Provides: %{name}-headers = %{version}-%{release}
+Provides: %{name}-headers%{?_isa} = %{version}-%{release}
+
+Requires: %{name}-libc = %{version}-%{release}
+%if ! (0%{?rhel} && 0%{?rhel} < 8)
+Recommends: %{name}-libc-static = %{version}-%{release}
+%endif
+
+%description devel
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the development files for using
+musl with programs and libraries.
+
+%package libc-static
+Summary: Static link library for %{name}
+Obsoletes: %{name}-static < %{version}-%{release}
+Provides: %{name}-static = %{version}-%{release}
+Provides: %{name}-static%{?_isa} = %{version}-%{release}
+Requires: %{name}-devel%{?_isa} = %{version}-%{release}
+
+%description libc-static
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the additional development files for
+statically linking musl into programs and libraries.
+
+%package gcc
+Summary: Wrapper for using gcc with musl
+Requires: %{name}-devel = %{version}-%{release}
+Requires: gcc
+
+%description gcc
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides a wrapper around gcc to compile
+programs and libraries with musl easily.
+
+%package clang
+Summary: Wrapper for using clang with musl
+Requires: %{name}-devel = %{version}-%{release}
+Requires: clang
+
+%description clang
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides a wrapper around clang to compile
+programs and libraries with musl easily.
+
+
+%prep
+# Verify *before* actually unpacking!
+%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
+
+# Unpack sources and apply patches
+%autosetup -p1
+
+
+%build
+# Set linker flags to get correct soname...
+export LDFLAGS="%{?build_ldflags} -Wl,-soname,ld-musl-%{_musl_target_cpu}.so.1"
+%configure --enable-debug --enable-wrapper=all
+%make_build
+
+
+%install
+%make_install
+
+# Swap the files around for libc.so, making libc.so a symlink to the real file
+rm %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1
+mv %{buildroot}%{_libdir}/libc.so %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1
+ln -sr %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1 %{buildroot}%{_libdir}/libc.so
+
+# Write search path for dynamic linker
+mkdir -p %{buildroot}%{_sysconfdir}
+touch %{buildroot}%{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path
+cat > %{buildroot}%{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path <<EOF
+%{_libdir}
+EOF
+
+%if %{without multiarch}
+# Write symlink for syslib to /lib64 for compatibility with Fedora standards, where applicable
+mkdir -p %{buildroot}%{_syslibdir}
+%if "%{_lib}" == "lib64"
+ln -sr %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1 %{buildroot}%{_syslibdir}/ld-musl-%{_musl_target_cpu}.so.1
+%endif
+%endif
+
+mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
+touch %{buildroot}%{_rpmconfigdir}/macros.d/macros.musl
+cat > %{buildroot}%{_rpmconfigdir}/macros.d/macros.musl <<EOF
+%%_musl_libdir %{_libdir}
+%%_musl_includedir %{_includedir}
+EOF
+
+%files libc
+%license COPYRIGHT
+/lib/ld-musl-%{_musl_target_cpu}.so.1
+%if %{without multiarch}
+%if "%{_lib}" == "lib64"
+%{_syslibdir}/ld-musl-%{_musl_target_cpu}.so.1
+%endif
+%endif
+%config(noreplace) %{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path
+
+%if %{without system_libc}
+%files filesystem
+%if %{with crossmode}
+%dir %{_prefix}/%{_musl_platform}
+%endif
+%dir %{_libdir}
+%dir %{_includedir}
+%endif
+
+%files devel
+%license COPYRIGHT
+%doc README WHATSNEW
+%{_includedir}/*
+%{_libdir}/*.so
+%{_libdir}/*.o
+%{_libdir}/*.a
+%exclude %{_libdir}/libc.a
+%{_rpmconfigdir}/macros.d/macros.musl
+
+%files libc-static
+%license COPYRIGHT
+%{_libdir}/libc.a
+
+%files gcc
+%license COPYRIGHT
+%{_bindir}/musl-gcc
+%{_libdir}/musl-gcc.specs
+
+%files clang
+%license COPYRIGHT
+%{_bindir}/musl-clang
+%{_bindir}/ld.musl-clang
+
+
+%changelog
+* Mon Apr 6 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.2.0-1
+- Rebase to 1.2.0
+- Add patch to support PIE with static linking
+- Remove obsolete Group tags
+- Fix musl library locations and broken sonames
+- Update URL and Source URLs
+- Add filesystem subpackage for install directories
+
+* Tue Feb 4 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.1.24-1
+- Update to 1.1.24
+- Clean out conditionals referring to obsolete Fedora versions
+- Verify sources with GPG
+
+* Sun Nov 5 2017 Neal Gompa <ngompa13(a)gmail.com> - 1.1.18-1
+- Update to 1.1.18
+- Add patch to fix Makefile with make_install macro
+
+* Sat Apr 15 2017 Neal Gompa <ngompa13(a)gmail.com> - 1.1.16-1
+- Update to 1.1.16
+- Remove block on s390x
+- Add _musl_libdir and _musl_includedir macros
+
+* Fri Aug 5 2016 Neal Gompa <ngompa13(a)gmail.com> - 1.1.15-1
+- Update to 1.1.15
+- Remove blocks on 64-bit MIPS and PowerPC
+
+* Thu Mar 3 2016 Neal Gompa <ngompa13(a)gmail.com> - 1.1.14-1
+- Update to 1.1.14
+- Add crossmode bcond switch
+- Add multiarch bcond switch
+- Rename musl-libs to musl-libc
+- Rename musl-static to musl-libc-static
+
+* Tue Dec 22 2015 Neal Gompa <ngompa13(a)gmail.com> - 1.1.12-1
+- Initial packaging
diff --git a/sources b/sources
new file mode 100644
index 0000000..4faf946
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (musl-1.2.0.tar.gz) = 58bd88189a6002356728cea1c6f6605a893fe54f7687595879add4eab283c8692c3b031eb9457ad00d1edd082cfe62fcc0eb5eb1d3bf4f1d749c0efa2a95fec1
4 years
Architecture specific change in rpms/musl.git
by githook-noreply@fedoraproject.org
The package rpms/musl.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/musl.git/commit/?id=a5118f4f14abe....
Change:
+ExcludeArch: s390
Thanks.
Full change:
============
commit a5118f4f14abe5ff3e816f30680ccd9dec40fdf8
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 17:07:09 2020 -0400
Initial package for Fedora (RH#1821523)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2f70ac7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/musl-1.2.0.tar.gz
diff --git a/musl-1.1.18-Makefile-rename-INSTALL-var.patch b/musl-1.1.18-Makefile-rename-INSTALL-var.patch
new file mode 100644
index 0000000..8954563
--- /dev/null
+++ b/musl-1.1.18-Makefile-rename-INSTALL-var.patch
@@ -0,0 +1,68 @@
+From 694d7321915204318a3b6be77bd30a23ca5c1e85 Mon Sep 17 00:00:00 2001
+From: Neal Gompa <ngompa13(a)gmail.com>
+Date: Sun, 5 Nov 2017 11:47:48 -0500
+Subject: [PATCH] Makefile: Rename INSTALL variable to INSTALL_SH
+
+This is intended to be a variable to point to an internal tool.
+
+Changing this variable prevents it from colliding with tools that
+pass an INSTALL variable automatically.
+
+Signed-off-by: Neal Gompa <ngompa13(a)gmail.com>
+---
+ Makefile | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index d2e8997..f39ea3c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -53,7 +53,7 @@ LDFLAGS_ALL = $(LDFLAGS_AUTO) $(LDFLAGS)
+
+ AR = $(CROSS_COMPILE)ar
+ RANLIB = $(CROSS_COMPILE)ranlib
+-INSTALL = $(srcdir)/tools/install.sh
++INSTALL_SH = $(srcdir)/tools/install.sh
+
+ ARCH_INCLUDES = $(wildcard $(srcdir)/arch/$(ARCH)/bits/*.h)
+ GENERIC_INCLUDES = $(wildcard $(srcdir)/arch/generic/bits/*.h)
+@@ -194,28 +194,28 @@ obj/%-clang: $(srcdir)/tools/%-clang.in config.mak
+ chmod +x $@
+
+ $(DESTDIR)$(bindir)/%: obj/%
+- $(INSTALL) -D $< $@
++ $(INSTALL_SH) -D $< $@
+
+ $(DESTDIR)$(libdir)/%.so: lib/%.so
+- $(INSTALL) -D -m 755 $< $@
++ $(INSTALL_SH) -D -m 755 $< $@
+
+ $(DESTDIR)$(libdir)/%: lib/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: $(srcdir)/arch/$(ARCH)/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: $(srcdir)/arch/generic/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: obj/include/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/%: $(srcdir)/include/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so
+- $(INSTALL) -D -l $(libdir)/libc.so $@ || true
++ $(INSTALL_SH) -D -l $(libdir)/libc.so $@ || true
+
+ install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),)
+
+--
+2.13.6
+
diff --git a/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch b/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
new file mode 100644
index 0000000..4310da0
--- /dev/null
+++ b/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
@@ -0,0 +1,102 @@
+From 0d79e34e6da9d9827cfb7c787e90524176248d67 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald(a)redhat.com>
+Date: Mon, 6 Apr 2020 19:41:22 +0200
+Subject: [PATCH] Enable linking to a static position independent executable
+
+This also enables address space layout randomization (ASLR).
+
+$ cat hello.c
+
+int main()
+{
+ printf("main = 0x%lxd\n", main);
+ return 0;
+}
+
+$ gcc -static-pie -o hello hello.c -specs musl-gcc.specs
+
+$ ldd hello
+ statically linked
+
+$ file hello
+hello: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=24fe0d02b0558dc37b8ae2268878b118804ae72d, with debug_info, not stripped
+
+$ ./hello
+main = 0x7f858c4e72b9d
+
+$ ./hello
+main = 0x7f0854d312b9d
+
+$ ./hello
+main = 0x7f7179a1d2b9d
+
+$ ./hello
+main = 0x7f37f981b2b9d
+
+$ readelf -l hello
+
+Elf file type is DYN (Shared object file)
+Entry point 0x1058
+There are 9 program headers, starting at offset 64
+
+Program Headers:
+ Type Offset VirtAddr PhysAddr
+ FileSiz MemSiz Flags Align
+ LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
+ 0x00000000000003c0 0x00000000000003c0 R 0x1000
+ LOAD 0x0000000000001000 0x0000000000001000 0x0000000000001000
+ 0x0000000000002cce 0x0000000000002cce R E 0x1000
+ LOAD 0x0000000000004000 0x0000000000004000 0x0000000000004000
+ 0x0000000000001550 0x0000000000001550 R 0x1000
+ LOAD 0x0000000000005e50 0x0000000000006e50 0x0000000000006e50
+ 0x00000000000002e0 0x00000000000009a0 RW 0x1000
+ DYNAMIC 0x0000000000005e70 0x0000000000006e70 0x0000000000006e70
+ 0x0000000000000170 0x0000000000000170 RW 0x8
+ NOTE 0x0000000000000238 0x0000000000000238 0x0000000000000238
+ 0x0000000000000024 0x0000000000000024 R 0x4
+ GNU_EH_FRAME 0x0000000000004b60 0x0000000000004b60 0x0000000000004b60
+ 0x00000000000001ec 0x00000000000001ec R 0x4
+ GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
+ 0x0000000000000000 0x0000000000000000 RW 0x10
+ GNU_RELRO 0x0000000000005e50 0x0000000000006e50 0x0000000000006e50
+ 0x00000000000001b0 0x00000000000001b0 R 0x1
+
+ Section to Segment mapping:
+ Segment Sections...
+ 00 .note.gnu.build-id .gnu.hash .dynsym .dynstr .rela.dyn
+ 01 .init .plt .text .fini
+ 02 .rodata .eh_frame_hdr .eh_frame
+ 03 .init_array .fini_array .data.rel.ro .dynamic .got .got.plt .data .bss
+ 04 .dynamic
+ 05 .note.gnu.build-id
+ 06 .eh_frame_hdr
+ 07
+ 08 .init_array .fini_array .data.rel.ro .dynamic .got
+---
+ tools/musl-gcc.specs.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+ mode change 100644 => 100755 tools/musl-gcc.specs.sh
+
+diff --git a/tools/musl-gcc.specs.sh b/tools/musl-gcc.specs.sh
+old mode 100644
+new mode 100755
+index 30492574..4d93626a
+--- a/tools/musl-gcc.specs.sh
++++ b/tools/musl-gcc.specs.sh
+@@ -17,13 +17,13 @@ cat <<EOF
+ libgcc.a%s %:if-exists(libgcc_eh.a%s)
+
+ *startfile:
+-%{!shared: $libdir/Scrt1.o} $libdir/crti.o crtbeginS.o%s
++%{shared:;static:$libdir/crt1.o%s; static-pie:$libdir/rcrt1.o%s; pie:$libdir/Scrt1.o%s; :$libdir/crt1.o%s} $libdir/crti.o%s %{static:crtbeginT.o%s; shared|static-pie|pie:crtbeginS.o%s; :crtbegin.o%s}
+
+ *endfile:
+-crtendS.o%s $libdir/crtn.o
++%{static:crtend.o%s; shared|static-pie|pie:crtendS.o%s; :crtend.o%s} $libdir/crtn.o%s
+
+ *link:
+--dynamic-linker $ldso -nostdlib %{shared:-shared} %{static:-static} %{rdynamic:-export-dynamic}
++%{!r:--build-id} --no-add-needed %{!static|static-pie:--eh-frame-hdr} --hash-style=gnu %{shared:-shared} %{!shared:%{!static:%{!static-pie:%{rdynamic:-export-dynamic} -dynamic-linker $ldso}} %{static:-static} %{static-pie:-static -pie --no-dynamic-linker -z text}}
+
+ *esp_link:
+
diff --git a/musl-1.2.0.tar.gz.asc b/musl-1.2.0.tar.gz.asc
new file mode 100644
index 0000000..8c37751
--- /dev/null
+++ b/musl-1.2.0.tar.gz.asc
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+iQEcBAABAgAGBQJeTzI7AAoJEFa821kwIEUPnhMH+wSnkAdTcFaPvlPkjCj+28j/
+v4pb5+e12eZbop2iV2/o56AvqZkzkXmr3CdEPUPPpQz1/Dg8hE7ej6+//8I4HEtJ
+EAiaeXsrjb5hRIlkpG5SL7JMN30t2GfaTM1kiuzU3ltq+7skbzSL9vh0WHNZxeya
+ezlrcS1cd2G113zYL7aiXg8BIJQRKl2Fc4tGfMopzJWCHNjx+/72I4X4tDjS968U
+QNZ6qI4hxXUKaZMyIvbPE8HW+obf6iW72xIajRkE69sdXBeNwL2fHHv7vQg9V7yX
++b7zqEbddb5J2sG2tAqRFo39xZCu3PfdFa8dzRq8IZYmd300Ssvk4jrpJU+Gb/A=
+=WoP1
+-----END PGP SIGNATURE-----
diff --git a/musl.pub b/musl.pub
new file mode 100644
index 0000000..7b7a8e9
--- /dev/null
+++ b/musl.pub
@@ -0,0 +1,30 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+mQENBFNcU8EBCAC3g30bXEEh+YzD06JQ+iG+gr5Nb+tjianh8aJ/ql35lqICVj6F
+nitol0KgSB1L3T80+EON3IEmic9rb2dw6EQ0rMl/6mSW91jQC1rGkGBZnlPZXOSW
+JznNTBeHaK1NlG6m0shZ+wePWXHoFDtxaEoaMqAzR+E3EkSduLQb9tJJ2vtmIC2X
+5SFT625DKpRYOpcUxX/d63U+gSQThTitHS9Me0mljcP+qKhP/HIajesx6s5QTBBe
+vOlzih5MpI0FHcwSIbPwhPUWRS2RdFKfJRQZQAQ1ZiOJL0W82eFI1uztDgfudPcf
+BbgZcSjqvrKiXaeZxHsj3aguaOqaKdRlkyD1ABEBAAG0GW11c2wgbGliYyA8bXVz
+bEBsaWJjLm9yZz6JATcEEwECACEFAlNcU8ECGwMGCwkIBwMCBhUIAgkKCwMWAgEC
+HgECF4AACgkQVrzbWTAgRQ91FwgAnxSTh6Yjz8Oj3p5hTA/5t/ueGpf3dgbVrOXB
+W0dgIkv+JbpJnpNFzLLz+Yi7J0eDGhW2OXMvZ1AEJmwoNsbsXBvd2rQAMQGUdcDT
+EhmM+9bRGvWW3hpRT9xFtVJb9bsj0vs6Tpcb9LmmUxwmrguAVo2eOQLQ3UvVWaFh
+oqEbvhfEb7kvhDds4iFuHxpAH11GmK5Q6POtfFBhYXZBhXqbcHzs1hs51vdDWPUg
+pcHdpeR9NiP1Ch7lVMHaTuiTmvQcOtCvk9K8OMsG+9z8e7BIis7bXbIjHOTLNVBI
+IE+kq4I0/Co9shhdqump1pJ0b7R+CfgkFP3n9GpGKkGTgc3djrkBDQRTXFPBAQgA
+y1PIPj4GJD8AAgSsNMkGxgT1Q0lV8cUh+qN4+uHjO6XzxyiX2rULnO25AWVSq4X2
+i4LzZxgfFG9wUPEWdeYsJzEzNQYL5JWJREBc1UO73pbVWykvP0zUlxtGKNIKHETx
+7D02vBpkTUErlNXbKWw1jpApyBmhWZhRsCa320t2yL6v6lO/1YxxCZ/VkSYYbCZ3
+Rl/uH+l7CfAsOJLczMSHpLNFg+fl9gYy6S/LUZ1kwHWLFbTYbzTdEaPSm9i+iNJ2
+tMHnvkvDv9GhOhIrixENCzfe3muxd8+8/UxAjZdj24AYphIRhvMSxnLSOUsoGjeP
+BWhTvKsr6r2MZGQcCiDNjwARAQABiQEeBBgBAgAJBQJTXFPBAhsMAAoJEFa821kw
+IEUPz50H93mm0dQVPDJV075V5eySx8kYgQUwc7aP6zSQdoMZ3GDa8+fpta3PQv09
+CqVFeJf8KUTkJwMKbNu5GUUmuA1WbxdmRkOHp81PalLbZS0vAJh62TNntmHU0sFJ
+kp+IviwOmAJaAO64BQAy/arH0D8q+LFAnMLdIFEVWiMuULXUCB1P4D8agbltd0rH
+KniPwcWR8Sh0PUcVjUPFzdZz1Qpc+9VYp626p2OZ+tlLO41OZAsbJ24+cWB/fkWu
+H6g/nw7y9+2xtX8TIi6YBtLCPx/5IcY8LzrSFC+NFYll5V1SoTiGtdhudSfs0Eb2
+RXdP42mK+kMrgynbOn1RP7p/rfpSlA==
+=FgKg
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/musl.spec b/musl.spec
new file mode 100644
index 0000000..8632be1
--- /dev/null
+++ b/musl.spec
@@ -0,0 +1,339 @@
+# We are not using this as the system libc,
+# so this remains disabled by default.
+%bcond_with system_libc
+
+# Fedora uses multilib with /usr/lib64
+# This switch changes it to multiarch, with /usr/lib/[arch]-linux-musl
+# This switch only has effect if system_libc is disabled.
+# This switch is disabled by default.
+%bcond_with multiarch
+
+# Fedora uses glibc as the standard libc.
+# This means any packages that would use musl would be treated
+# as a cross-compilation target. Cross-mode sets it up for this application.
+# In cross-mode, a prefix root is created with a new child FHS area.
+# This switch only has effect if system_libc is disabled.
+# This switch is enabled by default.
+%bcond_without crossmode
+
+
+# Ensure the value is set correctly
+%ifarch %{ix86}
+%global _musl_target_cpu i386
+%endif
+
+%ifarch %{arm}
+%global _musl_target_cpu arm
+%global _musl_platform_suffix eabi
+%endif
+
+%ifarch %{mips64}
+%global _musl_target_cpu mips64
+%endif
+
+%ifarch %{mips32}
+%global _musl_target_cpu mips
+%endif
+
+%ifarch ppc
+%global _musl_target_cpu powerpc
+%endif
+
+%ifarch %{power64}
+%global _musl_target_cpu powerpc64
+%endif
+
+%ifnarch %{ix86} %{arm} %{mips} %{power64} ppc
+%global _musl_target_cpu %{_target_cpu}
+%endif
+
+# Define the platform name
+%global _musl_platform %{_musl_target_cpu}-linux-musl%{?_musl_platform_suffix}
+
+# Paths to use when not set up in cross-mode
+%if %{without crossmode}
+# Set up alternate paths when not using as system libc
+%if %{without system_libc}
+# Set up libdir path for when using multilib
+%if %{without multiarch}
+%global _libdir %{_prefix}/%{_lib}/%{_musl_platform}
+%else
+# Set up libdir path for when using multiarch
+%global _libdir %{_prefix}/lib/%{_musl_platform}
+%endif
+%global _includedir %{_prefix}/include/%{_musl_platform}
+%endif
+%else
+# Cross-mode paths
+%global _libdir %{_prefix}/%{_musl_platform}/%{_lib}
+%global _includedir %{_prefix}/%{_musl_platform}/include
+%endif
+
+%if %{without multiarch}
+# We need to be multilib aware
+%global _syslibdir /%{_lib}
+%else
+%global _syslibdir /lib
+%endif
+
+Name: musl
+Version: 1.2.0
+Release: 1%{?dist}
+Summary: Fully featured lightweight standard C library for Linux
+License: MIT
+URL: https://musl.libc.org
+Source0: %{url}/releases/%{name}-%{version}.tar.gz
+Source1: %{url}/releases/%{name}-%{version}.tar.gz.asc
+Source2: %{url}/musl.pub
+
+# Fix Makefile to not use INSTALL variable so make_install macro works
+Patch0: musl-1.1.18-Makefile-rename-INSTALL-var.patch
+# Support PIE with static linking
+Patch1: musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
+
+# musl is only for Linux
+ExclusiveOS: linux
+
+# s390 is not supported by musl-libc
+ExcludeArch: s390
+
+BuildRequires: gcc
+BuildRequires: make
+
+# For GPG signature verification
+BuildRequires: gnupg2
+
+
+%description
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+%package libc
+Summary: Fully featured lightweight standard C library for Linux
+
+# This package provides musl dynamic libs too
+Obsoletes: %{name}-libs < %{version}-%{release}
+Provides: %{name}-libs = %{version}-%{release}
+Provides: %{name}-libs%{?_isa} = %{version}-%{release}
+# Ensure the filesystem skeleton is installed if it was built
+%if %{without system_libc}
+Requires: %{name}-filesystem%{?_isa} = %{version}-%{release}
+%endif
+
+%description libc
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the system dynamic linker library.
+It also provides the dynamic libraries for linking
+programs and libraries against musl.
+
+%if %{without system_libc}
+%package filesystem
+Summary: Base filesystem for %{name}
+
+%description filesystem
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the base filesystem directories
+for libraries and headers linked against musl.
+%endif
+
+%package devel
+Summary: Development files for %{name}
+
+# This package also provides the headers for using musl
+Provides: %{name}-headers = %{version}-%{release}
+Provides: %{name}-headers%{?_isa} = %{version}-%{release}
+
+Requires: %{name}-libc = %{version}-%{release}
+%if ! (0%{?rhel} && 0%{?rhel} < 8)
+Recommends: %{name}-libc-static = %{version}-%{release}
+%endif
+
+%description devel
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the development files for using
+musl with programs and libraries.
+
+%package libc-static
+Summary: Static link library for %{name}
+Obsoletes: %{name}-static < %{version}-%{release}
+Provides: %{name}-static = %{version}-%{release}
+Provides: %{name}-static%{?_isa} = %{version}-%{release}
+Requires: %{name}-devel%{?_isa} = %{version}-%{release}
+
+%description libc-static
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the additional development files for
+statically linking musl into programs and libraries.
+
+%package gcc
+Summary: Wrapper for using gcc with musl
+Requires: %{name}-devel = %{version}-%{release}
+Requires: gcc
+
+%description gcc
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides a wrapper around gcc to compile
+programs and libraries with musl easily.
+
+%package clang
+Summary: Wrapper for using clang with musl
+Requires: %{name}-devel = %{version}-%{release}
+Requires: clang
+
+%description clang
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides a wrapper around clang to compile
+programs and libraries with musl easily.
+
+
+%prep
+# Verify *before* actually unpacking!
+%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
+
+# Unpack sources and apply patches
+%autosetup -p1
+
+
+%build
+# Set linker flags to get correct soname...
+export LDFLAGS="%{?build_ldflags} -Wl,-soname,ld-musl-%{_musl_target_cpu}.so.1"
+%configure --enable-debug --enable-wrapper=all
+%make_build
+
+
+%install
+%make_install
+
+# Swap the files around for libc.so, making libc.so a symlink to the real file
+rm %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1
+mv %{buildroot}%{_libdir}/libc.so %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1
+ln -sr %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1 %{buildroot}%{_libdir}/libc.so
+
+# Write search path for dynamic linker
+mkdir -p %{buildroot}%{_sysconfdir}
+touch %{buildroot}%{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path
+cat > %{buildroot}%{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path <<EOF
+%{_libdir}
+EOF
+
+%if %{without multiarch}
+# Write symlink for syslib to /lib64 for compatibility with Fedora standards, where applicable
+mkdir -p %{buildroot}%{_syslibdir}
+%if "%{_lib}" == "lib64"
+ln -sr %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1 %{buildroot}%{_syslibdir}/ld-musl-%{_musl_target_cpu}.so.1
+%endif
+%endif
+
+mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
+touch %{buildroot}%{_rpmconfigdir}/macros.d/macros.musl
+cat > %{buildroot}%{_rpmconfigdir}/macros.d/macros.musl <<EOF
+%%_musl_libdir %{_libdir}
+%%_musl_includedir %{_includedir}
+EOF
+
+%files libc
+%license COPYRIGHT
+/lib/ld-musl-%{_musl_target_cpu}.so.1
+%if %{without multiarch}
+%if "%{_lib}" == "lib64"
+%{_syslibdir}/ld-musl-%{_musl_target_cpu}.so.1
+%endif
+%endif
+%config(noreplace) %{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path
+
+%if %{without system_libc}
+%files filesystem
+%if %{with crossmode}
+%dir %{_prefix}/%{_musl_platform}
+%endif
+%dir %{_libdir}
+%dir %{_includedir}
+%endif
+
+%files devel
+%license COPYRIGHT
+%doc README WHATSNEW
+%{_includedir}/*
+%{_libdir}/*.so
+%{_libdir}/*.o
+%{_libdir}/*.a
+%exclude %{_libdir}/libc.a
+%{_rpmconfigdir}/macros.d/macros.musl
+
+%files libc-static
+%license COPYRIGHT
+%{_libdir}/libc.a
+
+%files gcc
+%license COPYRIGHT
+%{_bindir}/musl-gcc
+%{_libdir}/musl-gcc.specs
+
+%files clang
+%license COPYRIGHT
+%{_bindir}/musl-clang
+%{_bindir}/ld.musl-clang
+
+
+%changelog
+* Mon Apr 6 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.2.0-1
+- Rebase to 1.2.0
+- Add patch to support PIE with static linking
+- Remove obsolete Group tags
+- Fix musl library locations and broken sonames
+- Update URL and Source URLs
+- Add filesystem subpackage for install directories
+
+* Tue Feb 4 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.1.24-1
+- Update to 1.1.24
+- Clean out conditionals referring to obsolete Fedora versions
+- Verify sources with GPG
+
+* Sun Nov 5 2017 Neal Gompa <ngompa13(a)gmail.com> - 1.1.18-1
+- Update to 1.1.18
+- Add patch to fix Makefile with make_install macro
+
+* Sat Apr 15 2017 Neal Gompa <ngompa13(a)gmail.com> - 1.1.16-1
+- Update to 1.1.16
+- Remove block on s390x
+- Add _musl_libdir and _musl_includedir macros
+
+* Fri Aug 5 2016 Neal Gompa <ngompa13(a)gmail.com> - 1.1.15-1
+- Update to 1.1.15
+- Remove blocks on 64-bit MIPS and PowerPC
+
+* Thu Mar 3 2016 Neal Gompa <ngompa13(a)gmail.com> - 1.1.14-1
+- Update to 1.1.14
+- Add crossmode bcond switch
+- Add multiarch bcond switch
+- Rename musl-libs to musl-libc
+- Rename musl-static to musl-libc-static
+
+* Tue Dec 22 2015 Neal Gompa <ngompa13(a)gmail.com> - 1.1.12-1
+- Initial packaging
diff --git a/sources b/sources
new file mode 100644
index 0000000..4faf946
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (musl-1.2.0.tar.gz) = 58bd88189a6002356728cea1c6f6605a893fe54f7687595879add4eab283c8692c3b031eb9457ad00d1edd082cfe62fcc0eb5eb1d3bf4f1d749c0efa2a95fec1
4 years
Architecture specific change in rpms/musl.git
by githook-noreply@fedoraproject.org
The package rpms/musl.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/musl.git/commit/?id=a5118f4f14abe....
Change:
+ExcludeArch: s390
Thanks.
Full change:
============
commit a5118f4f14abe5ff3e816f30680ccd9dec40fdf8
Author: Neal Gompa <ngompa13(a)gmail.com>
Date: Tue Apr 7 17:07:09 2020 -0400
Initial package for Fedora (RH#1821523)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2f70ac7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/musl-1.2.0.tar.gz
diff --git a/musl-1.1.18-Makefile-rename-INSTALL-var.patch b/musl-1.1.18-Makefile-rename-INSTALL-var.patch
new file mode 100644
index 0000000..8954563
--- /dev/null
+++ b/musl-1.1.18-Makefile-rename-INSTALL-var.patch
@@ -0,0 +1,68 @@
+From 694d7321915204318a3b6be77bd30a23ca5c1e85 Mon Sep 17 00:00:00 2001
+From: Neal Gompa <ngompa13(a)gmail.com>
+Date: Sun, 5 Nov 2017 11:47:48 -0500
+Subject: [PATCH] Makefile: Rename INSTALL variable to INSTALL_SH
+
+This is intended to be a variable to point to an internal tool.
+
+Changing this variable prevents it from colliding with tools that
+pass an INSTALL variable automatically.
+
+Signed-off-by: Neal Gompa <ngompa13(a)gmail.com>
+---
+ Makefile | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index d2e8997..f39ea3c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -53,7 +53,7 @@ LDFLAGS_ALL = $(LDFLAGS_AUTO) $(LDFLAGS)
+
+ AR = $(CROSS_COMPILE)ar
+ RANLIB = $(CROSS_COMPILE)ranlib
+-INSTALL = $(srcdir)/tools/install.sh
++INSTALL_SH = $(srcdir)/tools/install.sh
+
+ ARCH_INCLUDES = $(wildcard $(srcdir)/arch/$(ARCH)/bits/*.h)
+ GENERIC_INCLUDES = $(wildcard $(srcdir)/arch/generic/bits/*.h)
+@@ -194,28 +194,28 @@ obj/%-clang: $(srcdir)/tools/%-clang.in config.mak
+ chmod +x $@
+
+ $(DESTDIR)$(bindir)/%: obj/%
+- $(INSTALL) -D $< $@
++ $(INSTALL_SH) -D $< $@
+
+ $(DESTDIR)$(libdir)/%.so: lib/%.so
+- $(INSTALL) -D -m 755 $< $@
++ $(INSTALL_SH) -D -m 755 $< $@
+
+ $(DESTDIR)$(libdir)/%: lib/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: $(srcdir)/arch/$(ARCH)/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: $(srcdir)/arch/generic/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/bits/%: obj/include/bits/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(includedir)/%: $(srcdir)/include/%
+- $(INSTALL) -D -m 644 $< $@
++ $(INSTALL_SH) -D -m 644 $< $@
+
+ $(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so
+- $(INSTALL) -D -l $(libdir)/libc.so $@ || true
++ $(INSTALL_SH) -D -l $(libdir)/libc.so $@ || true
+
+ install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),)
+
+--
+2.13.6
+
diff --git a/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch b/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
new file mode 100644
index 0000000..4310da0
--- /dev/null
+++ b/musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
@@ -0,0 +1,102 @@
+From 0d79e34e6da9d9827cfb7c787e90524176248d67 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald(a)redhat.com>
+Date: Mon, 6 Apr 2020 19:41:22 +0200
+Subject: [PATCH] Enable linking to a static position independent executable
+
+This also enables address space layout randomization (ASLR).
+
+$ cat hello.c
+
+int main()
+{
+ printf("main = 0x%lxd\n", main);
+ return 0;
+}
+
+$ gcc -static-pie -o hello hello.c -specs musl-gcc.specs
+
+$ ldd hello
+ statically linked
+
+$ file hello
+hello: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=24fe0d02b0558dc37b8ae2268878b118804ae72d, with debug_info, not stripped
+
+$ ./hello
+main = 0x7f858c4e72b9d
+
+$ ./hello
+main = 0x7f0854d312b9d
+
+$ ./hello
+main = 0x7f7179a1d2b9d
+
+$ ./hello
+main = 0x7f37f981b2b9d
+
+$ readelf -l hello
+
+Elf file type is DYN (Shared object file)
+Entry point 0x1058
+There are 9 program headers, starting at offset 64
+
+Program Headers:
+ Type Offset VirtAddr PhysAddr
+ FileSiz MemSiz Flags Align
+ LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
+ 0x00000000000003c0 0x00000000000003c0 R 0x1000
+ LOAD 0x0000000000001000 0x0000000000001000 0x0000000000001000
+ 0x0000000000002cce 0x0000000000002cce R E 0x1000
+ LOAD 0x0000000000004000 0x0000000000004000 0x0000000000004000
+ 0x0000000000001550 0x0000000000001550 R 0x1000
+ LOAD 0x0000000000005e50 0x0000000000006e50 0x0000000000006e50
+ 0x00000000000002e0 0x00000000000009a0 RW 0x1000
+ DYNAMIC 0x0000000000005e70 0x0000000000006e70 0x0000000000006e70
+ 0x0000000000000170 0x0000000000000170 RW 0x8
+ NOTE 0x0000000000000238 0x0000000000000238 0x0000000000000238
+ 0x0000000000000024 0x0000000000000024 R 0x4
+ GNU_EH_FRAME 0x0000000000004b60 0x0000000000004b60 0x0000000000004b60
+ 0x00000000000001ec 0x00000000000001ec R 0x4
+ GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
+ 0x0000000000000000 0x0000000000000000 RW 0x10
+ GNU_RELRO 0x0000000000005e50 0x0000000000006e50 0x0000000000006e50
+ 0x00000000000001b0 0x00000000000001b0 R 0x1
+
+ Section to Segment mapping:
+ Segment Sections...
+ 00 .note.gnu.build-id .gnu.hash .dynsym .dynstr .rela.dyn
+ 01 .init .plt .text .fini
+ 02 .rodata .eh_frame_hdr .eh_frame
+ 03 .init_array .fini_array .data.rel.ro .dynamic .got .got.plt .data .bss
+ 04 .dynamic
+ 05 .note.gnu.build-id
+ 06 .eh_frame_hdr
+ 07
+ 08 .init_array .fini_array .data.rel.ro .dynamic .got
+---
+ tools/musl-gcc.specs.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+ mode change 100644 => 100755 tools/musl-gcc.specs.sh
+
+diff --git a/tools/musl-gcc.specs.sh b/tools/musl-gcc.specs.sh
+old mode 100644
+new mode 100755
+index 30492574..4d93626a
+--- a/tools/musl-gcc.specs.sh
++++ b/tools/musl-gcc.specs.sh
+@@ -17,13 +17,13 @@ cat <<EOF
+ libgcc.a%s %:if-exists(libgcc_eh.a%s)
+
+ *startfile:
+-%{!shared: $libdir/Scrt1.o} $libdir/crti.o crtbeginS.o%s
++%{shared:;static:$libdir/crt1.o%s; static-pie:$libdir/rcrt1.o%s; pie:$libdir/Scrt1.o%s; :$libdir/crt1.o%s} $libdir/crti.o%s %{static:crtbeginT.o%s; shared|static-pie|pie:crtbeginS.o%s; :crtbegin.o%s}
+
+ *endfile:
+-crtendS.o%s $libdir/crtn.o
++%{static:crtend.o%s; shared|static-pie|pie:crtendS.o%s; :crtend.o%s} $libdir/crtn.o%s
+
+ *link:
+--dynamic-linker $ldso -nostdlib %{shared:-shared} %{static:-static} %{rdynamic:-export-dynamic}
++%{!r:--build-id} --no-add-needed %{!static|static-pie:--eh-frame-hdr} --hash-style=gnu %{shared:-shared} %{!shared:%{!static:%{!static-pie:%{rdynamic:-export-dynamic} -dynamic-linker $ldso}} %{static:-static} %{static-pie:-static -pie --no-dynamic-linker -z text}}
+
+ *esp_link:
+
diff --git a/musl-1.2.0.tar.gz.asc b/musl-1.2.0.tar.gz.asc
new file mode 100644
index 0000000..8c37751
--- /dev/null
+++ b/musl-1.2.0.tar.gz.asc
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+iQEcBAABAgAGBQJeTzI7AAoJEFa821kwIEUPnhMH+wSnkAdTcFaPvlPkjCj+28j/
+v4pb5+e12eZbop2iV2/o56AvqZkzkXmr3CdEPUPPpQz1/Dg8hE7ej6+//8I4HEtJ
+EAiaeXsrjb5hRIlkpG5SL7JMN30t2GfaTM1kiuzU3ltq+7skbzSL9vh0WHNZxeya
+ezlrcS1cd2G113zYL7aiXg8BIJQRKl2Fc4tGfMopzJWCHNjx+/72I4X4tDjS968U
+QNZ6qI4hxXUKaZMyIvbPE8HW+obf6iW72xIajRkE69sdXBeNwL2fHHv7vQg9V7yX
++b7zqEbddb5J2sG2tAqRFo39xZCu3PfdFa8dzRq8IZYmd300Ssvk4jrpJU+Gb/A=
+=WoP1
+-----END PGP SIGNATURE-----
diff --git a/musl.pub b/musl.pub
new file mode 100644
index 0000000..7b7a8e9
--- /dev/null
+++ b/musl.pub
@@ -0,0 +1,30 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+mQENBFNcU8EBCAC3g30bXEEh+YzD06JQ+iG+gr5Nb+tjianh8aJ/ql35lqICVj6F
+nitol0KgSB1L3T80+EON3IEmic9rb2dw6EQ0rMl/6mSW91jQC1rGkGBZnlPZXOSW
+JznNTBeHaK1NlG6m0shZ+wePWXHoFDtxaEoaMqAzR+E3EkSduLQb9tJJ2vtmIC2X
+5SFT625DKpRYOpcUxX/d63U+gSQThTitHS9Me0mljcP+qKhP/HIajesx6s5QTBBe
+vOlzih5MpI0FHcwSIbPwhPUWRS2RdFKfJRQZQAQ1ZiOJL0W82eFI1uztDgfudPcf
+BbgZcSjqvrKiXaeZxHsj3aguaOqaKdRlkyD1ABEBAAG0GW11c2wgbGliYyA8bXVz
+bEBsaWJjLm9yZz6JATcEEwECACEFAlNcU8ECGwMGCwkIBwMCBhUIAgkKCwMWAgEC
+HgECF4AACgkQVrzbWTAgRQ91FwgAnxSTh6Yjz8Oj3p5hTA/5t/ueGpf3dgbVrOXB
+W0dgIkv+JbpJnpNFzLLz+Yi7J0eDGhW2OXMvZ1AEJmwoNsbsXBvd2rQAMQGUdcDT
+EhmM+9bRGvWW3hpRT9xFtVJb9bsj0vs6Tpcb9LmmUxwmrguAVo2eOQLQ3UvVWaFh
+oqEbvhfEb7kvhDds4iFuHxpAH11GmK5Q6POtfFBhYXZBhXqbcHzs1hs51vdDWPUg
+pcHdpeR9NiP1Ch7lVMHaTuiTmvQcOtCvk9K8OMsG+9z8e7BIis7bXbIjHOTLNVBI
+IE+kq4I0/Co9shhdqump1pJ0b7R+CfgkFP3n9GpGKkGTgc3djrkBDQRTXFPBAQgA
+y1PIPj4GJD8AAgSsNMkGxgT1Q0lV8cUh+qN4+uHjO6XzxyiX2rULnO25AWVSq4X2
+i4LzZxgfFG9wUPEWdeYsJzEzNQYL5JWJREBc1UO73pbVWykvP0zUlxtGKNIKHETx
+7D02vBpkTUErlNXbKWw1jpApyBmhWZhRsCa320t2yL6v6lO/1YxxCZ/VkSYYbCZ3
+Rl/uH+l7CfAsOJLczMSHpLNFg+fl9gYy6S/LUZ1kwHWLFbTYbzTdEaPSm9i+iNJ2
+tMHnvkvDv9GhOhIrixENCzfe3muxd8+8/UxAjZdj24AYphIRhvMSxnLSOUsoGjeP
+BWhTvKsr6r2MZGQcCiDNjwARAQABiQEeBBgBAgAJBQJTXFPBAhsMAAoJEFa821kw
+IEUPz50H93mm0dQVPDJV075V5eySx8kYgQUwc7aP6zSQdoMZ3GDa8+fpta3PQv09
+CqVFeJf8KUTkJwMKbNu5GUUmuA1WbxdmRkOHp81PalLbZS0vAJh62TNntmHU0sFJ
+kp+IviwOmAJaAO64BQAy/arH0D8q+LFAnMLdIFEVWiMuULXUCB1P4D8agbltd0rH
+KniPwcWR8Sh0PUcVjUPFzdZz1Qpc+9VYp626p2OZ+tlLO41OZAsbJ24+cWB/fkWu
+H6g/nw7y9+2xtX8TIi6YBtLCPx/5IcY8LzrSFC+NFYll5V1SoTiGtdhudSfs0Eb2
+RXdP42mK+kMrgynbOn1RP7p/rfpSlA==
+=FgKg
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/musl.spec b/musl.spec
new file mode 100644
index 0000000..8632be1
--- /dev/null
+++ b/musl.spec
@@ -0,0 +1,339 @@
+# We are not using this as the system libc,
+# so this remains disabled by default.
+%bcond_with system_libc
+
+# Fedora uses multilib with /usr/lib64
+# This switch changes it to multiarch, with /usr/lib/[arch]-linux-musl
+# This switch only has effect if system_libc is disabled.
+# This switch is disabled by default.
+%bcond_with multiarch
+
+# Fedora uses glibc as the standard libc.
+# This means any packages that would use musl would be treated
+# as a cross-compilation target. Cross-mode sets it up for this application.
+# In cross-mode, a prefix root is created with a new child FHS area.
+# This switch only has effect if system_libc is disabled.
+# This switch is enabled by default.
+%bcond_without crossmode
+
+
+# Ensure the value is set correctly
+%ifarch %{ix86}
+%global _musl_target_cpu i386
+%endif
+
+%ifarch %{arm}
+%global _musl_target_cpu arm
+%global _musl_platform_suffix eabi
+%endif
+
+%ifarch %{mips64}
+%global _musl_target_cpu mips64
+%endif
+
+%ifarch %{mips32}
+%global _musl_target_cpu mips
+%endif
+
+%ifarch ppc
+%global _musl_target_cpu powerpc
+%endif
+
+%ifarch %{power64}
+%global _musl_target_cpu powerpc64
+%endif
+
+%ifnarch %{ix86} %{arm} %{mips} %{power64} ppc
+%global _musl_target_cpu %{_target_cpu}
+%endif
+
+# Define the platform name
+%global _musl_platform %{_musl_target_cpu}-linux-musl%{?_musl_platform_suffix}
+
+# Paths to use when not set up in cross-mode
+%if %{without crossmode}
+# Set up alternate paths when not using as system libc
+%if %{without system_libc}
+# Set up libdir path for when using multilib
+%if %{without multiarch}
+%global _libdir %{_prefix}/%{_lib}/%{_musl_platform}
+%else
+# Set up libdir path for when using multiarch
+%global _libdir %{_prefix}/lib/%{_musl_platform}
+%endif
+%global _includedir %{_prefix}/include/%{_musl_platform}
+%endif
+%else
+# Cross-mode paths
+%global _libdir %{_prefix}/%{_musl_platform}/%{_lib}
+%global _includedir %{_prefix}/%{_musl_platform}/include
+%endif
+
+%if %{without multiarch}
+# We need to be multilib aware
+%global _syslibdir /%{_lib}
+%else
+%global _syslibdir /lib
+%endif
+
+Name: musl
+Version: 1.2.0
+Release: 1%{?dist}
+Summary: Fully featured lightweight standard C library for Linux
+License: MIT
+URL: https://musl.libc.org
+Source0: %{url}/releases/%{name}-%{version}.tar.gz
+Source1: %{url}/releases/%{name}-%{version}.tar.gz.asc
+Source2: %{url}/musl.pub
+
+# Fix Makefile to not use INSTALL variable so make_install macro works
+Patch0: musl-1.1.18-Makefile-rename-INSTALL-var.patch
+# Support PIE with static linking
+Patch1: musl-1.2.0-Support-static-pie-with-musl-gcc-specs.patch
+
+# musl is only for Linux
+ExclusiveOS: linux
+
+# s390 is not supported by musl-libc
+ExcludeArch: s390
+
+BuildRequires: gcc
+BuildRequires: make
+
+# For GPG signature verification
+BuildRequires: gnupg2
+
+
+%description
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+%package libc
+Summary: Fully featured lightweight standard C library for Linux
+
+# This package provides musl dynamic libs too
+Obsoletes: %{name}-libs < %{version}-%{release}
+Provides: %{name}-libs = %{version}-%{release}
+Provides: %{name}-libs%{?_isa} = %{version}-%{release}
+# Ensure the filesystem skeleton is installed if it was built
+%if %{without system_libc}
+Requires: %{name}-filesystem%{?_isa} = %{version}-%{release}
+%endif
+
+%description libc
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the system dynamic linker library.
+It also provides the dynamic libraries for linking
+programs and libraries against musl.
+
+%if %{without system_libc}
+%package filesystem
+Summary: Base filesystem for %{name}
+
+%description filesystem
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the base filesystem directories
+for libraries and headers linked against musl.
+%endif
+
+%package devel
+Summary: Development files for %{name}
+
+# This package also provides the headers for using musl
+Provides: %{name}-headers = %{version}-%{release}
+Provides: %{name}-headers%{?_isa} = %{version}-%{release}
+
+Requires: %{name}-libc = %{version}-%{release}
+%if ! (0%{?rhel} && 0%{?rhel} < 8)
+Recommends: %{name}-libc-static = %{version}-%{release}
+%endif
+
+%description devel
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the development files for using
+musl with programs and libraries.
+
+%package libc-static
+Summary: Static link library for %{name}
+Obsoletes: %{name}-static < %{version}-%{release}
+Provides: %{name}-static = %{version}-%{release}
+Provides: %{name}-static%{?_isa} = %{version}-%{release}
+Requires: %{name}-devel%{?_isa} = %{version}-%{release}
+
+%description libc-static
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides the additional development files for
+statically linking musl into programs and libraries.
+
+%package gcc
+Summary: Wrapper for using gcc with musl
+Requires: %{name}-devel = %{version}-%{release}
+Requires: gcc
+
+%description gcc
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides a wrapper around gcc to compile
+programs and libraries with musl easily.
+
+%package clang
+Summary: Wrapper for using clang with musl
+Requires: %{name}-devel = %{version}-%{release}
+Requires: clang
+
+%description clang
+musl is a new C standard library to power a new generation
+of Linux-based devices. It is lightweight, fast, simple,
+free, and strives to be correct in the sense of standards
+conformance and safety.
+
+This package provides a wrapper around clang to compile
+programs and libraries with musl easily.
+
+
+%prep
+# Verify *before* actually unpacking!
+%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
+
+# Unpack sources and apply patches
+%autosetup -p1
+
+
+%build
+# Set linker flags to get correct soname...
+export LDFLAGS="%{?build_ldflags} -Wl,-soname,ld-musl-%{_musl_target_cpu}.so.1"
+%configure --enable-debug --enable-wrapper=all
+%make_build
+
+
+%install
+%make_install
+
+# Swap the files around for libc.so, making libc.so a symlink to the real file
+rm %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1
+mv %{buildroot}%{_libdir}/libc.so %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1
+ln -sr %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1 %{buildroot}%{_libdir}/libc.so
+
+# Write search path for dynamic linker
+mkdir -p %{buildroot}%{_sysconfdir}
+touch %{buildroot}%{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path
+cat > %{buildroot}%{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path <<EOF
+%{_libdir}
+EOF
+
+%if %{without multiarch}
+# Write symlink for syslib to /lib64 for compatibility with Fedora standards, where applicable
+mkdir -p %{buildroot}%{_syslibdir}
+%if "%{_lib}" == "lib64"
+ln -sr %{buildroot}/lib/ld-musl-%{_musl_target_cpu}.so.1 %{buildroot}%{_syslibdir}/ld-musl-%{_musl_target_cpu}.so.1
+%endif
+%endif
+
+mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
+touch %{buildroot}%{_rpmconfigdir}/macros.d/macros.musl
+cat > %{buildroot}%{_rpmconfigdir}/macros.d/macros.musl <<EOF
+%%_musl_libdir %{_libdir}
+%%_musl_includedir %{_includedir}
+EOF
+
+%files libc
+%license COPYRIGHT
+/lib/ld-musl-%{_musl_target_cpu}.so.1
+%if %{without multiarch}
+%if "%{_lib}" == "lib64"
+%{_syslibdir}/ld-musl-%{_musl_target_cpu}.so.1
+%endif
+%endif
+%config(noreplace) %{_sysconfdir}/ld-musl-%{_musl_target_cpu}.path
+
+%if %{without system_libc}
+%files filesystem
+%if %{with crossmode}
+%dir %{_prefix}/%{_musl_platform}
+%endif
+%dir %{_libdir}
+%dir %{_includedir}
+%endif
+
+%files devel
+%license COPYRIGHT
+%doc README WHATSNEW
+%{_includedir}/*
+%{_libdir}/*.so
+%{_libdir}/*.o
+%{_libdir}/*.a
+%exclude %{_libdir}/libc.a
+%{_rpmconfigdir}/macros.d/macros.musl
+
+%files libc-static
+%license COPYRIGHT
+%{_libdir}/libc.a
+
+%files gcc
+%license COPYRIGHT
+%{_bindir}/musl-gcc
+%{_libdir}/musl-gcc.specs
+
+%files clang
+%license COPYRIGHT
+%{_bindir}/musl-clang
+%{_bindir}/ld.musl-clang
+
+
+%changelog
+* Mon Apr 6 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.2.0-1
+- Rebase to 1.2.0
+- Add patch to support PIE with static linking
+- Remove obsolete Group tags
+- Fix musl library locations and broken sonames
+- Update URL and Source URLs
+- Add filesystem subpackage for install directories
+
+* Tue Feb 4 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.1.24-1
+- Update to 1.1.24
+- Clean out conditionals referring to obsolete Fedora versions
+- Verify sources with GPG
+
+* Sun Nov 5 2017 Neal Gompa <ngompa13(a)gmail.com> - 1.1.18-1
+- Update to 1.1.18
+- Add patch to fix Makefile with make_install macro
+
+* Sat Apr 15 2017 Neal Gompa <ngompa13(a)gmail.com> - 1.1.16-1
+- Update to 1.1.16
+- Remove block on s390x
+- Add _musl_libdir and _musl_includedir macros
+
+* Fri Aug 5 2016 Neal Gompa <ngompa13(a)gmail.com> - 1.1.15-1
+- Update to 1.1.15
+- Remove blocks on 64-bit MIPS and PowerPC
+
+* Thu Mar 3 2016 Neal Gompa <ngompa13(a)gmail.com> - 1.1.14-1
+- Update to 1.1.14
+- Add crossmode bcond switch
+- Add multiarch bcond switch
+- Rename musl-libs to musl-libc
+- Rename musl-static to musl-libc-static
+
+* Tue Dec 22 2015 Neal Gompa <ngompa13(a)gmail.com> - 1.1.12-1
+- Initial packaging
diff --git a/sources b/sources
new file mode 100644
index 0000000..4faf946
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (musl-1.2.0.tar.gz) = 58bd88189a6002356728cea1c6f6605a893fe54f7687595879add4eab283c8692c3b031eb9457ad00d1edd082cfe62fcc0eb5eb1d3bf4f1d749c0efa2a95fec1
4 years
Architecture specific change in rpms/purple-matrix.git
by githook-noreply@fedoraproject.org
The package rpms/purple-matrix.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/purple-matrix.git/commit/?id=9e9e....
Change:
+ExcludeArch: s390x
Thanks.
Full change:
============
commit 9e9e0d46a63f4d2cb9f28fe9ada2944cee3d566c
Author: Vitaly Zaitsev <vitaly(a)easycoding.org>
Date: Tue Apr 7 11:35:57 2020 +0200
Some deps are not available on s390x on EPEL8.
diff --git a/purple-matrix.spec b/purple-matrix.spec
index f22835d..5411174 100644
--- a/purple-matrix.spec
+++ b/purple-matrix.spec
@@ -25,6 +25,10 @@ BuildRequires: libgcrypt-devel
BuildRequires: libolm-devel
BuildRequires: gcc
+%if 0%{?rhel} && 0%{?rhel} == 8
+ExcludeArch: s390x
+%endif
+
%package -n pidgin-%{plugin_name}
Summary: Adds pixmaps, icons and smileys for Matrix protocol
BuildArch: noarch
4 years