Complain

I hardly complain. So this is an exception. Why does UPDATING advices python38 when half of the ports need python37 ?
Is updating written only for people following "current-latest-instable ?"
I follow quarterly, so don't give me the wrong advice.
Quarterly is a separate branch. So who is the contact person for the UPDATING file in quarterly ?
 
I think UPDATING is just a place to collect potential issues when updating, how to work around them. Kind of "Beware, there may be danger here" type of stuff.
 
Who is the maintainer of UPDATING in quarterly branch ?
I will pull his hair. (Just kidding)
Thought experiment. Suppose you give wrong advice on perl version and ruby version.
Everyone using ports will have a shitty system.
 
Why does UPDATING advices python38 when half of the ports need python37
They don't. Name the ports you think that need python 3.7.

Quarterly is a separate branch.
Quarterly is branched off from 'main', 2021Q2 was done fairly recently (beginning of June). Are you sure you're not stuck on 2021Q1?

Who is the maintainer of UPDATING in quarterly branch ?
The entire ports tree (including the quarterly branches) is maintained by the same people. If necessary updates from 'main' are merged into a quarterly branch (security updates for example). Once every three months a new quarterly branch is branched off from 'main'.
 
I just installed xorg in a jail. And you get python37 for free !
Well, it's not the end of the world. It's a bit annoying :).
Updating might be one of the most inportant files in the quarterly branch.
It would be a nice asset, call it a wish list, if someone would be kind enough to look at this file. End of complain :)
 
Got my dates wrong, 2021Q2 is from April, 2021Q3 will be made in July (in a couple of days). The change from python 3.7 to 3.8 was done on 2021-04-25, that's after 2021Q2 was branched off. So 2021Q2 still has Python 3.7 as the default. The UPDATING from 2021Q2 doesn't mention the Python change either. So I think you're mixing up the UPDATING file from main (which does have it) and 2021Q2 (which doesn't).
 
pkg rquery -i "%n - %Ok: %Ov" python37 on my system shows a few packages depending directly on python37. This is on a FreeBSD-13.0-RELEASE.
One that is interesting is llvm10, which is used by mesa-dri, which is used by xorg/xorg-server. So that's how you get python37 by installing xorg.
Now looking at mesa-dri python is a build depends, but llvm is a run depend. llvm is why xorg pulls in python.

In the ports, there are "build depends" and "run depends". If another port/package is needed to build something but not at runtime, it won't install as a dependency of the package. If it's a runtime dependency, it gets installed as a dependency of a package.
 
Code:
root@molly:/usr/ports # git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean
root@molly:/usr/ports # grep -A5 20210425: UPDATING
20210425:
  AFFECTS: users of python
  AUTHOR: kai@FreeBSD.org

  The default version of python3 and python was switched to 3.8.

root@molly:/usr/ports # git checkout 2021Q2
Updating files: 100% (25516/25516), done.
Switched to branch '2021Q2'
Your branch is up to date with 'origin/2021Q2'.
root@molly:/usr/ports # grep -A5 20210425: UPDATING
root@molly:/usr/ports #
 
pkg rquery -i "%n - %Ok: %Ov" python37 on my system shows a few packages depending directly on python37.
Those ports/packages depend on whatever is set as the default version. For 2021Q2 the default Python version is still 3.7. The change to 3.8 happened after 2021Q2 was branched off.
 
Those ports/packages depend on whatever is set as the default version. For 2021Q2 the default Python version is still 3.7. The change to 3.8 happened after 2021Q2 was branched off.
Yep, understood. I was merely pointing out to Alain De Vos "how" python37 got pulled in by installing xorg because it seemed like a mystery that it did.
 
Yes, Python certainly gets pulled in for x11/xorg. But as I said, it'll pull in whatever Python version is set as default.

On main aka 'latest':
Code:
root@molly:/usr/ports/x11/xorg # make all-depends-list | grep python
/usr/ports/lang/python38

