portmaster doesn't fetch build dependencies

Inside portmaster.rc file I have following option:
Code:
$ cat /usr/local/etc/portmaster.rc
...
PM_PACKAGES_BUILD=pmp_build
...
But every time I build something every build dependency is not fetched by pkg but is being built from sources. That usually takes long time especially when there are llvm37 and llvm39 dependencies for building some DRI modules I don't even use with my Nvidia.
Using portmaster --packages-build from command line does the same: builds 'build' dependencies from scratch.
Do everybody have the same issue with portmaster?

Regards.
 
Portmaster is a tool that builds programs from source using the ports tree and port options. That's the beauty of FreeBSD, it allows you to change options and its tools will basically figure it out and rebuild what needs to be rebuilt. Portmaster is a great to help you learn the inner workings of FreeBSD too. If you don't like the compile times you can switch to using packages. But you lose the option of changing port options. AND NOTE: do not mix the use of ports (building) and packages or your machine will get broken.

All that just said, many of us have switched to using ports-mgmt/synth. It still uses ports, and the port options, but from there creates packages via the building process. Many of us have turned on the "pre-fetch packages" option which can be a real time saver. Basically synth will build packages for some ports, but for other ports it will download the prebuilt package. Its real easy to use too.
 
Just wanted to give the 'synth' a try but it requires gcc6 as a build dependency which fails to build:

Code:
checking for libitm support... yes
checking for libsanitizer support... no
checking for libvtv support... no
checking for libmpx support... no
checking for gcc... /usr/obj/usr/ports/lang/gcc6-aux/work/bootstrap/bin/gcc
checking for C compiler default output file name... Bad system call

configure: error: in `/usr/obj/usr/ports/lang/gcc6-aux/work/build':
configure: error: C compiler cannot create executables
See `config.log' for more details.
*** Error code 77

Stop.
make[1]: stopped in /usr/ports/lang/gcc6-aux
*** Error code 1

Stop.
make: stopped in /usr/ports/lang/gcc6-aux

===>>> make build failed for lang/gcc6-aux
===>>> Aborting update

===>>> Update for lang/gcc6-aux failed
===>>> Aborting update

===>>> Update for devel/adacurses failed
===>>> Aborting update

===>>> There are messages from installed ports to display,
       but first take a moment to review the error messages
       above.  Then press Enter when ready to proceed. 

===>>> pkg-message for ncurses-6.0_3
 
No offense intended PacketMan but you're contradicting yourself a little bit. At first you mention how you should not mix the usage of ports and packages because it can break things (which is somewhat true), but only to mention how Synth does exactly the same thing ;)

But every time I build something every build dependency is not fetched by pkg but is being built from sources. That usually takes long time especially when there are llvm37 and llvm39 dependencies for building some DRI modules I don't even use with my Nvidia.
I can somewhat reproduce this but I'm not sure if this is a bug or not. Thing is: if you customize your Ports then there is a chance that this can have results for the dependencies.

You can always try to use # pkg install to manually install a dependency. It will not break your system for the simple reason that there isn't much difference between installing a Port with its default configuration or by installing a binary package.
 
Yes, but it's not always convenient to trace all the build dependencies beforehand and install them manually after that I have to build packages from ports and afterwards remove build dependencies also manually.
 
Just wanted to give the 'synth' a try but it requires gcc6 as a build dependency which fails to build:

Code:
checking for libitm support... yes
checking for libsanitizer support... no
checking for libvtv support... no
checking for libmpx support... no
checking for gcc... /usr/obj/usr/ports/lang/gcc6-aux/work/bootstrap/bin/gcc
checking for C compiler default output file name... Bad system call

what system is this?
Somebody just a couple of days ago had the same issue. They had a customized world/kernel. I advised that they rebuild their world and kernel, which they did and it fixed the issue.

Are you following FreeBSD-CURRENT?
 
yes, I have a bit customized world and kernel:

Code:
$ uname -a                                                                                                                                       [ /usr/home/x ]
FreeBSD CROSS 11.0-STABLE FreeBSD 11.0-STABLE #0: Tue Feb  7 16:44:02 MSK 2017     root@CROSS  amd64

