summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* repo-add : new locking systemXavier Chantry2009-03-15
| | | | | | | Weird things could happen if several repo-add were run concurrently on the same database. The introduced locking system will prevent this to happen. Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
* repo-add : fix package variables declarationXavier Chantry2009-03-15
| | | | | | | | | | | | | | | | | | | | - arch was missing - backup is not used by repo-add. However makepkg still needs to put it in PKGINFO because pacman uses it - startdir is no longer used after the new delta implementation - the declaration of group, depend, backup, etc is not needed because these variables are always declared before being used : declare $var="$val" case "$var" in group) _groups="$_groups$group\n" ;; - reorder the variables declaration to follow the same order than they are written to the depends and desc file, for making future checks easier Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
* repo-add : rewrite delta supportXavier Chantry2009-03-15
| | | | | | | | | | | | | | | | | | Use the correct database format Use xdelta3 to get the source and destination files from the delta itself Allow delta files to be added with repo-add just like package files. delta files can also be removed with repo-remove. This is simply done by looking for a .delta extension in the arguments, and calling the appropriate db_write_delta or db_remove_delta functions. Example usage: repo-add repo/test.db.tar.gz repo/libx11-1.1.99.2-2-x86_64.pkg.tar.gz repo-add repo/test.db.tar.gz repo/libx11-1.1.5-2_to_1.1.99.2-2-x86_64.delta repo-remove repo/test.db.tar.gz libx11-1.1.5-2_to_1.1.99.2-2-x86_64.delta Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
* repo-add : drop delta support to rewrite it from scratchXavier Chantry2009-03-15
| | | | | | | | | | | | | The current implementation has several problems : Wrong database format All the info is taken from the filename, which is a bit ugly It looks for .delta files in the current directory when adding a package, which is not very flexible Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
* repo-add.sh.in : repo-remove improvementsXavier Chantry2009-03-15
| | | | | | | | | | | * report when a package entry to be removed is not found * backup and restore eventual "deltas" files * slight optimization when looking for an entry : only look at the entries starting with $pkgname Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
* repo-add cleanupXavier Chantry2009-03-15
| | | | | | | | Refactor the main loop, which was difficult to read. Use case instead of if when appropriate. Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
* Add pkgdelta script to create deltas.Xavier Chantry2009-03-15
| | | | | | | | | | | | This should obsolete the delta support in makepkg. Having a separate script should be more flexible. Example usage: $ pkgdelta repo/tzdata-2009a-1-x86_64.pkg.tar.gz repo/tzdata-2009b-1-x86_64.pkg.tar.gz ==> Generating delta from version 2009a-1 to version 2009b-1 ==> Generated delta : 'repo/tzdata-2009a-1_to_2009b-1-x86_64.delta' Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
* Fix several issues with xdeltaXavier Chantry2009-03-15
| | | | | | | | | | | | | 1) The changes to sync.c look big but there are mostly caused by the indentation. Fix a bug where download_size == 0 because the packages and deltas are already in the cache, but we still need to build the deltas list and apply the deltas to create the final package. 2) Fix the gzip / md5sum issue by switching to xdelta3, disabling external recompression and using gzip -n in pacman, and disable bsdtar compression and using gzip -n in makepkg. Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
* be_files.c : use %jd instead of %ju for intmax_tXavier Chantry2009-03-15
| | | | | Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* Revert "popen does NOT require /bin/sh in a subchroot"Xavier Chantry2009-03-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 9558639d8009483fbf422b138d020745986f82f1. This change was wrong, popen does require /bin/sh in a subchroot. 1) pacman -S lilo -r root Notice no error 2) rm root/bin/sh ; pacman -S lilo -r root Notice an error : error: scriptlet failed to execute correctly Actually, we already get an explicit error here, when popen is run, so there is no need to check for bin/sh explicitely. Besides this check was problematic in some cases. For example, bash itself has a scriptlet, but only post_install and post_upgrade, no pre_install and pre_upgrade. However, since bash has a scriptlet, runscriptlet will also be called before bash is installed. It won't do anything since the scriptlet has no pre_install function. But if we keep the check, we will still get "error : no /bin/sh". Conflicts: lib/libalpm/trans.c Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* runscriptlet : Flush open fds before fork() to avoid cloning buffersXavier Chantry2009-03-15
| | | | | | | | | | | | | | | | | | | | | | This is a bug I noticed 2 years ago : http://www.nabble.com/Re%3A-logging-output-crazy-to11437357.html#a11479679 I thought I fixed it with 57d77eab32c01cd7572a11f76480a3724d09c029 But the bug was still here. Reading man fork, this part caught my attention: * The child inherits copies of the parent's set of open file descriptors. Each file descriptor in the child refers to the same open file description (see open(2)) as the corresponding file descriptor in the parent. This means that the two descriptors share open file status flags, current file offset, and signal-driven I/O attributes (see the description of F_SETOWN and F_SETSIG in fcntl(2)). Since the open file descriptors are inherited, it is probably a good idea to flush them before forking. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* Only check checksums if there is a source fileAllan McRae2009-03-15
| | | | | Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
* contrib/pacscripts - print install scripts from a packageAllan McRae2009-03-15
| | | | | | | | | | Prints the install script from a given package file or from a package in the pacman repo. Original-work-by: Giulio "giulivo" Fidente <giulivo.navigante@gmail.com> Improvements-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
* Update checks for python in configureDan McGee2009-02-28
| | | | Signed-off-by: Dan McGee <dan@archlinux.org>
* Merge branch 'maint'Dan McGee2009-02-28
|\
| * Add new Kazakh translationBaurzhan Muftakhidinov2009-02-24
| | | | | | | | Signed-off-by: Dan McGee <dan@archlinux.org>
* | makepkg : remove xdelta supportXavier Chantry2009-02-28
| | | | | | | | | | | | | | | | The pkgdelta script can be used instead. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
* | libalpm: remove from_md5 and to_md5 from pmdelta_tXavier Chantry2009-02-28
| | | | | | | | | | | | | | | | | | | | | | | | | | The from_md5 and to_md5 fields were a nice extra safety, which would avoid trying to apply deltas on corrupted package files. However, they are not strictly necessary, since xdelta should be able to detect that on its own. The main problem is that it is impossible to compute these informations from the delta only. So repo-add would not be able to compute the delta entry based on just the delta file. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* | repo-add: print warning if same version already existsXavier Chantry2009-02-28
| | | | | | | | | | | | | | Simple fix for FS#13414. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* | Merge branch 'maint'Dan McGee2009-02-23
|\|
| * makepkg: fix updating pkgrel with pkgver in SCM packagesAllan McRae2009-02-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 1e656c0a introduced the changing of pkgrel to 1 when the pkgver was updated in SCM PKGBUILDs. However, the output in the "Making package:" was wrong. Attempting to fix that created another bug (FS#13416). Interestingly, pkgver was only ever being updated in the fakeroot stage which caused this problem. Now both pkgver and pkgrel are updated after the first devel_check and devel_update. Enjoy the really long explaination for a two line fix... Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
* | Update pactest to use hashlibDan McGee2009-02-23
| | | | | | | | | | | | The md5 module is deprecated in favor of hashlib. Signed-off-by: Dan McGee <dan@archlinux.org>
* | Don't prompt the user for unignore of IgnorePkg/IgnoreGroup packagesBryan Ischo2009-02-23
| | | | | | | | | | | | | | | | | | | | Don't prompt the user for unignore of IgnorePkg/IgnoreGroup packages, except for packages explicitly listed for sync by the user. This eliminates many unnecessary prompts when IgnorePkg/IgnoreGroup is used. Signed-off-by: Bryan Ischo <bryan@ischo.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* | Enabled new interactive prompt and updated some testsBryan Ischo2009-02-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enabled a new prompt to ask the user if they'd like to remove unresolvable packages from the transaction rather than failing it. Many pactest tests that used to fail now return success codes, because pacman now issues a prompt allowing the user to cancel rather than failing many transactions, and the pactest scripts always choose to cancel with no error rather than failing. The only net effect is that the return status of pacman is now 0 in cases where it used to be nonzero. Signed-off-by: Bryan Ischo <bryan@ischo.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* | repo-add : remove realpath usageXavier Chantry2009-02-19
| | | | | | | | | | | | | | | | | | Rework slightly db_write_entry so that $pkgfile is no longer referenced from the temporary dir. This means $pkgfile can be a relative path and does not need to be converted with realpath anymore. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* | repo-add : remove the need of realpath for REPO_DB_FILEXavier Chantry2009-02-19
| | | | | | | | | | | | | | | | REPO_DB_FILE does not need to be an absolute path anymore so no need to call realpath. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* | Merge branch 'maint'Dan McGee2009-02-18
|\|
| * A tiny fix in the Polish translation.Jan Stępień2009-02-18
| | | | | | | | | | | | | | | | The previous translation of 'targets' meant literally 'it targets' and it sounded awkwardly. The current version is a plural of a 'target'. Signed-off-by: Jan Stępień <jstepien@users.sourceforge.net> Signed-off-by: Dan McGee <dan@archlinux.org>
| * Rework optdepends documentation for clarityDan McGee2009-02-17
| | | | | | | | Signed-off-by: Dan McGee <dan@archlinux.org>
| * repo-add: fix eval and quote issuesDan McGee2009-02-15
| | | | | | | | | | | | | | | | | | | | eval was ugly and dirty, and bit us here. Instead, use a safer form of variable declaration to ensure quotes don't foil us in pkgdesc or any other fields. This fixes FS#10837. Signed-off-by: Dan McGee <dan@archlinux.org>
* | Reorganize code for one-at-a-time resolvingBryan Ischo2009-02-18
| | | | | | | | | | | | | | | | | | | | | | | | This change reorganizes the internal code so that packages are resolved one at a time instead of all at once from a list. This will allow a future checkin to prompt the user to see if they'd rather remove unresolvable packages from the transaction and continue, or fail the transaction. This change does not affect the actual behavior of libalpm and all tests pass without changes. Signed-off-by: Bryan Ischo <bryan@ischo.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* | repo-add : remove useless test_repo_db_file functionXavier Chantry2009-02-18
| | | | | | | | | | | | | | | | This function was used only once, was basically just one line, and was also called with an unused argument. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* | contrib/pacdiff : rework and cleanupXavier Chantry2009-02-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I initially only wanted to add a -l/--locate option to use locate instead of find, which should have been easy. Then I thought I would try to support filename with whitespace while I was at it, and this was a bit more complex. The safest ways seem to be the following ones : http://mywiki.wooledge.org/BashFAQ/020 Then I received a lot of suggestions on #bash about how to improve the script, which I tried to address. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> [Dan: fix grouping of find arguments] Signed-off-by: Dan McGee <dan@archlinux.org>
* | configure.ac: use full path of stat for Mac OS XKevin Barry2009-02-16
| | | | | | | | | | | | | | | | | | | | Change configure.ac to use the full path of stat when on darwin/mac. This is needed for situations when a user installs the GNU/coreutils and places it in their path before /usr/bin, but the SIZECMD is already configured for Darwin's version of stat. Signed-off-by: Kevin Barry <barryk gmail com> Signed-off-by: Dan McGee <dan@archlinux.org>
* | Merge branch 'maint'Dan McGee2009-02-08
|\|
| * makepkg: Make stripping debug symbols cross-platformSebastian Nowicki2009-02-08
| | | | | | | | | | | | | | | | The Linux and BSD versions of strip have the --strip-debug option (as well as the -S option), however Mac OS X only has -S. Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
* | Delay the creation of local and sync db dir.Xavier Chantry2009-01-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't need to create the directories when local or sync dbs are registered. For example, if a sync db does not exist, we cannot even do "pacman -Q" as an user. Instead, we can create the local db if needed during the db_prepare operation, and sync dbs on db_update. Also remove some more useless abstractions in db_update and switch to a much more efficient way to remove a sync db : rm -rf. Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
* | Remove some db abstraction crap.Xavier Chantry2009-01-20
| | | | | | | | | | | | | | | | These db_open and db_close looked quite useless. And they caused the db directory to be opened on a simple registering of a database. This is totally unneeded, this opening can be delayed to when we actually need it. Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
* | alpm_unpack : change prefix handling to workaround FS#12148.Xavier Chantry2009-01-20
| | | | | | | | | | | | | | | | | | Instead of appending the prefix to each entry name, we can chdir to the prefix before extracting, and restoring when it is done. This seems to work better with the strange and special case of FS#12148 where an archive contained the "./" entry. Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
* | Merge branch 'maint'Dan McGee2009-01-18
|\|
| * Use archive_entry_set_perm instead of archive_entry_set_modeNagy Gabor2009-01-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes FS#12148 ('unstable' regular file). I also changed the other archive_entry_set_mode usage in add.c to archive_entry_set_perm. Since I cannot find any relevant info in libarchive manual, I quote Tim Kientzle (the author of libarchive) here, and I say thank you for his help. *** Tim Kientzle wrote ************************************* This is the problem in libalpm/util.c: 323 if(S_ISREG(st->st_mode)) { 324 archive_entry_set_mode(entry, 0644); 325 } else if(S_ISDIR(st->st_mode)) { 326 archive_entry_set_mode(entry, 0755); 327 } Your example unstable.db.tar.gz is not empty. It has one entry in it, called "./". That entry is marked as a directory. But, when you call archive_entry_set_mode(), you are changing the file type! archive_read_extract() then creates the file /var/unstable as you requested. (archive_read_extract() will replace an empty directory with a file.) You should either set the mode value correctly: 323 if(S_ISREG(st->st_mode)) { 324 archive_entry_set_mode(entry, IFREG | 0644); 325 } else if(S_ISDIR(st->st_mode)) { 326 archive_entry_set_mode(entry, IFDIR | 0755); 327 } Or use archive_entry_set_perm(), which does not change the file type: 323 if(S_ISREG(st->st_mode)) { 324 archive_entry_set_perm(entry, 0644); 325 } else if(S_ISDIR(st->st_mode)) { 326 archive_entry_set_perm(entry, 0755); 327 } ************************************************************ Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
* | makepkg: test fixes, part 2Dan McGee2009-01-18
| | | | | | | | | | | | | | | | The goal of this fix was empty string comparisons: - if [ "$pkgname" != "" ]; then + if [ -n "$pkgname" ]; then Signed-off-by: Dan McGee <dan@archlinux.org>
* | makepkg: clean up test usageDan McGee2009-01-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In a lot of places, we had the following construct: [ "$foobar" = "0" ] which is better represented by using the integer tests: [ $foobar -eq 0 ] Attempt to unify makepkg to use the latter rather than the former in all places. From here on out we should ensure anything that is set to 0, 1, etc. uses the -eq format rather than =. In addition, fix a few other test anomalies including usage of double equals. Signed-off-by: Dan McGee <dan@archlinux.org>
* | makepkg: repackage rework with package functionsAllan McRae2009-01-17
| | | | | | | | | | | | | | | | | | When using the optional package() function or split packages, the entire packaging step is rerun instead of just final package creation step. Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
* | Fixed some inconsistencies and errors in the pactest documentation.Bryan Ischo2009-01-16
| | | | | | | | | | Signed-off-by: Bryan Ischo <bryan@ischo.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* | Merge branch 'am/splitpkg'Dan McGee2009-01-16
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | * am/splitpkg: makepkg: implement creation of split packages makepkg: Optional argument for run_package and create_package makepkg: hack around tee in run_package function makepkg: add functions for backup and restore of package fields makepkg: add optional package function makepkg: Add PKGBUILD-split.proto
| * | makepkg: implement creation of split packagesAllan McRae2009-01-16
| | | | | | | | | | | | | | | | | | Adds the ability to create multiple packages from one PKGBUILD Signed-off-by: Allan McRae <allan@archlinux.org>
| * | makepkg: Optional argument for run_package and create_packageAllan McRae2009-01-16
| | | | | | | | | | | | | | | | | | | | | | | | Generalize run_package to allow the passing of a package name directing the use of an alternative package function. A similar adjustment to create_package to prepare split packages. Signed-off-by: Allan McRae <allan@archlinux.org>
| * | makepkg: hack around tee in run_package functionAllan McRae2009-01-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Piping the package function through tee to log the outut also clears any variables set in the package function. This is a problem in split packages as package variable overrides are done in the package function. This is fixed by creating a node which the output is piped through and duplicated using the tee function. Signed-off-by: Allan McRae <allan@archlinux.org>
| * | makepkg: add functions for backup and restore of package fieldsAllan McRae2009-01-16
| | | | | | | | | | | | | | | | | | | | | | | | Adds functions for the backup and restoration of package variables that can be over-ridden during package splitting. Variables which can be overridden are given in the splitpkg_overrides variable. Signed-off-by: Allan McRae <allan@archlinux.org>