On 2021Q2:
Code:
root@molly:/usr/ports/x11/xorg # make all-depends-list | grep python
/usr/ports/lang/python37
/usr/ports/textproc/py-python-docs-theme

If I set python3=3.9 python=3.9:
Code:
root@molly:/usr/ports/x11/xorg # make all-depends-list | grep python
/usr/ports/lang/python39
 
Yep. I understand. Sometimes folks get puzzled as to "why is package XYZ pulled in when I install package ABC". Dependencies, up and down and sideways can make your head spin. Toss in "does package ABC have different config options that pull in/not pull in XYZ?" and it can lead to much head banging.

The easiest way to see this is "I deleted package XYZ and it also removed 300 other packages".

Basically, packages or ports, there's a reason for pulling something else in.
 
Dependencies, up and down and sideways can make your head spin. Toss in "does package ABC have different config options that pull in/not pull in XYZ?" and it can lead to much head banging.
Definitely. It's sometimes difficult to track down which exact option or dependency pulls in a certain port/package.

The easiest way to see this is "I deleted package XYZ and it also removed 300 other packages".
True. I often use pkg info -r <package> and pkg info -d <package> too. But this doesn't always show the "cascade" of deletions the removal of a certain dependency would cause.
 
  • Like
Reactions: mer
Code:
jitte@bakemono:~ $ pkg rquery -i "%n - %Ok: %Ov" python37
python37 - DEBUG: off
python37 - FNV: off
python37 - IPV6: on
python37 - NLS: on
python37 - PYMALLOC: on
python37 - SIPHASH: off
jitte@bakemono:~ $ uname -a
FreeBSD bakemono 12.2-RELEASE-p7 FreeBSD 12.2-RELEASE-p7 GENERIC  amd64
jitte@bakemono:~ $ su
Password:
root@bakemono:/home/jitte # cd /
root@bakemono:/ # freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 2 mirrors found.
Fetching metadata signature for 12.2-RELEASE from update2.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.

No updates needed to update system to 12.2-RELEASE-p9.
root@bakemono:/ #

If you haven't today you might want to run:
freebsd-update fetch
freebsd-update install
shutdown -r now
 
… xorg in a jail. And you get python37 for free ! …

14.0-CURRENT, make all-depends-list finds one version:

Code:
root@mowa219-gjp4-8570p:/usr/ports/x11/xorg # uname -KrU
14.0-CURRENT 1400024 1400024
root@mowa219-gjp4-8570p:/usr/ports/x11/xorg # make all-depends-list | grep python
/usr/ports/lang/python38
root@mowa219-gjp4-8570p:/usr/ports/x11/xorg #

Three versions – python27-2.7.18_1 python36-3.6.13 python38-3.8.10 – in response to make pretty-print-run-depends-list (below).

all-depends-list is more magical, I guess :)