Code:
$ cat /etc/make.conf                                                                                                                           
CPUTYPE?=core2
CFLAGS+=-fno-strict-aliasing
COPTFLAGS+=-O2 -pipe -fno-strict-aliasing
WRKDIRPREFIX=/usr/obj
DISTDIR=/var/cache/distfiles
PACKAGES=/var/cache/pkg
NO_DOCUPDATE=YES
NO_PORTSUPDATE=YES
PORTSEARCH_MOVED=0
OPTIONS_UNSET=CUPS DBUS DEBUG *DOCS DTRACE EXAMPLES GCONF GNUTLS GS_* GUI HAL *HELP ICONV IPV6 KERBEROS MANPAGES NLS PROFILE SMB TEST*

Code:
$ grep -v "^#" /etc/src.conf                                                                                                                     [ /usr/home/x ]
WITHOUT_ACCT=YES
WITHOUT_AMD=YES
WITHOUT_APM=YES
WITHOUT_ASSERT_DEBUG=YES
WITHOUT_ATM=YES
WITHOUT_AUDIT=YES
WITHOUT_AUTHPF=YES
WITHOUT_AUTOFS=YES
WITHOUT_BHYVE=YES
WITHOUT_BLACKLIST=YES
WITHOUT_BLUETOOTH=YES
WITHOUT_BOOTPARAMD=YES
WITHOUT_BOOTPD=YES
WITHOUT_BSNMP=YES
WITHOUT_CALENDAR=YES
WITHOUT_CAPSICUM=YES
WITHOUT_CASPER=YES
WITHOUT_CCD=YES
WITHOUT_CLANG_FULL=YES
WITHOUT_CTF=YES
WITHOUT_CTM=YES
WITHOUT_CUSE=YES
WITHOUT_DEBUG_FILES=YES
WITHOUT_DICT=YES
WITHOUT_DMAGENT=YES
WITHOUT_ED_CRYPTO=YES
WITHOUT_EE=YES
WITHOUT_EXAMPLES=YES
WITHOUT_FDT=YES
WITHOUT_FINGER=YES
WITHOUT_FLOPPY=YES
WITHOUT_FORMAT_EXTENSIONS=YES
WITHOUT_FREEBSD_UPDATE=YES
WITHOUT_FTP=YES
WITHOUT_GAMES=YES
WITHOUT_GCC=YES
WITHOUT_GCOV=YES
WITHOUT_GDB=YES
WITHOUT_GNU_SUPPORT=YES
WITHOUT_GPIB=YES
WITHOUT_GPIO=YES
WITHOUT_GROFF=YES
WITHOUT_GSSAPI=YES
WITHOUT_HAST=YES
WITHOUT_HTML=YES
WITHOUT_HYPERV=YES
WITHOUT_INET6=YES
WITHOUT_INETD=YES
WITHOUT_INFO=YES
WITHOUT_IPFILTER=YES
WITHOUT_ISCSI=YES
WITHOUT_JAIL=YES
WITHOUT_KERBEROS=YES
WITHOUT_KERNEL_SYMBOLS=YES
WITHOUT_KVM=YES
WITHOUT_KVM_SUPPORT=YES
WITHOUT_LIB32=YES
WITHOUT_LLDB=YES
WITHOUT_LOCATE=YES
WITHOUT_LPR=YES
WITHOUT_MAIL=YES
WITHOUT_MANDOCDB=YES
WITHOUT_MAN_UTILS=YES
WITHOUT_NDIS=YES
WITHOUT_NETCAT=YES
WITHOUT_NETGRAPH=YES
WITHOUT_NIS=YES
WITHOUT_NLS=YES
WITHOUT_NLS_CATALOGS=YES
WITHOUT_NS_CACHING=YES
WITHOUT_NTP=YES
WITHOUT_PAM_SUPPORT=YES
WITHOUT_PC_SYSINSTALL=YES
WITHOUT_PF=YES
WITHOUT_PMC=YES
WITHOUT_PPP=YES
WITHOUT_PROFILE=YES
WITHOUT_QUOTAS=YES
WITHOUT_RADIUS_SUPPORT=YES
WITHOUT_RBOOTD=YES
WITHOUT_RCMDS=YES
WITHOUT_RCS=YES
WITHOUT_RESCUE=YES
WITHOUT_ROUTED=YES
WITHOUT_SENDMAIL=YES
WITHOUT_SHAREDOCS=YES
WITHOUT_SVNLITE=YES
WITHOUT_SYSCONS=YES
WITHOUT_SYSINSTALL=YES
WITHOUT_TALK=YES
WITHOUT_TCP_WRAPPERS=YES
WITHOUT_TCSH=YES
WITHOUT_TELNET=YES
WITHOUT_TESTS=YES
WITHOUT_TFTP=YES
WITHOUT_TIMED=YES
WITHOUT_UNBOUND=YES
WITHOUT_USB_GADGET_EXAMPLES=YES

