Giter VIP home page Giter VIP logo

winrpm.jl's Introduction

Introduction

WinRPM is an installer for RPM packages provided by an RPM-md build system. The default RPM-md provider is the OpenSUSE build service, which builds 32- and 64-bit DLLs for libraries used by several Julia packages (note: builds are cross-compiled).

Installation

To install WinRPM via the Julia package manager, use:

Pkg.add("WinRPM")

Package Availability

To search for a package from within Julia:

using WinRPM

WinRPM.search("packagename")

See also: upstream package information for Win64 and Win32

Package Installation

To install a library using WinRPM:

WinRPM.install("gtk2")
WinRPM.install("win_iconv","mingw32")

Dependencies

WinRPM will automatically install dependencies declared in the RPM-md package specification.

Package Creation

Please see the OpenSUSE build service packaging guidelines for further information.

BinDeps Integration

WinRPM may be integrated with the BinDeps system by declaring a provides(WinRPM.RPM... line for each serviceable dependency.

For example, in the Tk.jl package the following lines declare availability of the tcl and tk libraries from WinRPM:

if Sys.iswindows()
    using WinRPM
    provides(WinRPM.RPM, "tk", tk, os=:Windows)
    provides(WinRPM.RPM, "tcl", tcl, os=:Windows)
end

These lines must be preceded by BinDeps.library_dependency declarations; please see the BinDeps documentation for more information.

It may also be helpful to review usage examples in Tk.jl or other existing packages (see deps/build.jl): Nettle.jl Cairo.jl

Stand-alone Usage

For stand-alone use, add the following lines to your %APPDATA%/julia/.juliarc.jl file:

RPMbindir = Pkg.dir("WinRPM","deps","usr","$(Sys.ARCH)-w64-mingw32","sys-root","mingw","bin")
push!(Libdl.DL_LOAD_PATH,RPMbindir)
ENV["PATH"]=ENV["PATH"]*";"*RPMbindir

Full API

RPM-md provides the following functions for general usage: update, whatprovides, search, lookup, and install

update() -- download the new metadata from the hosts. Additional hosts can be added by editing the file sources.list.

whatprovides(file) -- given a part of a filename or file-path, returns a list of packages that include

search(string) -- search for a string in the package description, summary, or name fields and returns a list of matching packages

lookup(name) -- search for a package by name

install(pkg) -- install a package (by name or package identifier), including dependencies, into the deps folder

The functions typically take a second parameter "arch" specifying the package architecture for search, defaulting to the current operating system. It also offers the keyword argument yes which should be set to true if no prompt is desired.

Usage Example

Package lists can be further filtered and analyzed, as the following example demonstrates:

julia> using WinRPM

julia> gtk3_candidates = WinRPM.search("gtk3", "mingw32")
1. webkitgtk3-debug (mingw32) - Debug information for package mingw32-webkitgtk3
2. webkitgtk3-lang (mingw32) - Languages for package mingw32-webkitgtk3
3. webkitgtk3-tools (mingw32) - Library for rendering web content, GTK+ 3 Port (tools)
4. gtk3-data (mingw32) - The GTK+ toolkit library (version 3) -- Data Files
5. gtk3-lang (mingw32) - Languages for package mingw32-gtk3
6. gtk3 (mingw32) - The GTK+ toolkit library (version 3)
7. gtk3-devel (mingw32) - The GTK+ toolkit library (version 3) -- Development Files
8. gtk3-debug (mingw32) - Debug information for package mingw32-gtk3
9. gtk3-tools (mingw32) - The GTK+ toolkit library (version 3) -- Tools
10. libwebkitgtk3 (mingw32) - Library for rendering web content, GTK+ 3 Port
11. libwebkitgtk3-devel (mingw32) - Library for rendering web content, GTK+ 3 Port (development files)

julia> gtk3_pkg = gtk3_candidates[6]
Name: gtk3
Summary: The GTK+ toolkit library (version 3)
Version: 3.8.1 (rel 1.31)
Arch: mingw32
URL: http://www.gtk.org/
License: LGPL-2.0+
Description: GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.

julia> WinRPM.install(gtk3_pkg)
MESSAGE: Installing: libxml2, atk, gdk-pixbuf, liblzma, zlib, libpng, libtiff, pixman, freetype, libffi, glib2-lang, atk-lang, libjpeg, gdk-pixbuf-lang, libharfbuzz, glib2, fontconfig, libcairo2, libjasper, libgcc, libintl, gtk3
MESSAGE: Downloading: libxml2
MESSAGE: Extracting: libxml2
2286 blocks
MESSAGE: Downloading: atk
MESSAGE: Extracting: atk
263 blocks
...
MESSAGE: Downloading: gtk3
MESSAGE: Extracting: gtk3
9614 blocks
MESSAGE: Success

julia> # or we can just install it directly
julia> WinRPM.install("gtk3")

winrpm.jl's People

Contributors

tkelman avatar vtjnash avatar ihnorton avatar musm avatar simondanisch avatar keno avatar iainnz avatar nalimilan avatar mlubin avatar ranjanan avatar randomstring123 avatar amitmurthy avatar bkamins avatar staticfloat avatar jiahao avatar simonbyrne avatar tbeason avatar femtocleaner[bot] avatar hustf avatar lucatrv avatar

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.