Code Monkey home page Code Monkey logo

lpf's Introduction

lpf - Local Package Factory lpf is designed to handle two separate problems:

  • Packages built from sources which does not allow redistribution
  • Packages requiring user to accept EULA-like terms.

It works by downloading sources, possibly requiring a user to accept license terms and then building and installing a rpm package locally.

A lpf package is really about two packages. The target packet is the real package doing useful work. The lpf package contains what's needed to build the target package.

The envisioned usage is that a user

  • Installs the lpf packet as normal
  • Is prompted when a update/rebuild is needed
  • When pushing the "Update" button, gets a guided tour handling EULA acceptance, building and installing the target package.

Installation

First clone the sources, create a fresh rpm and install it:

$ git clone https://github.com/leamas/lpf.git
$ cd lpf/
$ tools/make_rpm
$ sudo rpm -U --force dist/lpf-*.noarch.rpm

Install the required dependencies: look into lpf.spec and install all packages mentioned as Requires: or BuildRequires:

Then install your first lpf bootstrap package:

$  cd examples/msttcore-fonts
$  sudo rpm -U --force lpf-msttcore-fonts-2.2-1.fc20.noarch.rpm

To use lpf you need to be member of the pkg-build group. On the first run you will be prompted about adding this group to your user. These prompts disappear after logging out and in again (or rebooting).

Check that the /etc/sudodoers file contains the following line (default in recent Fedora versions):

#includedir /etc/sudoers.d

Getting started

At this point, your lpf package is installed and ready to approve, build and install the msttcore-fonts package. Check the situation using lpf state:

$ lpf state
msttcore-fonts                     approve-wait   2.2-1

which tells you that the package needs to be approved, built and installed. Do that using

$ lpf update

This will first present a dialog (text or gui) where you can read and accept the license. Depending on your sudo configuration you might also be prompted for a password when a dnf install is needed.

After running above, check status again

$ lpf state
msttcore-fonts                     OK             2.2-1

The GUI way

An alternative way without using any CLI magic:

  • Install lpf-msttcore-fonts.
  • Start the lpf-gui program (under "System Tools" or so in old-fashioned menus).
  • Push "Build all" and watch the package being built and installed after some dialogs (see screenshots).

lpf package licecycle

                              ------------------>-------------
lpf package                   |                              |
installation                  |   -------------          ----------
             -------------    |   | approve-  | approve  | build- |
---->--------| untriaged |------>-| wait      |---->-----| wait   |
             -------------  scan  -------------          ----------
               |     |             |      |                   |
               |     |     rebuild ^      v cancel            |
               |     |             |      |                   |
               |     |            ------------                |           )
         scan  ^     |            | not-     |    build       v
               |     |  lpf pkg   | approved |    (pkg-build) |
               |     ^  update    ------------                |
               |     |  (root)                                |
               |     |            -------------               |
               |     ---------    | failed    |------<--------|
               |             |    -------------               |
          ------------       |      |    |                    |
          | removing |       |      |    v  rebuild           v
          ------------       |      |    |                    |
               |             |      --<---------->--------    |
Target pkg     |             |                           |    |
remove (root)  ^           --------                     ----------
               |           |      |                     |install- |
               ------------|  OK  |------------<--------|wait     |
                           |      |        install      -----------
                           --------        (root)
  • After installation an lpf package is untriaged. Normally, the %post scriptlet will invoke lpf scan.
  • After running lpf scan the package is waiting for user approving the eula or if this is not required submitted for building directly.
  • Running lpf approve submits packages for building after user accepting the eula.
  • Running lpf build builds target package. The lpf package enter state install-wait or failed.
  • Running lpf install installs package which enter state OK.
  • After updating the lpf package , the target package will have a different version than the lpf package and state is untriaged
  • Likewise, the state is untriaged if target package is not installed.
  • A failed package can be rebuilt.
  • The lpf update command is indeed a shortcut for approve-build-install.

The lpf package

To create an lpf package you first create a target package. My example is spotify-client. There is nothing specific about the target package besides the fact that it cannot be in public repositories for legal reasons. The spotify-client spec is in examples/spotify-client.

Since you cannot distribute this package you create an lpf package, in this case lpf-spotify-client (in examples). This package is used to build the target locally. This package contains the spec file, extra sources such as desktop files, patches etc., and the eula agreement user should accept before building. The directory structure is