Code:
build env:

        export USER="root"
        export KERNEL_FLAGS="-j $((($(sysctl -n hw.ncpu)+1)/2))"
        export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
        export MODULES_OVERRIDE="drm2/drm2 drm2/radeonkms drm2/radeonkmsfw/BTC_rlc \
        drm2/radeonkmsfw/CAICOS_mc drm2/radeonkmsfw/CAICOS_me drm2/radeonkmsfw/CAICOS_pfp"

$ cat /sys/amd64/conf/CROSS                                                                                                                    
cpu             HAMMER
ident           CROSS
maxusers        64
options         SCHED_ULE
options         PREEMPTION
options         INET
options         ZFS
options         TMPFS
options         NULLFS
options         MSDOSFS
options         MSDOSFS_ICONV
options         CD9660
options         CD9660_ICONV
options         LIBICONV
options         GEOM_PART_GPT
options         GEOM_LABEL
options         SCSI_DELAY=1000
options         SCSI_NO_SENSE_STRINGS
options         SCSI_NO_OP_STRINGS
options         SYSVSHM
options         SYSVMSG
options         SYSVSEM
options         _KPOSIX_PRIORITY_SCHEDULING
options         PRINTF_BUFR_SIZE=128
options         KBD_INSTALL_CDEV
options         NO_SYSCTL_DESCR
options         HZ=300
options         IPSTEALTH
options         IPFIREWALL
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         SMP
options         MAXCPU=4
device          cpufreq
device          coretemp
device          acpi
options         ACPI_DMAR
device          pci
device          ahci
options         ATA_STATIC_ID
device          scbus
device          da
device          cd
device          pass
device          ses
device          atkbdc
device          atkbd
device          kbdmux
device          agp
device          vt
device          vt_vga
options         TERMINAL_NORM_ATTR=(FG_LIGHTGREY|BG_BLACK)
options         TERMINAL_KERN_ATTR=(FG_RED|BG_BLACK)
options         IEEE80211_AMPDU_AGE
device          wlan
device          wlan_wep
device          wlan_ccmp
device          wlan_tkip
device          wlan_amrr
device          loop
device          random
device          ether
device          md
device          firmware
device          bpf
device          ehci
device          usb
device          ums
device          umass
device          sound
device          crypto
device          cryptodev
device          krpc
device          iic
device          iicbb
device          iicbus
nooptions       GEOM_PART_BSD
nooptions       GEOM_PART_EBR
nooptions       GEOM_PART_EBR_COMPAT
device          snd_emu10k1
device          ath
device          ath_pci
device          ath_hal
device          ath_rate_sample
options         ATH_ENABLE_11N
device          uhci
device          uhid
device          ukbd
 
If I were to guess, I'd guess you didn't build your world and kernel together. If you're getting bad syscalls, in my experience that's caused by a mismatched kernel and world.

