* search_package(): modified to return a sorted list
* gen_search_package(): moved my select menu to the new function.
* search_and_display(): new function which takes one or more arguments
(literal or quoted globs) from the command line (-s) and uses
search_package() to return an array of possible matches. If more than
one app is returned, it presents the user with a menu. It displays the
standard files associated with the app the user chooses. If
search_package() only returns one app, it displays the associated
files immediately. Despite being a new function, this merely restores
old functionality (albeit somewhat improved) which had been broken.
* main: moved the old code from the SEARCH test block to the new
function, replacing it with a call to that function.
* main: temporarily disabled pathname expansion in part of the GENSEARCH
test block (and in part of the new function) so it wouldn't break if
someone searched for 'fu*' with a 'fubar' file in the current
directory.
Also modified the man page and one comment regarding details of these
flags/functions.
This broke out a sed line used in a couple of places (and which needed
to be extended) into a commented function. This specifically addresses
dzen2, as well as the zarafa problems found while dealing with dzen2.
Also tightened up a regex that caused problems while dealing with
similar quirks. Also modified comments in these areas.
Note that virtualbox (no longer a problem) and calcurse (now
specifically handled) were handled by two generic substitution commands,
which have been removed. If these commands were catching things besides
virtualbox and calcurse, this will cause a regression but it's not
considered likely; it will let us know what *needs* to be fixed; and it
should be easy to do so.
Brought the error_read() calls more into conformance with standard
'read's. Two items still differ significantly: since the 'read' is in
error_read() and must handle a variety of prompts, prompts are done
before the call with 'printf's and since error_read is restricted to Y/N
values, the prompts have to use those for at least two of their options.
* error_read(): modified comments to reflect current status. Made read
use '-e' like the rest of the reads. Got rid of the '$1's and 'eval's
and used a simple assignment to REPLY. While the "(as specified with
'-e')" echo should never happen unless ON_ERROR was set to
stop/continue, it's still better to assign it to a variable tied
directly to where it's supposed to occur.
All direct uses of the 'read' builtin are now close to the following
format: possibly a block of statement text to the user output by
whatever means are handiest then, if not an 'anykey' prompt, a loop
which prompts and checks for valid input. The prompt is generally a
concise line in the forms of
read -p "(A)pples or (O)ranges?: "
read -n1 -p "Press any key to continue: "
Then a case statement handles the input in the format:
A|a) apple_action ;;
O|o) orange_action ;;
*) unknown_response ;;
Also misc minor changes such as modifying wording or option letters,
changing linebreaks in case statements, etc.
Beyond simple wording changes in the statement text, there was also:
* remove_files(): removed the 'echo -e foo\n' which seemed unnecessary.
* use_options(): added the SAVEDOPT and QUEUEOPT variables which are
used in read's prompt to customize it to the nature of the actually
possible choices and removed the 'else's we don't need to display.
* do_install(): moved a revised form into install_package(), removing
this one.
* install_package(): tried to make sure we local-ized all the vars we
need; saved two variables and two stat calls with one find; put a
missing loop around our read prompt; made the key line the argument of
read's -p flag; put the breaks and returns in the right places; and,
in terms of what was brought in from do_install(): removed the unused
loop from around the rename check and upgradepkg call; modified
variables to use install_package()s and dequoted the surviving
PKG_NAME.
Now we write changes to */src/usr/doc/ChangeLog.txt and generate
*/tools/ChangeLog-latest.txt. User visible changes since the last
release were added to the former.
Also re-added a re-re-rename that SBo keeps waffling about. ;)
* unknown_response(): new function to specify calling function and
unknown input in the error message.
* any functions with '{error_,}read's in them: replaced 'local ANS/read
ANS/case $ANS' with 'local REPLY/read/case $REPLY' and all '*) Unknown
response' with '*) unknown_response'.
* several functions: added missing 'local REPLY'
* get_source(): removed stale 'ANS'
* read_info(): reformatted case statement
Also made two other probably unnecessary changes to help with hunting an
elusive bug.
* error_read(): modified to loudly bomb out if it's somehow acquired an
impossible value.
* main: modified ON_ERROR so it's even more impossible for it to get the
wrong value.
Previously, the user was confronted with 7 prompts for directory
creation on first run to which they could hit enter or ^C in response.
The main purpose of this revision is to provide a nice printout and a
single question to which they can hit 'y/n'.
This led to a cascade of changes but it's all focused on establishing
sbopkg's needed directories and even results in fewer loc.
* directory_checks(): replaced with dir_init()
* config_check(): the ALLOW_MULTI check there was creating a directory
rather than checking the config, so moved it to dir_init(). Also made
the directory creation non-interactive since it's only creating a
tmpdir in an already-created sbopkg directory.
* sync_repo(): moved the directory_check() call to select_repository()
since being able to switch repos mid-run in the dialog
select_repository() interface is the direct (and only) reason for
calling dir_init() after startup. Removed the check_write() call and
all the rest related to it as it was no longer needed.
* select_repository(): aside from gaining the item just mentioned, the
'save setting' dialog was wrapped in a conditional based on whether
the user actually chose to create the new repo dir.
* ck_dir(): removed. The seven calls in directory_checks() went with
that function and the one in config_check() was also removed, since
it's now handled by dir_init() non-interactively, leaving it unused.
* check_write(): removed. The single call from sync_repo() was removed,
as discussed above, leaving it unused.
* pid_check(): now does a quick check for ALLOW_MULTI, making that a black
box that does the right thing.
* main: as just mentioned, the ALLOW_MULTI check was moved into
pid_check(). ALLOW_MULTI already gets special treatment in cleanup()
and did in config_check() and does in dir_init(), so it might as well
in pid_check() rather than being tested for in main. And, of course,
replaced the directory_checks() call with one to dir_init().
Modified all parameter expansions to use default values.
Also tweaked some wording and spacing and fixed an sbopkg-breaking typo
from the last commit of this file.
Replaced variable data with 'xxxDATAxxx' tags. The tags are replaced by
the revised release script. This way, only that file needs to have,
e.g., 'size' changed and it will propagate to the README and both
manpages, rather than requiring three separate edits. Also, sbopkg.conf
and sbopkg.conf(5) will always automatically be in sync.
Also shortened how we test for whether DEBUG(_UPDATES) is 0,1,2 and made
DEBUG_UPDATES use default values if unset, rather than being set
directly to a default value.
This entire variable may be removed shortly but, until then, there's
this.
In HACKING, I moved two points, modified two points, moved and modified
one point, and added two points. I also separated all points with a
blank line as is consistent with the first list in the file.
In both man pages, I shortened most 'SlackBuilds.org' references to
'SBo'; shortened most 'SlackBuild scripts' references to 'SlackBuilds';
added some missed root prompt symbols; and added a few missed .Bs and
.Is or flipped a wrong one for the right one.
In sbopkg.conf.5, I added 'simultaneously' in ALLOW_MULTI; revised a
line in KEEPLOG, and one in LOGFILE; and flipped a couple of
inconsistent .PP/.RS pairs to .RS/.PP.
In sbopkg.8, I added a comma in a list; redid a sequence of bold/roman
in the '-e' arg list; changed 'another configuration file' to 'FILE';
and flipped the out-of-order -r/-R flags.
Started a sentence on another sentence's line in sbopkg.conf(5) and left
a separator at double lines when it should have been changed to single
in sbopkg(8).
Also added several more points to HACKING which cover most of the other
changes - there are a few semantic/textual changes in here, too. The
largest changes are probably a making the 'type' of the conf values a
part of the 'template', moving and adding complete authors to both
The revision removes LOGDIR from sbopkg, sbopkg.conf.new, and
sbopkg.conf(5) and adds the previously missing LOGFILE value to
sbopkg.conf(5). Now, with a test for a setting to absolute path, we use
the dirname of LOGFILE rather than LOGDIR.
This makes all config file values be rendered the same way, with the entire
line in its own paragraph, which is set to fixed-width font (for postscript
output) and shortens and simplifies the intro line in keeping with the
whole-line consistency.
Also corrected one point in HACKING relevant to earlier revisions and
added three more points relevant to this one. However, the vast majority
of changes in this revision don't fall under those three points or any
easily generalizable description. They're just attempts at more clarity,
consistency, accuracy, etc. Oh, and some punctuation, too.
Fixed the NAME sections and man page cross references; tried to make
VARIABLES reflect whether they were used in an expanded sense or not;
changed an .IP list with non-standard bullets to a .TP with standard;
added standard NOTES section to sbopkg.conf and changed the .SH under it
to .SS and also changed the INSTRUCTIONS .SH in sbopkg(8) to an .SS of
DESCRIPTION; changed the FILES section from dashed .PP to undashed .TPs,
and changed the font to .I; changed the SEE ALSO section by removing
quotes, adding commas, reducing individual file references to the
general doc dir which was given a full path and changing its font to
.IR; and redid the tags in the OPTIONS section of sbopkg(8), making
replaceable args italic, changing the dashes, adding the missing
argument to the -f option.
this misc revision adds a note about git to KNOWN_ISSUES, silences unwanted
output from gpg in check_gpg(), and provides a better button to a widget in
load_user_queue()
This allows all current repos + 1 to fit without scrolling - eventually, the
repo list will outgrow the displayable area, but we might as well save
scrolling while we can.
This revision converts remove_obsolete_packages() to
remove_uninstalled_packages() to better reflect what it currently
actually does and makes other minor revisions related to it. It also
adds a command line option (-O) to access this function. It's still
mnemonic with 'obsolete' because we're running out of option letters and
the function may yet be modified to remove obsolete sources.
remove_obsolete_sources() uses data from get_source_names() to determine
whether a source is obsolete or not and was missing at least one atypical
package. Thanks to Chess for discussion and review.
Incidentally, this revision also finishes reordering the menu I started to
reorder in r771. It also tweaks the ChangeLog beyond just noting this
revision.
This allows the user to invoke sbopkg with '-V ?' to get a list of valid
repo/branches and allows us to suggest that in the manpage and help output.
This was we don't have to keep up with manually itemizing the valid options.
Part of this change pops out a pre-existing block of code and turns it into
list_repos().
"When in doubt use brute force." The timid line in r770 could result in rm
spitting errors. Thanks to Mauro for the right line. Corrected a typo while I
was at it.
Converted an egrep in info_item() into a grep to avoid issues with '+' being a
metacharacter.
Also removed stale lines (since r631) from gen_search_package() and
string_search(). Also added a couple of credits to the ChangeLog.
Changed the menu order of the "Build options" dialog to default to using
"Saved" options rather than "None" on the theory that, if a user has
saved options, he will more likely want to use them than not.
Removed a commented-out block and made an assignment more consistent.
Brought the add_item_to_queue() comments more in line with its code.
Changed the filename value of GSNFILE so it gets caught by cleanup().
Fixed a typo.
Addressed an issue where hitting ^C during the download of part of a queue
and restarting the queue could result in a download failure. Also added a
ChangeLog item for r768.
Sometimes sbopkg can't determine the version of a package. For example,
the google-chrome script looks at the source archive to determine it, and
such archive can very well be unavailable.
This patch makes sbopkg intercept the error condition and notify it to
the user gracefully, while at the same time falling back to trusting the
version provided in the .info file.
Thanks to alkos333 for the bug report.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
Small improvements:
- reduce the number of times the queue directory is scanned
- drop a wrong 'continue' in the error path
- allow having a QUEUEDIR that is a symlink to the actual directory
- improve file cleanup.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This is a band-aid which explicitly enables all flash-player-plugin sources to
be removed by testing for its names. It also fixes more general issues with
some SRCNAMEs not containing the VERSION number and get_source_names()
sometimes emitting bare newlines in cases where it should emit nothing at all.
This patch also modifies a regex in remove_sources_for_app() and adds unrelated
comments to string_search().
Thanks to artourter for the report, Chess for review, and Mauro for review and
suggestions.
sbopkg sometimes misinterprets version numbers, and some upgrade can
be classified as a downgrade which, by default, is not shown.
For example, 1.0.1 looks older than 1.0-rc2 to it.
Always show and queue apparent downgrades and "unclassified" version
changes as disabled queue items. This way users can fix sbopkg errors
(since there's no way sbopkg can always correctly guess correctly).
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
Adding the updated packages to the build queue could put in the
queue the same package more than once (if it was already present
in there).
Use parse_queue() instead of the bare append to avoid this.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
assignment to PKG in get_source(); modifies process_queue() by checking return
values directly rather than via $? in a couple of places, changes an
assignment to BUILD, and removes an unused COUNTER, and parenthesizes a string
index in the '-b' flag code path
fall through a case; more directly, it sets a NO_DL_LOOP flag if sbopkg has
done a download so that it doesn't download in an infinite loop. It moves the
download command into a conditional which can break the loop. It also modifies
check_source() to unset the flag if sbopkg has done a successful download, so
it can do the next one. Finally, it modifies get_source_names() to only go
into the guessing code if we have done a download, don't have a source file,
and only need to guess on one source name - thanks to godling for noticing a
failure in downloading dictd and the infinite loop; thanks to Chess and Mauro
for review and suggestions.
Some users use a customized LC_COLLATE value, which is known to
be a source of script breakage.
This patch makes sure that LC_COLLATE is set to C (the default)
when building.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
Without this patch, the list of build options was placed on the
left side of a menu dialog entry. Since dialog entries cannot span
to multiple lines, very long option lists were (visually) truncated.
Rework the dialog to show the options in the menu text field, so
there's much more room for them.
Reported by Erik Hanson.
While at it, also make sure that there's no stale options.build
file lying around (which is a minor bugfix).
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This is meant to be useful for doing "final checks" on the active queue
before starting the build process.
Thanks to slakmagik for reviewing.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This way users won't be surprised when misspelling "no" as "np" and
getting a "yes" behavior...
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This patch makes it possible to run multiple sbopkg instances
simultaneously in different $SBOPKGTMP prefixes.
There are some known (and possibly unknown) caveats the user
should be aware before enabling this option -- I documented the
ones I could think of.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
caused quoted strings in the RHS of the =~ operator in [[ commands to be
interpreted as literal strings, thus causing parts of sbopkg to fail. Update
HACKING to address this. Thanks to SiegeX and others for the reports and
suggestions. Thanks to Mauro and Chess for review and suggestions.
The old regex turned ON into ONOFF. Dialog apparently treats that as
an OFF, so overall the code appeared to work fine. Neverthess, this is
worth a fix.
Spotted by slakmagik.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
'find' prints the directory name as the first result, and if $SBOPKGTMP
is not named after sbopkg it makes the sanity check fail.
Fix this by making sure that 'find' doesn't ever return the directory
name.
Thanks to Ken Roberts for raising the issue.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
In the updates check we split the package name expression (on the
makepkg line) counting dashes. The 13.0 scripts now have, instead of
'tgz', the expression ${PKGTYPE:-tgz} at the end. This makes us pick
up the ARCH field instead.
Fix this by suppressing any ':-' operation found. This should be
reasonably safe (no 12.2 script has such expression there).
While at it, replace the old cut/rev dance with a single sed invocation.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This makes it handier to skip the build for already installed packages.
Note that "installed packages" here includes different versions, since
only the package name is checked.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
The OK wasn't sent to the terminal, so the thing looked quite screwed up
(all the "Checking GPG of" instances were on a single line).
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This patch shows the currently installed version of each queued package
in queue dialogs, or "New" if the package isn't installed.
The main reason to do something like this is to be quickly able to disable
the build of already-installed packages from a loaded queue. We're not
simply showing "Installed" here just to avoid inducing the user into
thinking that the queued package is exactly the same installed, while it
possibly isn't due to version updates.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
Repository descriptors (*.repo files) weren't properly validated on
load. This could lead to unexpected problems whenever a wrong descriptor
is found.
This patch replaces the original 2-lines loader with a proper parsing
function which also performs some sanity checks.
While at it, stop using the magic number '7' as the number of fields in
a repository record -- use a variable instead.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
they clear the file name in the save dialog and hit okay - before it would
behave as a 'cancel' and now it presents the dialog again. Thanks to Pierre
Cazenave for the suggestion.
Before this patch, they were conditionally unset before
the code checking for the presence of all the required
configuration variables.
While at it, clean up the code a little.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This patch add a function to remove from $OUTPUT packages
that are not installed. This is useful to remove from
$OUTPUT packages that are made obsolete by version updates,
or that are unwanted for whatever reason.
Addresses issue #20. Thanks to alkos333 for suggesting this
feature.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This is a preparation patch that should have minimal
changes in functionality (some on-screen messages change,
though). Its purpose is to enable the use of the
aforementioned function to remove more than source files.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This patch adds a sbopkg.conf option that, when enabled,
tells sbopkg to automatically delete the sources and all
the other files generated during the SlackBuild execution
right after running it.
Addresses issue #21. Thanks to Marco Bonetti and Gregory
Tourte for the report and the nice discussion.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This patch moves the get_source() error management down to
build_package(), which is its only caller. This leads to
some code deletion (mostly related to asking the user what
to do) and gives a "retry" alternative also to source
download problems.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This patch allows the user to retry a failed build. This
can be useful when the user mistakenly forgot to set up
some prerequisite (like creating a specific user or group),
when the build failed due to filling the build area (not
so unlikely when building large queues) and probably in
other cases too.
Addresses issue #24. Thanks to Zordrak for suggesting this
feature.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This patch adds support for the new SBo 13.0 features, namely
x86_64 support and the ability to specify more than one source
tarball in the .info file.
Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>