i just looked at your dns_ddclient client example again. The output isn't matching what you describe.
- you ran
synth prepare-system
- It deleted the bad dns_ddclient package
- It rebuilt the package
- It rebuilt the repository
One pass. It did 1) and 2). Correct?
No, because the repository was missing the new
dns/ddclient package file after the first invocation of
synth prepare-system completed. Here, I'll show you again by starting from scratch. Bear with me on this, please -- I know this is long, but please follow along through all steps to reproduce:
Getting rid of
dns/ddclient:
Code:
root@wintermute-pts/2(3:13pm)~/:pkg delete ddclient
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):
Installed packages to be REMOVED:
ddclient-3.8.2_1
The operation will free 178 KiB.
Proceed with deinstalling packages? [y/N]: y
[1/1] Deinstalling ddclient-3.8.2_1...
[1/1] Deleting files for ddclient-3.8.2_1: 100%
root@wintermute-pts/2(3:48pm)~/:rm /var/synth/live_packages/All/ddclient-3.8.2_1.txz
remove /var/synth/live_packages/All/ddclient-3.8.2_1.txz? y
/var/synth/live_packages/All/ddclient-3.8.2_1.txz
root@wintermute-pts/2(3:48pm)~/:make -C /usr/ports/dns/ddclient/ rmconfig
===> Removing user-configured options for ddclient-3.8.2_1
root@wintermute-pts/2(3:49pm)~/:
The package is now removed from the system, the options file has been deleted, and I manually deleted the package file from the repository.
Now we reinstall with
synth install dns/ddclient:
Code:
root@wintermute-pts/2(3:49pm)~/:synth install dns/ddclient
The task is complete. Final tally:
Initial queue size: 1
packages built: 1
ignored: 0
skipped: 0
failed: 0
Duration: 00:00:10
The build logs can be found at: /var/log/synth
Stand by, prescanning existing packages.
Stand by, recursively scanning 246 ports serially.
Scanning existing packages.
Packages validated, rebuilding local repository.
Local repository successfully rebuilt
Updating Synth repository catalogue...
Fetching meta.txz: 100% 264 B 0.3kB/s 00:01
Fetching packagesite.txz: 100% 71 KiB 72.2kB/s 00:01
Processing entries: 100%
Synth repository update completed. 246 packages processed.
Checking integrity... done (0 conflicting)
The following 1 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
ddclient: 3.8.2_1
The process will require 178 KiB more space.
[1/1] Installing ddclient-3.8.2_1...
[1/1] Extracting ddclient-3.8.2_1: 100%
Message from ddclient-3.8.2_1:
***********************************************************
Copy
/usr/local/etc/ddclient.conf.sample
to
/usr/local/etc/ddclient.conf
and edit it to fit your needs.
If you would like to run ddclient as a daemon add the
following line to /etc/rc.conf
ddclient_enable="YES"
If you would like to force ddclient to update your account
daily regardless of IP changes add the following line to
your /etc/periodic.conf
daily_ddclient_force_enable="YES"
***********************************************************
root@wintermute-pts/2(3:50pm)~/:ll /var/synth/live_packages/All/ddclient*
-rw-r--r-- 1 root wheel 40640 Mar 19 15:50 /var/synth/live_packages/All/ddclient-3.8.2_1.txz
root@wintermute-pts/2(3:51pm)~/:
The package is now installed, and
ddclient-3.8.2_1.txz is in the repo.
Time to change the option:
Code:
root@wintermute-pts/2(3:51pm)~/:make -C /usr/ports/dns/ddclient config
root@wintermute-pts/2(3:52pm)~/:cat /var/db/ports/dns_ddclient/options
# This file is auto-generated by 'make config'.
# Options for ddclient-3.8.2_1
_OPTIONS_READ=ddclient-3.8.2_1
_FILE_COMPLETE_OPTIONS_LIST=SSL
OPTIONS_FILE_UNSET+=SSL
root@wintermute-pts/2(3:53pm)~/:
The option is now changed. Now we run
synth prepare-system to see if both (1) and (2) above are completed in one run:
Code:
root@wintermute-pts/2(3:53pm)~/:synth prepare-system
Querying system about current package installations.
Stand by, comparing installed packages against the ports tree.
Scanning existing packages.
ddclient-3.8.2_1.txz failed option check.
progress: 89.93%
The task is complete. Final tally:
Initial queue size: 1
packages built: 1
ignored: 0
skipped: 0
failed: 0
Duration: 00:00:13
The build logs can be found at: /var/log/synth
Stand by, prescanning existing packages.
Stand by, recursively scanning 246 ports serially.
Scanning existing packages.
Packages validated, rebuilding local repository.
Local repository successfully rebuilt
root@wintermute-pts/2(3:54pm)~/:ll /var/synth/live_packages/All/ddclient*
ls: No match.
root@wintermute-pts/2(3:55pm)~/:
And we see that only (1) happened -- the old package was deleted, but the new package was not put in the repo -- the new version of
ddclient-3.8.2_1.txz is not in
/var/synth/live_packages/All. But we did build it during this run -- note that "packages built: 1" is in the final tally. But where's the new package I just built? We have to run
synth prepare-system a second time for the new package to appear in the repo:
Code:
root@wintermute-pts/2(3:56pm)~/:synth prepare-system
Querying system about current package installations.
Stand by, comparing installed packages against the ports tree.
Scanning existing packages.
progress: 85.50%
The task is complete. Final tally:
Initial queue size: 1
packages built: 1
ignored: 0
skipped: 0
failed: 0
Duration: 00:00:13
The build logs can be found at: /var/log/synth
Stand by, prescanning existing packages.
Stand by, recursively scanning 246 ports serially.
Scanning existing packages.
Packages validated, rebuilding local repository.
Local repository successfully rebuilt
root@wintermute-pts/2(4:02pm)~/:ll /var/synth/live_packages/All/ddclient*
-rw-r--r-- 1 root wheel 40592 Mar 19 16:01 /var/synth/live_packages/All/ddclient-3.8.2_1.txz
root@wintermute-pts/2(4:02pm)~/:
The package was rebuilt again (packages built: 1), but now we see (finally!) that (2) has been completed -- the new package is in the repo and is ready to install. I shouldn't have to run
synth prepare-system twice for that to happen, right?