From c4d024551f8a5ec18ca947b0b285526dab2d1328 Mon Sep 17 00:00:00 2001 From: Ben Cressey Date: Sat, 30 Mar 2024 04:58:54 +0000 Subject: [PATCH 1/4] makedumpfile: remove bzip2 dependency Our libelf and libdw are not built with bzip2 support, so there is no need to link the makedumpfile binary with libbz2. Signed-off-by: Ben Cressey --- .../0001-do-not-overlink-with-bzip2.patch | 26 +++++++++++++++++++ packages/makedumpfile/Cargo.toml | 1 - packages/makedumpfile/makedumpfile.spec | 3 +-- variants/Cargo.lock | 1 - 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 packages/makedumpfile/0001-do-not-overlink-with-bzip2.patch diff --git a/packages/makedumpfile/0001-do-not-overlink-with-bzip2.patch b/packages/makedumpfile/0001-do-not-overlink-with-bzip2.patch new file mode 100644 index 00000000000..737ddb353ae --- /dev/null +++ b/packages/makedumpfile/0001-do-not-overlink-with-bzip2.patch @@ -0,0 +1,26 @@ +From 856f65f52d9e96655d6bb1b49047fc0b853780e4 Mon Sep 17 00:00:00 2001 +From: Ben Cressey +Date: Sat, 4 May 2024 18:59:23 +0000 +Subject: [PATCH] do not overlink with bzip2 + +Signed-off-by: Ben Cressey +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 0934f14..38172c1 100644 +--- a/Makefile ++++ b/Makefile +@@ -50,7 +50,7 @@ OBJ_PART=$(patsubst %.c,%.o,$(SRC_PART)) + SRC_ARCH = arch/arm.c arch/arm64.c arch/x86.c arch/x86_64.c arch/ia64.c arch/ppc64.c arch/s390x.c arch/ppc.c arch/sparc64.c arch/mips64.c arch/loongarch64.c arch/riscv64.c + OBJ_ARCH=$(patsubst %.c,%.o,$(SRC_ARCH)) + +-LIBS = -ldw -lbz2 -ldl -lelf -lz ++LIBS = -ldw -ldl -lelf -lz + ifneq ($(LINKTYPE), dynamic) + LIBS := -static $(LIBS) -llzma + endif +-- +2.44.0 + diff --git a/packages/makedumpfile/Cargo.toml b/packages/makedumpfile/Cargo.toml index 459f1d17e56..f4e4a251b49 100644 --- a/packages/makedumpfile/Cargo.toml +++ b/packages/makedumpfile/Cargo.toml @@ -19,4 +19,3 @@ sha512 = "6c3455b711bd4e120173ee07fcc5ff708ae6d34eaee0f4c135eca7ee0e0475b4d39142 glibc = { path = "../glibc" } libelf = { path = "../libelf" } libz = { path = "../libz" } -libbzip2 = { path = "../libbzip2" } diff --git a/packages/makedumpfile/makedumpfile.spec b/packages/makedumpfile/makedumpfile.spec index db12922fc65..08a8767ab20 100644 --- a/packages/makedumpfile/makedumpfile.spec +++ b/packages/makedumpfile/makedumpfile.spec @@ -8,12 +8,11 @@ Source0: https://github.com/makedumpfile/makedumpfile/archive/%{version}/makedum # First party patches from 0 to 1000 Patch0000: 0000-fix-strip-invocation-for-TARGET-env-variable.patch +Patch0001: 0001-do-not-overlink-with-bzip2.patch -BuildRequires: %{_cross_os}libbzip2-devel BuildRequires: %{_cross_os}libz-devel BuildRequires: %{_cross_os}libelf-devel BuildRequires: %{_cross_os}glibc-devel -Requires: %{_cross_os}libbzip2 Requires: %{_cross_os}libelf Requires: %{_cross_os}libz diff --git a/variants/Cargo.lock b/variants/Cargo.lock index 56d257fcde4..e92d289758f 100644 --- a/variants/Cargo.lock +++ b/variants/Cargo.lock @@ -983,7 +983,6 @@ name = "makedumpfile" version = "0.1.0" dependencies = [ "glibc", - "libbzip2", "libelf", "libz", ] From 67708f53506db3230f670b976e71457bb16be7c4 Mon Sep 17 00:00:00 2001 From: Ben Cressey Date: Sat, 30 Mar 2024 05:02:58 +0000 Subject: [PATCH 2/4] selinux-policy: do not compress modules Bottlerocket's modules are only a few hundred KiB, versus several MiB for the "targeted" reference policy, so compression doesn't save very much space. Signed-off-by: Ben Cressey --- packages/selinux-policy/selinux-policy.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/selinux-policy/selinux-policy.spec b/packages/selinux-policy/selinux-policy.spec index cb3f7f045f9..12090735f5e 100644 --- a/packages/selinux-policy/selinux-policy.spec +++ b/packages/selinux-policy/selinux-policy.spec @@ -64,7 +64,7 @@ install -d "${moddir}" for m in *.cil ; do mod="${m%.*}" install -d "${moddir}/${mod}" - bzip2 -c "${m}" > "${moddir}/${mod}/cil" + install -p -m 0644 "${m}" "${moddir}/${mod}/cil" echo -n "cil" > "${moddir}/${mod}/lang_ext" done From b62a2b2a92945f3e0df1042619a8870c2abdee9c Mon Sep 17 00:00:00 2001 From: Ben Cressey Date: Sat, 30 Mar 2024 04:59:23 +0000 Subject: [PATCH 3/4] libsemanage: remove bzip2 dependency Patch out support for reading and writing bzip2-compressed modules, to avoid the otherwise-unneeded dependency on libbz2. Signed-off-by: Ben Cressey --- .../0001-remove-bzip2-dependency.patch | 268 ++++++++++++++++++ packages/libsemanage/Cargo.toml | 1 - packages/libsemanage/libsemanage.spec | 5 +- variants/Cargo.lock | 8 - 4 files changed, 270 insertions(+), 12 deletions(-) create mode 100644 packages/libsemanage/0001-remove-bzip2-dependency.patch diff --git a/packages/libsemanage/0001-remove-bzip2-dependency.patch b/packages/libsemanage/0001-remove-bzip2-dependency.patch new file mode 100644 index 00000000000..235e645c1f7 --- /dev/null +++ b/packages/libsemanage/0001-remove-bzip2-dependency.patch @@ -0,0 +1,268 @@ +From 227391a3403dc480c31e5d8dc96aaa085e91610a Mon Sep 17 00:00:00 2001 +From: Ben Cressey +Date: Sat, 30 Mar 2024 04:57:02 +0000 +Subject: [PATCH] remove bzip2 dependency + +Signed-off-by: Ben Cressey +--- + src/Makefile | 2 +- + src/compressed_file.c | 179 ++++++------------------------------------ + src/libsemanage.pc.in | 1 - + tests/Makefile | 2 +- + 4 files changed, 26 insertions(+), 158 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index d525996..314d064 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -90,7 +90,7 @@ $(LIBA): $(OBJS) + $(RANLIB) $@ + + $(LIBSO): $(LOBJS) +- $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -shared -o $@ $^ -lsepol -laudit -lselinux -lbz2 -Wl,-soname,$(LIBSO),--version-script=libsemanage.map,-z,defs ++ $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -shared -o $@ $^ -lsepol -laudit -lselinux -Wl,-soname,$(LIBSO),--version-script=libsemanage.map,-z,defs + ln -sf $@ $(TARGET) + + $(LIBPC): $(LIBPC).in ../VERSION +diff --git a/src/compressed_file.c b/src/compressed_file.c +index 5546b83..3632d79 100644 +--- a/src/compressed_file.c ++++ b/src/compressed_file.c +@@ -27,148 +27,14 @@ + #include + #include + +-#include +- + #include "compressed_file.h" + + #include "debug.h" + +-#define BZ2_MAGICSTR "BZh" +-#define BZ2_MAGICLEN (sizeof(BZ2_MAGICSTR)-1) +- +-/* bzip() a data to a file, returning the total number of compressed bytes +- * in the file. Returns -1 if file could not be compressed. */ +-static int bzip(semanage_handle_t *sh, const char *filename, void *data, +- size_t num_bytes) +-{ +- BZFILE* b; +- size_t size = 1<<16; +- int bzerror; +- size_t total = 0; +- size_t len = 0; +- FILE *f; +- +- if ((f = fopen(filename, "wb")) == NULL) { +- return -1; +- } +- +- if (!sh->conf->bzip_blocksize) { +- if (fwrite(data, 1, num_bytes, f) < num_bytes) { +- fclose(f); +- return -1; +- } +- fclose(f); +- return 0; +- } +- +- b = BZ2_bzWriteOpen( &bzerror, f, sh->conf->bzip_blocksize, 0, 0); +- if (bzerror != BZ_OK) { +- BZ2_bzWriteClose ( &bzerror, b, 1, 0, 0 ); +- fclose(f); +- return -1; +- } +- +- while ( num_bytes > total ) { +- if (num_bytes - total > size) { +- len = size; +- } else { +- len = num_bytes - total; +- } +- BZ2_bzWrite ( &bzerror, b, (uint8_t *)data + total, len ); +- if (bzerror == BZ_IO_ERROR) { +- BZ2_bzWriteClose ( &bzerror, b, 1, 0, 0 ); +- fclose(f); +- return -1; +- } +- total += len; +- } +- +- BZ2_bzWriteClose ( &bzerror, b, 0, 0, 0 ); +- fclose(f); +- if (bzerror == BZ_IO_ERROR) { +- return -1; +- } +- return 0; +-} +- +-/* bunzip() a file to '*data', returning the total number of uncompressed bytes +- * in the file. Returns -1 if file could not be decompressed. */ +-static ssize_t bunzip(semanage_handle_t *sh, FILE *f, void **data) +-{ +- BZFILE* b = NULL; +- size_t nBuf; +- uint8_t* buf = NULL; +- size_t size = 1<<18; +- size_t bufsize = size; +- int bzerror; +- size_t total = 0; +- uint8_t* uncompress = NULL; +- uint8_t* tmpalloc = NULL; +- int ret = -1; +- +- buf = malloc(bufsize); +- if (buf == NULL) { +- ERR(sh, "Failure allocating memory."); +- goto exit; +- } +- +- /* Check if the file is bzipped */ +- bzerror = fread(buf, 1, BZ2_MAGICLEN, f); +- rewind(f); +- if ((bzerror != BZ2_MAGICLEN) || memcmp(buf, BZ2_MAGICSTR, BZ2_MAGICLEN)) { +- goto exit; +- } +- +- b = BZ2_bzReadOpen ( &bzerror, f, 0, sh->conf->bzip_small, NULL, 0 ); +- if ( bzerror != BZ_OK ) { +- ERR(sh, "Failure opening bz2 archive."); +- goto exit; +- } +- +- uncompress = malloc(size); +- if (uncompress == NULL) { +- ERR(sh, "Failure allocating memory."); +- goto exit; +- } +- +- while ( bzerror == BZ_OK) { +- nBuf = BZ2_bzRead ( &bzerror, b, buf, bufsize); +- if (( bzerror == BZ_OK ) || ( bzerror == BZ_STREAM_END )) { +- if (total + nBuf > size) { +- size *= 2; +- tmpalloc = realloc(uncompress, size); +- if (tmpalloc == NULL) { +- ERR(sh, "Failure allocating memory."); +- goto exit; +- } +- uncompress = tmpalloc; +- } +- memcpy(&uncompress[total], buf, nBuf); +- total += nBuf; +- } +- } +- if ( bzerror != BZ_STREAM_END ) { +- ERR(sh, "Failure reading bz2 archive."); +- goto exit; +- } +- +- ret = total; +- *data = uncompress; +- +-exit: +- BZ2_bzReadClose ( &bzerror, b ); +- free(buf); +- if ( ret < 0 ) { +- free(uncompress); +- } +- return ret; +-} +- + int map_compressed_file(semanage_handle_t *sh, const char *path, + struct file_contents *contents) + { +- ssize_t size = -1; +- void *uncompress; ++ void *data; + int ret = 0, fd = -1; + FILE *file = NULL; + +@@ -185,22 +51,17 @@ int map_compressed_file(semanage_handle_t *sh, const char *path, + return -1; + } + +- if ((size = bunzip(sh, file, &uncompress)) >= 0) { +- contents->data = uncompress; +- contents->len = size; +- contents->compressed = 1; ++ struct stat sb; ++ if (fstat(fd, &sb) == -1 || ++ (data = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) == ++ MAP_FAILED) { ++ ret = -1; + } else { +- struct stat sb; +- if (fstat(fd, &sb) == -1 || +- (uncompress = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) == +- MAP_FAILED) { +- ret = -1; +- } else { +- contents->data = uncompress; +- contents->len = sb.st_size; +- contents->compressed = 0; +- } ++ contents->data = data; ++ contents->len = sb.st_size; ++ contents->compressed = 0; + } ++ + fclose(file); + return ret; + } +@@ -210,15 +71,23 @@ void unmap_compressed_file(struct file_contents *contents) + if (!contents->data) + return; + +- if (contents->compressed) { +- free(contents->data); +- } else { +- munmap(contents->data, contents->len); +- } ++ munmap(contents->data, contents->len); + } + + int write_compressed_file(semanage_handle_t *sh, const char *path, + void *data, size_t len) + { +- return bzip(sh, path, data, len); ++ FILE *f; ++ ++ if ((f = fopen(path, "wb")) == NULL) { ++ return -1; ++ } ++ ++ if (fwrite(data, 1, len, f) < len) { ++ fclose(f); ++ return -1; ++ } ++ ++ fclose(f); ++ return 0; + } +diff --git a/src/libsemanage.pc.in b/src/libsemanage.pc.in +index 43681dd..6616bd1 100644 +--- a/src/libsemanage.pc.in ++++ b/src/libsemanage.pc.in +@@ -9,5 +9,4 @@ Version: @VERSION@ + URL: http://userspace.selinuxproject.org/ + Requires.private: libselinux libsepol + Libs: -L${libdir} -lsemanage +-Libs.private: -lbz2 + Cflags: -I${includedir} +diff --git a/tests/Makefile b/tests/Makefile +index 69f49a3..ff54969 100644 +--- a/tests/Makefile ++++ b/tests/Makefile +@@ -7,7 +7,7 @@ CILS = $(sort $(wildcard *.cil)) + EXECUTABLE = libsemanage-tests + CFLAGS += -g -O0 -Wall -W -Wundef -Wmissing-noreturn -Wmissing-format-attribute -Wno-unused-parameter + override CFLAGS += -I../src -I../include +-override LDLIBS += -lcunit -lbz2 -laudit -lselinux -lsepol ++override LDLIBS += -lcunit -laudit -lselinux -lsepol + + OBJECTS = $(SOURCES:.c=.o) + POLICIES = $(CILS:.cil=.policy) +-- +2.44.0 + diff --git a/packages/libsemanage/Cargo.toml b/packages/libsemanage/Cargo.toml index 3b6761661c0..aab341d333d 100644 --- a/packages/libsemanage/Cargo.toml +++ b/packages/libsemanage/Cargo.toml @@ -18,6 +18,5 @@ sha512 = "8998b6a1b254a9673b99ae4d70a1edc769bb728a44f573cdf62e0a9c9392b77644ee2d [build-dependencies] glibc = { path = "../glibc" } libaudit = { path = "../libaudit" } -libbzip2 = { path = "../libbzip2" } libselinux = { path = "../libselinux" } libsepol = { path = "../libsepol" } diff --git a/packages/libsemanage/libsemanage.spec b/packages/libsemanage/libsemanage.spec index 329bc98bfff..6475710d1fb 100644 --- a/packages/libsemanage/libsemanage.spec +++ b/packages/libsemanage/libsemanage.spec @@ -5,13 +5,13 @@ Summary: Library for SELinux binary policy manipulation License: LGPL-2.1-or-later URL: https://github.com/SELinuxProject/ Source0: https://github.com/SELinuxProject/selinux/releases/download/%{version}/libsemanage-%{version}.tar.gz +Patch0001: 0001-remove-bzip2-dependency.patch + BuildRequires: %{_cross_os}glibc-devel BuildRequires: %{_cross_os}libaudit-devel -BuildRequires: %{_cross_os}libbzip2-devel BuildRequires: %{_cross_os}libselinux-devel BuildRequires: %{_cross_os}libsepol-devel Requires: %{_cross_os}libaudit -Requires: %{_cross_os}libbzip2 Requires: %{_cross_os}libselinux Requires: %{_cross_os}libsepol @@ -21,7 +21,6 @@ Requires: %{_cross_os}libsepol %package devel Summary: Files for development using the library for SELinux binary policy manipulation Requires: %{name} -Requires: %{_cross_os}libbzip2-devel %description devel %{summary}. diff --git a/variants/Cargo.lock b/variants/Cargo.lock index e92d289758f..02afd07b7d5 100644 --- a/variants/Cargo.lock +++ b/variants/Cargo.lock @@ -721,13 +721,6 @@ dependencies = [ "glibc", ] -[[package]] -name = "libbzip2" -version = "0.1.0" -dependencies = [ - "glibc", -] - [[package]] name = "libcap" version = "0.1.0" @@ -914,7 +907,6 @@ version = "0.1.0" dependencies = [ "glibc", "libaudit", - "libbzip2", "libselinux", "libsepol", ] From b3f52e072cd84bf619c23bc773d3081bcbdb73be Mon Sep 17 00:00:00 2001 From: Ben Cressey Date: Sat, 30 Mar 2024 05:00:46 +0000 Subject: [PATCH 4/4] packages: remove libbzip2 Signed-off-by: Ben Cressey --- .../0001-simplify-shared-object-build.patch | 43 ------------- packages/libbzip2/Cargo.toml | 19 ------ packages/libbzip2/bzip2.pc.in | 10 --- packages/libbzip2/libbzip2.spec | 61 ------------------- 4 files changed, 133 deletions(-) delete mode 100644 packages/libbzip2/0001-simplify-shared-object-build.patch delete mode 100644 packages/libbzip2/Cargo.toml delete mode 100644 packages/libbzip2/bzip2.pc.in delete mode 100644 packages/libbzip2/libbzip2.spec diff --git a/packages/libbzip2/0001-simplify-shared-object-build.patch b/packages/libbzip2/0001-simplify-shared-object-build.patch deleted file mode 100644 index dce4dd289f3..00000000000 --- a/packages/libbzip2/0001-simplify-shared-object-build.patch +++ /dev/null @@ -1,43 +0,0 @@ -From e76e1ea775d7a1897775767fc17626389372f6e9 Mon Sep 17 00:00:00 2001 -From: Ben Cressey -Date: Wed, 29 Jul 2020 19:46:30 +0000 -Subject: [PATCH] simplify shared object build - -Signed-off-by: Ben Cressey ---- - Makefile-libbz2_so | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) - -diff --git a/Makefile-libbz2_so b/Makefile-libbz2_so -index fb0f230..5e26467 100644 ---- a/Makefile-libbz2_so -+++ b/Makefile-libbz2_so -@@ -22,9 +22,6 @@ - - - SHELL=/bin/sh --CC=gcc --BIGFILES=-D_FILE_OFFSET_BITS=64 --CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES) - - OBJS= blocksort.o \ - huffman.o \ -@@ -35,13 +32,12 @@ OBJS= blocksort.o \ - bzlib.o - - all: $(OBJS) -- $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.8 $(OBJS) -- $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.8 -+ $(CC) $(CFLAGS) $(LDFLAGS) -shared -Wl,-soname -Wl,libbz2.so.1 -o libbz2.so.1.0.8 $(OBJS) - rm -f libbz2.so.1.0 - ln -s libbz2.so.1.0.8 libbz2.so.1.0 - - clean: -- rm -f $(OBJS) bzip2.o libbz2.so.1.0.8 libbz2.so.1.0 bzip2-shared -+ rm -f $(OBJS) libbz2.so.1.0.8 libbz2.so.1.0 - - blocksort.o: blocksort.c - $(CC) $(CFLAGS) -c blocksort.c --- -2.21.0 - diff --git a/packages/libbzip2/Cargo.toml b/packages/libbzip2/Cargo.toml deleted file mode 100644 index ad0cbb69267..00000000000 --- a/packages/libbzip2/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "libbzip2" -version = "0.1.0" -edition = "2021" -publish = false -build = "../build.rs" - -[lib] -path = "../packages.rs" - -[package.metadata.build-package] -releases-url = "https://sourceware.org/pub/bzip2" - -[[package.metadata.build-package.external-files]] -url = "https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz" -sha512 = "083f5e675d73f3233c7930ebe20425a533feedeaaa9d8cc86831312a6581cefbe6ed0d08d2fa89be81082f2a5abdabca8b3c080bf97218a1bd59dc118a30b9f3" - -[build-dependencies] -glibc = { path = "../glibc" } diff --git a/packages/libbzip2/bzip2.pc.in b/packages/libbzip2/bzip2.pc.in deleted file mode 100644 index c4b6ae1897e..00000000000 --- a/packages/libbzip2/bzip2.pc.in +++ /dev/null @@ -1,10 +0,0 @@ -prefix=__PREFIX__ -exec_prefix=__EXEC_PREFIX__ -libdir=__LIBDIR__ -includedir=__INCLUDEDIR__ - -Name: bzip2 -Description: __DESCRIPTION__ -Version: __VERSION__ -Libs: -L${libdir} -lbz2 -Cflags: -I${includedir} diff --git a/packages/libbzip2/libbzip2.spec b/packages/libbzip2/libbzip2.spec deleted file mode 100644 index 98b7b569871..00000000000 --- a/packages/libbzip2/libbzip2.spec +++ /dev/null @@ -1,61 +0,0 @@ -Name: %{_cross_os}libbzip2 -Version: 1.0.8 -Release: 1%{?dist} -Summary: Library for bzip2 compression -License: bzip2-1.0.6 -URL: http://www.bzip.org -Source0: https://sourceware.org/pub/bzip2/bzip2-%{version}.tar.gz -Source1: bzip2.pc.in -Patch1: 0001-simplify-shared-object-build.patch -BuildRequires: %{_cross_os}glibc-devel - -%description -%{summary}. - -%package devel -Summary: Files for development using the library for bzip2 compression -Requires: %{name} - -%description devel -%{summary}. - -%prep -%autosetup -n bzip2-%{version} -p1 -sed \ - -e "s,__PREFIX__,%{_cross_prefix},g" \ - -e "s,__EXEC_PREFIX__,%{_cross_exec_prefix},g" \ - -e "s,__LIBDIR__,%{_cross_libdir},g" \ - -e "s,__INCLUDEDIR__,%{_cross_includedir},g" \ - -e "s,__VERSION__,%{version},g" \ - -e "s,__DESCRIPTION__,%{description},g" \ - %{S:1} > bzip2.pc - -%global set_env \ -%set_cross_build_flags \\\ -export CC="%{_cross_target}-gcc" \\\ -export CFLAGS="${CFLAGS} -fpic -fPIC" \\\ -%{nil} - -%build -%set_env -%make_build -f Makefile-libbz2_so all - -%install -install -d %{buildroot}{%{_cross_libdir},%{_cross_includedir},%{_cross_pkgconfigdir}} -install -m 755 libbz2.so.%{version} %{buildroot}%{_cross_libdir} -ln -s libbz2.so.%{version} %{buildroot}%{_cross_libdir}/libbz2.so.1 -ln -s libbz2.so.1 %{buildroot}%{_cross_libdir}/libbz2.so -install -m 644 bzlib.h %{buildroot}%{_cross_includedir} -install -m 644 bzip2.pc %{buildroot}%{_cross_pkgconfigdir} - -%files -%license LICENSE -%{_cross_attribution_file} -%{_cross_libdir}/*.so.* - -%files devel -%{_cross_libdir}/*.so -%{_cross_includedir}/*.h -%{_cross_pkgconfigdir}/*.pc - -%changelog