diff --git a/anda/tools/uutils-coreutils/.gitignore b/anda/tools/uutils-coreutils/.gitignore new file mode 100644 index 0000000000..c32b546f7d --- /dev/null +++ b/anda/tools/uutils-coreutils/.gitignore @@ -0,0 +1 @@ +*.tar.gz \ No newline at end of file diff --git a/anda/tools/uutils-coreutils/anda.hcl b/anda/tools/uutils-coreutils/anda.hcl new file mode 100644 index 0000000000..71536c0fc6 --- /dev/null +++ b/anda/tools/uutils-coreutils/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "uutils-coreutils.spec" + } +} diff --git a/anda/tools/uutils-coreutils/update.rhai b/anda/tools/uutils-coreutils/update.rhai new file mode 100644 index 0000000000..69aaaf4ad9 --- /dev/null +++ b/anda/tools/uutils-coreutils/update.rhai @@ -0,0 +1 @@ +rpm.version(crates("coreutils")); diff --git a/anda/tools/uutils-coreutils/uutils-coreutils.spec b/anda/tools/uutils-coreutils/uutils-coreutils.spec new file mode 100644 index 0000000000..0d6aef9784 --- /dev/null +++ b/anda/tools/uutils-coreutils/uutils-coreutils.spec @@ -0,0 +1,160 @@ +%global coreutils_ver 9.3 + +Name: uutils-coreutils +Version: 0.0.22 +Release: 1%?dist +Summary: Cross-platform Rust rewrite of the GNU coreutils +License: MIT +URL: https://github.com/uutils/coreutils +Source0: %url/archive/refs/tags/%version.tar.gz +Requires: glibc +BuildRequires: cargo make gcc-c++ +Conflicts: uutils-coreutils-replace +BuildRequires: libselinux-devel +BuildRequires: selinux-policy-devel +BuildRequires: clang-devel + +%description +uutils coreutils is a cross-platform reimplementation of the GNU coreutils in Rust. +While all programs have been implemented, some options might be missing or different +behavior might be experienced. + +%package replace +Summary: Cross-platform Rust replacement of the GNU coreutils +Provides: coreutils = %coreutils_ver +Provides: coreutils(%arch) +Provides: coreutils-full + +%description replace +uutils coreutils is a cross-platform reimplementation of the GNU coreutils in Rust. +While all programs have been implemented, some options might be missing or different +behavior might be experienced. + +This package removes the `uu-` prefixes. + +%package util-linux +Summary: uutil-coreutils single binary, with util-linux commands +Requires: uutils-coreutils + +%description util-linux +uutils coreutils is a cross-platform reimplementation of the GNU coreutils in Rust. +While all programs have been implemented, some options might be missing or different +behavior might be experienced. + +This package provides a single binary with commands for util-linux with the `uu-` prefix. + +%package util-linux-replace +Summary: uutils-coreutils single-binary, replaces coreutils and util-linux +Provides: util-linux + +%description util-linux-replace +uutils coreutils is a cross-platform reimplementation of the GNU coreutils in Rust. +While all programs have been implemented, some options might be missing or different +behavior might be experienced. + +This package provides a single binary with all commands, and replaces the GNU coreutils and util-linux commands. + + +%prep +%autosetup -n coreutils-%version + +%build +export CARGOFLAGS="-vv --verbose" +%make_build PROFILE=release SELINUX_ENABLED=1 + +%install +%make_install PROFILE=release MULTICALL=n DESTDIR=%buildroot PREFIX=%_prefix SELINUX_ENABLED=1 PROG_PREFIX=uu- & +%make_install PROFILE=release MULTICALL=n DESTDIR=%buildroot PREFIX=%_prefix SELINUX_ENABLED=1 & +wait + +# function to remove files from a file list (used below for excludes) + +rm_filelist() { + local filelist=$1 + + for file in $(cat $filelist); do + echo ":: --> $file" + if [ -f "$file" ]; then + rm -vf "$file" + fi + if [ -f "%buildroot/$file" ]; then + rm -vf "%buildroot/$file" + fi + done +} + +%define cmds() $(echo %1{runcon,arch,base{32,64,name,nc},cat,ch{grp,mod,own,root,con},cksum,comm,cp,csplit,cut,date,dd,df,dir{,colors,name},du,echo,env,expand,expr,factor,false,fmt,fold,groups,hashsum,head,host{id},id,install,join,link,ln,logname,ls,mk{dir,fifo,nod,temp},mv,nice,nl,nohup,nproc,numfmt,od,paste,pathchk,pinky,pr,printenv,printf,ptx,pwd,readlink,realpath,rm{,dir},seq,shred,shuf,sleep,sort,split,stat,stdbuf,sum,sync,tac,tail,tee,test,timeout,touch,tr,true,truncate,tsort,tty,uname,un{expand,iq,link},users,vdir,wc,who{,ami},yes}%2) +%define excludes() $(echo %1{hostname,kill,more,uptime}%2) +cat < files.txt +%cmds %_bindir/uu- "" +%_bindir/uu-[ +%cmds %_datadir/bash-completion/completions/uu- "" +%cmds %_datadir/fish/vendor_completions.d/uu- .fish +%cmds %_mandir/man1/uu- .1.gz +%cmds %_datadir/zsh/site-functions/_uu- "" +EOF +sed -i 's@ @\n@g' files.txt + +cat < files-exclude.txt +%excludes %_datadir/bash-completion/completions/uu- "" +%excludes %_datadir/fish/vendor_completions.d/uu- .fish +%excludes %_mandir/man1/uu- .1.gz +%excludes %_datadir/zsh/site-functions/_uu- "" +%excludes %_bindir/uu- "" +EOF + +sed -i 's@ @\n@g' files-exclude.txt + +# remove buildroot from paths in files.txt +sed -i "s@%buildroot@/@g" files.txt + +### files-replace + +cat < files-replace.txt +%cmds %_bindir/ "" +%_bindir/[ +%cmds %_datadir/bash-completion/completions/ "" +%cmds %_datadir/fish/vendor_completions.d/ .fish +%cmds %_mandir/man1/ .1.gz +%cmds %_datadir/zsh/site-functions/_ "" +EOF +sed -i 's@ @\n@g' files-replace.txt + +cat < files-replace-exclude.txt +%excludes %_datadir/bash-completion/completions/ "" +%excludes %_datadir/fish/vendor_completions.d/ .fish +%excludes %_mandir/man1/ .1.gz +%excludes %_datadir/zsh/site-functions/_ "" +%excludes %_bindir/ "" +EOF + +sed -i 's@ @\n@g' files-replace-exclude.txt + +# remove buildroot from paths in files.txt +sed -i "s@%buildroot@/@g" files-replace.txt + + +echo "=== Files ===" +cat files.txt +echo "=== Files (Replace) ===" +cat files-replace.txt + +#echo "=== Removing files ===" + +#rm_filelist files-exclude.txt +#rm_filelist files-replace-exclude.txt + +%files -f files.txt +%doc README.md +%license LICENSE + +%files replace -f files-replace.txt +%doc README.md +%license LICENSE + +%files util-linux -f files-exclude.txt + +%files util-linux-replace -f files-replace-exclude.txt + +%changelog +%autochangelog