Code:
root@mowa219-gjp4-8570p:/usr/ports/x11/xorg # make build-depends-list
/usr/ports/ports-mgmt/pkg
root@mowa219-gjp4-8570p:/usr/ports/x11/xorg # make run-depends-list | grep python
root@mowa219-gjp4-8570p:/usr/ports/x11/xorg # make pretty-print-run-depends-list | grep python
This port requires package(s) "appres-1.0.5 bitmap-1.0.9 dejavu-2.37_1 encodings-1.0.5,1 evdev-proto-5.8 expat-2.4.1 font-adobe-100dpi-1.0.3_4 font-adobe-75dpi-1.0.3_4 font-adobe-utopia-100dpi-1.0.4_4 font-adobe-utopia-75dpi-1.0.4_4 font-adobe-utopia-type1-1.0.4_4 font-alias-1.0.4 font-arabic-misc-1.0.3_4 font-bh-100dpi-1.0.3_4 font-bh-75dpi-1.0.3_4 font-bh-lucidatypewriter-100dpi-1.0.3_4 font-bh-lucidatypewriter-75dpi-1.0.3_4 font-bh-ttf-1.0.3_4 font-bh-type1-1.0.3_4 font-bitstream-100dpi-1.0.3_4 font-bitstream-75dpi-1.0.3_4 font-bitstream-type1-1.0.3_4 font-cronyx-cyrillic-1.0.3_4 font-cursor-misc-1.0.3_4 font-daewoo-misc-1.0.3_4 font-dec-misc-1.0.3_4 font-ibm-type1-1.0.3_4 font-isas-misc-1.0.3_4 font-jis-misc-1.0.3_4 font-micro-misc-1.0.3_4 font-misc-cyrillic-1.0.3_4 font-misc-ethiopic-1.0.4 font-misc-meltho-1.0.3_4 font-misc-misc-1.1.2_4 font-mutt-misc-1.0.3_4 font-schumacher-misc-1.1.2_4 font-screen-cyrillic-1.0.4_4 font-sony-misc-1.0.3_4 font-sun-misc-1.0.3_4 font-winitzki-cyrillic-1.0.3_4 font-xfree86-type1-1.0.4_4 fontconfig-2.13.93,1 freetype2-2.10.4 gettext-runtime-0.21 glib-2.66.8,2 iceauth-1.0.8_2 indexinfo-0.3.1 libFS-1.0.8 libICE-1.0.10,1 libSM-1.2.3,1 libX11-1.7.2,1 libXScrnSaver-1.2.3_2 libXau-1.0.9 libXaw-1.0.14,2 libXcomposite-0.4.5,1 libXcursor-1.2.0 libXdamage-1.1.5 libXdmcp-1.1.3 libXext-1.3.4,1 libXfixes-5.0.3_2 libXfont-1.5.4_2,2 libXfont2-2.0.4 libXft-2.3.3 libXi-1.7.10,1 libXinerama-1.1.4_2,1 libXmu-1.1.3,1 libXpm-3.5.13 libXrandr-1.5.2 libXrender-0.9.10_2 libXres-1.2.1 libXt-1.2.1,1 libXtst-1.2.3_2 libXv-1.0.11_2,1 libXvMC-1.0.12 libXxf86dga-1.1.5 libXxf86vm-1.1.4_3 libdmx-1.1.4_2 libdrm-2.4.106,1 libedit-3.1.20210216,1 libepoll-shim-0.0.20210418 libepoxy-1.5.8_1 libevdev-1.9.1.20200928 libffi-3.3_1 libfontenc-1.1.4 libglvnd-1.3.3 libgudev-234 libiconv-1.16 libinput-1.16.4 liblz4-1.9.3,1 libmtdev-1.1.6 libpciaccess-0.16 libpthread-stubs-0.4 libudev-devd-0.4.2_1 libunwind-20201110 libwacom-1.5 libxcb-1.14_1 libxkbfile-1.1.0 libxml2-2.9.12 libxshmfence-1.3_1 llvm10-10.0.1_5 lua52-5.2.4 mesa-dri-20.2.3_2 mesa-libs-20.2.3_1 mkfontscale-1.2.1 mpdecimal-2.5.1 pciids-20210516 pcre-8.44 perl5-5.32.1_1 pixman-0.40.0_1 png-1.6.37_1 py27-setuptools44-44.0.0_1 py27-six-1.16.0 py36-setuptools-57.0.0 py38-evdev-1.4.0 py38-pyudev-0.22.0 python27-2.7.18_1 python36-3.6.13 python38-3.8.10 readline-8.1.1 sessreg-1.1.2 setxkbmap-1.3.2 smproxy-1.0.6 twm-1.0.11_1 wayland-1.19.0_1 x11perf-1.6.1 xauth-1.1 xbacklight-1.2.3 xbitmaps-1.1.2 xcalc-1.1.0 xcb-util-0.4.0_2,1 xcb-util-wm-0.4.1_3 xclock-1.0.9 xcmsdb-1.0.5 xconsole-1.0.7_1 xcursor-themes-1.0.6 xcursorgen-1.0.7 xdpyinfo-1.3.2_3 xdriinfo-1.0.6_4 xev-1.2.4 xf86-input-keyboard-1.9.0_4 xf86-input-libinput-0.30.0_1 xf86-input-mouse-1.9.3_3 xf86-video-scfb-0.0.5_2 xf86-video-vesa-2.5.0 xf86dga-1.0.3_1 xgamma-1.0.6 xgc-1.0.5 xhost-1.0.8 xinit-1.4.1,1 xinput-1.6.3 xkbcomp-1.4.4 xkbevd-1.1.4 xkbutils-1.0.4_2 xkeyboard-config-2.32 xkill-1.0.5 xlsatoms-1.1.3 xlsclients-1.1.4 xmessage-1.0.5 xmodmap-1.0.10 xorg-apps-7.7_4 xorg-docs-1.7.1,1 xorg-drivers-7.7_6 xorg-fonts-100dpi-7.7 xorg-fonts-7.7_1 xorg-fonts-75dpi-7.7 xorg-fonts-cyrillic-7.7 xorg-fonts-miscbitmaps-7.7 xorg-fonts-truetype-7.7_1 xorg-fonts-type1-7.7 xorg-libraries-7.7_4 xorg-server-1.20.11_3,1 xorgproto-2021.4 xpr-1.0.5 xprop-1.2.5 xrandr-1.5.1 xrdb-1.2.0 xrefresh-1.0.6 xset-1.2.4_3 xsetroot-1.1.2 xterm-368 xtrans-1.4.0 xvinfo-1.1.4 xwd-1.0.7 xwininfo-1.1.5 xwud-1.0.5 zstd-1.5.0" to run.
root@mowa219-gjp4-8570p:/usr/ports/x11/xorg # make pretty-print-all-depends-list
make: don't know how to make pretty-print-all-depends-list. Stop

