TOPDIR="$(cd $(dirname $(which $0)); pwd)"
PKGADD=$TOPDIR/src/pkgadd
+PKGADD_CONF=$TOPDIR/src/pkgadd.conf
PKGMK_CONF=$TOPDIR/src/pkgmk.conf
. $PKGMK_CONF
touch $CLFS/var/lib/pkg/db
fi
-$PKGADD -r $CLFS $@
-
-# we shoudl avoid .la files when crosscompiling, these files
-# contains the libdir variable hardcoded which is used by libtool
-[ $? -eq 0 ] && find $CLFS -type f -name '*.la' -delete
+$PKGADD -c $PKGADD_CONF -r $CLFS $@
# End of file
// Check command line options
//
string o_root;
+ string o_config;
string o_package;
bool o_upgrade = false;
bool o_force = false;
assert_argument(argv, argc, i);
o_root = argv[i + 1];
i++;
+ } else if (option == "-c" || option == "--config") {
+ assert_argument(argv, argc, i);
+ o_config = argv[i + 1];
+ i++;
} else if (option == "-u" || option == "--upgrade") {
o_upgrade = true;
} else if (option == "-f" || option == "--force") {
db_open(o_root);
pair<string, pkginfo_t> package = pkg_open(o_package);
- vector<rule_t> config_rules = read_config();
+ vector<rule_t> config_rules = read_config(o_config);
bool installed = db_find_pkg(package.first);
if (installed && !o_upgrade)
{
cout << "usage: " << utilname << " [options] <file>" << endl
<< "options:" << endl
- << " -u, --upgrade upgrade package with the same name" << endl
- << " -f, --force force install, overwrite conflicting files" << endl
- << " -r, --root <path> specify alternative installation root" << endl
- << " -v, --version print version and exit" << endl
- << " -h, --help print help and exit" << endl;
+ << " -u, --upgrade upgrade package with the same name" << endl
+ << " -f, --force force install, overwrite conflicting files" << endl
+ << " -r, --root <path> specify alternative installation root" << endl
+ << " -c, --config <file> use alternate configuration file" << endl
+ << " -v, --version print version and exit" << endl
+ << " -h, --help print help and exit" << endl;
}
-vector<rule_t> pkgadd::read_config() const
+vector<rule_t> pkgadd::read_config(string file) const
{
vector<rule_t> rules;
unsigned int linecount = 0;
- const string filename = root + PKGADD_CONF;
+ string filename = root + PKGADD_CONF;
+
+ if (!file.empty()) filename = file;
ifstream in(filename.c_str());
if (in) {
virtual void print_help() const;
private:
- vector<rule_t> read_config() const;
+ vector<rule_t> read_config(string file) const;
set<string> make_keep_list(const set<string>& files, const vector<rule_t>& rules) const;
set<string> apply_install_rules(const string& name, pkginfo_t& info, const vector<rule_t>& rules);
void find_rules(const vector<rule_t>& rules, rule_event_t event, vector<rule_t>& found) const;