/usr/share/lpf/packages/spotify-client
                            spotify-client.spec
                            CONFIG
                            SOURCES
                                patch-1
                                desktop-file
                                ...
                            eula
                                license.txt

The optional CONFIG file is used to tweak how lpf builds the package. Typical usage is in packages only built for i686 even on x86_64 hosts.

Writing the lpf spec should be simple using the examples as a starting point. There is also info the annotated lpf-pkg-example.spec file. When doing this the internal structure as described here is handled by the lpf-setup-package script which constructs it given a target specfile, possible eula terms and extra sources. See comments in lpf-setup-package

When the lpf package is installed, it will enter the 'approve-wait' state and can be handled as described under Getting Started.

The lpf-gui tool.

lpf-gui provides a graphical interface to the basic lpf administration. Using this one can get an overview on lpf package states, update packages, view logs, handle notifications etc. See the first two screenshots and the lpf-gui manpage.

The lpf tool

The lpf command is the complete tool for handling lpf packages, and also the underpinnings for lpf-gui. For now, here is the help (-h) output:

Usage: lpf [args]

commands:
list 	List all packages.
update [package]
	    Interactive approve, build and install of given package or
	    all packages.
state [package]
	    List package state or state of all packages.
scan [package]
	    Triage a given package or all packages  and
	    update their status.
approve <package>
	    Approve a package in state approve-wait.
build [package]
	    Build given package or all packages in state
	    build-wait
rebuild <package>
	    Force re-install of a package where previous installation
	    failed.
install <package>
	    Install rpms for given package.
log [package]
	    Display logs from last build for package, or just
	    last build.
mute <package>
	    Mute (i. e., disable) notification messages for given package
                until it's state changes.

See the manpage for more commands and other info.

In a desktop environment lpf will pop up various GUI windows (see screenshots). To make it work as a pure cli application unset $DISPLAY.

Notifications

There is a notifications system which can be used both from the command line and the GUI. A notification is created when a lpf package enters any state besides 'OK'. It's cleared when it eventually becomes 'OK' again.

At the command line, lpf notify writes a message if there are lpf packages which need to be built. It's intended to be included e. g., in .bashlogin. Notifications for a specific package can be muted, basically blocking this message until the package enters state 'OK' using lpf mute.

In the GUI, the basic tool is the lpf-notify user daemon. This is installed by the lpf-gui when selecting "Enable notifications" in the Notifications menu. The daemon listens for package state changes and pops up a message using the lpf notify-watch command.

There are locks for the GUI notifications to avoid multiple messages e. g., when actually updating the lpf package.

Security, users and such

Target packages are built by a dedicated user pkg-build who owns all files related to lpf. Users need to te able to run as pkg-build and also as root to install target packages. See the lpf manpage (PRIVILEGED COMMANDS) for more.

Tests

The test directory contains some unit tests. To work, the package to test must be installed. BEWARE: tests remove all lpf packages on your machine! See TESTING for more.

License

This is open software licensed under the MIT license, see the LICENSE file.

TODO

lots...

  • Dozens of bugs...
  • Rewrite the notitification code with a proper daemon and using the notification interface - i. e., using python.
  • Sooner or later write this in a proper language (python?).

lpf's People

Contributors

leamas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lpf's Issues

RFE: Add support for tarballs that should be download manually

I'm thinking about downloads that can not be automated; for example the Oracle Instant Client (just a bunch of libraries) that are used at compile time for Tora (http://torasql.com/).

Those downloads need you to login on the Oracle website.

I've seen that lpf does not delete the downloaded tarballs, so if sources could not be downloaded automatically it would be nice to have a message in place of the download step like "put the following tarballs in this directory".

Add reset command

When a build/install fails for random reasons, it might be good with a reset command which clears all temporary files and sets state to build-wait or approve-wait.

build process waiting for RPM input

Hi,

Had an issue trying to install the spotify client.

It seemed to be doing all the right things, however it wasnt until i checked the logs that i realised yum was waiting for a "y" to proceed with the install..

Log below