make: stopped in /usr/ports/x11/xorg
root@mowa219-gjp4-8570p:/usr/ports/x11/xorg #

ports(7) <https://www.freebsd.org/cgi/man.cgi?query=ports&sektion=7&manpath=FreeBSD+14.0-current>
 
In highlander it is there can be only one. So i compile with python version X and blacklist X-1 and X+1.
Currently compiling/running everything with python3.7 using quarterly.
 
In highlander it is there can be only one.
You're watching the wrong movies.

In The Matix Neo died and rose from the Dead, with the Power to bend the machines to his will.
In The Matrix Reloaded there is the greatest scene of highway destruction in motion ever filmed while Morphius fights an Agent on top of a speeding semi-truck, with a Katana, kicks his bolt-action butt and Neo swoops in at the last moment and snatches Morhpius and the Keymaker up, up and away..
In The Matrix Revolutions, Neo becomes The One.
Neo/One. Trinity, Died and rose from the grave.

I bend the machines in front of me to my will and where I sit I am The One, and only root. And what I say goes.
 
Currently compiling/running everything with python3.7
Software will improve when developers stop using a mix of tools that depends upon a certain instance of python. Python is used because it is popular. Instead they should use only uninteresting tools that work until EOL in a distant future.
 
Software will improve when developers stop using a mix of tools that depends upon a certain instance of python. Python is used because it is popular. Instead they should use only uninteresting tools that work until EOL in a distant future.
Then software will never improve. There are many (not too many) developers, and each of them use the tools and programming languages that she/he find interesting at the time. And new programming languages / development "fashions" comes along regularly...
 
Software will improve when developers stop using a mix of tools that depends upon a certain instance of python. Python is used because it is popular. Instead they should use only uninteresting tools that work until EOL in a distant future.
Hopefully Python's popularity will wane now that they're introducing breaking changes even in minor releases. Clearly the Python Steering Committee has learned the wrong lesson from the Python 2 fiasco.
 
Python is an evolving language. As opposed to for instance C.
Ruby is even more evolving.
It does not mean you can not use it as build tool.
"gnu make" is not the end of the story.
But there are indeed differences between python3.7 and 3.8.
How it should be managed i don't know.
 
Back
Top