os icon indicating copy to clipboard operation
os copied to clipboard

libfaketime - fix autoconf/make opts to install into /usr as intended

Open smoser opened this issue 7 months ago • 1 comments

The autoconf/make 'opts' takes a single line value but here we were providing it a multi-line value. It doesn't fail because melange ends up rendering something that looks like this:

make -C . -j$(nproc) V=1 FAKETIME_COMPILE_CFLAGS=-DFAKE_RANDOM
PREFIX=/usr

Shell reads that fine and just sets a shell variable 'PREFIX' with a value that is not used.

The change I would have liked to make is to use '>' rather than '|' which does exactly what we want, but right now, yam makes that not feasible. https://github.com/chainguard-dev/yam/issues/112

In my testing this was the only occurence of this error.

smoser avatar May 28 '25 17:05 smoser

I did search all of wolfi for this error, and was surprised this was the only one. Here is how I did that search:

$ mkdir json
$ for f in *.yaml; do o=json/${f%.yaml}.json; 
  echo "$f -> $o"; 
  ( set -o pipefail; 
    melange compile --git-repo-url=$PWD --pipeline-dir=$PWD/pipelines --arch=x86_64 $f |
     jq > $o ) ||
     { echo $f failed; break; }; done
$ ./find-stuff.py json/*.json
#!/usr/bin/python3
import json
import sys

for fname in sys.argv[1:]:
    with open(fname, "rb") as fp:
        content = fp.read()
    pkgdata = json.loads(content)

    data = [(pkgdata["package"]["name"], pkgdata.get("pipeline", []))]
    for p in pkgdata.get("subpackages", []):
        data.append((p["name"], p.get("pipeline", [])))

    found = set()
    backslashes = set()
    for name, pipelines in data:
        for pipeline in pipelines:
            if not pipeline.get("uses", "").startswith("autoconf/"):
                continue
            opts = pipeline.get("with", {}).get("opts", "")
            nopts = opts.replace("\\\n", "")
            if nopts != opts:
                backslashes.add(name)
            lines = nopts.splitlines()
            if len(lines) > 1:
                found.add(name)

    if len(found) != 0:
        print(f"{fname}: {','.join(found)}")
    #if len(backslashes):
    #    print(f"{fname}: backslash {','.join(backslashes)}")

The list of files that we could improve to use '>' is:

json/alsa-lib.json: backslash alsa-lib json/apache2.json: backslash apache2 json/asciidoc.json: backslash asciidoc json/avahi.json: backslash avahi json/bash-completion.json: backslash bash-completion json/bind.json: backslash bind json/bird.json: backslash bird json/bluez.json: backslash bluez json/btrfs-progs.json: backslash btrfs-progs json/cdparanoia.json: backslash cdparanoia json/check.json: backslash check json/cryptsetup.json: backslash cryptsetup json/cups.json: backslash cups json/curl-rustls.json: backslash curl-rustls json/curl.json: backslash curl json/cyrus-sasl.json: backslash cyrus-sasl json/dhclient.json: backslash dhclient json/dhcping.json: backslash dhcping json/dosfstools.json: backslash dosfstools json/dropbear.json: backslash dropbear json/e2fsprogs.json: backslash e2fsprogs json/emacs.json: backslash emacs json/enchant2.json: backslash enchant2 json/erofs-utils.json: backslash erofs-utils json/ethtool.json: backslash ethtool json/eudev.json: backslash eudev json/fontconfig.json: backslash fontconfig json/fping.json: backslash fping json/freetype.json: backslash freetype json/frr-10.2.json: backslash frr-10.2 json/gd.json: backslash gd json/gdb.json: backslash gdb json/gettext.json: backslash gettext json/ghostscript.json: backslash ghostscript json/gnupg.json: backslash gnupg json/graphicsmagick.json: backslash graphicsmagick json/groff.json: backslash groff json/guile.json: backslash guile json/haproxy-3.1.json: backslash haproxy-3.1 json/hdf5.json: backslash hdf5 json/heimdal.json: backslash heimdal json/htop.json: backslash htop json/hwdata.json: backslash hwdata json/hwloc.json: backslash hwloc json/icu.json: backslash icu json/iperf.json: backslash iperf json/iperf3.json: backslash iperf3 json/iproute2.json: backslash iproute2 json/ipset.json: backslash ipset json/jo.json: backslash jo json/kbd.json: backslash kbd json/keyutils.json: backslash keyutils json/kmod.json: backslash kmod json/krb5.json: backslash krb5 json/lame.json: backslash lame json/lcms2.json: backslash lcms2 json/ldb.json: backslash py3.13-ldb,py3.11-ldb,py3.10-ldb,py3.12-ldb,ldb json/ldns.json: backslash ldns json/libapr.json: backslash libapr json/libatasmart.json: backslash libatasmart json/libatomic_ops.json: backslash libatomic_ops json/libcap-ng.json: backslash libcap-ng json/libcmis.json: backslash libcmis json/libdaemon.json: backslash libdaemon json/libfontenc.json: backslash libfontenc json/libgcrypt.json: backslash libgcrypt json/libgdiplus.json: backslash libgdiplus json/libgpg-error.json: backslash libgpg-error json/libice.json: backslash libice json/libidn2.json: backslash libidn2 json/libjudy.json: backslash libjudy json/libkcapi.json: backslash libkcapi json/libksba.json: backslash libksba json/liblogging.json: backslash liblogging json/libmicrohttpd.json: backslash libmicrohttpd json/libmnl.json: backslash libmnl json/libnet.json: backslash libnet json/libnl3.json: backslash libnl3 json/libnspr.json: backslash libnspr json/libnvidia-container.json: backslash libnvidia-container json/libpcap.json: backslash libpcap json/libsm.json: backslash libsm json/libtirpc.json: backslash libtirpc-nokrb,libtirpc json/libunistring.json: backslash libunistring json/libusb.json: backslash libusb json/libverto.json: backslash libverto json/libvorbis.json: backslash libvorbis json/libx11.json: backslash libx11 json/libxaw.json: backslash libxaw json/libxcb.json: backslash libxcb json/libxcrypt.json: backslash libxcrypt json/libxdamage.json: backslash libxdamage json/libxft.json: backslash libxft json/libxi.json: backslash libxi json/libxml2.json: backslash libxml2 json/libxmu.json: backslash libxmu json/lighttpd.json: backslash lighttpd json/lksctp-tools.json: backslash lksctp-tools json/lttng-ust.json: backslash lttng-ust json/lynx.json: backslash lynx json/memcached.json: backslash memcached json/modsecurity.json: backslash modsecurity json/mtools.json: backslash mtools json/nano.json: backslash nano json/nettle.json: backslash nettle json/nfs-utils.json: backslash nfs-utils json/ngrep.json: backslash ngrep json/openipmi.json: backslash openipmi json/openjdk-11.json: backslash openjdk-11 json/openjdk-12.json: backslash openjdk-12 json/openjdk-13.json: backslash openjdk-13 json/openjdk-14.json: backslash openjdk-14 json/openjdk-15.json: backslash openjdk-15 json/openjdk-16.json: backslash openjdk-16 json/openjdk-17.json: backslash openjdk-17 json/openjdk-18.json: backslash openjdk-18 json/openjdk-19.json: backslash openjdk-19 json/openjdk-20.json: backslash openjdk-20 json/openjdk-21.json: backslash openjdk-21 json/openjdk-22.json: backslash openjdk-22 json/openjdk-23.json: backslash openjdk-23 json/openjdk-24.json: backslash openjdk-24 json/openmpi.json: backslash openmpi json/openvpn.json: backslash openvpn json/owfs.json: backslash owfs json/pcre.json: backslash pcre json/portaudio.json: backslash portaudio json/postgresql-16.json: backslash postgresql-16 json/postgresql-17.json: backslash postgresql-17 json/powertop.json: backslash powertop json/py3-graph-tool.json: backslash py3.13-graph-tool json/pypy-3.10.json: backslash pypy-3.10 json/pypy-3.11.json: backslash pypy-3.11 json/rarian.json: backslash rarian json/rlwrap.json: backslash rlwrap json/rpcbind.json: backslash rpcbind json/rsync.json: backslash rsync json/rsyslog.json: backslash rsyslog json/s-lang.json: backslash s-lang json/samba.json: backslash samba json/sbc.json: backslash sbc json/shadow.json: backslash shadow json/softhsm.json: backslash softhsm json/speex.json: backslash speex json/speexdsp.json: backslash speexdsp json/squid.json: backslash squid json/strace.json: backslash strace json/strongswan.json: backslash strongswan json/subunit.json: backslash subunit json/subversion.json: backslash subversion json/sudo.json: backslash sudo json/suricata.json: backslash suricata json/swig.json: backslash swig json/sysfsutils.json: backslash sysfsutils json/syslog-ng.json: backslash syslog-ng json/sysstat.json: backslash sysstat json/talloc.json: backslash py3.10-talloc,py3.11-talloc,talloc,py3.13-talloc,py3.12-talloc json/tcl.json: backslash tcl json/tcptraceroute.json: backslash tcptraceroute json/tdb.json: backslash py3.12-tdb,py3.11-tdb,py3.13-tdb,py3.10-tdb json/tevent.json: backslash tevent,py3.10-tevent,py3.12-tevent,py3.11-tevent,py3.13-tevent json/tinyproxy.json: backslash tinyproxy json/tmux.json: backslash tmux json/tomcat-native.json: backslash tomcat-native json/unbound.json: backslash unbound json/unixodbc.json: backslash unixodbc json/util-linux.json: backslash util-linux json/utmps.json: backslash utmps json/vala.json: backslash vala json/wireguard-tools.json: backslash wireguard-tools json/xcb-util-image.json: backslash xcb-util-image json/xcb-util.json: backslash xcb-util json/xfsprogs.json: backslash xfsprogs json/xorg-server.json: backslash xorg-server json/xrdb.json: backslash xrdb json/xtail.json: backslash xtail json/xterm.json: backslash xterm json/yara.json: backslash yara json/zbar.json: backslash zbar json/zsh.json: backslash zsh

smoser avatar May 28 '25 17:05 smoser