$ tail -f /var/lib/lpf/log/spotify-client.log
Loaded plugins: langpacks, refresh-packagekit
Getting requirements for /usr/share/lpf/packages/spotify-client/spotify-client.spec
 --> Already installed : desktop-file-utils-0.22-1.fc20.x86_64
 --> Already installed : python-devel-2.7.5-11.fc20.x86_64
 --> redhat-lsb-core-4.1-21.fc20.x86_64
--> Running transaction check
---> Package redhat-lsb-core.x86_64 0:4.1-21.fc20 will be installed
--> Processing Dependency: redhat-lsb-submod-security(x86-64) = 4.1-21.fc20 for package: redhat-lsb-core-4.1-21.fc20.x86_64
--> Processing Dependency: spax for package: redhat-lsb-core-4.1-21.fc20.x86_64
--> Running transaction check
---> Package redhat-lsb-submod-security.x86_64 0:4.1-21.fc20 will be installed
---> Package spax.x86_64 0:1.5.2-8.fc20 will be installed
--> Finished Dependency Resolution                                                                                                                                                                                                           

Dependencies Resolved                                                                                                                                                                                                                        

================================================================================                                                                                                                                                             
 Package                        Arch       Version            Repository   Size                                                                                                                                                              
================================================================================                                                                                                                                                             
Installing:                                                                                                                                                                                                                                  
 redhat-lsb-core                x86_64     4.1-21.fc20        updates      37 k                                                                                                                                                              
Installing for dependencies:                                                                                                                                                                                                                 
 redhat-lsb-submod-security     x86_64     4.1-21.fc20        updates      15 k                                                                                                                                                              
 spax                           x86_64     1.5.2-8.fc20       fedora      259 k                                                                                                                                                              

Transaction Summary                                                                                                                                                                                                                          
================================================================================                                                                                                                                                             
Install  1 Package (+2 Dependent packages)                                                                                                                                                                                                   

Total download size: 311 k                                                                                                                                                                                                                   
Installed size: 635 k                                                                                                                                                                                                                        
Is this ok [y/d/N]:

it hung here for a little while and at this point that i switched back to the terminal where i was running DISPLAY= lpf update and pressed y and enter after which the install appeared to continue as normal

 Downloading packages:                                                                                                                                                                                                    
--------------------------------------------------------------------------------                                                                                                                                                             
Total                                              184 kB/s | 311 kB  00:01                                                                                                                                                                  
Running transaction check                                                                                                                                                                                                                    
Running transaction test                                                                                                                                                                                                                     
Transaction test succeeded                                                                                                                                                                                                                   
Running transaction
  Installing : spax-1.5.2-8.fc20.x86_64                                     1/3 
  Installing : redhat-lsb-submod-security-4.1-21.fc20.x86_64                2/3 
  Installing : redhat-lsb-core-4.1-21.fc20.x86_64                           3/3 
  Verifying  : redhat-lsb-core-4.1-21.fc20.x86_64                           1/3 
  Verifying  : redhat-lsb-submod-security-4.1-21.fc20.x86_64                2/3 
  Verifying  : spax-1.5.2-8.fc20.x86_64                                     3/3 

Installed:
  redhat-lsb-core.x86_64 0:4.1-21.fc20                                          

Dependency Installed:
  redhat-lsb-submod-security...

Removing package leaves state.