My advise is that you completely rebuild and reinstall both (if you're even able to in your current state).
 
The world and kernel have been built from the same src.txz file
$ ll /var/backups/ [ /usr/home/x ]
total 140229
-rw-r--r-- 1 root wheel 894644 1 мая 2016 pkg.sql.xz
-rw-r--r-- 1 root wheel 142580844 6 янв. 01:52 src.txz

The only option I have added later to the kernel was:
options NULLFS
because synth requires it. But kernel has been built from the same sources... So I don't think that is the issue. But I can rebuild the world and kernel once again just to be sure.
 
well, it solved the other guy's problem.
And it's not the age of the source that we are talking about. It's the age of the compiled products. In other words, you can't upgrade the world without upgrading kernel or vice-versa.
 
Have rebuilt the world and kernel once again:
Code:
$ freebsd-version -k                                                                                                                             [ /usr/home/x ]
11.0-STABLE
$ freebsd-version -u                                                                                                                             [ /usr/home/x ]
11.0-STABLE
$ uname -a                                                                                                                                       [ /usr/home/x ]
FreeBSD CROSS 11.0-STABLE FreeBSD 11.0-STABLE #0: Tue Feb  7 22:23:28 MSK 2017     root@CROSS  amd64
but the error is the same as above:
Code:
checking for C compiler default output file name... Bad system call

Unfortunately huge dependencies may bring such an issues. No other ports I have installed have such problems, though I try to avoid bloatware, but I wasn't able to skip llvm37, llvm39, python27, perl5 etc. and have to bear with 'em.
 
Dear kpect,
I am not sure if too many WITHOUT in /etc/src.conf lead to a stable system. Some days ago I have build world and kernel with much less restrictions. Short story, after reboot it could not negotiate the correct mode using i915kms for the monitor I have. Now I have /etc/src.conf as
Code:
WITHOUT_CLANG_EXTRAS=yes
WITHOUT_CLANG_FULL=yes
WITHOUT_LLDB=yes
and everything has been fine. Compiling a GENERIC kernel took much less time than building the restricted world.[/file]
 
for me, the next logical step is to return to a stock kernel and world. This is apparently a problem that only you have, and a custom build is the logical suspect.
 
Yes, I suppose that stock world and kernel would do the trick building gcc6, hmm... but I'm not sure if the end would justify the means for me. Now I have relatively small system ~ 850MB of world + all the packages and a kernel ~ 8MB in size (I have both i915kms working on my T430 and radeonkms on my desktop PC)
Portmaster fits well with my requirements, it's shell based, slim and quick, no any dependency required. Only concern was that it builds everything from sources which takes time... well I'll do with it if that its behaviour right now.

comparing to the GENERIC I have removed:
Code:
COMPAT_FREEBSD*
KTRACE
STACK
HWPMC_HOOKS
AUDIT
CAPABILITY_MODE
CAPABILITIES
MAC
KDTRACE_FRAME
KDTRACE_HOOKS
DDB_CTF
RACCT
RCTL
KDB
KDB_TRACE

and some other stuff. Possibly some of the above renders the issue. But It works everywhere else.
 
you seem to be missing the point that your system is busted.
What good is small if small means malfunction?
 
the only 'busted' thing is gcc6 - a bloatware which I don't require.
You can't be that naive.
A broken syscall is caused by the kernel.

Why do you even care about size? Disk space is cheap.
It sounds to me like you went crazy on customization "just because" and now don't want to face up to that mistake. You never mentioned a real reason for customizing all this so I'll have to assume there's not one.

As I always say: do what you want, but this case of pretending you did a good thing is amazing to me.
 
Why such aggresive attacks? Is it bad I like to tune the system the way I want it? let me repeat that gcc's ada is the only software that I have troubles with. Let me assume that being written in 'C', there wouldn't be any problems at all. Why pkg builds perfectly? Why clang or even kernel builds without any problems?
I use trimmed down and tuned FreeBSD because I like slim and neat systems, I like customizations for my needs and I don't like piles of software laying around here and there which I don't use. It doesn't matter how much free space I have and how cheap it is now. I'd spend that space on something else (like media files etc.) or just more space you have the slower the cells are weared out with trim and ZFS's COW. The more your SSD is filled with data the less space is left for files rotation (compilation, installation, deletion of packages) and the faster SSD is weared out.
BTW, I've managed to build the gcc and synth, so adding a couple of options fixes the issue, so why all this charge?
 
if you say something dumb or incorrect, expect to be called out on it. That's not aggressive, that's life.

If you "tune" something to the point that it no longer works, then *you* failed at tuning.
You said gcc6 was busted. That's untrue; your system is busted. You made an untrue statement and I called you out on it.

Your plan to deal with a busted syscall is to avoid the s/w that exposed the problem. You ignore the fact this breakage will manifest in other ways later.

You justification for tuning is really not supported by facts. If you can tune a system without losing functionality, great. A lot of work for minimal gain, but nothing is lost. But if the result is a malfunctioning system, you can't rationally justify the tuning.
 
As for synth, I've found out that it doesn't handle /etc/make.conf properly. Here's what I got there:
Code:
OPTIONS_UNSET=CUPS DBUS DEBUG *DOCS DTRACE EXAMPLES GCONF GNUTLS GS_* GUI HAL *HELP ICONV IPV6 KERBEROS MANPAGES NLS PROFILE SMB TEST*


Upgrading the system with synth upgrade-system fails on x11/xorg which tries to build DOCS thought they are unset in /etc/make.conf .

Also x11-toolkits/gtk20 is built with print/cups enabled and brings in a bunch of dependencies, though CUPS option is unset also.

Portmaster handles those options in /etc/make.conf correctly. Was that done intentionally or is this a bug?

Regards.
 
synth(1):
Code:
     <profile>-make.conf
                       This is an optional, user-provided file. If it exists,
                       the builder's /etc/make.conf will be appended with the
                       contents of this file. For the default profile, the
                       file would normally be located at
                       /usr/local/etc/synth/LiveSystem-make.conf
 
Back
Top