dslm4515 / CMLFS

Clang-Built Musl Linux From Scratch
MIT License
99 stars 18 forks source link

Alternate Packages #16

Closed dslm4515 closed 3 years ago

dslm4515 commented 3 years ago

And maybe pigz instead of gzip, but pigz requires zlib (zlib-ng works too). Cons: pigz doesn't have wrapper script such as for grep (zgrep). Can be installed for both, gzip just for wrapper script if needed 😄 lol

Originally posted by @owl4ce in https://github.com/dslm4515/CMLFS/issues/14#issuecomment-869789668

dslm4515 commented 3 years ago

So far.... Ninja -> Samurai zlib -> zlib-ng gzip -> pigz pkg-config -> pkgconf [done] m4 -> ibara's m4

owl4ce commented 3 years ago

And when prefer to build CMLFS with *BSD portable programs and libraries instead of GNU 😸

dslm4515 commented 3 years ago

@owl4ce how about gettext-tiny? Sometimes, autotools (autoconf+automake+m4+etc] run fine for regenerating configure for coreutils ... other times it fails. Have you had any similar experiences?

owl4ce commented 3 years ago

@owl4ce how about gettext-tiny? Sometimes, autotools (autoconf+automake+m4+etc] run fine for regenerating configure for coreutils ... other times it fails. Have you had any similar experiences?

Yes, thats works like a charm 👍🏻

owl4ce commented 3 years ago

But sorry, I use Toybox for replacing some packages e.g bc, coreutils, file, findutils, grep, inetutils, procps, sed, sysklogd, and tar. So, I also replace man instead of man-db and not installing man-pages for temporary.

diffutils, awk, make, and patch are still GNU because of compability that most packages using GNU implementation style (which is powerful). psmisc in toybox-0.8.5 just available for killall command.

This is very time waste to configure commands for first time (I created every config for some steps). Since toybox still developed and not all commands are available.

In my concepts, I was trying to build with less GNU utils and libraries lol 😄

dslm4515 commented 3 years ago

In my concepts, I was trying to build with less GNU utils and libraries lol smile

I may start another repo with that as the purpose

I did rebuild llvmtools to replace Ninja with Samurai to drop libffi and python3. Definitely made llvmtools smaller:

python3+libffi+ninja: ~ 140Mb ( .tar.xz ) Samurai + no python3 + no libffi + no ninja: ~ 116Mb ( .tar.xz )

dslm4515 commented 3 years ago

I did rebuild llvmtools to replace Ninja with Samurai to drop libffi and python3

Libcxxabi requires python. Definately need to add libffi + python3 to llvmtools

owl4ce commented 3 years ago

Autoconf fail to configure using OpenBSD M4 (Ibara's)

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... ./build-aux/install-sh -c -d
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-pc-linux-musl
checking host system type... x86_64-pc-linux-musl
configure: autobuild project... GNU Autoconf
configure: autobuild revision... 2.71
configure: autobuild hostname... localh3art
configure: autobuild timestamp... 20210706T073551Z
checking for a shell whose -n mode is known to work... /bin/sh
checking for characters that cannot appear in file names... none
checking whether directories can have trailing spaces... yes
checking for expr... /usr/bin/expr
checking for GNU M4 that supports accurate traces... configure: error: no acceptable m4 could be found in $PATH.
GNU M4 1.4.6 or later is required; 1.4.16 or newer is recommended.
GNU M4 1.4.15 uses a buggy replacement strstr on some systems.
Glibc 2.9 - 2.12 and GNU M4 1.4.11 - 1.4.15 have another strstr bug.
owl4ce commented 3 years ago

Autoconf fail to configure using OpenBSD M4 (Ibara's)

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... ./build-aux/install-sh -c -d
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-pc-linux-musl
checking host system type... x86_64-pc-linux-musl
configure: autobuild project... GNU Autoconf
configure: autobuild revision... 2.71
configure: autobuild hostname... localh3art
configure: autobuild timestamp... 20210706T073551Z
checking for a shell whose -n mode is known to work... /bin/sh
checking for characters that cannot appear in file names... none
checking whether directories can have trailing spaces... yes
checking for expr... /usr/bin/expr
checking for GNU M4 that supports accurate traces... configure: error: no acceptable m4 could be found in $PATH.
GNU M4 1.4.6 or later is required; 1.4.16 or newer is recommended.
GNU M4 1.4.15 uses a buggy replacement strstr on some systems.
Glibc 2.9 - 2.12 and GNU M4 1.4.11 - 1.4.15 have another strstr bug.

fixed by defining M4

export M4=/usr/bin/m4
./configure --prefix=/usr 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... ./build-aux/install-sh -c -d
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-pc-linux-musl
checking host system type... x86_64-pc-linux-musl
configure: autobuild project... GNU Autoconf
configure: autobuild revision... 2.71
configure: autobuild hostname... localh3art
configure: autobuild timestamp... 20210706T075522Z
checking for a shell whose -n mode is known to work... /bin/sh
checking for characters that cannot appear in file names... none
checking whether directories can have trailing spaces... yes
checking for expr... /usr/bin/expr
checking for GNU M4 that supports accurate traces... /usr/bin/m4
checking whether /usr/bin/m4 accepts --gnu... no
configure: WARNING: the version of M4 that was found does not support -g
configure: WARNING: using it with POSIXLY_CORRECT set may cause problems
checking how m4 supports trace files... --error-output
checking for perl... /usr/bin/perl
checking whether /usr/bin/perl Fcntl::flock is implemented... yes
checking for emacs... no
checking for xemacs... no
checking for emacs... no
checking where .elc files should go... ${datadir}/emacs/site-lisp
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking whether make is case sensitive... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating tests/atlocal
config.status: creating Makefile
config.status: executing tests/atconfig commands
owl4ce commented 3 years ago

But.. build fails caused by autom4te that still needs GNU M4.

owl4ce commented 3 years ago

https://github.com/openbsd/ports/tree/master/devel/autoconf/2.71

owl4ce commented 3 years ago

https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Why-GNU-M4.html

dslm4515 commented 3 years ago

But.. build fails caused by autom4te that still needs GNU M4.

Looks like autom4te has to be patched for Ibara's M4

dslm4515 commented 3 years ago

I have not gotten around to porting gettext-tiny from simple Makefiles to a build system generated by GNU's autotools. The current source of gettext-tiny does not use libtool... i think i ran into a problem 1-2 years ago where a package required some sort of library archive or file made from libtool with gettext-tiny source.

I may reconsider using a different build/configure system if autotools are hard coded for GNU's autotools (M4, autoconf, automake, etc.)

dslm4515 commented 3 years ago

I'll move this to discussions