When removing a lpf package, it leaves state in /var/lib/*/$pkg, e. g., built rpms. These causes troubles when re-installed later. Uninstalling should remove all traces of package!

No sound in Skype

I installed lpf-skype on Fedora 23 Alpha. The skype application seemed to run fine, but I got no sound. As per instructions on the Internet, I did the following:

sudo dnf install libv4l.i686 pulseaudio-libs.i686 alsa-plugins-pulseaudio.i686

After installing these extra packages, sound started working. I got these instructions from

http://eshlox.net/2015/01/14/how-to-install-spotify-on-fedora-21/

Do not ask for root password when running as root, or with root privileges.

When running the rpm build / rebuild / install commands, the root pasword is asked, even when root, or user with root privileges started the command as root. When in CLI, DISPLAY is empty string it is asking [sudo] password for root.

I would like to use a completely automated script, without user interaction, especially when running as root.

Great job by the way so far, keep up the good work.

lpf-flash-plugin fails--maybe can't download source

I have these installed in Fedora 26:
lpf-0.2-4.f1f5dd9.fc26.noarch
lpf-flash-plugin-27.0.0.183-1.fc26.x86_64
The "id" command shows that my user is in the "pkg-build" group.

I ran the command "lpf update". A popup offered to update flash-plugin. I clicked for it to proceed. Another popup, labeled "lpf: flash-plugin", has a green circle in front of "Install build dependencies" and a circling twirly in front of "Download sources". It never completes. I eventually clicked "Cancel".

As an aside, lots of Gtk-Message warnings spill into my terminal:
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
/usr/share/lpf/scripts/update.py:10: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
/usr/share/lpf/scripts/build_error.py:7: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
from gi.repository import Gtk # pylint:disable=no-name-in-module
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.

Amidst all the Gtk warnings are these:
flash-plugin: downloading sources
flash-plugin: build failed
flash-plugin: build errors
flash-plugin: exiting

I don't think it successfully downloaded anything. This directory is empty:
/usr/share/lpf/packages/flash-plugin/SOURCES
I clicked to view the log, but it didn't show anything and I can't find a log anywhere.

Skype won't install, and lpf thinks it is installed... except it doesn't.

This is weird.

I tried installing Skype through LPF on Fedora 23. And it apparently won't work. I open up lpf-gui, and there's a red exclamation mark next to Skype. I click on 'Build...' and get the message:

Nothing to update All lpf packages built and installed

I click on 'More...', see:

lpf package version 4.3.0.37-2.fc23
Target package version Not installed
Package state install-wait'.

I click on 'Build...' and get the message:

Nothing to update All lpf packages built and installed

So which is it? Installed, or not installed? Well I don't see 'Skype' in the programs list, so I'm going to say 'no.'

Anyway. I think this needs to be fixed. Here's the full logfile:

Package desktop-file-utils-0.22-5.fc23.x86_64 is already installed, skipping.
Last metadata expiration check performed 2:23:54 ago on Sun Jan 24 14:16:52 2016. Dependencies resolved. Nothing to do. Complete!
Getting http://download.skype.com/linux/skype-4.3.0.37.tar.bz2 to ./skype-4.3.0.37.tar.bz2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  2 18.4M    2  508k    0     0   491k      0  0:00:38  0:00:01  0:00:37  491k
  4 18.4M    4  911k    0     0   440k      0  0:00:42  0:00:02  0:00:40  440k
  7 18.4M    7 1343k    0     0   441k      0  0:00:42  0:00:03  0:00:39  441k
 10 18.4M   10 2050k    0     0   508k      0  0:00:37  0:00:04  0:00:33  508k
 14 18.4M   14 2666k    0     0   530k      0  0:00:35  0:00:05  0:00:30  533k
 16 18.4M   16 3095k    0     0   512k      0  0:00:36  0:00:06  0:00:30  516k
 18 18.4M   18 3479k    0     0   494k      0  0:00:38  0:00:07  0:00:31  517k
 20 18.4M   20 3857k    0     0   480k      0  0:00:39  0:00:08  0:00:31  504k
 23 18.4M   23 4353k    0     0   481k      0  0:00:39  0:00:09  0:00:30  459k
 24 18.4M   24 4709k    0     0   469k      0  0:00:40  0:00:10  0:00:30  408k
 27 18.4M   27 5118k    0     0   463k      0  0:00:40  0:00:11  0:00:29  404k
 29 18.4M   29 5607k    0     0   466k      0  0:00:40  0:00:12  0:00:28  425k
 32 18.4M   32 6169k    0     0   473k      0  0:00:39  0:00:13  0:00:26  461k
 37 18.4M   37 7058k    0     0   503k      0  0:00:37  0:00:14  0:00:23  542k
 43 18.4M   43 8175k    0     0   544k      0  0:00:34  0:00:15  0:00:19  694k
 51 18.4M   51 9707k    0     0   602k      0  0:00:31  0:00:16  0:00:15  906k
 56 18.4M   56 10.4M    0     0   628k      0  0:00:29  0:00:17  0:00:12 1019k
 62 18.4M   62 11.4M    0     0   648k      0  0:00:29  0:00:18  0:00:11 1106k
 65 18.4M   65 11.9M    0     0   644k      0  0:00:29  0:00:19  0:00:10 1040k
 67 18.4M   67 12.4M    0     0   634k      0  0:00:29  0:00:20  0:00:09  906k
 69 18.4M   69 12.7M    0     0   620k      0  0:00:30  0:00:21  0:00:09  680k
 70 18.4M   70 13.0M    0     0   606k      0  0:00:31  0:00:22  0:00:09  532k
 73 18.4M   73 13.6M    0     0   604k      0  0:00:31  0:00:23  0:00:08  443k
 76 18.4M   76 14.0M    0     0   596k      0  0:00:31  0:00:24  0:00:07  414k
 78 18.4M   78 14.4M    0     0   589k      0  0:00:31  0:00:25  0:00:06  409k
 80 18.4M   80 14.7M    0     0   580k      0  0:00:32  0:00:26  0:00:06  409k
 81 18.4M   81 14.9M    0     0   565k      0  0:00:33  0:00:27  0:00:06  385k
 83 18.4M   83 15.3M    0     0   560k      0  0:00:33  0:00:28  0:00:05  359k
 86 18.4M   86 15.8M    0     0   560k      0  0:00:33  0:00:29  0:00:04  385k
 89 18.4M   89 16.5M    0     0   562k      0  0:00:33  0:00:30  0:00:03  428k
 92 18.4M   92 17.1M    0     0   564k      0  0:00:33  0:00:31  0:00:02  484k
 95 18.4M   95 17.5M    0     0   561k      0  0:00:33  0:00:32  0:00:01  537k
 99 18.4M   99 18.3M    0     0   567k      0  0:00:33  0:00:33 --:--:--  608k
100 18.4M  100 18.4M    0     0   569k      0  0:00:33  0:00:33 --:--:--  633k
Building target platforms: i686
Building for target i686
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.Cg6cLI
+ umask 022
+ cd /var/lib/lpf/rpmbuild/BUILD
+ cd /var/lib/lpf/rpmbuild/BUILD
+ rm -rf skype-4.3.0.37
+ /usr/bin/bzip2 -dc /var/lib/lpf/rpmbuild/SOURCES/skype-4.3.0.37.tar.bz2
+ /usr/bin/tar -xof -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd skype-4.3.0.37
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ sed -i 's/\r$//' LICENSE
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.ErgDUk
+ umask 022
+ cd /var/lib/lpf/rpmbuild/BUILD
+ cd skype-4.3.0.37
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.P3DJ5W
+ umask 022
+ cd /var/lib/lpf/rpmbuild/BUILD
+ '[' /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386 '!=' / ']'
+ rm -rf /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386
++ dirname /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386
+ mkdir -p /var/lib/lpf/rpmbuild/BUILDROOT
+ mkdir /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386
+ cd skype-4.3.0.37
+ mkdir -p /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/etc/prelink.conf.d/
+ install -p -D -m 655 skype /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/bin/skype
+ echo '-b /usr/bin/skype'
+ install -p -D -m 644 skype.conf /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/etc/dbus-1/system.d/skype.conf
+ for size in 16 24 32 48 64 96 128 256
+ install -p -D -m 644 icons/SkypeBlue_16x16.png /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/icons/hicolor/16x16/apps/skype.png
+ for size in 16 24 32 48 64 96 128 256
+ install -p -D -m 644 icons/SkypeBlue_24x24.png /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/icons/hicolor/24x24/apps/skype.png
+ for size in 16 24 32 48 64 96 128 256
+ install -p -D -m 644 icons/SkypeBlue_32x32.png /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/icons/hicolor/32x32/apps/skype.png
+ for size in 16 24 32 48 64 96 128 256
+ install -p -D -m 644 icons/SkypeBlue_48x48.png /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/icons/hicolor/48x48/apps/skype.png
+ for size in 16 24 32 48 64 96 128 256
+ install -p -D -m 644 icons/SkypeBlue_64x64.png /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/icons/hicolor/64x64/apps/skype.png
+ for size in 16 24 32 48 64 96 128 256
+ install -p -D -m 644 icons/SkypeBlue_96x96.png /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/icons/hicolor/96x96/apps/skype.png
+ for size in 16 24 32 48 64 96 128 256
+ install -p -D -m 644 icons/SkypeBlue_128x128.png /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/icons/hicolor/128x128/apps/skype.png
+ for size in 16 24 32 48 64 96 128 256
+ install -p -D -m 644 icons/SkypeBlue_256x256.png /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/icons/hicolor/256x256/apps/skype.png
+ mkdir -p /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/skype
+ cp -afr sounds avatars lang /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/skype
+ sed -i -e s/.png//g skype.desktop
+ desktop-file-install --dir=/var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/applications skype.desktop
+ /usr/lib/rpm/brp-compress
Processing files: skype-4.3.0.37-2.fc23.i686
Provides: config(skype) = 4.3.0.37-2.fc23 skype = 4.3.0.37-2.fc23 skype(x86-32) = 4.3.0.37-2.fc23
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: libQtCore.so.4 libQtDBus.so.4 libQtGui.so.4 libQtNetwork.so.4 libQtWebKit.so.4 libQtXml.so.4 libX11.so.6 libXext.so.6 libXss.so.1 libXv.so.1 libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.1.3) libc.so.6(GLIBC_2.2) libc.so.6(GLIBC_2.3) libc.so.6(GLIBC_2.3.2) libc.so.6(GLIBC_2.3.4) libc.so.6(GLIBC_2.4) libc.so.6(GLIBC_2.7) libdl.so.2 libdl.so.2(GLIBC_2.0) libdl.so.2(GLIBC_2.1) libgcc_s.so.1 libgcc_s.so.1(GCC_3.0) libgcc_s.so.1(GLIBC_2.0) libm.so.6 libm.so.6(GLIBC_2.0) libm.so.6(GLIBC_2.1) libpthread.so.0 libpthread.so.0(GLIBC_2.0) libpthread.so.0(GLIBC_2.1) libpthread.so.0(GLIBC_2.2) libpthread.so.0(GLIBC_2.3.2) librt.so.1 librt.so.1(GLIBC_2.2) libstdc++.so.6 libstdc++.so.6(CXXABI_1.3) libstdc++.so.6(GLIBCXX_3.4) libstdc++.so.6(GLIBCXX_3.4.9)
Processing files: skype-data-4.3.0.37-2.fc23.noarch
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.rq4oTA
+ umask 022
+ cd /var/lib/lpf/rpmbuild/BUILD
+ cd skype-4.3.0.37
+ DOCDIR=/var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/doc/skype-data
+ export DOCDIR
+ /usr/bin/mkdir -p /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/doc/skype-data
+ cp -pr LICENSE /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/doc/skype-data
+ cp -pr README /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/doc/skype-data
+ cp -pr third-party_attributions.txt /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386/usr/share/doc/skype-data
+ exit 0
Provides: application() application(skype.desktop) config(skype-data) = 4.3.0.37-2.fc23 mimehandler(x-scheme-handler/skype) skype-data = 4.3.0.37-2.fc23
Requires(interp): /bin/sh /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(post): /bin/sh
Requires(postun): /bin/sh
Requires(posttrans): /bin/sh
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386
Wrote: /var/lib/lpf/rpmbuild/RPMS/i686/skype-4.3.0.37-2.fc23.i686.rpm
Wrote: /var/lib/lpf/rpmbuild/RPMS/noarch/skype-data-4.3.0.37-2.fc23.noarch.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.1zRYFD
+ umask 022
+ cd /var/lib/lpf/rpmbuild/BUILD
+ cd skype-4.3.0.37
+ /usr/bin/rm -rf /var/lib/lpf/rpmbuild/BUILDROOT/skype-4.3.0.37-2.fc23.i386
+ exit 0
Error: must be run as pkg-build user.

Yes, I did notice that last line, but I don't know what pkg-build user is, or how to run as one. This seems like something that should be handled by the GUI.

Proxy support

Hi :)

I tried to install an lpf package (mscore-fonts) from inside my university net that sits behind a proxy. It appears that this is the issue, as downloading the sources is the step that fails during package approval. On my home net it works without problems.

It would be nice if lpf would honor the standard environment variables (https_proxy / http_proxy) to support connections behind a proxy.

lpf-notify and inotifywait not stopping on shutdown

I'm trying to figure out why my shutdown process became very slow and I noticed that lpf-notify and inotifywait get SIGKILLed -- which means they don't quit normally
Indeed, trying to kill them manually while inside the UI session doesn't work:

[root@laptop ~]# pgrep -fa lpf
2005 /bin/bash /usr/share/lpf/scripts/lpf-notify notify-watch /usr/share/lpf/scripts/notify
2287 inotifywait -q -q -e moved_to /var/lib/lpf/notify
[root@laptop ~]# kill 2005 2287
[root@laptop ~]# pgrep -fa lpf
2005 /bin/bash /usr/share/lpf/scripts/lpf-notify notify-watch /usr/share/lpf/scripts/notify
2287 inotifywait -q -q -e moved_to /var/lib/lpf/notify

lpf scan: race condition on exit

in 0-12, when doing a lpf scan there's occasionally a bad exit code due to a race condition iin lpf kill-pgroup.

pgroup=$(ps -ho pgid $$)
members=$( ps  --sid $pgroup -ho pid)
children=${members/$$/}
if [ -n "${children/ /}" ]; then  kill -TERM $children; fi

Here, the members might be gone before they are killed. The last line should thus ignore errors.

[RFE] lpf use dnf install yum

Installing:
 lpf-spotify-client x86_64 1.0.70.399-1.fc27 rpmfusion-nonfree-updates  11 M
Installing dependencies:
 inotify-tools      x86_64 3.14-13.fc27      fedora                     55 k
 lpf                noarch 0.2-5.f1f5dd9.fc27
                                             fedora                     70 k
 python-urlgrabber  noarch 3.10.1-12.fc27    fedora                    111 k
 python2-pygpgme    x86_64 0.3-25.fc27       fedora                     92 k
 pyxattr            x86_64 0.5.3-12.fc27     fedora                     34 k
 yum                noarch 3.4.3-513.fc27    fedora                    1.2 M
 yum-metadata-parser
                    x86_64 1.1.4-20.fc27     fedora                     39 k
 yum-utils          noarch 1.1.31-513.fc27   fedora                    117 k

many warnings on Fedora 21

Hi, I had test it on Fedora 21 , and appears a banch of warning and deprecation statements on lpf-gui , and does not work so well sometimes does windows doesn't get closed .

btw: and google software , google-talkplugin google-chrome , google-chrome-beta and google-earth could be package with lpf or for other tool (proxy repos) ?

Update notifications

Since the target package needs to be rebuilt manually after an lpf package update, we need some kind of notification system.

The basic logic: When lpf package is updated, a message is sent to all users in pkg-build group. Message is pending unitil each user logs in. "Old" unread messages should be obsoleted by new ones.

Add support for building packages for multiple architecture

Packages that can exist in both format (i686/x86_64) in the same repository cannot be built together.

Examples:

  • a proprietary library "oracle" would need oracle-libs.i686 and oracle-libs.x86_64 be both available as in the normal repositories.
  • the 32 bit Flash plugin is required on x86_64 by Steam for showing videos in the Store pages.

Bad state when target package is already installed

If the target package is already installed, the installation fails and package becomes failed. Rebuild does not help. In this situation lpf should note that package is already installed and enter state OK somehow.

lpf package removal badly broken

The %postun scriptlet in the example invokes lpf scan which plain wrong, there is nothing to scan. Furthermore, the script lpf-pkg-postun which should be used in the scriptlet does not remove /usr/share/lpf/packages/$pkg causing all sorts of errors.

When removing lpf package, should target package be removed?

As of now, removing a lpf package leaves the target package installed. This could possibly be considered inconsistent.

Removing the target package in scriptlet is a really bad idea, to big an operation in a scriptlet also causing headaches with nested rpm transactions.

One possible approach would be to install a metapackage creating a dependency between the lpf package and the target package in lpf-install. This would make the implicit dependency between the lpf package and the target package explicit, which possibly might be a Good Thing.

Support system without sudo

Hi,
I'm nut using sudo and currenty I can either run lpf as user. Then I'm prompted for my password and then sudo fails.

I can run lpf as root, but then I'm prompted for my password (root) witch is pointless.

Please support PolicyKit instead of sudo, as PolicyKit supports both sudo and root password.

If you have no clue, how to do it, just run pkexec instead of sudo. It will prompt for password either in terminal or using graphical user interface dialog when DISPALY is available.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.