Ticket #10191: 0001-Converting-NetFS-to-hpkg.patch

File 0001-Converting-NetFS-to-hpkg.patch, 10.2 KB (added by jalopeura, 10 years ago)
  • build/jam/HaikuPackages

    From 0c449a021c9ed82ff1abb44687606ecdc2b36c14 Mon Sep 17 00:00:00 2001
    From: Sean Healy <jalopeura@hotmail.com>
    Date: Fri, 29 Aug 2014 21:34:05 -0700
    Subject: [PATCH] Converting NetFS to hpkg
    
    ---
     build/jam/HaikuPackages                            |   1 +
     build/jam/OptionalPackages                         |  28 +---
     build/jam/packages/NetFS                           |  19 +++
     docs/add-ons/NetFS.html                            | 148 +++++++++++++++++++++
     src/add-ons/kernel/file_systems/netfs/netfs-server |  42 ------
     .../kernel/file_systems/userlandfs/userlandfs      |  80 -----------
     src/data/package_infos/generic/netfs               |  20 +++
     7 files changed, 189 insertions(+), 149 deletions(-)
     create mode 100644 build/jam/packages/NetFS
     create mode 100644 docs/add-ons/NetFS.html
     delete mode 100644 src/add-ons/kernel/file_systems/netfs/netfs-server
     delete mode 100644 src/add-ons/kernel/file_systems/userlandfs/userlandfs
     create mode 100644 src/data/package_infos/generic/netfs
    
    diff --git a/build/jam/HaikuPackages b/build/jam/HaikuPackages
    index f207eec..88068fc 100644
    a b local packages =  
    77    HaikuWelcome
    88    MakefileEngine
    99    UserlandFS
     10    NetFS
    1011    ;
    1112
    1213if $(HAIKU_BUILD_TYPE) = bootstrap {
  • build/jam/OptionalPackages

    diff --git a/build/jam/OptionalPackages b/build/jam/OptionalPackages
    index 77bf4a2..bd14936 100644
    a b if [ IsOptionalHaikuImagePackageAdded Git ] {  
    184184
    185185# NetFS network file system
    186186if [ IsOptionalHaikuImagePackageAdded NetFS ] {
    187 # TODO: Make this an actual package!
    188 #   # userlandfs module
    189 #   AddFilesToHaikuImage home config add-ons userlandfs
    190 #       : netfs ;
    191 #
    192 #   # servers
    193 #   AddFilesToHaikuImage system servers : netfs_server ;
    194 #   AddFilesToHaikuImage system servers
    195 #       : authentication_server ;
    196 #
    197 #   # tools
    198 #   AddFilesToHaikuImage system bin : netfs_config ;
    199 #   AddFilesToHaikuImage system bin : netfs_server_prefs ;
    200 #
    201 #   #example settings for netfs_server
    202 #   local netfsServerSettingsFiles = <driver-settings>netfs-server ;
    203 #   SEARCH on $(netfsServerSettingsFiles)
    204 #       = [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems netfs ] ;
    205 #   AddFilesToHaikuImage home config settings kernel drivers
    206 #   : $(netfsServerSettingsFiles) ;
    207 #
    208 #   #userlandfs settings are needed for netfs_config to work (ioctls)
    209 #   local userlandfsServerSettingsFiles = <driver-settings>userlandfs ;
    210 #   SEARCH on $(userlandfsServerSettingsFiles)
    211 #       = [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems userlandfs ] ;
    212 #   AddFilesToHaikuImage home config settings kernel drivers
    213 #       : $(userlandfsServerSettingsFiles) ;
     187    AddPackageFilesToHaikuImage system : netfs.hpkg ;
    214188}
    215189
    216190
  • new file uild/jam/packages/NetFS

    diff --git a/build/jam/packages/NetFS b/build/jam/packages/NetFS
    new file mode 100644
    index 0000000..07a6b92
    - +  
     1local netfsPackage = netfs.hpkg ;
     2HaikuPackage $(netfsPackage) ;
     3
     4# userlandfs module
     5AddFilesToPackage add-ons userlandfs : netfs ;
     6
     7# servers
     8AddFilesToPackage servers : netfs_server ;
     9AddFilesToPackage servers : authentication_server ;
     10
     11# tools
     12AddFilesToPackage bin : netfs_config ;
     13AddFilesToPackage bin : netfs_server_prefs ;
     14
     15#docs
     16AddFilesToPackage documentation add-ons :
     17    [ FDirName $(HAIKU_TOP) docs add-ons NetFS.html ] : NetFS.html ;
     18
     19BuildHaikuPackage $(netfsPackage) : netfs ;
  • new file docs/add-ons/NetFS.html

    diff --git a/docs/add-ons/NetFS.html b/docs/add-ons/NetFS.html
    new file mode 100644
    index 0000000..08cb726
    - +  
     1<!--
     2If you move this file, you must update the package rules file at
     3build/jam/packages/NetFS to reflect the new location.
     4Otherwise the package will not build.
     5-->
     6<html>
     7<head>
     8<title>NetFS</title>
     9<style>
     10.code {
     11    font-family: monospace;
     12    background: #eee;
     13    border: 1px solid black;
     14    whitespace: pre;
     15    padding: 1em;
     16}
     17span.code {
     18    padding: 0;
     19    border: 0;
     20}
     21</style>
     22</head>
     23<body>
     24
     25<h1 align="center">NetFS</h1>
     26
     27<hr />
     28
     29<h2 align="center">UserlandFS Settings</h2>
     30
     31<p>Before you can use NetFS, you must configure UserlandFS to enable it. Unfortunately, there is no tool for this yet, so you must edit the settings file by hand.</p>
     32
     33<p>The file is located at <span class="code">/boot/home/config/settings/kernel/drivers/netfs-server</span>. (If this is the first UserlandFS add-on you have enabled on your system, you may need to create the file.) Add the following settings.</p>
     34
     35<pre class="code">
     36# NetFS
     37file_system netfs {
     38    # NET_FS_IOCTL_ADD_SERVER
     39    ioctl 11000 {
     40        buffer_size         256
     41        write_buffer_size   0
     42        is_buffer           true
     43    }
     44
     45    # NET_FS_IOCTL_REMOVE_SERVER
     46    ioctl 11001 {
     47        buffer_size         256
     48        write_buffer_size   0
     49        is_buffer           true
     50    }
     51}
     52</pre>
     53
     54<hr />
     55
     56<h2 align="center">Client</h2>
     57
     58<p>To run the client, execute the following at the command line:
     59
     60<pre class="code">
     61$ /system/servers/authentication_server &
     62$ mkdir /network
     63$ mount -t userlandfs -p "netfs" "" /network
     64</pre>
     65
     66<p>A "Network" icon will appear on your desktop, containing remote servers identified by host name. Inside the folder for each server are the shares on that server.</p>
     67
     68<hr />
     69
     70<h2 align="center">Server</h2>
     71
     72<p>If you want to host shares, you must define them. The first step is to create a user who can access those shares, optionally with a password.</p>
     73
     74<pre class="code">
     75$ netfs_server_prefs add user &lt;name&gt; [&lt;password&gt;]
     76</pre>
     77
     78<p>Next create a share and assign a user some permissions on that share.</p>
     79
     80<pre class="code">
     81$ netfs_server_prefs add share &lt;name&gt; &lt;path&gt;
     82$ netfs_server_prefs permissions &lt;user&gt; &lt;share&gt; <flags>
     83</pre>
     84
     85<p><span class="code">name</span> is the name that will appear to clients when they connect to your server.  <span class="code">flags</span> is one or more of:
     86<span class="code">m</span> = mount, <span class="code">r</span> = read, <span class="code">w</span> = write, <span class="code">q</span> = query.</p>
     87
     88<p>Don't forget to save your settings.</p>
     89
     90<pre class="code">
     91$ netfs_server_prefs save
     92</pre>
     93
     94<p>Finally, run the server.</p>
     95
     96<pre class="code">
     97$ netfs_server_prefs launch
     98... time passes ...
     99$ netfs_server_prefs terminate
     100</pre>
     101
     102<p>You can also start the server directly if you prefer.</p>
     103
     104<pre class="code">
     105$ /system/servers/netfs_server &
     106</pre>
     107
     108<p>The <span class="code">netfs_server_prefs</span> tool can also list and remove users and shares. See the help for details.</p>
     109
     110<pre class="code">
     111$ netfs_server_prefs --help
     112</pre>
     113
     114<hr />
     115
     116<h2 align="center">Settings file</h2>
     117
     118<p>If you prefer, you can edit the settings file by hand. It is located at <span class="code">/boot/home/config/settings/kernel/drivers/netfs-server</span>. Here is an example of what the various entries look like.</p>
     119
     120<pre class="code">
     121# users
     122user bonefish {
     123    password    password
     124}
     125
     126# user without a password
     127user anonymous
     128
     129# shares
     130share ttttt {
     131    path /boot/home/Desktop/ttttt
     132    user bonefish {
     133        permissions mount query read write
     134    }
     135}
     136
     137share sub-ttttt {
     138    path /boot/home/Desktop/ttttt/rmessage
     139    user bonefish {
     140        permissions mount query read write
     141    }
     142    user anonymous {
     143        permissions mount query read
     144    }
     145}
     146</pre>
     147
     148</body>
  • deleted file src/add-ons/kernel/file_systems/netfs/netfs-server

    diff --git a/src/add-ons/kernel/file_systems/netfs/netfs-server b/src/add-ons/kernel/file_systems/netfs/netfs-server
    deleted file mode 100644
    index f386682..0000000
    + -  
    1 # netfs server settings
    2 #
    3 # Lives in /boot/home/config/settings/kernel/drivers/.
    4 
    5 # users
    6 user bonefish {
    7     password    password
    8 }
    9 
    10 user anonymous
    11 
    12 # shares
    13 share ttttt {
    14     path /boot/home/Desktop/ttttt
    15     user bonefish {
    16         permissions mount query read write
    17     }
    18 }
    19 
    20 share sub-ttttt {
    21     path /boot/home/Desktop/ttttt/rmessage
    22     user bonefish {
    23         permissions mount query read write
    24     }
    25 }
    26 
    27 #share home {
    28 #   path /boot/home
    29 #   user bonefish {
    30 #       permissions mount query read write
    31 #   }
    32 #}
    33 
    34 #share tmp {
    35 #   path /boot/home/tmp
    36 #   user bonefish {
    37 #       permissions mount query read write
    38 #   }
    39 #   user anonymous {
    40 #       permissions mount query read
    41 #   }
    42 #}
  • deleted file src/add-ons/kernel/file_systems/userlandfs/userlandfs

    diff --git a/src/add-ons/kernel/file_systems/userlandfs/userlandfs b/src/add-ons/kernel/file_systems/userlandfs/userlandfs
    deleted file mode 100644
    index 050f4e3..0000000
    + -  
    1 # userlandfs settings
    2 #
    3 # Lives in /boot/home/config/settings/kernel/drivers/.
    4 
    5 # OpenBFS
    6 file_system obfs {
    7     # BFS_IOCTL_VERSION
    8     ioctl 14200 {
    9         buffer_size         0
    10         write_buffer_size   4
    11         is_buffer           true
    12     }
    13 
    14     # BFS_IOCTL_START_CHECKING
    15     ioctl 14201 {
    16         buffer_size         312
    17         write_buffer_size   312
    18         is_buffer           true
    19     }
    20 
    21     # BFS_IOCTL_STOP_CHECKING
    22     ioctl 14202 {
    23         buffer_size         312
    24         write_buffer_size   312
    25         is_buffer           true
    26     }
    27 
    28     # BFS_IOCTL_CHECK_NEXT_NODE
    29     ioctl 14203 {
    30         buffer_size         312
    31         write_buffer_size   312
    32         is_buffer           true
    33     }
    34 
    35     # allocate and zero all free blocks
    36     ioctl 56742 {
    37         buffer_size         0
    38         write_buffer_size   0
    39         is_buffer           false
    40     }
    41 
    42     # dump superblock
    43     ioctl 56743 {
    44         buffer_size         0
    45         write_buffer_size   0
    46         is_buffer           false
    47     }
    48 
    49     # dump inode
    50     ioctl 56744 {
    51         buffer_size         0
    52         write_buffer_size   0
    53         is_buffer           false
    54     }
    55 
    56     # dump inode block
    57     ioctl 56745 {
    58         buffer_size         0
    59         write_buffer_size   0
    60         is_buffer           false
    61     }
    62 
    63 }
    64 
    65 # NetFS
    66 file_system netfs {
    67     # NET_FS_IOCTL_ADD_SERVER
    68     ioctl 11000 {
    69         buffer_size         256
    70         write_buffer_size   0
    71         is_buffer           true
    72     }
    73 
    74     # NET_FS_IOCTL_REMOVE_SERVER
    75     ioctl 11001 {
    76         buffer_size         256
    77         write_buffer_size   0
    78         is_buffer           true
    79     }
    80 }
  • new file src/data/package_infos/generic/netfs

    diff --git a/src/data/package_infos/generic/netfs b/src/data/package_infos/generic/netfs
    new file mode 100644
    index 0000000..91806d7
    - +  
     1name            netfs
     2version         %HAIKU_VERSION%
     3architecture    %HAIKU_PACKAGING_ARCH%
     4summary         "NetFS"
     5
     6description     "The package contains the NetFS add-on and servers."
     7
     8packager        "The Haiku build system"
     9vendor          "Haiku Project"
     10
     11copyrights      "2001-2014 Haiku, Inc. et al"
     12licenses        "MIT"
     13
     14provides {
     15    netfs = %HAIKU_VERSION% compat >= R1~alpha1
     16}
     17
     18requires {
     19    userlandfs == %HAIKU_VERSION% base
     20}